module PageEngine module InstanceMethods def get_layout if @page @page.layout.blank? ? Page.default_layout : @page.layout else Page.default_layout end end def find_page permalink=nil current_user = nil unless defined?(current_user) unless params[:controller].split('/').first == "admin" if permalink @page = Page.includes(:page_parts).published.viewable_by(current_user).where(:permalink => permalink) else @page = Page.includes(:page_parts).published.viewable_by(current_user).with_url(request, params).first end # See http://stackoverflow.com/questions/1595424/request-format-returning # This last format appears when the page is refreshed in IE get_breadcrumbs if request.format.html? || request.format == '*/*' end end def page_title_replace models=[] models.each do |m| key = m.class.to_s.underscore @page.title.scan(/\{\{#{key}_([_a-z]*)\}\}/).uniq.flatten.each do |attribute| if m.whitelist.include?(attribute) && m.respond_to?(attribute) @page.title.gsub!("{{#{key}_#{attribute}}}", m[attribute]) value = m.send(attribute) if value.is_a?(Date) || value.is_a?(Time) value = value.to_formatted_s(:short_ordinal) end @page.title.gsub!("{{#{key}_#{attribute}}}", value.to_s) else @page.title.gsub!("{{#{key}_#{attribute}}}", "<span style=\"color: red;\">###NOT SUPPORTED, try #{m.whitelist.to_sentence(:two_words_connector => ' or ', :last_word_connector => ', or')}###") end end end end def breadcrumb_replace models=[] models.each do |m| key = m.class.to_s.underscore @breadcrumbs.each do |breadcrumb| if breadcrumb.is_a? Page breadcrumb.title.scan(/\{\{#{key}_([_a-z]*)\}\}/).uniq.flatten.each do |attribute| if m.whitelist.include?(attribute) && m.respond_to?(attribute) breadcrumb.title.gsub!("{{#{key}_#{attribute}}}", m[attribute]) value = m.send(attribute) if value.is_a?(Date) || value.is_a?(Time) value = value.to_formatted_s(:short_ordinal) end breadcrumb.title.gsub!("{{#{key}_#{attribute}}}", value.to_s) else breadcrumb.title.gsub!("{{#{key}_#{attribute}}}", "<span style=\"color: red;\">###NOT SUPPORTED, try one of #{m.whitelist.join(',')}###") end end end end end end private def get_breadcrumbs current_user = nil unless defined?(current_user) if @page @breadcrumbs = @page.ancestors.published.viewable_by(current_user).all else @breadcrumbs = [] end end end end