refinerycms-pages 0.9.9.13 → 0.9.9.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,30 @@ require 'globalize3'
3
3
  class Page < ActiveRecord::Base
4
4
 
5
5
  translates :title, :meta_keywords, :meta_description, :browser_title, :custom_title if self.respond_to?(:translates)
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
14
+
15
+ @translation
16
+ end
17
+
18
+ # Instruct the Translation model to have meta tags.
19
+ ::Page::Translation.module_eval do
20
+ is_seo_meta
21
+ end
22
+
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}
28
+ end
29
+
6
30
  attr_accessor :locale # to hold temporarily
7
31
  validates :title, :presence => true
8
32
 
@@ -0,0 +1,72 @@
1
+ class CreateSeoMeta < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :seo_meta do |t|
5
+ t.integer :seo_meta_id
6
+ t.string :seo_meta_type
7
+
8
+ t.string :browser_title
9
+ t.string :meta_keywords
10
+ t.text :meta_description
11
+
12
+ t.timestamps
13
+ end
14
+
15
+ add_index :seo_meta, :id
16
+ add_index :seo_meta, [:seo_meta_id, :seo_meta_type]
17
+
18
+ # Grab the attributes of the records that currently exist
19
+ existing_translations = ::Page::Translation.all.map(&:attributes)
20
+
21
+ # Remove columns
22
+ ::SeoMeta.attributes.keys.each do |field|
23
+ if ::Page::Translation.column_names.map(&:to_sym).include?(field)
24
+ remove_column ::Page::Translation.table_name, field
25
+ end
26
+ end
27
+
28
+ # Reset column information because otherwise the old columns will still exist.
29
+ ::Page::Translation.reset_column_information
30
+
31
+ # Re-attach seo_meta
32
+ ::Page::Translation.module_eval do
33
+ is_seo_meta
34
+ end
35
+
36
+ # Migrate data
37
+ existing_translations.each do |translation|
38
+ ::Page::Translation.find(translation['id']).update_attributes(
39
+ ::SeoMeta.attributes.keys.inject({}) {|attributes, name|
40
+ attributes.merge(name => translation[name.to_s])
41
+ }
42
+ )
43
+ end
44
+ end
45
+
46
+ def self.down
47
+ # Grab the attributes of the records that currently exist
48
+ existing_translations = ::Page::Translation.all.map(&:attributes)
49
+
50
+ # Add columns back to your model
51
+ ::SeoMeta.attributes.each do |field, field_type|
52
+ unless ::Page::Translation.column_names.map(&:to_sym).include?(field)
53
+ add_column ::Page::Translation.table_name, field, field_type
54
+ end
55
+ end
56
+
57
+ # Reset column information because otherwise the new columns won't exist yet.
58
+ ::Page::Translation.reset_column_information
59
+
60
+ # Migrate data
61
+ existing_translations.each do |translation|
62
+ ::Page::Translation.find(translation['id']).update_attributes(
63
+ ::SeoMeta.attributes.keys.inject({}) {|attributes, name|
64
+ attributes.merge(name => translation[name.to_s])
65
+ }
66
+ )
67
+ end
68
+
69
+ drop_table :seo_meta
70
+ end
71
+
72
+ end
@@ -26,6 +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.2'
29
30
  end
30
31
  EOF
31
32
 
@@ -1,6 +1,7 @@
1
1
  require 'refinerycms-core'
2
2
  require 'awesome_nested_set'
3
3
  require 'globalize3'
4
+ require 'seo_meta'
4
5
 
5
6
  module Refinery
6
7
  module Pages
@@ -23,7 +24,7 @@ module Refinery
23
24
  require File.expand_path('../pages/tabs', __FILE__)
24
25
  end
25
26
 
26
- refinery.on_attach do
27
+ refinery.after_inclusion do
27
28
  ::ApplicationController.send :include, ::Refinery::Pages::InstanceMethods
28
29
  end
29
30
 
@@ -31,7 +32,7 @@ module Refinery
31
32
  ::Refinery::Plugin.register do |plugin|
32
33
  plugin.name = "refinery_pages"
33
34
  plugin.directory = "pages"
34
- plugin.version = %q{0.9.9}
35
+ plugin.version = %q{0.9.9.13}
35
36
  plugin.menu_match = /(refinery|admin)\/page(_part)?s(_dialogs)?$/
36
37
  plugin.activity = {
37
38
  :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.13}
5
+ s.version = %q{0.9.9.14}
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-03-28}
8
+ s.date = %q{2011-03-31}
9
9
  s.email = %q{info@refinerycms.com}
10
10
  s.homepage = %q{http://refinerycms.com}
11
11
  s.rubyforge_project = %q{refinerycms}
@@ -87,6 +87,7 @@ Gem::Specification.new do |s|
87
87
  'db/migrate/20101216194133_remove_cached_slug_from_pages.rb',
88
88
  'db/migrate/20110307025652_translate_custom_title_on_pages.rb',
89
89
  'db/migrate/20110314213540_remove_translated_fields_from_pages.rb',
90
+ 'db/migrate/20110329080451_create_seo_meta.rb',
90
91
  'db/seeds',
91
92
  'db/seeds/pages.rb',
92
93
  'features',
@@ -114,5 +115,6 @@ Gem::Specification.new do |s|
114
115
  'spec/models/page_spec.rb'
115
116
  ]
116
117
 
117
- s.add_dependency 'refinerycms-core', '~> 0.9.9.13'
118
+ s.add_dependency 'refinerycms-core', '~> 0.9.9.14'
119
+ s.add_dependency 'seo_meta', '~> 1.0.2'
118
120
  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.13
5
+ version: 0.9.9.14
6
6
  platform: ruby
7
7
  authors:
8
8
  - Resolve Digital
@@ -13,7 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2011-03-28 00:00:00 +13:00
16
+ date: 2011-03-31 00:00:00 +13:00
17
17
  default_executable:
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
@@ -24,9 +24,20 @@ dependencies:
24
24
  requirements:
25
25
  - - ~>
26
26
  - !ruby/object:Gem::Version
27
- version: 0.9.9.13
27
+ version: 0.9.9.14
28
28
  type: :runtime
29
29
  version_requirements: *id001
30
+ - !ruby/object:Gem::Dependency
31
+ name: seo_meta
32
+ prerelease: false
33
+ requirement: &id002 !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: 1.0.2
39
+ type: :runtime
40
+ version_requirements: *id002
30
41
  description: The default content engine of Refinery CMS. This engine handles the administration and display of user-editable pages.
31
42
  email: info@refinerycms.com
32
43
  executables: []
@@ -93,6 +104,7 @@ files:
93
104
  - db/migrate/20101216194133_remove_cached_slug_from_pages.rb
94
105
  - db/migrate/20110307025652_translate_custom_title_on_pages.rb
95
106
  - db/migrate/20110314213540_remove_translated_fields_from_pages.rb
107
+ - db/migrate/20110329080451_create_seo_meta.rb
96
108
  - db/seeds/pages.rb
97
109
  - features/manage_pages.feature
98
110
  - features/step_definitions/page_steps.rb