para-seo_tools 0.5.0 → 0.5.1
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 +4 -4
- data/app/views/admin/para/seo_tools/pages/_actions.html.haml +3 -3
- data/app/views/admin/para/seo_tools/pages/_filters.html.haml +17 -15
- data/app/views/admin/para/seo_tools/pages/_form.html.haml +8 -9
- data/app/views/admin/para/seo_tools/pages/_table.html.haml +6 -5
- data/config/locales/para-seo_tools.fr.yml +3 -18
- data/lib/generators/para/seo_tools/install/templates/skeleton.rb +3 -31
- data/lib/para/seo_tools/controller.rb +1 -1
- data/lib/para/seo_tools/helpers.rb +0 -1
- data/lib/para/seo_tools/meta_tags/tags/base.rb +2 -2
- data/lib/para/seo_tools/meta_tags/tags/description.rb +15 -7
- data/lib/para/seo_tools/meta_tags/tags/image.rb +11 -3
- data/lib/para/seo_tools/meta_tags/tags/keywords.rb +2 -2
- data/lib/para/seo_tools/meta_tags/tags/title.rb +12 -7
- data/lib/para/seo_tools/skeleton.rb +6 -1
- data/lib/para/seo_tools/skeleton/page_builder.rb +1 -11
- data/lib/para/seo_tools/version.rb +1 -1
- data/lib/tasks/para_seo_tools_tasks.rake +0 -4
- metadata +3 -4
- data/lib/para/seo_tools/helpers/default_data_methods_helper.rb +0 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 643b353c0fa9c0e3131ddba099cd9a504c8c9ef0
|
|
4
|
+
data.tar.gz: f093c06c3e3d67ce755a466e6b1315c72e5bac84
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fb81cfeecc187846a350ed8e969502b4acbd66e9d407c241343f19175f3e21ff45e655c442063ca7e9eea0288cf9a5e3f02a83b9b3c15de642da1b4c03abd666
|
|
7
|
+
data.tar.gz: 92d4e04d035aa5dabdf30f5481eab43e9668c59c46277c1e043e1fbd0383c0059e409338e6834324e13fb588ead3370185c95e8be4c41ed4dbce46d85504982f
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
%ul.
|
|
1
|
+
%ul.panel-controls
|
|
2
2
|
%li
|
|
3
|
-
= link_to run_admin_skeleton_refresh_path, class: 'btn btn-default
|
|
3
|
+
= link_to run_admin_skeleton_refresh_path, class: 'btn btn-default', remote: true, data: { :'job-tracker-button' => true } do
|
|
4
4
|
= fa_icon 'refresh'
|
|
5
5
|
= t('para.seo_tools.pages.refresh_skeleton')
|
|
6
6
|
|
|
7
7
|
%li
|
|
8
|
-
= link_to ping_admin_skeleton_refresh_path, class: 'btn btn-default
|
|
8
|
+
= link_to ping_admin_skeleton_refresh_path, class: 'btn btn-default', remote: true, data: { :'job-tracker-button' => true } do
|
|
9
9
|
= fa_icon 'cloud-upload'
|
|
10
10
|
= t('para.seo_tools.pages.ping_search_engines')
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
= search_form_for @q, builder: SimpleForm::FormBuilder, url: @component.path, html: { data: { :'filters-form' => true } } do |form|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
%table
|
|
3
|
+
%tbody
|
|
4
|
+
%tr
|
|
5
|
+
- if Para::SeoTools.handle_subdomain
|
|
6
|
+
%td{ width: '15%', style: 'padding-right: 10px;' }
|
|
7
|
+
= form.input_field :subdomain_eq, as: :selectize, collection: Para::SeoTools::Page.available_subdomains, class: 'form-control', placeholder: t('para.seo_tools.pages.subdomain')
|
|
8
|
+
- if @available_locales.length > 1
|
|
9
|
+
%td{ width: '15%', style: 'padding-right: 10px;' }
|
|
10
|
+
= form.input_field :locale_eq, as: :selectize, collection: @available_locales, class: 'form-control', placeholder: t('para.seo_tools.pages.choose_locale')
|
|
11
|
+
%td{ width: '80%' }
|
|
12
|
+
.col-sm-12
|
|
13
|
+
.input-group
|
|
14
|
+
%span.input-group-addon
|
|
15
|
+
%i.fa.fa-search
|
|
16
|
+
= form.input_field :identifier_or_path_or_title_or_description_or_keywords_or_canonical_cont, as: :string, placeholder: t('para.shared.search'), class: 'form-control'
|
|
17
|
+
%td{ width: '20%' }
|
|
18
|
+
= form.submit t('para.shared.search'), class: 'btn btn-default btn-block'
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
= para_form_for(resource) do |form|
|
|
2
|
-
= form.
|
|
3
|
-
=
|
|
4
|
-
= form.input :path, disabled: true
|
|
2
|
+
= form.fieldset do
|
|
3
|
+
= form.input :path, disabled: true
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
= meta_tag_input form, :title
|
|
6
|
+
= meta_tag_input form, :description
|
|
7
|
+
= meta_tag_input form, :keywords
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
= form.fieldset title: t('para.seo_tools.pages.additional_meta_tags') do
|
|
10
|
+
= meta_tag_input form, :image, as: :image
|
|
11
|
+
= meta_tag_input form, :canonical
|
|
13
12
|
|
|
14
13
|
= form.actions
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
= table.header_for(:title)
|
|
6
6
|
= table.header_for(:description)
|
|
7
7
|
= table.header_for(:locale) if @available_locales.length > 1
|
|
8
|
-
%th
|
|
8
|
+
%th
|
|
9
9
|
|
|
10
10
|
= table.rows(resources) do |resource|
|
|
11
11
|
= table.data_for(resource.subdomain) if Para::SeoTools.handle_subdomain
|
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
= table.data_for(resource.meta_tag(:description))
|
|
15
15
|
= table.data_for(resource, :locale) if @available_locales.length > 1
|
|
16
16
|
|
|
17
|
-
%td
|
|
18
|
-
|
|
17
|
+
%td
|
|
18
|
+
.pull-right.btn-group
|
|
19
|
+
= table.edit_button(resource)
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
= link_to resource.path, target: '_blank', class: 'btn btn-default hint--left', data: { hint: t('para.seo_tools.pages.see_in_app') } do
|
|
22
|
+
= fa_icon 'eye'
|
|
@@ -4,16 +4,11 @@ fr:
|
|
|
4
4
|
pages:
|
|
5
5
|
see_in_app: "Voir la page"
|
|
6
6
|
default_meta_tag_value: "Valeur par défaut : <b>%{value}</b>"
|
|
7
|
+
additional_meta_tags: "Meta-données avancées"
|
|
7
8
|
refresh_skeleton: "Mettre à jour"
|
|
8
9
|
ping_search_engines: "Envoyer le sitemap aux moteurs de recherche"
|
|
9
10
|
choose_locale: "Choisissez une langue"
|
|
10
11
|
subdomain: Sous-domaine
|
|
11
|
-
image_hint: |
|
|
12
|
-
Cette image sera utilisée par défaut comme prévisualisation de la page
|
|
13
|
-
lors de son partage sur les réseaux sociaux.
|
|
14
|
-
canonical_hint: |
|
|
15
|
-
Si la page ne doit pas être référencée au profit d'une autre page,
|
|
16
|
-
collez ici l'adresse de la page à référencer à la place.
|
|
17
12
|
|
|
18
13
|
jobs:
|
|
19
14
|
para/seo_tools/skeleton/job:
|
|
@@ -23,16 +18,6 @@ fr:
|
|
|
23
18
|
progressing: "Le plan du site est actuellement envoyé aux différents moteurs de recherche ..."
|
|
24
19
|
success: "Le plan du site a bien été transmis aux moteurs de recherche !"
|
|
25
20
|
|
|
26
|
-
components:
|
|
27
|
-
component:
|
|
28
|
-
sitemap: "Gestion SEO / Plan du site"
|
|
29
|
-
|
|
30
|
-
forms:
|
|
31
|
-
tabs:
|
|
32
|
-
para/seo_tools/page:
|
|
33
|
-
informations: "Informations"
|
|
34
|
-
additional_meta_tags: "Meta-données avancées"
|
|
35
|
-
|
|
36
21
|
activemodel:
|
|
37
22
|
models:
|
|
38
23
|
para/seo_tools/skeleton/job: "Mise à jour du plan du site"
|
|
@@ -46,8 +31,8 @@ fr:
|
|
|
46
31
|
title: "Titre"
|
|
47
32
|
description: "Description"
|
|
48
33
|
keywords: "Mots-clés de la page"
|
|
49
|
-
image: "Image pour le partage"
|
|
50
|
-
canonical: "URL canonique
|
|
34
|
+
image: "Image pour le partage sur les réseaux sociaux"
|
|
35
|
+
canonical: "URL canonique"
|
|
51
36
|
locale: "Langue"
|
|
52
37
|
subdomain: "Sous-domaine"
|
|
53
38
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Use `lazy: true` to avoid generating the pages skeleton on server run
|
|
2
2
|
#
|
|
3
|
-
# You'll then have to run `rake
|
|
4
|
-
#
|
|
3
|
+
# You'll then have to run `rake seo_tools:skeleton:build` to refresh it or use
|
|
4
|
+
# the `Para::SeoTools::Skeleton::Job.perform` method in some worker to
|
|
5
5
|
# refresh it periodically
|
|
6
6
|
#
|
|
7
7
|
# Note that you also have to always refresh the sitemap manually with the
|
|
8
|
-
# following task : `rake
|
|
8
|
+
# following task : `rake seo_tools:sitemap:generate`
|
|
9
9
|
#
|
|
10
10
|
Para::SeoTools::Skeleton.draw(lazy: false) do
|
|
11
11
|
# Define your website SEO targetted structure here.
|
|
@@ -16,13 +16,11 @@ Para::SeoTools::Skeleton.draw(lazy: false) do
|
|
|
16
16
|
#
|
|
17
17
|
# page :posts
|
|
18
18
|
#
|
|
19
|
-
#
|
|
20
19
|
# If you want to define the page path yourself, just add the `:path` option
|
|
21
20
|
# to the `page` call
|
|
22
21
|
#
|
|
23
22
|
# page :home, path: root_path
|
|
24
23
|
#
|
|
25
|
-
#
|
|
26
24
|
# When the page is linked to a resource : often, a #show page, you'll need to
|
|
27
25
|
# pass the `:resource` option
|
|
28
26
|
#
|
|
@@ -30,36 +28,10 @@ Para::SeoTools::Skeleton.draw(lazy: false) do
|
|
|
30
28
|
# page :post, resource: post
|
|
31
29
|
# end
|
|
32
30
|
#
|
|
33
|
-
#
|
|
34
31
|
# Also, you can pass options for the sitemap generation tool.
|
|
35
32
|
# The options are `:priority`, `:change_frequency` which are left blank
|
|
36
33
|
# by default.
|
|
37
34
|
#
|
|
38
35
|
# page :posts, priority: 1, change_frequency: 'weekly'
|
|
39
36
|
#
|
|
40
|
-
#
|
|
41
|
-
# By default, when you pass a resource to a route, it will try to find
|
|
42
|
-
# default a title and description from your resource, using the method
|
|
43
|
-
# configured in the seo_tools.rb initializer at `config.title_methods` and
|
|
44
|
-
# `config.description_methods`.
|
|
45
|
-
#
|
|
46
|
-
# For non-resource pages or if you need to add your own defaults, you can
|
|
47
|
-
# pass them to the `#page` method the following way :
|
|
48
|
-
#
|
|
49
|
-
# page :posts, defaults: { title: 'Blog index', description: 'Read our blog ...' }
|
|
50
|
-
# page :post, resource: post, defaults: { description: post.excerpt }
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
# By default, every page that is not referenced in the skeleton will not be
|
|
54
|
-
# indexed by search engines.
|
|
55
|
-
#
|
|
56
|
-
# But if some of your skeleton pages shouldn't be
|
|
57
|
-
# indexed or links shouldn't be followed on that page, you can explicitly pass
|
|
58
|
-
# the `:noindex` and `:nofollow` options to the `#page` method.
|
|
59
|
-
#
|
|
60
|
-
# It allows to let the admins edit the page title but avoids it to be indexed.
|
|
61
|
-
#
|
|
62
|
-
# page :posts, noindex: true
|
|
63
|
-
# page :report_abuse, noindex: true, nofollow: true
|
|
64
|
-
#
|
|
65
37
|
end
|
|
@@ -34,9 +34,9 @@ module Para
|
|
|
34
34
|
key.join(".")
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
# TODO : Define if we'll still support
|
|
37
|
+
# TODO : Define if we'll still support instance meta tags and refactor
|
|
38
38
|
# accordingly
|
|
39
|
-
def
|
|
39
|
+
def instance
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def model_name
|
|
@@ -3,11 +3,9 @@ module Para
|
|
|
3
3
|
module MetaTags
|
|
4
4
|
module Tags
|
|
5
5
|
class Description < Base
|
|
6
|
-
include Para::SeoTools::Helpers::DefaultDataMethodsHelper
|
|
7
|
-
|
|
8
6
|
def value
|
|
9
7
|
self.class.process(
|
|
10
|
-
meta_taggable_description ||
|
|
8
|
+
meta_taggable_description || instance_description || action_name
|
|
11
9
|
)
|
|
12
10
|
end
|
|
13
11
|
|
|
@@ -18,12 +16,22 @@ module Para
|
|
|
18
16
|
private
|
|
19
17
|
|
|
20
18
|
def meta_taggable_description
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
instance && instance.meta_tagged? &&
|
|
20
|
+
instance.meta_tags_list.meta_description.presence
|
|
23
21
|
end
|
|
24
22
|
|
|
25
|
-
def
|
|
26
|
-
|
|
23
|
+
def instance_description
|
|
24
|
+
if instance
|
|
25
|
+
Para::SeoTools.description_methods.each do |method|
|
|
26
|
+
if instance.respond_to?(method)
|
|
27
|
+
if (description = instance.send(method).presence)
|
|
28
|
+
return description
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
return nil
|
|
34
|
+
end
|
|
27
35
|
end
|
|
28
36
|
|
|
29
37
|
def action_name
|
|
@@ -4,7 +4,7 @@ module Para
|
|
|
4
4
|
module Tags
|
|
5
5
|
class Image < Base
|
|
6
6
|
def value
|
|
7
|
-
self.class.process(
|
|
7
|
+
self.class.process(instance_image)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def self.process(value)
|
|
@@ -23,8 +23,16 @@ module Para
|
|
|
23
23
|
|
|
24
24
|
private
|
|
25
25
|
|
|
26
|
-
def
|
|
27
|
-
|
|
26
|
+
def instance_image
|
|
27
|
+
if member_action?
|
|
28
|
+
Para::SeoTools.image_methods.each do |method|
|
|
29
|
+
if instance.respond_to?(method) && instance.send(method)
|
|
30
|
+
return instance.send(method).url
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
nil
|
|
35
|
+
end
|
|
28
36
|
end
|
|
29
37
|
|
|
30
38
|
def self.url_from(value)
|
|
@@ -10,8 +10,8 @@ module Para
|
|
|
10
10
|
private
|
|
11
11
|
|
|
12
12
|
def meta_taggable_keywords
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
instance && instance.meta_tagged? &&
|
|
14
|
+
instance.meta_tags_list.meta_keywords.presence
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -3,21 +3,26 @@ module Para
|
|
|
3
3
|
module MetaTags
|
|
4
4
|
module Tags
|
|
5
5
|
class Title < Base
|
|
6
|
-
include Para::SeoTools::Helpers::DefaultDataMethodsHelper
|
|
7
|
-
|
|
8
6
|
def value
|
|
9
|
-
meta_taggable_title ||
|
|
7
|
+
meta_taggable_title || instance_title || action_name || model_name_translation
|
|
10
8
|
end
|
|
11
9
|
|
|
12
10
|
private
|
|
13
11
|
|
|
14
12
|
def meta_taggable_title
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
instance && instance.meta_tagged? &&
|
|
14
|
+
instance.meta_tags_list.meta_title.presence
|
|
17
15
|
end
|
|
18
16
|
|
|
19
|
-
def
|
|
20
|
-
|
|
17
|
+
def instance_title
|
|
18
|
+
if instance
|
|
19
|
+
Para::SeoTools.title_methods.each do |method|
|
|
20
|
+
if instance.respond_to?(method) && (title = instance.send(method)).presence
|
|
21
|
+
return title
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
return nil
|
|
25
|
+
end
|
|
21
26
|
end
|
|
22
27
|
|
|
23
28
|
def action_name
|
|
@@ -54,8 +54,13 @@ module Para
|
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
+
# Handle Rails 4 and 5
|
|
57
58
|
def self.migrating?
|
|
58
|
-
ActiveRecord::Migrator.needs_migration?
|
|
59
|
+
if ActiveRecord::Migrator.respond_to?(:needs_migration?)
|
|
60
|
+
ActiveRecord::Migrator.needs_migration?
|
|
61
|
+
else
|
|
62
|
+
ActiveRecord::Base.connection.migration_context.needs_migration?
|
|
63
|
+
end
|
|
59
64
|
end
|
|
60
65
|
|
|
61
66
|
def self.destroy_deleted_pages!
|
|
@@ -5,7 +5,6 @@ module Para
|
|
|
5
5
|
|
|
6
6
|
class PageBuilder
|
|
7
7
|
include Rails.application.routes.url_helpers
|
|
8
|
-
include Para::SeoTools::Helpers::DefaultDataMethodsHelper
|
|
9
8
|
|
|
10
9
|
attr_reader :name, :resource, :locale, :defaults, :config
|
|
11
10
|
|
|
@@ -61,7 +60,7 @@ module Para
|
|
|
61
60
|
page.locale = locale
|
|
62
61
|
|
|
63
62
|
# Do not override meta tags if already present
|
|
64
|
-
page.defaults =
|
|
63
|
+
page.defaults = defaults
|
|
65
64
|
page.config = config
|
|
66
65
|
end
|
|
67
66
|
end
|
|
@@ -76,15 +75,6 @@ module Para
|
|
|
76
75
|
end
|
|
77
76
|
end
|
|
78
77
|
|
|
79
|
-
def process_defaults
|
|
80
|
-
return {} if defaults == false
|
|
81
|
-
|
|
82
|
-
defaults[:title] ||= default_title_for(resource)
|
|
83
|
-
defaults[:description] ||= default_description_for(resource)
|
|
84
|
-
|
|
85
|
-
defaults
|
|
86
|
-
end
|
|
87
|
-
|
|
88
78
|
def self.model_for(page)
|
|
89
79
|
models[unique_identifier_for(page)] ||= ::Para::SeoTools::Page.new(
|
|
90
80
|
identifier: page.identifier
|
|
@@ -3,7 +3,6 @@ namespace :para do
|
|
|
3
3
|
namespace :skeleton do
|
|
4
4
|
desc "Builds or refreshes the app skeleton."
|
|
5
5
|
task build: :environment do
|
|
6
|
-
puts " * Build app skeleton ..."
|
|
7
6
|
Para::SeoTools::Skeleton.build(load_skeleton: true)
|
|
8
7
|
end
|
|
9
8
|
end
|
|
@@ -11,9 +10,6 @@ namespace :para do
|
|
|
11
10
|
namespace :sitemap do
|
|
12
11
|
desc "Generates a new sitemap."
|
|
13
12
|
task generate: :environment do
|
|
14
|
-
Rake.application.invoke_task('para:seo_tools:skeleton:build')
|
|
15
|
-
|
|
16
|
-
puts " * Generate sitemap ..."
|
|
17
13
|
Para::SeoTools::Sitemap.generate!
|
|
18
14
|
end
|
|
19
15
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: para-seo_tools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Valentin Ballestrino
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-11-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -125,7 +125,6 @@ files:
|
|
|
125
125
|
- lib/para/seo_tools/controller.rb
|
|
126
126
|
- lib/para/seo_tools/engine.rb
|
|
127
127
|
- lib/para/seo_tools/helpers.rb
|
|
128
|
-
- lib/para/seo_tools/helpers/default_data_methods_helper.rb
|
|
129
128
|
- lib/para/seo_tools/helpers/page_helper.rb
|
|
130
129
|
- lib/para/seo_tools/helpers/view_helper.rb
|
|
131
130
|
- lib/para/seo_tools/meta_tags.rb
|
|
@@ -176,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
176
175
|
version: '0'
|
|
177
176
|
requirements: []
|
|
178
177
|
rubyforge_project:
|
|
179
|
-
rubygems_version: 2.6.
|
|
178
|
+
rubygems_version: 2.6.11
|
|
180
179
|
signing_key:
|
|
181
180
|
specification_version: 4
|
|
182
181
|
summary: SEO tools for the Para CMS
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module Para
|
|
2
|
-
module SeoTools
|
|
3
|
-
module Helpers
|
|
4
|
-
module DefaultDataMethodsHelper
|
|
5
|
-
def default_title_for(resource)
|
|
6
|
-
default_data_from_method_for(:title, resource)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def default_description_for(resource)
|
|
10
|
-
default_data_from_method_for(:description, resource)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def default_image_for(resource)
|
|
14
|
-
default_data_from_method_for(:image, resource)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# Try all default methods on resource
|
|
18
|
-
def default_data_from_method_for(method, resource)
|
|
19
|
-
return unless resource
|
|
20
|
-
|
|
21
|
-
Para::SeoTools.send(:"#{ method }_methods").each do |method|
|
|
22
|
-
data = resource.try(method)
|
|
23
|
-
return data if data.present?
|
|
24
|
-
end
|
|
25
|
-
# Avoid returning the methods enumerable returned by the #each call
|
|
26
|
-
nil
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|