Sha256: 911145ddf444dedd5ce1aa93405c51c75eae625a5e8bd911e8965eae326bf64b
Contents?: true
Size: 1.43 KB
Versions: 2
Compression:
Stored size: 1.43 KB
Contents
module Cardboard module PublicHelper # Example: # link_to_page 123, class: "btn" do |page| # "hello #{page.title}" # end # # link_to_page "home" # def link_to_page(page_id, html_options={}, &block) page = if page_id.is_a?(Integer) Cardboard::Page.where(id: page_id).first else #if page_id.is_a? String Cardboard::Page.where(identifier: page_id).first end return nil if page.blank? title = if block_given? capture(page, &block) else page.title end link_to(title, page.url, html_options) end # Example 1: # = nested_pages Cardboard::Page.arrange do |page, subpages| # .indent # = link_to(page.title, page.url) if page.in_menu? # = subpages # end # Example 2: # %ul # = nested_pages do |page, subpages| # %li # = link_to page.title, edit_page_path(page) # = content_tag(:ul, subpages) if subpages.present? def nested_pages(page = nil, &block) raise ArgumentError, "Missing block" unless block_given? inner_nested_pages(Cardboard::Page.arrange(page), &block).try(:html_safe) end private def inner_nested_pages(pages, &block) return unless pages pages.map do |page, sub_pages| capture(page, sub_pages.present? ? inner_nested_pages(sub_pages, &block) : nil, &block) end.join.html_safe end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cardboard_cms-0.1.6 | app/helpers/cardboard/public_helper.rb |
cardboard_cms-0.1.4 | app/helpers/cardboard/public_helper.rb |