refinerycms-news 1.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  class Admin::NewsItemsController < Admin::BaseController
2
2
 
3
- crudify :news_item, :order => "created_at DESC"
3
+ crudify :news_item, :order => "publish_date DESC"
4
4
 
5
5
  end
@@ -14,16 +14,16 @@ class NewsItemsController < ApplicationController
14
14
  protected
15
15
 
16
16
  def find_latest_news_items
17
- @news_items = NewsItem.latest
17
+ @news_items = NewsItem.latest.translated
18
18
  end
19
19
 
20
20
  def find_published_news_items
21
- @news_items = NewsItem.published.paginate(:page => params[:page],
21
+ @news_items = NewsItem.published.translated.paginate(:page => params[:page],
22
22
  :per_page => NewsItem.per_page)
23
23
  end
24
24
 
25
25
  def find_news_item
26
- @news_item = NewsItem.published.find(params[:id])
26
+ @news_item = NewsItem.published.translated.find(params[:id])
27
27
  end
28
28
 
29
29
  def find_page
@@ -1,4 +1,9 @@
1
1
  class NewsItem < ActiveRecord::Base
2
+ belongs_to :image, :class_name => 'Image'
3
+
4
+ translates :title, :body, :external_url
5
+
6
+ attr_accessor :locale # to hold temporarily
2
7
 
3
8
  alias_attribute :content, :body
4
9
  validates_presence_of :title, :content, :publish_date
@@ -18,6 +23,15 @@ class NewsItem < ActiveRecord::Base
18
23
  published.limit( l_params.first || 10)
19
24
  }
20
25
 
26
+ # rejects any page that has not been translated to the current locale.
27
+ scope :translated, lambda {
28
+ pages = Arel::Table.new(NewsItem.table_name)
29
+ translations = Arel::Table.new(NewsItem.translations_table_name)
30
+
31
+ includes(:translations).where(
32
+ translations[:locale].eq(Globalize.locale)).where(pages[:id].eq(translations[:news_item_id]))
33
+ }
34
+
21
35
  def not_published? # has the published date not yet arrived?
22
36
  publish_date > Time.now
23
37
  end
@@ -5,6 +5,11 @@
5
5
  :include_object_name => true
6
6
  } %>
7
7
 
8
+ <%= render :partial => "locale_picker",
9
+ :locals => {
10
+ :current_locale => Thread.current[:globalize_locale]
11
+ } if defined?(::Refinery::I18n) %>
12
+
8
13
  <div class='field'>
9
14
  <%= f.label :title %>
10
15
  <%= f.text_field :title, :class => "larger widest" %>
@@ -20,6 +25,16 @@
20
25
  <%= f.text_area :content, :rows => "20", :class => "wymeditor widest" %>
21
26
  </div>
22
27
 
28
+ <div class='field'>
29
+ <%= f.label :external_url %>
30
+ <%= f.text_field :external_url, :class => "larger widest" %>
31
+ </div>
32
+
33
+ <div class='field'>
34
+ <%= f.label :image %>
35
+ <%= render :partial => "/shared/admin/image_picker", :locals => {:f => f, :field => :image_id, :image => @news_item.image } %>
36
+ </div>
37
+
23
38
  <%= render :partial => "/shared/admin/form_actions",
24
39
  :locals => {
25
40
  :f => f,
@@ -0,0 +1,11 @@
1
+ <input type='hidden' name='switch_locale' id='switch_locale' value='<%= local_assigns[:current_locale] %>' />
2
+ <% if (locales ||= ::Refinery::I18n.frontend_locales).present? and locales.many? %>
3
+ <ul id='switch_locale_picker' class='clearfix'>
4
+ <% locales.each do |locale| %>
5
+ <li<%= " class='selected'" if locale.to_s == local_assigns[:current_locale].to_s %>>
6
+ <%= link_to refinery_icon_tag("flags/#{locale}.png", :size => '48x33'),
7
+ url_for(:switch_locale => locale) %>
8
+ </li>
9
+ <% end %>
10
+ </ul>
11
+ <% end %>
@@ -4,6 +4,14 @@
4
4
  <span class="preview">
5
5
  <%= t('.published') %> <%= l(news_item.publish_date, :format => :short) %>
6
6
  </span>
7
+ <% if ::Refinery::I18n.frontend_locales.many? and
8
+ (locales = news_item.translations.collect{|t| t.locale}).present? %>
9
+ <span class='preview'>
10
+ <% locales.each do |locale| %>
11
+ <%= refinery_icon_tag "flags/#{locale}.png", :size => '16x11' %>
12
+ <% end %>
13
+ </span>
14
+ <% end %>
7
15
  </span>
8
16
  <span class='actions'>
9
17
  <%= link_to refinery_icon_tag('application_go.png'), news_item_url(news_item),
@@ -0,0 +1,42 @@
1
+ cs:
2
+ plugins:
3
+ refinerycms_news:
4
+ title: Novinky
5
+ description: Poskytuje jednoduchou správu novinek
6
+ admin:
7
+ news_items:
8
+ news_item:
9
+ view_live_html: "Zobrazit novinku v novém okně"
10
+ edit: "Editovať novinku"
11
+ delete: "Smazat novinku"
12
+ published: Zveřejněna
13
+ index:
14
+ actions: Možnosti
15
+ create: "Přidat novinku"
16
+ news_item: Novinka
17
+ no_items: "Litujeme, žádné výsledky nenalezeny."
18
+ no_items_yet: 'Momentálně nejsou žádné novinky. Klikni na "Přidat novinku" pro vytvoření první.'
19
+ news_items:
20
+ show:
21
+ back_to_index: "Návrat na seznam novinek"
22
+ published: Zveřejněné
23
+ recent_posts:
24
+ recent_posts: Poslední příspěvky
25
+ index:
26
+ published: Zveřejněné
27
+ read_more: Číst dále
28
+ no_items_yet: Neexistují žádné záznamy novinek.
29
+ activerecord:
30
+ attributes:
31
+ news_item:
32
+ title: Název
33
+ body: Obsah
34
+ publish_date: Datum zveřejnění
35
+ external_url: Veřejná URL
36
+ image: &image Obrázek
37
+ models:
38
+ news_item: Novinka
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
@@ -32,5 +32,11 @@ de:
32
32
  title: Titel
33
33
  body: Inhalt
34
34
  publish_date: Veröffentlichungsdatum
35
+ external_url: Externe URL
36
+ image: &image Image
35
37
  models:
36
38
  news_item: News-Eintrag
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
@@ -32,5 +32,11 @@ en:
32
32
  title: Title
33
33
  body: Body
34
34
  publish_date: Publish date
35
+ external_url: External URL
36
+ image: &image Image
35
37
  models:
36
38
  news_item: News Item
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
@@ -1,6 +1,6 @@
1
1
  es-MX:
2
2
  plugins:
3
- news:
3
+ refinerycms_news:
4
4
  title: Noticias
5
5
  admin:
6
6
  news_items:
@@ -30,5 +30,11 @@ es-MX:
30
30
  title: Título
31
31
  body: Contenido
32
32
  publish_date: Fecha de publicación
33
+ external_url: URL externa
34
+ image: &image Imagen
33
35
  models:
34
- news_item: Noticia
36
+ news_item: Noticia
37
+ shared:
38
+ admin:
39
+ image_picker:
40
+ image: *image
@@ -25,12 +25,19 @@ es:
25
25
  index:
26
26
  published: Publicada
27
27
  read_more: Leer mas
28
- no_items_yet: Aún no hay ningu noticia.
28
+ no_items_yet: Aún no hay ninguna noticia.
29
29
  activerecord:
30
30
  attributes:
31
31
  news_item:
32
32
  title: Título
33
- body: Cuerpo
34
- publish_date: Data de publicación
33
+ body: Contenido
34
+ publish_date: Fecha de publicación
35
+ external_url: URL externa
36
+ image: &image Imagen
35
37
  models:
36
38
  news_item: Noticia
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
43
+
@@ -0,0 +1,42 @@
1
+ fr:
2
+ plugins:
3
+ refinerycms_news:
4
+ title: Actualités
5
+ description: 'Fournit une rubrique "Actualités"'
6
+ admin:
7
+ news_items:
8
+ news_item:
9
+ view_live_html: "Visualiser cette nouvelle <br/><em>(ouvre une nouvelle fenêtre)</em>"
10
+ edit: "Modifier cette actualité"
11
+ delete: "Détruire cette actualité à tout jamais"
12
+ published: Publiée
13
+ index:
14
+ actions: Actions
15
+ create: "Créer une actualité"
16
+ news_item: Actualité
17
+ no_items: "Désolé, aucun résultat."
18
+ no_items_yet: 'Aucune actualité. Cliquer sur "Créer une actualité" pour créer votre première actualité.'
19
+ news_items:
20
+ show:
21
+ back_to_index: "Retour à la liste des actualités"
22
+ published: Publiée le
23
+ recent_posts:
24
+ recent_posts: Dernières actualités
25
+ index:
26
+ published: Publiée le
27
+ read_more: Plus
28
+ no_items_yet: Aucune actualité pour le moment.
29
+ activerecord:
30
+ attributes:
31
+ news_item:
32
+ title: Titre
33
+ body: Texte
34
+ publish_date: Date de publication
35
+ external_url: Lien externe
36
+ image: &image Image
37
+ models:
38
+ news_item: Nouvelle
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
@@ -32,5 +32,12 @@ it:
32
32
  title: Titolo
33
33
  body: Corpo
34
34
  publish_date: Data di pubblicazione
35
+ external_url: URL esterni
36
+ image: &image Immagine
35
37
  models:
36
38
  news_item: Notizia
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
43
+
@@ -31,5 +31,12 @@ lv:
31
31
  body: Saturs
32
32
  content: Saturs
33
33
  publish_date: Publikācijas datums
34
+ external_url: ārējo URL
35
+ image: &image Attēlu
34
36
  models:
35
37
  news_item: jaunums
38
+ shared:
39
+ admin:
40
+ image_picker:
41
+ image: *image
42
+
@@ -0,0 +1,43 @@
1
+ nb:
2
+ plugins:
3
+ refinerycms_news:
4
+ title: Nyheter
5
+ description: Legger til en seksjon for nyheter
6
+ admin:
7
+ news_items:
8
+ news_item:
9
+ view_live_html: "Se hvordan nyheten ser ut for dine besøkende akkurat nå <br/><em>(åpnes i et nytt vindu)</em>"
10
+ edit: "Rediger denne nyheten"
11
+ delete: "Fjern denne nyheten permanent"
12
+ published: Publisert
13
+ index:
14
+ actions: Handlinger
15
+ create: "Legg til Nyhet"
16
+ news_item: Nyhet
17
+ no_items: "Beklager, fant ingen resultater."
18
+ no_items_yet: 'Det er ikke lagt til noen nyheter enda. Klikk "Legg til Nyhet" for å legge inn din første nyhet.'
19
+ news_items:
20
+ show:
21
+ back_to_index: "Tilbake til nyhetsoversikt"
22
+ published: Publisert
23
+ recent_posts:
24
+ recent_posts: Nylige Poster
25
+ index:
26
+ published: Publisert
27
+ read_more: Les mer
28
+ no_items_yet: Det er ingen nyheter enda.
29
+ activerecord:
30
+ attributes:
31
+ news_item:
32
+ title: Tittel
33
+ body: Tekst
34
+ publish_date: Publiseringsdato
35
+ external_url: Ekstern adresse
36
+ image: &image Bilde
37
+ models:
38
+ news_item: Nyhet
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
43
+
@@ -32,5 +32,12 @@ nl:
32
32
  title: Titel
33
33
  body: Inhoud
34
34
  publish_date: Publiceer datum
35
+ external_url: Externe URL
36
+ image: &image Beeld
35
37
  models:
36
- news_item: Nieuws Item
38
+ news_item: Nieuws Item
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
43
+
@@ -1,6 +1,6 @@
1
1
  pt-BR:
2
2
  plugins:
3
- news:
3
+ refinerycms_news:
4
4
  title: Notícias
5
5
  activerecord:
6
6
  attributes:
@@ -1,6 +1,6 @@
1
1
  ru:
2
2
  plugins:
3
- news:
3
+ refinerycms_news:
4
4
  title: "Новости"
5
5
  admin:
6
6
  news_items:
@@ -30,5 +30,12 @@ ru:
30
30
  title: "Заголовок"
31
31
  body: "Публикация"
32
32
  publish_date: "Дата публикации"
33
+ external_url: "внешний URL"
34
+ image: &image "Изображение"
33
35
  models:
34
36
  news_item: "Новость"
37
+ shared:
38
+ admin:
39
+ image_picker:
40
+ image: *image
41
+
@@ -0,0 +1,42 @@
1
+ sk:
2
+ plugins:
3
+ refinerycms_news:
4
+ title: Novinky
5
+ description: Poskytuje jednoduchú správu noviniek
6
+ admin:
7
+ news_items:
8
+ news_item:
9
+ view_live_html: "Zobraziť novinku v novom okne"
10
+ edit: "Editovať novinku"
11
+ delete: "Zmazať novinku"
12
+ published: Uverejnená
13
+ index:
14
+ actions: Možnosti
15
+ create: "Pridať novinku"
16
+ news_item: Novinka
17
+ no_items: "Ľutujeme, žiadne výsledky nenájdené."
18
+ no_items_yet: 'Momentálne nie sú žiadne novinky. Klikni na "Pridať novinku" pre vytvorenie prvej.'
19
+ news_items:
20
+ show:
21
+ back_to_index: "Návrat na zoznam noviniek"
22
+ published: Zverejnené
23
+ recent_posts:
24
+ recent_posts: Posledné príspevky
25
+ index:
26
+ published: Zverejnené
27
+ read_more: Čítať viac
28
+ no_items_yet: Neexistujú žiadne záznamy noviniek.
29
+ activerecord:
30
+ attributes:
31
+ news_item:
32
+ title: Názov
33
+ body: Obsah
34
+ publish_date: Dátum zverejnenia
35
+ external_url: Verejná URL
36
+ image: &image Obrázok
37
+ models:
38
+ news_item: Novinka
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
@@ -32,5 +32,11 @@ sl:
32
32
  title: Naslov
33
33
  body: Opis
34
34
  publish_date: Datum objave
35
+ external_url: Externé URL
36
+ image: &image "obrázok"
35
37
  models:
36
38
  news_item: Novice
39
+ shared:
40
+ admin:
41
+ image_picker:
42
+ image: *image
@@ -17,7 +17,7 @@ Given /^I have no news items$/ do
17
17
  end
18
18
 
19
19
  Given /^the news item titled "?([^\"]*)"? is not published$/ do |title|
20
- NewsItem.find_by_title(title).update_attribute(:publish_date, Time.now + 1.day)
20
+ NewsItem.where(:title => title).first.update_attribute(:publish_date, Time.now + 1.day)
21
21
  end
22
22
 
23
23
  Then /^I should have ([0-9]+) news items?$/ do |count|
@@ -11,7 +11,7 @@ module NavigationHelpers
11
11
  new_admin_news_item_path
12
12
  else
13
13
  begin
14
- if page_name =~ /the news item titled "?([^\"]*)"?/ and (news_item = NewsItem.find_by_title($1)).present?
14
+ if page_name =~ /the news item titled "?([^\"]*)"?/ and (news_item = NewsItem.where(:title => $1).first).present?
15
15
  self.url_for(news_item)
16
16
  else
17
17
  nil
@@ -9,6 +9,10 @@ class Create<%= table_name.camelize %> < ActiveRecord::Migration
9
9
  end
10
10
 
11
11
  add_index :<%= table_name %>, :id
12
+
13
+ <% translated_attributes = attributes.find_all { |attr| [:string, :text].include? attr.type } %>
14
+ <%= class_name %>.create_translation_table! <%= translated_attributes.map { |a| ":#{a.name} => :#{a.type}"}.join(', ') %>
15
+
12
16
  load(Rails.root.join('db', 'seeds', 'refinerycms_news.rb').to_s)
13
17
  end
14
18
 
@@ -17,6 +21,8 @@ class Create<%= table_name.camelize %> < ActiveRecord::Migration
17
21
 
18
22
  Page.delete_all({:link_url => "/news"})
19
23
 
24
+ <%= class_name %>.drop_translation_table!
25
+
20
26
  drop_table :<%= table_name %>
21
27
  end
22
28
 
@@ -4,8 +4,8 @@ class RefinerycmsNewsGenerator < Rails::Generators::NamedBase
4
4
  include Rails::Generators::Migration
5
5
 
6
6
  source_root File.expand_path('../refinerycms_news/templates/', __FILE__)
7
- argument :name, :type => :string, :default => 'news_items', :banner => ''
8
- argument :attributes, :type => :array, :default => ["title:string", "body:text", "publish_date:datetime"]
7
+ argument :name, :type => :string, :default => 'news_item', :banner => ''
8
+ argument :attributes, :type => :array, :default => ["title:string", "body:text", "publish_date:datetime", "image_id:integer", "external_url:string"]
9
9
 
10
10
  def generate
11
11
  # seed file
@@ -13,8 +13,8 @@ class RefinerycmsNewsGenerator < Rails::Generators::NamedBase
13
13
 
14
14
  next_migration_number = ActiveRecord::Generators::Base.next_migration_number(File.dirname(__FILE__))
15
15
  template('db/migrate/migration_number_create_singular_name.rb',
16
- Rails.root.join("db/migrate/#{next_migration_number}_create_#{singular_name}.rb"))
17
-
16
+ Rails.root.join("db/migrate/#{next_migration_number}_create_#{plural_name}.rb"))
17
+
18
18
  unless self.behavior == :revoke
19
19
  puts "------------------------"
20
20
  puts "Now run:"
data/lib/news.rb CHANGED
@@ -2,7 +2,7 @@ module Refinery
2
2
  module News
3
3
  class << self
4
4
  def version
5
- %q{1.0}
5
+ %q{1.0.1}
6
6
  end
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,11 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refinerycms-news
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 0
8
- version: "1.0"
4
+ prerelease:
5
+ version: 1.0.1
9
6
  platform: ruby
10
7
  authors:
11
8
  - Resolve Digital
@@ -13,7 +10,7 @@ autorequire:
13
10
  bindir: bin
14
11
  cert_chain: []
15
12
 
16
- date: 2010-12-31 00:00:00 +13:00
13
+ date: 2011-04-04 00:00:00 +12:00
17
14
  default_executable:
18
15
  dependencies:
19
16
  - !ruby/object:Gem::Dependency
@@ -24,10 +21,6 @@ dependencies:
24
21
  requirements:
25
22
  - - ~>
26
23
  - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- - 9
30
- - 8
31
24
  version: 0.9.8
32
25
  type: :runtime
33
26
  version_requirements: *id001
@@ -44,6 +37,7 @@ files:
44
37
  - app/controllers/news_items_controller.rb
45
38
  - app/models/news_item.rb
46
39
  - app/views/admin/news_items/_form.html.erb
40
+ - app/views/admin/news_items/_locale_picker.html.erb
47
41
  - app/views/admin/news_items/_news_item.html.erb
48
42
  - app/views/admin/news_items/edit.html.erb
49
43
  - app/views/admin/news_items/index.html.erb
@@ -52,15 +46,19 @@ files:
52
46
  - app/views/news_items/index.html.erb
53
47
  - app/views/news_items/index.rss.builder
54
48
  - app/views/news_items/show.html.erb
49
+ - config/locales/cs.yml
55
50
  - config/locales/de.yml
56
51
  - config/locales/en.yml
57
52
  - config/locales/es-MX.yml
58
53
  - config/locales/es.yml
54
+ - config/locales/fr.yml
59
55
  - config/locales/it.yml
60
56
  - config/locales/lv.yml
57
+ - config/locales/nb.yml
61
58
  - config/locales/nl.yml
62
59
  - config/locales/pt-BR.yml
63
60
  - config/locales/ru.yml
61
+ - config/locales/sk.yml
64
62
  - config/locales/sl.yml
65
63
  - config/routes.rb
66
64
  - features/manage_news_items.feature
@@ -93,21 +91,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
91
  requirements:
94
92
  - - ">="
95
93
  - !ruby/object:Gem::Version
96
- segments:
97
- - 0
98
94
  version: "0"
99
95
  required_rubygems_version: !ruby/object:Gem::Requirement
100
96
  none: false
101
97
  requirements:
102
98
  - - ">="
103
99
  - !ruby/object:Gem::Version
104
- segments:
105
- - 0
106
100
  version: "0"
107
101
  requirements: []
108
102
 
109
103
  rubyforge_project:
110
- rubygems_version: 1.3.7
104
+ rubygems_version: 1.6.1
111
105
  signing_key:
112
106
  specification_version: 3
113
107
  summary: Ruby on Rails news engine for RefineryCMS.