effective_pages 1.0.13 → 1.0.14

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: 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