refinerycms-news 2.0.1 → 2.1.0

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.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +23 -10
  5. data/Gemfile +23 -54
  6. data/Rakefile +2 -0
  7. data/app/controllers/refinery/news/items_controller.rb +8 -11
  8. data/app/helpers/refinery/news/items_helper.rb +14 -17
  9. data/app/models/refinery/news/item.rb +9 -4
  10. data/app/views/refinery/news/admin/items/_form.html.erb +9 -16
  11. data/app/views/refinery/news/admin/items/_item.html.erb +6 -3
  12. data/app/views/refinery/news/admin/items/edit.html.erb +1 -1
  13. data/app/views/refinery/news/admin/items/index.html.erb +1 -1
  14. data/app/views/refinery/news/admin/items/new.html.erb +1 -1
  15. data/app/views/refinery/news/items/archive.html.erb +6 -6
  16. data/app/views/refinery/news/items/index.html.erb +3 -3
  17. data/app/views/refinery/news/items/show.html.erb +3 -3
  18. data/app/views/refinery/news/items/widgets/_news_archive.html.erb +1 -5
  19. data/app/views/refinery/news/shared/_body_content_right.html.erb +1 -1
  20. data/config/locales/bg.yml +18 -18
  21. data/config/locales/cs.yml +19 -19
  22. data/config/locales/da.yml +47 -0
  23. data/config/locales/de.yml +18 -18
  24. data/config/locales/en.yml +3 -2
  25. data/config/locales/es-MX.yml +18 -18
  26. data/config/locales/es.yml +19 -19
  27. data/config/locales/fr.yml +31 -19
  28. data/config/locales/it.yml +18 -18
  29. data/config/locales/ja.yml +48 -0
  30. data/config/locales/lv.yml +20 -18
  31. data/config/locales/nb.yml +18 -18
  32. data/config/locales/nl.yml +30 -18
  33. data/config/locales/pl.yml +29 -18
  34. data/config/locales/ru.yml +18 -18
  35. data/config/locales/sk.yml +31 -19
  36. data/config/locales/sl.yml +0 -2
  37. data/config/locales/zh-CN.yml +18 -18
  38. data/config/locales/zh-TW.yml +29 -29
  39. data/config/routes.rb +2 -2
  40. data/readme.md +51 -2
  41. data/refinerycms-news.gemspec +4 -5
  42. data/spec/controllers/refinery/news/items_controller_spec.rb +67 -0
  43. data/spec/{requests → features}/manage_news_items_spec.rb +6 -6
  44. data/spec/{requests → features}/news_archive.rb +0 -0
  45. data/spec/{requests → features}/visit_news_items_spec.rb +5 -7
  46. data/spec/helpers/refinery/news/items_helper_spec.rb +34 -0
  47. data/spec/models/refinery/news/item_spec.rb +38 -14
  48. data/spec/spec_helper.rb +20 -46
  49. metadata +26 -30
  50. data/Guardfile +0 -20
  51. data/app/views/refinery/news/admin/items/_locale_picker.html.erb +0 -11
  52. data/config/locales/jp.yml +0 -36
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a5eb03c40be74b743440b65a5f321d684a27fbaa
4
+ data.tar.gz: 5dec817e08d7d98232ea21d4301d53c36054f1b3
5
+ SHA512:
6
+ metadata.gz: 6d6ac165e91096cf87e2e776e21308c176e753ed6997b3cbd6c16195dd0a7ad99d14ee5e52c45afdcc24efbd90cc76d2d481baadd3a37383d4b848a7b674843d
7
+ data.tar.gz: 207bde8a3c45dae4f7848765340cabbb0938a7e10ef5d2b8d267beed061acb6ae0beb64a0fdf023a78265af431f2e844890c79bcd215c1f16c783894f582b41d
data/.gitignore CHANGED
@@ -1,3 +1,7 @@
1
1
  .DS_Store
2
2
  Gemfile.lock
3
3
  spec/dummy
4
+ .idea
5
+
6
+ # Local Gemfile for developing without sharing dependencies
7
+ .gemfile
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.travis.yml CHANGED
@@ -1,17 +1,30 @@
1
+ language: ruby
2
+ bundler_args: --without development
1
3
  before_script:
2
- - "bundle exec rake refinery:testing:dummy_app > /dev/null"
3
- script: "bundle exec rspec ./spec"
4
+ - "sh -e /etc/init.d/xvfb start"
5
+ - "bundle exec rake refinery:testing:dummy_app"
6
+ script:
7
+ - "DISPLAY=:99.0 bundle exec rspec spec"
4
8
  notifications:
5
- email:
6
- - parndt@gmail.com
7
- - ugis.ozolss@gmail.com
8
- - heinleng@gmail.com
9
+ email: true
10
+ irc:
11
+ use_notice: true
12
+ skip_join: true
13
+ channels:
14
+ - "irc.freenode.org#refinerycms"
15
+ campfire:
16
+ on_success: always
17
+ on_failure: always
18
+ rooms:
19
+ - secure: "JaX+Ckvdd2wqL2bD6t8PHvMDBHxWBlCrkBKPcDKxV0t0DOwzzzwxMryVqcRi\nPsmM/zvmWFATDyRmivhNOpu4lRg9RytSroxZ9nkmbLDqjCyEAZ6tv4yZXME/\nPaxPwmfwgS9g8TKjj3lSWS7rEpqqg0D5S0XIfIHrj6KB6LUmFHc="
9
20
  env:
10
21
  - DB=postgresql
11
22
  - DB=mysql
23
+ matrix:
24
+ allow_failures:
25
+ - rvm: rbx-19mode
12
26
  rvm:
13
- - 1.8.7
14
- - 1.9.2
27
+ - 2.0.0
15
28
  - 1.9.3
16
- - rbx
17
- - jruby
29
+ - rbx-19mode
30
+ - jruby-19mode
data/Gemfile CHANGED
@@ -2,63 +2,29 @@ source 'http://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'refinerycms', '~> 2.0.1'
6
-
7
- group :development, :test do
8
- gem 'refinerycms-testing', '~> 2.0.0'
9
- gem 'guard-rspec', '~> 0.6.0'
10
-
11
- platforms :jruby do
12
- gem 'activerecord-jdbcsqlite3-adapter'
13
- gem 'activerecord-jdbcmysql-adapter'
14
- gem 'activerecord-jdbcpostgresql-adapter'
15
- gem 'jruby-openssl'
16
- end
17
-
18
- unless defined?(JRUBY_VERSION)
19
- gem 'sqlite3'
20
- gem 'mysql2'
21
- gem 'pg'
22
- end
23
-
24
- platforms :mswin, :mingw do
25
- gem 'win32console'
26
- gem 'rb-fchange', '~> 0.0.5'
27
- gem 'rb-notifu', '~> 0.0.4'
28
- end
29
-
30
- platforms :ruby do
31
- gem 'spork', '~> 0.9.0.rc'
32
- gem 'guard-spork'
5
+ gem 'refinerycms', '~> 2.1.0'
6
+ gem 'refinerycms-settings', :github => 'refinery/refinerycms-settings'
7
+ gem 'refinerycms-testing', '~> 2.1.0', :group => :test
8
+
9
+ # Database Configuration
10
+ unless ENV['TRAVIS']
11
+ gem 'activerecord-jdbcsqlite3-adapter', :platform => :jruby
12
+ gem 'sqlite3', :platform => :ruby
13
+ end
33
14
 
34
- unless ENV['TRAVIS']
35
- require 'rbconfig'
36
- if RbConfig::CONFIG['target_os'] =~ /darwin/i
37
- gem 'rb-fsevent', '>= 0.3.9'
38
- gem 'ruby_gntp'
39
- end
40
- if RbConfig::CONFIG['target_os'] =~ /linux/i
41
- gem 'rb-inotify', '>= 0.5.1'
42
- gem 'libnotify', '~> 0.1.3'
43
- gem 'therubyracer', '~> 0.9.9'
44
- end
45
- end
46
- end
15
+ if !ENV['TRAVIS'] || ENV['DB'] == 'mysql'
16
+ gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
17
+ gem 'jdbc-mysql', '= 5.1.13', :platform => :jruby
18
+ gem 'mysql2', :platform => :ruby
19
+ end
47
20
 
48
- platforms :jruby do
49
- unless ENV['TRAVIS']
50
- require 'rbconfig'
51
- if RbConfig::CONFIG['target_os'] =~ /darwin/i
52
- gem 'ruby_gntp'
53
- end
54
- if RbConfig::CONFIG['target_os'] =~ /linux/i
55
- gem 'rb-inotify', '>= 0.5.1'
56
- gem 'libnotify', '~> 0.1.3'
57
- end
58
- end
59
- end
21
+ if !ENV['TRAVIS'] || ENV['DB'] == 'postgresql'
22
+ gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
23
+ gem 'pg', :platform => :ruby
60
24
  end
61
25
 
26
+ gem 'jruby-openssl', :platform => :jruby
27
+
62
28
  # Refinery/rails should pull in the proper versions of these
63
29
  group :assets do
64
30
  gem 'sass-rails'
@@ -66,4 +32,7 @@ group :assets do
66
32
  gem 'uglifier'
67
33
  end
68
34
 
69
- gem 'jquery-rails'
35
+ # Load local gems according to Refinery developer preference.
36
+ if File.exist? local_gemfile = File.expand_path('../.gemfile', __FILE__)
37
+ eval File.read(local_gemfile)
38
+ end
data/Rakefile CHANGED
@@ -17,3 +17,5 @@ Refinery::Testing::Railtie.load_tasks
17
17
  Refinery::Testing::Railtie.load_dummy_tasks(ENGINE_PATH)
18
18
 
19
19
  load File.expand_path('../tasks/rspec.rake', __FILE__)
20
+
21
+ task :default => :spec
@@ -15,30 +15,27 @@ module Refinery
15
15
 
16
16
  def archive
17
17
  if params[:month].present?
18
- date = "#{params[:month]}/#{params[:year]}"
19
- @archive_date = Time.parse(date)
20
- @date_title = @archive_date.strftime('%B %Y')
21
- @items = Refinery::News::Item.live.by_archive(@archive_date).page(params[:page])
18
+ @archive_for_month = true
19
+ @archive_date = Time.parse("#{params[:month]}/#{params[:year]}")
20
+ @items = Item.archived.translated.by_archive(@archive_date).page(params[:page])
22
21
  else
23
- date = "01/#{params[:year]}"
24
- @archive_date = Time.parse(date)
25
- @date_title = @archive_date.strftime('%Y')
26
- @items = Refinery::News::Item.live.by_year(@archive_date).page(params[:page])
22
+ @archive_date = Time.parse("01/#{params[:year]}")
23
+ @items = Item.archived.translated.by_year(@archive_date).page(params[:page])
27
24
  end
28
25
  end
29
26
 
30
27
  protected
31
28
 
32
29
  def find_latest_news_items
33
- @items = Refinery::News::Item.latest.translated
30
+ @items = Item.latest.translated
34
31
  end
35
32
 
36
33
  def find_published_news_items
37
- @items = Refinery::News::Item.published.translated.page(params[:page])
34
+ @items = Item.published.translated.page(params[:page])
38
35
  end
39
36
 
40
37
  def find_news_item
41
- @item = Refinery::News::Item.published.translated.find(params[:id])
38
+ @item = Item.published.translated.find(params[:id])
42
39
  end
43
40
 
44
41
  def find_page
@@ -5,7 +5,7 @@ module Refinery
5
5
  items = Refinery::News::Item.select('publish_date').all_previous
6
6
  return nil if items.blank?
7
7
 
8
- render :partial => "/refinery/news/items/widgets/news_archive", :locals => { :items => items }
8
+ render "/refinery/news/items/widgets/news_archive", :items => items
9
9
  end
10
10
  alias_method :news_archive_list, :news_item_archive_widget
11
11
 
@@ -28,23 +28,20 @@ module Refinery
28
28
  end
29
29
  end
30
30
 
31
- def news_item_archive_link(item)
32
- if item.publish_date >= Time.now.end_of_year.advance(:years => -3)
33
- post_date = item.publish_date.strftime('%m/%Y')
34
- year = post_date.split('/')[1]
35
- month = post_date.split('/')[0]
36
- count = News::Item.by_archive(Time.parse(post_date)).size
37
- text = t("date.month_names")[month.to_i] + " #{year} (#{count})"
38
-
39
- link_to(text, refinery.news_items_archive_path(:year => year, :month => month))
40
- else
41
- post_date = post.publish_date.strftime('01/%Y')
42
- year = post_date.split('/')[1]
43
- count = Refinery::News::Item.by_year(Time.parse(post_date)).size
44
- text = "#{year} (#{count})"
45
-
46
- link_to(text, refinery.news_items_archive_path(:year => year))
31
+ def news_item_archive_links
32
+ html = ''
33
+ item_months = ::Refinery::News::Item.archived.group_by {|i| i.publish_date.beginning_of_month}
34
+ item_months.each do |month, items|
35
+ if items.present?
36
+ text = "#{t("date.month_names")[month.month]} #{month.year} (#{items.count})"
37
+ html += "<li>#{link_to(text, refinery.news_items_archive_path(:year => month.year, :month => month.month))}</li>"
38
+ end
47
39
  end
40
+ content_tag('ul', raw(html))
41
+ end
42
+
43
+ def archive_date_format(date_for_month)
44
+ date_for_month ? "%B %Y" : "%Y"
48
45
  end
49
46
  end
50
47
  end
@@ -1,3 +1,5 @@
1
+ require 'acts_as_indexed'
2
+
1
3
  module Refinery
2
4
  module News
3
5
  class Item < Refinery::Core::BaseModel
@@ -6,7 +8,6 @@ module Refinery
6
8
  translates :title, :body
7
9
 
8
10
  attr_accessor :locale # to hold temporarily
9
-
10
11
  attr_accessible :title, :body, :content, :source, :publish_date, :expiration_date
11
12
  class Translation
12
13
  attr_accessible :locale
@@ -35,11 +36,11 @@ module Refinery
35
36
 
36
37
  class << self
37
38
  def by_archive(archive_date)
38
- where(['publish_date between ? and ?', archive_date.beginning_of_month, archive_date.end_of_month])
39
+ where(:publish_date => archive_date.beginning_of_month..archive_date.end_of_month)
39
40
  end
40
41
 
41
42
  def by_year(archive_year)
42
- where(['publish_date between ? and ?', archive_year.beginning_of_year, archive_year.end_of_year])
43
+ where(:publish_date => archive_year.beginning_of_year..archive_year.end_of_year)
43
44
  end
44
45
 
45
46
  def all_previous
@@ -69,7 +70,11 @@ module Refinery
69
70
  end
70
71
 
71
72
  def live
72
- not_expired.where( "publish_date <= ?", Time.now)
73
+ not_expired.where("publish_date <= ?", Time.now)
74
+ end
75
+
76
+ def archived
77
+ where("publish_date <= ?", Time.now)
73
78
  end
74
79
 
75
80
  # rejects any page that has not been translated to the current locale.
@@ -1,14 +1,9 @@
1
1
  <%= form_for [refinery, :news, :admin, @item] do |f| %>
2
- <%= render :partial => "/refinery/admin/error_messages",
3
- :locals => {
4
- :object => @item,
5
- :include_object_name => true
6
- } %>
2
+ <%= render "/refinery/admin/error_messages",
3
+ :object => @item,
4
+ :include_object_name => true %>
7
5
 
8
- <%= render :partial => "locale_picker",
9
- :locals => {
10
- :current_locale => Thread.current[:globalize_locale]
11
- } if defined?(::Refinery::I18n) %>
6
+ <%= render '/refinery/admin/locale_picker', :current_locale => Globalize.locale %>
12
7
 
13
8
  <div class='field'>
14
9
  <%= f.label :title %>
@@ -36,12 +31,10 @@
36
31
  <%= f.text_field :source, :class => "larger widest" %>
37
32
  </div>
38
33
 
39
- <%= render :partial => "/refinery/admin/form_actions",
40
- :locals => {
41
- :f => f,
42
- :continue_editing => true,
43
- :delete_title => t('admin.news.items.item.delete'),
44
- :delete_confirmation => t('shared.admin.delete.message', :title => @item.title)
45
- } %>
34
+ <%= render "/refinery/admin/form_actions",
35
+ :f => f,
36
+ :continue_editing => true,
37
+ :delete_title => t('admin.news.items.item.delete'),
38
+ :delete_confirmation => t('shared.admin.delete.message', :title => @item.title) %>
46
39
 
47
40
  <% end %>
@@ -4,11 +4,12 @@
4
4
  <span class="preview">
5
5
  <%= t('.published') %> <%= l(item.publish_date, :format => :short) %>
6
6
  </span>
7
- <% if defined?(::Refinery::I18n) and ::Refinery::I18n.frontend_locales.many? and
7
+ <% if Refinery::I18n.frontend_locales.many? and
8
8
  (locales = item.translations.collect{|t| t.locale}).present? %>
9
9
  <span class='preview'>
10
10
  <% locales.each do |locale| %>
11
- <%= refinery_icon_tag "flags/#{locale}.png", :size => '32x32' %>
11
+ <%= link_to refinery_icon_tag("flags/#{locale}.png", :size => '16x11'), refinery.edit_news_admin_item_path(item, :switch_locale => locale),
12
+ :class => "locale" %>
12
13
  <% end %>
13
14
  </span>
14
15
  <% end %>
@@ -23,6 +24,8 @@
23
24
  :class => "cancel confirm-delete",
24
25
  :title => t('.delete'),
25
26
  :method => :delete,
26
- :confirm => t('shared.admin.delete.message', :title => item.title) %>
27
+ :data => {
28
+ :confirm => t('refinery.admin.delete.message', :title => item.title)
29
+ } %>
27
30
  </span>
28
31
  </li>
@@ -1 +1 @@
1
- <%= render :partial => "form" %>
1
+ <%= render "form" %>
@@ -1,7 +1,7 @@
1
1
  <div id='actions'>
2
2
  <ul>
3
3
  <li>
4
- <%= render :partial => "/refinery/admin/search", :locals => {:url => refinery.news_admin_items_path} %>
4
+ <%= render "/refinery/admin/search", :url => refinery.news_admin_items_path %>
5
5
  </li>
6
6
  <li>
7
7
  <%= link_to t('.create'), refinery.new_news_admin_item_path, :class => "add_icon" %>
@@ -1 +1 @@
1
- <%= render :partial => "form" %>
1
+ <%= render "form" %>
@@ -1,17 +1,17 @@
1
- <% content_for :title, "#{t('.news_item_archive_for', :date => @archive_date.strftime('%B %Y'))}" %>
1
+ <% content_for :title, "#{t('.news_item_archive_for', :date => l(@archive_date, :format => archive_date_format(@archive_for_month)))}" %>
2
2
 
3
- <% content_for :body_content_left do %>
4
- <h1><%= t('.news_item_archive_for', :date => @archive_date.strftime('%B %Y')) %></h1>
3
+ <% content_for :body do %>
4
+ <h1><%= t('.news_item_archive_for', :date => l(@archive_date, :format => archive_date_format(@archive_for_month))) %></h1>
5
5
  <% if @items.any? %>
6
6
  <section id="news_items">
7
7
  <%= render :partial => "/refinery/news/shared/item", :collection => @items %>
8
8
  </section>
9
9
  <% else %>
10
- <p><%= t('.no_news_item_articles_posted', :date => @archive_date.strftime('%B %Y')) %></p>
10
+ <p><%= t('.no_news_item_articles_posted', :date => l(@archive_date, :format => '%B %Y')) %></p>
11
11
  <% end %>
12
12
  <% end %>
13
13
 
14
- <%= render :partial => '/refinery/news/shared/body_content_right' %>
14
+ <%= render '/refinery/news/shared/body_content_right' %>
15
15
 
16
- <%= render :partial => "/refinery/content_page" %>
16
+ <%= render "/refinery/content_page" %>
17
17
  <% content_for :stylesheets, stylesheet_link_tag('refinery/news/frontend') %>
@@ -1,4 +1,4 @@
1
- <% content_for :body_content_left do %>
1
+ <% content_for :body do %>
2
2
  <%=raw @page.content_for(Refinery::Pages.default_parts.first.to_sym) unless params[:page] %>
3
3
 
4
4
  <% if @items.any? %>
@@ -23,6 +23,6 @@
23
23
  <% content_for :body_content_right_prepend do -%>
24
24
  <%= raw @page.content_for(::Refinery::Pages.default_parts.second.to_sym) %>
25
25
  <% end if ::Refinery::Pages.default_parts.many? -%>
26
- <%= render :partial => '/refinery/news/shared/body_content_right' %>
26
+ <%= render '/refinery/news/shared/body_content_right' %>
27
27
 
28
- <%= render :partial => "/refinery/content_page" %>
28
+ <%= render "/refinery/content_page" %>
@@ -1,5 +1,5 @@
1
1
  <% content_for :body_content_title, @item.title %>
2
- <% content_for :body_content_left do %>
2
+ <% content_for :body do %>
3
3
  <article class="news_item">
4
4
  <p>
5
5
  <small><%= t('.published') %> <%= l(@item.publish_date, :format => :long) %></small>
@@ -15,6 +15,6 @@
15
15
  </p>
16
16
  </article>
17
17
  <% end %>
18
- <% content_for :body_content_right, render(:partial => 'recent_posts') %>
18
+ <% content_for :side_body, render(:partial => 'recent_posts') %>
19
19
 
20
- <%= render :partial => "/refinery/content_page" %>
20
+ <%= render "/refinery/content_page" %>
@@ -1,10 +1,6 @@
1
1
  <section id="news_archive_widget">
2
2
  <h2><%= t('archives', :scope => 'refinery.news.shared') %></h2>
3
3
  <nav>
4
- <ul>
5
- <% items.each do |item| %>
6
- <li><%= news_item_archive_link(item) %></li>
7
- <% end %>
8
- </ul>
4
+ <%= news_item_archive_links %>
9
5
  </nav>
10
6
  </section>
@@ -1,4 +1,4 @@
1
- <% content_for :body_content_right do %>
1
+ <% content_for :side_body do %>
2
2
  <%= yield(:body_content_right_prepend) %>
3
3
  <%= news_item_archive_widget %>
4
4
  <%= yield(:body_content_right_append) %>