seorel 0.0.5 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5415fb78ce39e34eb897b5d3497242b10cf50aaf
4
- data.tar.gz: ccf9f1f1b2cad13a818550f33be53d9a4c541a75
3
+ metadata.gz: 04ded42a7de4c35cf8b3ca1ae7766053a264092f
4
+ data.tar.gz: 088956d78184b2bc7e7af053dd14d61ef970e9b5
5
5
  SHA512:
6
- metadata.gz: 772d420512c836c0650335fcf2a3bad82a379d59340949ed7a1fd8f690ee58bb667f02d562150dc49997160749aaaaca5715f8d77874030b5af760c38888d2ed
7
- data.tar.gz: 6b6577210a6a1049a49ac57e65e0b19edd56c82c1aa0268097369c888cf1651564dd261945b11754e27c0b0f6fa6b76157ef32163efe535c0e72b65fd458c07c
6
+ metadata.gz: 5cfb0fa0dd75c4ba7035151b6489158ff271ebae44b6ed3dda4d09c2996c90c98934fb5f14a0700a7bca3b91912b1e443cd238f1550393c907aadbd5897fac9a
7
+ data.tar.gz: a914c39f7c167f76cc61e3a396af43247ada409869b46bd9bfe004791dccf547daad9d7576f7f4bf9168b51dc71a2827271f27b2bc738935dfb609bf73b7ec7a
data/README.md CHANGED
@@ -11,7 +11,7 @@ Ruby on Rails SEO Metatags plugins for ActiveRecord models
11
11
  `Gemfile.rb`:
12
12
 
13
13
  ```ruby
14
- gem 'seorel', '~> 0.0.5'
14
+ gem 'seorel', '~> 0.1.0'
15
15
 
16
16
  # the edge version can be had using:
17
17
  # gem 'seorel', github: 'dalpo/seorel'
@@ -34,11 +34,16 @@ Will generate the `seorel_config.rb` initializer to customize the default values
34
34
 
35
35
  ```ruby
36
36
  Seorel.configure do |config|
37
+ # config.default_prepend_title = nil
37
38
  # config.default_title = nil
39
+ # config.default_append_title = nil
40
+ #
41
+ # config.default_prepend_description = nil
38
42
  # config.default_description = nil
43
+ # config.default_append_description = nil
44
+ #
39
45
  # config.default_image = nil
40
- # config.prepend_title = nil
41
- # config.append_title = nil
46
+ #
42
47
  # config.store_seorel_if = :empty # Available values :empty | :changed
43
48
  end
44
49
  ```
@@ -92,7 +97,7 @@ class PostsController < ApplicationController
92
97
  @post = Post.find(params[:id])
93
98
  ###
94
99
  # Extract meta tags info from your Seorelified Model
95
- add_metatags(@post)
100
+ add_metatags @post
96
101
 
97
102
  ...
98
103
  end
@@ -111,7 +116,20 @@ For instance `seorel.en.yml`:
111
116
  # encoding: utf-8
112
117
  en:
113
118
  seorel:
119
+ # controller_name:
120
+ # action_name:
121
+ # prepend_title: '...'
122
+ # title: '...'
123
+ # append_title: '...'
124
+ #
125
+ # prepend_description: '...'
126
+ # description: '...'
127
+ # append_description: '...'
128
+
114
129
  posts:
130
+ show:
131
+ prepend_title: "Details for: "
132
+
115
133
  history:
116
134
  title: "Posts history metatitle"
117
135
  description: "Posts history metadescriprion"
@@ -1,9 +1,14 @@
1
1
  # encoding: utf-8
2
2
  Seorel.configure do |config|
3
+ # config.default_prepend_title = nil
3
4
  # config.default_title = nil
5
+ # config.default_append_title = nil
6
+ #
7
+ # config.default_prepend_description = nil
4
8
  # config.default_description = nil
9
+ # config.default_append_description = nil
10
+ #
5
11
  # config.default_image = nil
6
- # config.prepend_title = nil
7
- # config.append_title = nil
12
+ #
8
13
  # config.store_seorel_if = :empty # Available values :empty | :changed
9
14
  end
data/lib/seorel/config.rb CHANGED
@@ -19,11 +19,16 @@ module Seorel
19
19
  class Configuration #:nodoc:
20
20
  include ActiveSupport::Configurable
21
21
 
22
+ config_accessor :default_prepend_title
22
23
  config_accessor :default_title
24
+ config_accessor :default_append_title
25
+
26
+ config_accessor :default_prepend_description
23
27
  config_accessor :default_description
28
+ config_accessor :default_append_description
29
+
24
30
  config_accessor :default_image
25
- config_accessor :prepend_title
26
- config_accessor :append_title
31
+
27
32
  config_accessor :store_seorel_if
28
33
 
29
34
  def param_name
@@ -36,13 +41,17 @@ module Seorel
36
41
  class_eval writer, __FILE__, line
37
42
  end
38
43
 
39
- # this is ugly. why can't we pass the default value to config_accessor...?
40
44
  configure do |config|
45
+ config.default_prepend_title = nil
41
46
  config.default_title = nil
47
+ config.default_append_title = nil
48
+
49
+ config.default_prepend_description = nil
42
50
  config.default_description = nil
51
+ config.default_append_description = nil
52
+
43
53
  config.default_image = nil
44
- config.prepend_title = nil
45
- config.append_title = nil
54
+
46
55
  config.store_seorel_if = :empty
47
56
  end
48
57
  end
@@ -14,40 +14,83 @@ module Seorel
14
14
  @controller = controller
15
15
  end
16
16
 
17
- def full_title
18
- [default_options.prepend_title, self.title, default_options.append_title].compact.join.html_safe
19
- end
20
-
21
17
  def title
22
- (config.title || I18n.t(i18n_path(:title), default: default_options.default_title)).html_safe
18
+ [
19
+ self.lookup_prepend_title,
20
+ self.base_title,
21
+ self.lookup_append_title
22
+ ].compact.join.html_safe
23
23
  end
24
24
 
25
25
  def description
26
- (config.description || I18n.t(i18n_path(:description), default: default_options.default_description)).html_safe
26
+ [
27
+ self.lookup_prepend_description,
28
+ self.base_description,
29
+ self.lookup_append_description
30
+ ].compact.join.html_safe
27
31
  end
28
32
 
29
33
  def image
30
34
  config.image || default_options.default_image
31
35
  end
32
36
 
37
+ def base_title
38
+ (config.title || self.lookup_title).html_safe
39
+ end
40
+
41
+ def base_description
42
+ (config.description || self.lookup_description).html_safe
43
+ end
44
+
33
45
  def default_options
34
46
  ::Seorel.config
35
47
  end
36
48
 
37
- protected
49
+ def lookup_i18n(key, default = nil)
50
+ I18n.t i18n_path(key), default: (default || '')
51
+ end
52
+
53
+ def lookup_prepend_title
54
+ lookup_i18n :prepend_title, default_options.default_prepend_title
55
+ end
38
56
 
39
- def controller
40
- @controller
57
+ def lookup_title
58
+ lookup_i18n :title, default_options.default_title
41
59
  end
42
60
 
43
- def i18n_path(key)
44
- [
45
- 'seorel',
46
- controller.class.name.underscore,
47
- controller.action_name,
48
- key
49
- ].join('.')
61
+ def lookup_append_title
62
+ lookup_i18n :append_title, default_options.default_append_title
50
63
  end
64
+
65
+ def lookup_prepend_description
66
+ lookup_i18n :prepend_description, default_options.default_prepend_description
67
+ end
68
+
69
+ def lookup_description
70
+ lookup_i18n :description, default_options.default_description
71
+ end
72
+
73
+ def lookup_append_description
74
+ lookup_i18n :append_description, default_options.default_append_description
75
+ end
76
+
77
+ protected
78
+
79
+ def controller
80
+ @controller
81
+ end
82
+
83
+ def controller_name
84
+ controller.class.name.underscore.gsub(/_controller$/, '')
85
+ end
86
+
87
+ def action_name
88
+ controller.action_name
89
+ end
90
+
91
+ def i18n_path(key)
92
+ ['seorel', self.controller_name, self.action_name, key].join('.')
93
+ end
51
94
  end
52
95
  end
53
96
  end
data/lib/seorel/helper.rb CHANGED
@@ -7,7 +7,7 @@ module Seorel
7
7
  end
8
8
 
9
9
  def render_title
10
- content_tag :title, seorel_params.full_title
10
+ content_tag :title, seorel_params.title
11
11
  end
12
12
 
13
13
  def render_description
@@ -17,7 +17,7 @@ module Seorel
17
17
  def render_open_graph
18
18
  [
19
19
  content_tag(:meta, nil, name: 'og:type', content: 'website'),
20
- content_tag(:meta, nil, name: 'og:title', content: seorel_params.full_title),
20
+ content_tag(:meta, nil, name: 'og:title', content: seorel_params.title),
21
21
  content_tag(:meta, nil, name: 'og:description', content: seorel_params.description),
22
22
  content_tag(:meta, nil, name: 'og:image', content: seorel_params.image),
23
23
  content_tag(:meta, nil, name: 'og:locale', content: I18n.locale.to_s)
@@ -28,7 +28,7 @@ module Seorel
28
28
  [
29
29
  content_tag(:meta, nil, name: 'twitter:card', content: 'summary'),
30
30
  content_tag(:meta, nil, name: 'twitter:url', content: request.url),
31
- content_tag(:meta, nil, name: 'twitter:title', content: seorel_params.full_title),
31
+ content_tag(:meta, nil, name: 'twitter:title', content: seorel_params.title),
32
32
  content_tag(:meta, nil, name: 'twitter:description', content: seorel_params.description),
33
33
  content_tag(:meta, nil, name: 'twitter:image', content: seorel_params.image)
34
34
  ].join("\n").html_safe
@@ -2,10 +2,9 @@
2
2
  module Seorel
3
3
  module Model
4
4
  module Base
5
-
6
5
  def seorelify(*args)
7
- include InstanceMethods
8
6
  extend ClassMethods
7
+ include InstanceMethods
9
8
 
10
9
  cattr_accessor :seorel_title_field, :seorel_description_field, :seorel_image_field
11
10
 
@@ -20,13 +19,13 @@ module Seorel
20
19
  end
21
20
 
22
21
  has_one :seorel, as: :seorelable, dependent: :destroy, class_name: 'Seorel::Seorel'
23
- accepts_nested_attributes_for :seorel, allow_destroy: false
22
+ accepts_nested_attributes_for :seorel, allow_destroy: true
24
23
 
25
- before_save :set_seorel
24
+ delegate :title, :title?, :description, :description?, :image, :image?,
25
+ to: :seorel, prefix: :seo, allow_nil: true
26
26
 
27
- delegate :title, :title?, :description, :description?, :image, :image?, to: :seorel, prefix: :seo, allow_nil: true
27
+ before_save :set_seorel
28
28
  end
29
-
30
29
  end
31
30
  end
32
31
  end
@@ -2,11 +2,9 @@
2
2
  module Seorel
3
3
  module Model
4
4
  module ClassMethods
5
-
6
5
  def seorel?
7
6
  true
8
7
  end
9
-
10
8
  end
11
9
  end
12
10
  end
@@ -2,17 +2,20 @@
2
2
  module Seorel
3
3
  module Model
4
4
  module InstanceMethods
5
-
6
5
  def seorel?
7
6
  self.try(:seorel).present?
8
7
  end
9
8
 
9
+ def seorel_changed_mode?
10
+ ::Seorel.config.store_seorel_if.eql?(:changed)
11
+ end
12
+
10
13
  def should_update_seo_title?
11
- ::Seorel.config.store_seorel_if.eql?(:changed) || !self.seo_title?
14
+ self.seorel_changed_mode? || !self.seo_title?
12
15
  end
13
16
 
14
17
  def should_update_seo_description?
15
- ::Seorel.config.store_seorel_if.eql?(:changed) || !self.seo_description?
18
+ self.seorel_changed_mode? || !self.seo_description?
16
19
  end
17
20
 
18
21
  def set_seorel
@@ -35,7 +38,6 @@ module Seorel
35
38
  def seorel_default_value?
36
39
  self.class.seorel_base_field.present?
37
40
  end
38
-
39
41
  end
40
42
  end
41
43
  end
@@ -1,3 +1,3 @@
1
1
  module Seorel
2
- VERSION = '0.0.5'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seorel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrea Dal Ponte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-10 00:00:00.000000000 Z
11
+ date: 2014-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails