effective_pages 1.0.13 → 1.0.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6519c072e0f33034dd230778c59212f604c6c15e
4
- data.tar.gz: 5b828b12af25626e858df9c74dd2a3b6cc4bc9b0
3
+ metadata.gz: bf763d4f232daee6825b70eecba5ab5b53291811
4
+ data.tar.gz: 82f8a5ce46c7a2701906d5fe1a11055237c173d5
5
5
  SHA512:
6
- metadata.gz: 3ab242c1cacad6f21e995fb8669f3ac3145ca889c7347024acf4ae16158a21876a463918869d16c57e6bcab32ac75676e2988346cb7c20d19f286cecbf63b888
7
- data.tar.gz: 14d28c3a2b97ca4ce480e1cbf7f947eec60bbbc9d4e9db039b0fca23aed1e5321bfa42b208ce72dd96bc8403895ed4527086195922593ddc22758468ab372406
6
+ metadata.gz: 16dc7d33c5d459508610253ef31bb3bd0d14f31ced3721e669956966b861d11b384faa267d6523d6a37e53642122fd6546decd5a605477feb9fd529afb487eb0
7
+ data.tar.gz: c08ea63b217667b50b891fda31aae620ee2fb3afdff489b00b64722440f0cd912f9b1f25cd479f8e519d08873a3f733972df8138614760b4e0061dedb89cc1fc
data/README.md CHANGED
@@ -331,6 +331,16 @@ To enable this functionality, require the following stylesheet on the asset pipe
331
331
 
332
332
  and change the `config.menu[:maxdepth]` value in the `app/config/initializers/effective_pages.rb` initializer to 3, 4, or even 9999.
333
333
 
334
+ ### Breadcrumbs
335
+
336
+ Bootstrap3 breadcrumbs can be generated based on a given menu and page.
337
+
338
+ ```ruby
339
+ = render_breadcrumb(menu, page)
340
+ ```
341
+
342
+ where menu is an `Effective::Menu` object, or the name of a menu, `'main menu'` and page is an `Effective::Page` object, or a string.
343
+
334
344
 
335
345
  ## Authorization
336
346
 
@@ -0,0 +1,38 @@
1
+ module EffectiveBreadcrumbsHelper
2
+ def render_breadcrumbs(menu, page)
3
+ menu = Effective::Menu.find_by_title(menu) if menu.kind_of?(String)
4
+ return "Menu '#{menu}' does not exist".html_safe unless menu.present?
5
+
6
+ return breadcrumbs_fallback(page) if !page.present?
7
+
8
+ menu_item = if page.kind_of?(Effective::Page)
9
+ url = effective_pages.page_path(page)
10
+ menu.menu_items.find { |item| item.menuable == page || item.title == page.title || item.url == url }
11
+ else
12
+ menu.menu_items.find { |item| item.menuable == page || item.title == page || item.url == page }
13
+ end
14
+
15
+ return breadcrumbs_fallback(page) unless menu_item.present?
16
+
17
+ parents = menu.menu_items.select { |item| item.lft < menu_item.lft && item.rgt > menu_item.rgt }
18
+
19
+ content_tag(:ol, class: 'breadcrumb') do
20
+ (
21
+ parents.map { |parent| content_tag(:li, link_to(parent.title, parent.url.presence || '#', title: parent.title)) } +
22
+ [content_tag(:li, page.try(:title) || page, class: 'active')]
23
+ ).join().html_safe
24
+ end
25
+ end
26
+
27
+ alias_method :render_breadcrumb, :render_breadcrumbs
28
+
29
+ def breadcrumbs_fallback(page)
30
+ content_tag(:ol, class: 'breadcrumb') do
31
+ [
32
+ content_tag(:li, link_to('Home', '/', title: 'Home')),
33
+ content_tag(:li, (page.try(:title) || page || @page_title || 'Here'), class: 'active')
34
+ ].join().html_safe
35
+ end
36
+ end
37
+
38
+ end
@@ -19,7 +19,7 @@ module EffectivePagesHelper
19
19
 
20
20
  def effective_pages_site_title
21
21
  unless @page_title.present? || EffectivePages.silence_missing_page_title_warnings
22
- Rails.logger.error("WARNING: Expected @page_title to be present. Please assign a @page_title variable in your controller action.")
22
+ Rails.logger.error("WARNING: (effective_pages) Expected @page_title to be present. Please assign a @page_title variable in your controller action.")
23
23
  end
24
24
 
25
25
  (@page_title || "#{params[:controller].try(:titleize)} #{params[:action].try(:titleize)}") + EffectivePages.site_title_suffix.to_s
@@ -27,7 +27,7 @@ module EffectivePagesHelper
27
27
 
28
28
  def effective_pages_meta_description
29
29
  unless @meta_description.present? || EffectivePages.silence_missing_meta_description_warnings
30
- Rails.logger.error("WARNING: Expected @meta_description to be present. Please assign a @meta_description variable in your controller action.")
30
+ Rails.logger.error("WARNING: (effective_pages) Expected @meta_description to be present. Please assign a @meta_description variable in your controller action.")
31
31
  end
32
32
 
33
33
  truncate((@meta_description || EffectivePages.fallback_meta_description).to_s, length: 150)
@@ -6,7 +6,7 @@ if defined?(EffectiveDatatables)
6
6
  table_column :id
7
7
 
8
8
  table_column :title
9
- table_column :actions, sortable: false, filter: false, partial: '/admin/menus/actions'
9
+ actions_column partial: '/admin/menus/actions'
10
10
  end
11
11
 
12
12
  def collection
@@ -12,7 +12,7 @@ if defined?(EffectiveDatatables)
12
12
  table_column :slug
13
13
  table_column :draft
14
14
 
15
- table_column :actions, sortable: false, filter: false, partial: '/admin/pages/actions'
15
+ actions_column partial: '/admin/pages/actions'
16
16
  end
17
17
 
18
18
  def collection
@@ -46,6 +46,10 @@ module Effective
46
46
  end
47
47
  end
48
48
 
49
+ def to_s
50
+ self[:title] || 'New Menu'
51
+ end
52
+
49
53
  def contains?(obj)
50
54
  menu_items.find { |menu_item| menu_item.url == obj || menu_item.menuable == obj }.present?
51
55
  end
@@ -12,20 +12,20 @@ module Effective
12
12
 
13
13
  self.table_name = EffectivePages.pages_table_name.to_s
14
14
 
15
- structure do
16
- title :string
17
- meta_description :string
15
+ # structure do
16
+ # title :string
17
+ # meta_description :string
18
18
 
19
- draft :boolean
19
+ # draft :boolean
20
20
 
21
- layout :string
22
- template :string
21
+ # layout :string
22
+ # template :string
23
23
 
24
- slug :string
25
- roles_mask :integer
24
+ # slug :string
25
+ # roles_mask :integer
26
26
 
27
- timestamps
28
- end
27
+ # timestamps
28
+ # end
29
29
 
30
30
  validates :title, presence: true, length: { maximum: 255 }
31
31
  validates :meta_description, presence: true, length: { maximum: 150 }
@@ -1,3 +1,3 @@
1
1
  module EffectivePages
2
- VERSION = '1.0.13'.freeze
2
+ VERSION = '1.0.14'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_pages
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.13
4
+ version: 1.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-22 00:00:00.000000000 Z
11
+ date: 2016-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -153,6 +153,7 @@ files:
153
153
  - app/controllers/admin/menus_controller.rb
154
154
  - app/controllers/admin/pages_controller.rb
155
155
  - app/controllers/effective/pages_controller.rb
156
+ - app/helpers/effective_breadcrumbs_helper.rb
156
157
  - app/helpers/effective_menus_admin_helper.rb
157
158
  - app/helpers/effective_menus_helper.rb
158
159
  - app/helpers/effective_pages_helper.rb