refinerycms-news 1.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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.