refinerycms-news 0.9.8.4 → 0.9.9

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.
@@ -11,8 +11,8 @@ class NewsItem < ActiveRecord::Base
11
11
 
12
12
  # If you're using a named scope that includes a changing variable you need to wrap it in a lambda
13
13
  # This avoids the query being cached thus becoming unaffected by changes (i.e. Time.now is constant)
14
- named_scope :latest, lambda { |*limit| { :conditions => ["publish_date < ?", Time.now], :limit => (limit.first || 10) } }
15
- named_scope :published, lambda { { :conditions => ["publish_date < ?", Time.now] } }
14
+ scope :latest, lambda { |*limit| { :conditions => ["publish_date < ?", Time.now], :limit => (limit.first || 10) } }
15
+ scope :published, lambda { { :conditions => ["publish_date < ?", Time.now] } }
16
16
 
17
17
  def not_published? # has the published date not yet arrived?
18
18
  publish_date > Time.now
@@ -1,5 +1,9 @@
1
1
  <% form_for [:admin, @news_item] do |f| %>
2
- <%= f.error_messages %>
2
+ <%= render :partial => "/shared/admin/error_messages",
3
+ :locals => {
4
+ :object => @news_item,
5
+ :include_object_name => true
6
+ } %>
3
7
 
4
8
  <div class='field'>
5
9
  <%= f.label :title %>
@@ -19,7 +23,9 @@
19
23
  <%= render :partial => "/shared/admin/form_actions",
20
24
  :locals => {
21
25
  :f => f,
22
- :continue_editing => true
26
+ :continue_editing => true,
27
+ :delete_title => t('admin.news_items.news_item.delete'),
28
+ :delete_confirmation => t('shared.admin.delete.message', :title => @news_item.title)
23
29
  } %>
24
30
 
25
31
  <% end %>
@@ -11,6 +11,8 @@
11
11
  :title => t('.edit') %>
12
12
  <%= link_to refinery_icon_tag('delete.png'), admin_news_item_path(news_item),
13
13
  :class => "cancel confirm-delete",
14
- :title => t('.delete') %>
14
+ :title => t('.delete'),
15
+ :'data-method' => :delete,
16
+ :'data-confirm' => t('shared.admin.delete.message', :title => news_item.title) %>
15
17
  </span>
16
18
  </li>
@@ -1,9 +1,9 @@
1
- <% content_for :body_content_title, "<h1>#{@news_item.title}</h1>" %>
1
+ <% content_for :body_content_title, @news_item.title %>
2
2
  <% content_for :body_content_left do %>
3
3
  <p>
4
4
  <small><%= t('.published') %> <%= l(@news_item.publish_date, :format => :long) %></small>
5
5
  </p>
6
- <%= @news_item.body %>
6
+ <%= @news_item.body.html_safe %>
7
7
  <p>
8
8
  <%= link_to t('.back_to_index'), news_items_url %>
9
9
  </p>
@@ -1,7 +1,8 @@
1
1
  en:
2
2
  plugins:
3
- news:
3
+ refinerycms_news:
4
4
  title: News
5
+ description: Provides a blog-like news section
5
6
  admin:
6
7
  news_items:
7
8
  news_item:
@@ -0,0 +1,34 @@
1
+ ru:
2
+ plugins:
3
+ news:
4
+ title: "Новости"
5
+ admin:
6
+ news_items:
7
+ news_item:
8
+ view_live: "Просмотреть новость <br/><em>(будет открыто в новом окне)</em>"
9
+ edit: "Редактировать новость"
10
+ delete: "Удалить новость"
11
+ index:
12
+ actions: "Действия"
13
+ create: "Создать новость"
14
+ news_item: "Новости"
15
+ no_items: "Ничего не найдено."
16
+ no_items_yet: 'Новостей пока нет.'
17
+ news_items:
18
+ show:
19
+ back_to_index: "Вернуться к новостям"
20
+ published: "Опубликована"
21
+ no_items: "Пока новостей нет."
22
+ recent_posts:
23
+ recent_posts: "Последние публикации"
24
+ index:
25
+ published: "Опубликовано"
26
+ read_more: "Читать далее"
27
+ activerecord:
28
+ attributes:
29
+ news_item:
30
+ title: "Заголовок"
31
+ body: "Публикация"
32
+ publish_date: "Дата публикации"
33
+ models:
34
+ news_item: "Новость"
data/config/routes.rb CHANGED
@@ -1,7 +1,7 @@
1
- ActionController::Routing::Routes.draw do |map|
2
- map.resources :news_items, :as => :news
1
+ Refinery::Application.routes.draw do
2
+ resources :news, :as => :news_items, :controller => :news_items
3
3
 
4
- map.namespace(:admin, :path_prefix => (defined?(REFINERY_GEM_VERSION) ? 'admin' : 'refinery')) do |admin|
5
- admin.resources :news_items, :as => :news
4
+ scope(:path => 'refinery', :as => 'admin', :module => 'admin') do
5
+ resources :news, :as => :news_items, :controller => :news_items
6
6
  end
7
- end
7
+ end
data/lib/gemspec.rb CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |s|
18
18
  s.authors = %w(Resolve\\ Digital)
19
19
  s.require_paths = %w(lib)
20
20
 
21
+ s.add_dependency 'refinerycms', '~> 0.9.8'
22
+
21
23
  s.files = [
22
24
  '#{files.join("',\n '")}'
23
25
  ]
@@ -0,0 +1,23 @@
1
+ class Create<%= table_name.camelize %> < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :<%= table_name %>, :id => true do |t|
5
+ <% attributes.each do |attribute| -%>
6
+ t.<%= attribute.type %> :<%= attribute.name %>
7
+ <% end -%>
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :<%= table_name %>, :id
12
+ load(Rails.root.join('db', 'seeds', 'refinerycms_news.rb').to_s)
13
+ end
14
+
15
+ def self.down
16
+ UserPlugin.destroy_all({:name => "refinerycms_news"})
17
+
18
+ Page.delete_all({:link_url => "/news"})
19
+
20
+ drop_table :<%= table_name %>
21
+ end
22
+
23
+ end
@@ -0,0 +1,16 @@
1
+ User.find(:all).each do |user|
2
+ user.plugins.create(:name => "refinerycms_news",
3
+ :position => (user.plugins.maximum(:position) || -1) +1)
4
+ end
5
+
6
+ page = Page.create(
7
+ :title => "News",
8
+ :link_url => "/news",
9
+ :deletable => false,
10
+ :position => ((Page.maximum(:position, :conditions => {:parent_id => nil}) || -1)+1),
11
+ :menu_match => "^/news.*$"
12
+ )
13
+
14
+ Page.default_parts.each do |default_page_part|
15
+ page.parts.create(:title => default_page_part, :body => nil)
16
+ end
@@ -0,0 +1,50 @@
1
+ require 'rails/generators/migration'
2
+
3
+ class RefinerycmsNewsGenerator < Rails::Generators::NamedBase
4
+ include Rails::Generators::Migration
5
+
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"]
9
+
10
+ def generate
11
+ # seed file
12
+ template 'db/seeds/seed.rb', Rails.root.join('db/seeds/refinerycms_news.rb')
13
+
14
+ next_migration_number = ActiveRecord::Generators::Base.next_migration_number(File.dirname(__FILE__))
15
+ template('db/migrate/migration_number_create_singular_name.rb',
16
+ Rails.root.join("db/migrate/#{next_migration_number}_create_#{singular_name}.rb"))
17
+
18
+ puts "------------------------"
19
+ puts "Now run:"
20
+ puts "rake db:migrate"
21
+ puts "------------------------"
22
+ end
23
+ end
24
+
25
+ # Below is a hack until this issue:
26
+ # https://rails.lighthouseapp.com/projects/8994/tickets/3820-make-railsgeneratorsmigrationnext_migration_number-method-a-class-method-so-it-possible-to-use-it-in-custom-generators
27
+ # is fixed on the Rails project.
28
+
29
+ require 'rails/generators/named_base'
30
+ require 'rails/generators/migration'
31
+ require 'rails/generators/active_model'
32
+ require 'active_record'
33
+
34
+ module ActiveRecord
35
+ module Generators
36
+ class Base < Rails::Generators::NamedBase #:nodoc:
37
+ include Rails::Generators::Migration
38
+
39
+ # Implement the required interface for Rails::Generators::Migration.
40
+ def self.next_migration_number(dirname) #:nodoc:
41
+ next_migration_number = current_migration_number(dirname) + 1
42
+ if ActiveRecord::Base.timestamped_migrations
43
+ [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
44
+ else
45
+ "%.3d" % next_migration_number
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
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{0.9.8.4}
5
+ %q{0.9.9}
6
6
  end
7
7
  end
8
8
  end
@@ -0,0 +1,23 @@
1
+ require 'refinery'
2
+ require File.expand_path('../news', __FILE__)
3
+
4
+ module Refinery
5
+ module News
6
+
7
+ class Engine < Rails::Engine
8
+ config.after_initialize do
9
+ Refinery::Plugin.register do |plugin|
10
+ plugin.name = "refinerycms_news"
11
+ plugin.menu_match = /(admin|refinery)\/news(_items)?$/
12
+ plugin.url = {:controller => '/admin/news_items', :action => 'index'}
13
+ plugin.activity = {
14
+ :class => NewsItem,
15
+ :title => 'title',
16
+ :url_prefix => 'edit'
17
+ }
18
+ end
19
+ end
20
+ end
21
+
22
+ end
23
+ end
data/readme.md CHANGED
@@ -17,27 +17,18 @@ To install the news engine, you can either include the gem or install as a plugi
17
17
 
18
18
  ## Requirements
19
19
 
20
- [RefineryCMS](http://refinerycms.com) version 0.9.6 or later.
20
+ [RefineryCMS](http://refinerycms.com) version 0.9.8 or later.
21
21
 
22
- ### Gem Installation using Bundler
22
+ ### Gem Installation using Bundler (The very best way)
23
23
 
24
24
  Include the latest [gem](http://rubygems.org/gems/refinerycms-news) into your Refinery CMS application's Gemfile:
25
25
 
26
- gem "refinerycms-news", '~> 0.9.8.1', :require => "news"
26
+ gem "refinerycms-news", '~> 0.9.9'
27
27
 
28
28
  Then type the following at command line inside your Refinery CMS application's root directory:
29
29
 
30
30
  bundle install
31
- script/generate news
32
- rake db:migrate
33
-
34
- ### Rails Engine Installation
35
-
36
- If you do not want to install the engine via bundler then you can install it as an engine inside your application's vendor directory.
37
- Type the following at command line inside your Refinery CMS application's root directory:
38
-
39
- script/plugin install git://github.com/resolve/refinerycms-news.git
40
- script/generate news
31
+ rails generate refinerycms_news
41
32
  rake db:migrate
42
33
 
43
34
  ## RSS (Really Simple Syndication)
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refinerycms-news
3
3
  version: !ruby/object:Gem::Version
4
- hash: 47
4
+ hash: 41
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 8
10
- - 4
11
- version: 0.9.8.4
9
+ - 9
10
+ version: 0.9.9
12
11
  platform: ruby
13
12
  authors:
14
13
  - Resolve Digital
@@ -16,10 +15,25 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2010-08-31 00:00:00 +12:00
18
+ date: 2010-09-09 00:00:00 +12:00
20
19
  default_executable:
21
- dependencies: []
22
-
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: refinerycms
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 43
30
+ segments:
31
+ - 0
32
+ - 9
33
+ - 8
34
+ version: 0.9.8
35
+ type: :runtime
36
+ version_requirements: *id001
23
37
  description: A really straightforward open source Ruby on Rails news engine designed for integration with RefineryCMS.
24
38
  email: info@refinerycms.com
25
39
  executables: []
@@ -44,13 +58,15 @@ files:
44
58
  - config/locales/en.yml
45
59
  - config/locales/nl.yml
46
60
  - config/locales/pt-BR.yml
61
+ - config/locales/ru.yml
47
62
  - config/routes.rb
48
- - generators/news/news_generator.rb
49
- - generators/news/templates/migration.rb
50
63
  - lib/gemspec.rb
64
+ - lib/generators/refinerycms_news/templates/db/migrate/migration_number_create_singular_name.rb
65
+ - lib/generators/refinerycms_news/templates/db/seeds/seed.rb
66
+ - lib/generators/refinerycms_news_generator.rb
51
67
  - lib/news.rb
68
+ - lib/refinerycms-news.rb
52
69
  - license.md
53
- - rails/init.rb
54
70
  - readme.md
55
71
  - test/fixtures/news_items.yml
56
72
  - test/unit/news_items_test.rb
@@ -1,29 +0,0 @@
1
- class NewsGenerator < Rails::Generator::NamedBase
2
-
3
- def initialize(*runtime_args)
4
- # set first argument to the table's name so that the user doesn't have to pass it in.
5
- runtime_args[0] = ["news_items"]
6
- super(*runtime_args)
7
- end
8
-
9
- def banner
10
- "Usage: script/generate news"
11
- end
12
-
13
- def manifest
14
- record do |m|
15
- m.migration_template 'migration.rb', 'db/migrate',
16
- :migration_file_name => "create_structure_for_news",
17
- :assigns => {
18
- :migration_name => "CreateStructureForNews",
19
- :table_name => "news_items",
20
- :attributes => [
21
- Rails::Generator::GeneratedAttribute.new("title", "string"),
22
- Rails::Generator::GeneratedAttribute.new("body", "text"),
23
- Rails::Generator::GeneratedAttribute.new("publish_date", "datetime")
24
- ]
25
- }
26
- end
27
- end
28
-
29
- end if defined?(Rails::Generator::NamedBase)
@@ -1,42 +0,0 @@
1
- class <%= migration_name %> < ActiveRecord::Migration
2
-
3
- def self.up
4
- create_table :<%= table_name %> do |t|
5
- <% attributes.each do |attribute| -%>
6
- t.<%= attribute.type %> :<%= attribute.name %>
7
- <% end -%>
8
- t.timestamps
9
- end
10
-
11
- add_index :<%= table_name %>, :id
12
-
13
- User.find(:all).each do |user|
14
- user.plugins.create(:name => "News", :position => (user.plugins.maximum(:position) || -1) + 1)
15
- end
16
-
17
- page = Page.create(:title => "News",
18
- :link_url => "/news",
19
- :menu_match => "^/news.*$",
20
- :deletable => false,
21
- :position => Page.count)
22
-
23
- RefinerySetting.find_or_set(:default_page_parts, ["Body", "Side Body"]).each do |default_page_part|
24
- page.parts.create(:title => default_page_part, :body => nil)
25
- end
26
-
27
- end
28
-
29
- def self.down
30
- UserPlugin.destroy_all({:title => "News"})
31
-
32
- Page.find_all_by_link_url("/news").each do |page|
33
- page.link_url, page.menu_match = nil
34
- page.deletable = true
35
- page.destroy
36
- end
37
- Page.destroy_all({:link_url => "/news"})
38
-
39
- drop_table :<%= table_name %>
40
- end
41
-
42
- end
data/rails/init.rb DELETED
@@ -1,14 +0,0 @@
1
- Refinery::Plugin.register do |plugin|
2
- plugin.title = "News"
3
- plugin.name = "news"
4
- plugin.description = "Provides a blog-like news section"
5
- plugin.version = 1.0
6
- plugin.menu_match = /(admin|refinery)\/news(_items)?$/
7
- plugin.url = '/refinery/news'
8
- plugin.activity = {
9
- :class => NewsItem,
10
- :title => 'title',
11
- :url_prefix => 'edit'
12
- }
13
- plugin.directory = directory
14
- end