diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index b83ac9e..42d04a0 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -1,3 +1,6 @@ +# pass the layout=false for not rendering the layouts and also can specify the methods to in the backend controller. +# data-layout-content="arrayname" in layouts can be used to render data in the array + class PagesController < ApplicationController before_action :get_key layout :get_layout @@ -22,7 +25,7 @@ class PagesController < ApplicationController page = Page.first OrbitHelper.set_params params OrbitHelper.set_site_locale locale - render :html => render_final_page("home",page).html_safe + render :html => render_final_page("home",page,true).html_safe end def show @@ -33,15 +36,16 @@ class PagesController < ApplicationController if path.last.include? '-' params[:page_id] = path[-2] params[:slug] = path[-1] - params[:uid] = path[-1].split("-").last - params[:target_action] = "show" + uid = path[-1].split("-").last + uid = uid.split("?").first + params[:uid] = uid + params[:target_action] = params[:method] || "show" else params[:page_id] = path[-1] params[:slug] = nil params[:uid] = nil - params[:target_action] = "index" + params[:target_action] = params[:method] || "index" end - page = Page.find_by_param(params[:page_id]) if !page.nil? if page.enabled_for.include? I18n.locale.to_s @@ -56,9 +60,14 @@ class PagesController < ApplicationController OrbitHelper.set_site_locale locale OrbitHelper.set_page_categories page.categories || [] OrbitHelper.set_page_data_count page.data_count - + if params[:layout].kind_of?(String) + layout = to_bool(params[:layout]) + else + layout = true + end + # render render_final_page("#{module_app}/#{params[:target_action]}",page) - render :html => render_final_page("#{module_app}/#{params[:target_action]}",page).html_safe + render :html => render_final_page("#{module_app}/#{params[:target_action]}",page,layout).html_safe else render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found end @@ -154,9 +163,9 @@ class PagesController < ApplicationController private - def render_final_page(original_view=get_view,page) - - parts = page.page_parts + def render_final_page(original_view=get_view,page,layout) + if layout + parts = page.page_parts rescue [] @part_partials = {} parts.each do |part| @@ -192,6 +201,11 @@ class PagesController < ApplicationController viewarea = doc.css("*[data-content='true']")[0] viewarea.inner_html = render_to_string(original_view) end + doc.to_html + + else + render_to_string(original_view) + end # newlayout = "#{page.name}_layout.html.erb" # file_path = File.join(Rails.root, 'app', 'views', 'frontend', newlayout) @@ -200,7 +214,6 @@ class PagesController < ApplicationController # f.close # view_to_render = "frontend/#{newlayout}" # view_to_render - doc.to_html end def get_widget_path(widget) @@ -208,8 +221,8 @@ class PagesController < ApplicationController end def get_view - page = Page.find(params[:id]) - if page == Page.first + page = Page.find(params[:id]) rescue Page.root + if page == Page.root @view = File.join(Rails.root, 'app', 'templates', "#{@key}", 'home/index.html.erb') else module_name = page.module.downcase.singularize @@ -247,5 +260,8 @@ class PagesController < ApplicationController false end end - + def to_bool(str) + return true if str == "true" + return false if str == "false" + end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 70a1e36..b232553 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -118,15 +118,18 @@ module ApplicationHelper file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller].singularize, "#{params[:target_action]}.html.erb")) doc = Nokogiri::HTML(file, nil, "UTF-8") file.close - wrap_element_html = doc.to_s - html_to_render = "" controller = "#{params[:target_controller].capitalize}_controller".classify.constantize.new data = controller.send("#{params[:target_action]}") if data.blank? || data.empty? - render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found + file = File.open("#{Rails.root}/public/404.html") + doc = Nokogiri::HTML(file, nil, "UTF-8") + file.close + doc.to_html.html_safe else - wrap_elements = doc.css("*[data-repeat]") + wrap_elements = doc.css("*[data-repeat-content]") if wrap_elements.count == 0 + wrap_element_html = doc.to_s + el = wrap_element_html data.each do |key,value| value = value.nil? ? "" : value @@ -136,9 +139,14 @@ module ApplicationHelper el.html_safe else keys = data.keys - wrap_elements.each do |wrap_element| + not_array_key = nil + data.keys.each do |key| + not_array_key = key if data["#{key}"].kind_of?(Hash) + end + wrap_elements.each do |wrap_element| html_to_render = "" - (data[keys[0]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |item| + content_array = wrap_element.attr("data-repeat-content") + data["#{content_array}"].each do |item| el = wrap_element.inner_html item.each do |key,value| value = value.nil? ? "" : value @@ -150,8 +158,8 @@ module ApplicationHelper wrap_element.inner_html = html_to_render end html = doc.to_html - if keys[1] - (data[keys[1]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |key,value| + if data["#{not_array_key}"] + data["#{not_array_key}"].each do |key,value| value = value.nil? ? "" : value html = html.gsub("{{#{key}}}",value) html = html.gsub("%7B%7B#{key}%7D%7D",value) @@ -164,7 +172,7 @@ module ApplicationHelper end def action_data - controller = "#{params[:target_controller].capitalize}Controller".constantize.new + controller = "#{params[:target_controller].capitalize}_controller".classify.constantize.new data = controller.send("#{params[:target_action]}") data end diff --git a/app/templates/orbit_bootstrap/modules/announcement/show.html.erb b/app/templates/orbit_bootstrap/modules/announcement/show.html.erb index 243dad3..e11d6cc 100644 --- a/app/templates/orbit_bootstrap/modules/announcement/show.html.erb +++ b/app/templates/orbit_bootstrap/modules/announcement/show.html.erb @@ -17,7 +17,7 @@

{{body}}

-
- asdf +
+ {{file}}
\ No newline at end of file diff --git a/app/templates/orbit_bootstrap/modules/gallery/show.html.erb b/app/templates/orbit_bootstrap/modules/gallery/show.html.erb index d430f9f..97ca1a6 100644 --- a/app/templates/orbit_bootstrap/modules/gallery/show.html.erb +++ b/app/templates/orbit_bootstrap/modules/gallery/show.html.erb @@ -1,22 +1,10 @@ -
-
-

{{album-title}}

-
- -
- -
-
- asdf -
-
\ No newline at end of file +
+

{{album-title}}

+ +
\ No newline at end of file