refinerycms-pages 0.9.9.16 → 0.9.9.17

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.
@@ -27,16 +27,15 @@ module Admin
27
27
  super
28
28
 
29
29
  # Check whether we need to override e.g. on the pages form.
30
- unless params[:switch_locale] or @page.nil? or @page.slugs.where(:locale => Refinery::I18n.current_locale).nil? or !@page.persisted?
31
- if @page.slug.nil? and @page.slugs.length > 0
32
- @page.slug = @page.slugs[0]
33
- end
34
- if @page.slug
35
- Thread.current[:globalize_locale] = @page.slug.locale
36
- end
30
+ unless params[:switch_locale] || @page.nil? || @page.new_record? || @page.slugs.where({
31
+ :locale => Refinery::I18n.current_locale}
32
+ ).nil?
33
+ @page.slug = @page.slugs.first if @page.slug.nil? && @page.slugs.any?
34
+ Thread.current[:globalize_locale] = @page.slug.locale if @page.slug
37
35
  end
38
36
  else
39
- Thread.current[:globalize_locale] = nil
37
+ # Always display the tree of pages from the default frontend locale.
38
+ Thread.current[:globalize_locale] = params[:switch_locale].try(:to_sym) || ::Refinery::I18n.default_frontend_locale
40
39
  end
41
40
  end
42
41
 
@@ -3,8 +3,6 @@ require 'net/http'
3
3
  module Admin
4
4
  class PagesDialogsController < Admin::DialogsController
5
5
 
6
- crudify :page
7
-
8
6
  def link_to
9
7
  @pages = Page.paginate :page => params[:page],
10
8
  :conditions => {:parent_id => nil},
data/app/models/page.rb CHANGED
@@ -4,27 +4,39 @@ class Page < ActiveRecord::Base
4
4
 
5
5
  translates :title, :meta_keywords, :meta_description, :browser_title, :custom_title if self.respond_to?(:translates)
6
6
 
7
- # Set up support for meta tags through translations.
8
- if defined?(::Page::Translation) && ::Page::Translation.table_exists?
9
- def translation
10
- if @translation.nil? or @translation.try(:locale) != ::Globalize.locale
11
- @translation = translations.with_locale(::Globalize.locale).first
12
- @translation ||= translations.build(:locale => ::Globalize.locale)
13
- end
7
+ attr_accessible :id, :deletable, :link_url, :menu_match, :meta_keywords,
8
+ :skip_to_first_child, :position, :show_in_menu, :draft,
9
+ :parts_attributes, :browser_title, :meta_description,
10
+ :custom_title_type, :parent_id, :custom_title,
11
+ :created_at, :updated_at, :page_id
14
12
 
15
- @translation
13
+ # Set up support for meta tags through translations.
14
+ if defined?(::Page::Translation)
15
+ attr_accessible :title
16
+ # set allowed attributes for mass assignment
17
+ ::Page::Translation.module_eval do
18
+ attr_accessible :browser_title, :meta_description, :meta_keywords,
19
+ :locale
16
20
  end
21
+ if ::Page::Translation.table_exists?
22
+ def translation
23
+ if @translation.nil? or @translation.try(:locale) != ::Globalize.locale
24
+ @translation = translations.with_locale(::Globalize.locale).first
25
+ @translation ||= translations.build(:locale => ::Globalize.locale)
26
+ end
27
+
28
+ @translation
29
+ end
17
30
 
18
31
  # Instruct the Translation model to have meta tags.
19
- ::Page::Translation.module_eval do
20
- is_seo_meta
21
- end
32
+ ::Page::Translation.send :is_seo_meta
22
33
 
23
- # Delegate all SeoMeta attributes to the active translation.
24
- fields = ::SeoMeta.attributes.keys.map{|a| [a, :"#{a}="]}.flatten
25
- fields << {:to => :translation}
26
- delegate *fields
27
- after_save proc {|m| m.translation.save}
34
+ # Delegate all SeoMeta attributes to the active translation.
35
+ fields = ::SeoMeta.attributes.keys.map{|a| [a, :"#{a}="]}.flatten
36
+ fields << {:to => :translation}
37
+ delegate *fields
38
+ after_save proc {|m| m.translation.save}
39
+ end
28
40
  end
29
41
 
30
42
  attr_accessor :locale # to hold temporarily
@@ -36,13 +48,15 @@ class Page < ActiveRecord::Base
36
48
  has_friendly_id :title, :use_slug => true,
37
49
  :default_locale => (::Refinery::I18n.default_frontend_locale rescue :en),
38
50
  :reserved_words => %w(index new session login logout users refinery admin images wymiframe),
39
- :approximate_ascii => RefinerySetting.find_or_set(:approximate_ascii, false, :scoping => "pages")
51
+ :approximate_ascii => RefinerySetting.find_or_set(:approximate_ascii, false, :scoping => "pages"),
52
+ :strip_non_ascii => RefinerySetting.find_or_set(:strip_non_ascii, false, :scoping => "pages")
40
53
 
41
54
  has_many :parts,
42
55
  :class_name => "PagePart",
43
56
  :order => "position ASC",
44
57
  :inverse_of => :page,
45
- :dependent => :destroy
58
+ :dependent => :destroy,
59
+ :include => :translations
46
60
 
47
61
  accepts_nested_attributes_for :parts, :allow_destroy => true
48
62
 
@@ -54,19 +68,25 @@ class Page < ActiveRecord::Base
54
68
  after_save :reposition_parts!, :invalidate_child_cached_url, :expire_page_caching
55
69
  after_destroy :expire_page_caching
56
70
 
57
- scope :live, where(:draft => false)
58
- scope :by_title, lambda {|t|
59
- where(:id => Page::Translation.where(:locale => Globalize.locale, :title => t).map(&:page_id))
71
+ # Wrap up the logic of finding the pages based on the translations table.
72
+ scope :with_globalize, lambda {|t|
73
+ if defined?(::Page::Translation)
74
+ t = {:locale => Globalize.locale}.merge(t || {})
75
+ where(:id => ::Page::Translation.where(t).select('page_id AS id'))
76
+ else
77
+ where(t)
78
+ end
60
79
  }
61
80
 
81
+ scope :live, where(:draft => false)
82
+ scope :by_title, lambda {|t| with_globalize(:title => t)}
83
+
62
84
  # Shows all pages with :show_in_menu set to true, but it also
63
85
  # rejects any page that has not been translated to the current locale.
64
86
  # This works using a query against the translated content first and then
65
87
  # using all of the page_ids we further filter against this model's table.
66
88
  scope :in_menu, lambda {
67
- where(:show_in_menu => true).includes(:translations).where(
68
- :id => Page::Translation.where(:locale => Globalize.locale).map(&:page_id)
69
- )
89
+ where(:show_in_menu => true).with_globalize({})
70
90
  }
71
91
 
72
92
  # when a dialog pops up to link to a page, how many pages per page should there be
@@ -293,10 +313,10 @@ class Page < ActiveRecord::Base
293
313
 
294
314
  # In the admin area we use a slightly different title to inform the which pages are draft or hidden pages
295
315
  def title_with_meta
296
- if self.title.nil?
297
- title = [::Page::Translation.where(:page_id => self.id).first.title.to_s]
316
+ title = if self.title.nil?
317
+ [::Page::Translation.where(:page_id => self.id, :locale => Globalize.locale).first.try(:title).to_s]
298
318
  else
299
- title = [self.title.to_s]
319
+ [self.title.to_s]
300
320
  end
301
321
 
302
322
  title << "<em>(#{::I18n.t('hidden', :scope => 'admin.pages.page')})</em>" unless show_in_menu?
@@ -1,5 +1,7 @@
1
1
  class PagePart < ActiveRecord::Base
2
2
 
3
+ attr_accessible :title, :content, :position, :body, :created_at,
4
+ :updated_at, :page_id
3
5
  belongs_to :page
4
6
 
5
7
  validates :title, :presence => true
@@ -12,7 +14,11 @@ class PagePart < ActiveRecord::Base
12
14
  end
13
15
 
14
16
  before_save :normalise_text_fields
15
-
17
+ if defined?(::PagePart::Translation)
18
+ ::PagePart::Translation.module_eval do
19
+ attr_accessible :locale
20
+ end
21
+ end
16
22
  protected
17
23
  def normalise_text_fields
18
24
  unless body.blank? or body =~ /^\</
@@ -109,7 +109,7 @@
109
109
  <%= will_paginate @resources,
110
110
  :param_name => :resource_page,
111
111
  :renderer => Refinery::LinkRenderer,
112
- :url => {:paginating => "resource_file"},
112
+ :params => {:paginating => "resource_file"},
113
113
  :id => 'resouces_paginate' %>
114
114
  </div>
115
115
  </div>
data/lib/gemspec.rb CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  ]
27
27
 
28
28
  s.add_dependency 'refinerycms-core', '= #{::Refinery::Version}'
29
- s.add_dependency 'seo_meta', '~> 1.0.3'
29
+ s.add_dependency 'seo_meta', '~> 1.0.4'
30
30
  end
31
31
  EOF
32
32
 
@@ -15,7 +15,7 @@ module Refinery
15
15
 
16
16
  protected
17
17
  def find_pages_for_menu
18
- @menu_pages = Page.in_menu.live.order('lft ASC').includes(:slugs)
18
+ @menu_pages = Page.live.in_menu.order('lft ASC').includes(:slugs)
19
19
  end
20
20
 
21
21
  def render(*args)
@@ -36,7 +36,7 @@ module Refinery
36
36
  ::Refinery::Plugin.register do |plugin|
37
37
  plugin.name = "refinery_pages"
38
38
  plugin.directory = "pages"
39
- plugin.version = %q{0.9.9.13}
39
+ plugin.version = %q{0.9.9.17}
40
40
  plugin.menu_match = /(refinery|admin)\/page(_part)?s(_dialogs)?$/
41
41
  plugin.activity = {
42
42
  :class => Page,
@@ -2,10 +2,10 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{refinerycms-pages}
5
- s.version = %q{0.9.9.16}
5
+ s.version = %q{0.9.9.17}
6
6
  s.summary = %q{Pages engine for Refinery CMS}
7
7
  s.description = %q{The default content engine of Refinery CMS. This engine handles the administration and display of user-editable pages.}
8
- s.date = %q{2011-04-07}
8
+ s.date = %q{2011-04-15}
9
9
  s.email = %q{info@refinerycms.com}
10
10
  s.homepage = %q{http://refinerycms.com}
11
11
  s.rubyforge_project = %q{refinerycms}
@@ -117,6 +117,6 @@ Gem::Specification.new do |s|
117
117
  'spec/models/page_spec.rb'
118
118
  ]
119
119
 
120
- s.add_dependency 'refinerycms-core', '= 0.9.9.16'
121
- s.add_dependency 'seo_meta', '~> 1.0.3'
120
+ s.add_dependency 'refinerycms-core', '= 0.9.9.17'
121
+ s.add_dependency 'seo_meta', '~> 1.0.4'
122
122
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: refinerycms-pages
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.9.9.16
5
+ version: 0.9.9.17
6
6
  platform: ruby
7
7
  authors:
8
8
  - Resolve Digital
@@ -13,8 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2011-04-07 00:00:00 +12:00
17
- default_executable:
16
+ date: 2011-04-15 00:00:00 Z
18
17
  dependencies:
19
18
  - !ruby/object:Gem::Dependency
20
19
  name: refinerycms-core
@@ -24,7 +23,7 @@ dependencies:
24
23
  requirements:
25
24
  - - "="
26
25
  - !ruby/object:Gem::Version
27
- version: 0.9.9.16
26
+ version: 0.9.9.17
28
27
  type: :runtime
29
28
  version_requirements: *id001
30
29
  - !ruby/object:Gem::Dependency
@@ -35,7 +34,7 @@ dependencies:
35
34
  requirements:
36
35
  - - ~>
37
36
  - !ruby/object:Gem::Version
38
- version: 1.0.3
37
+ version: 1.0.4
39
38
  type: :runtime
40
39
  version_requirements: *id002
41
40
  description: The default content engine of Refinery CMS. This engine handles the administration and display of user-editable pages.
@@ -120,7 +119,6 @@ files:
120
119
  - license.md
121
120
  - refinerycms-pages.gemspec
122
121
  - spec/models/page_spec.rb
123
- has_rdoc: true
124
122
  homepage: http://refinerycms.com
125
123
  licenses:
126
124
  - MIT
@@ -144,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
142
  requirements: []
145
143
 
146
144
  rubyforge_project: refinerycms
147
- rubygems_version: 1.6.1
145
+ rubygems_version: 1.7.2
148
146
  signing_key:
149
147
  specification_version: 3
150
148
  summary: Pages engine for Refinery CMS