orbit4-5/app/helpers/application_helper.rb

185 lines
6.1 KiB
Ruby
Raw Normal View History

require "json"
module ApplicationHelper
def render_widget(widget)
key = Template::KEY
2014-04-01 07:10:21 +00:00
file = File.join("../templates", "#{key}", "modules/#{widget}")
render :partial => file
end
def render_partial(partial)
key = Template::KEY
file = File.join("../templates", "#{key}", "partial/#{partial}")
render :partial => file
end
def link_to_show(module_name)
"/module/#{module_name}/show"
end
def render_menu
2014-04-01 07:10:21 +00:00
# json_file = File.read(File.join(Rails.root, 'public', "menu.json"))
# @items = JSON.parse(json_file)
@pages = Page.where(:parent_page_id.ne => "" , :parent_page_id.exists => false).first.sorted_published_child_pages
2014-04-01 07:10:21 +00:00
def create_json(pages)
item = {}
pages.each do |page|
if page.child_page.size > 0
item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages)}
2014-04-01 07:10:21 +00:00
else
item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url}
end
end
item
end
@items = create_json(@pages)
key = Template::KEY
2014-04-01 07:10:21 +00:00
menu_file = File.open(File.join(Rails.root, 'app', 'templates', "#{key}", '/home/menu.html.erb'))
2014-04-01 08:37:43 +00:00
doc = Nokogiri::HTML(menu_file, nil, "UTF-8")
menu_file.close
temp = []
@menus = []
@menus_items = []
temp << doc.css("*[data-menu-level='0']")
temp << doc.css("*[data-menu-level='1']")
temp << doc.css("*[data-menu-level='2']")
temp[0] = temp[0].to_s.gsub(temp[1].to_s,"{{level}}")
temp[1] = temp[1].to_s.gsub(temp[2].to_s,"{{level}}")
temp[2] = temp[2].to_s
temp.each_with_index do |menu,i|
2014-04-01 08:37:43 +00:00
t = Nokogiri::HTML(menu, nil, "UTF-8")
a = t.css("*[data-menu-link='true']")
a[0]["href"] = "href_here"
li = t.css("*[data-menu-level='#{i}'] > *")
@menus_items << li.to_html
ul = t.css("*[data-menu-level='#{i}']")
ul[0].inner_html = "{{here}}"
@menus << ul[0].to_html
end
def create_menu(items,level)
html = ""
items.each do |key,item|
li = @menus_items[level].gsub("href_here",item["url"])
li = li.gsub("{{link_name}}",key)
if item["children"] && !item["children"].empty?
li = li.gsub("{{level}}",create_menu(item["children"],level + 1))
else
li = li.gsub("{{level}}","")
end
html = html + li
end
html = @menus[level].gsub("{{here}}",html)
html = html.gsub("{{class_level}}",level.to_s)
html
end
h = create_menu(@items,0)
h.html_safe
end
2014-04-01 07:10:21 +00:00
def render_view
if params[:target_action] == "index"
file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller].singularize, "#{params[:target_action]}.html.erb"))
2014-04-01 08:37:43 +00:00
doc = Nokogiri::HTML(file, nil, "UTF-8")
2014-04-01 07:10:21 +00:00
file.close
wrap_elements = doc.css("*[data-repeat]")
controller = "#{params[:target_controller].capitalize}_controller".classify.constantize.new
2014-04-01 07:10:21 +00:00
data = controller.send("#{params[:target_action]}")
2014-04-02 06:07:04 +00:00
keys = data.keys
wrap_elements.each do |wrap_element|
html_to_render = ""
(data[keys[0]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |item|
2014-04-01 07:10:21 +00:00
el = wrap_element.inner_html
item.each do |key,value|
2014-04-14 03:27:09 +00:00
value = value.nil? ? "" : value
2014-04-01 07:10:21 +00:00
el = el.gsub("{{#{key}}}",value)
el = el.gsub("%7B%7B#{key}%7D%7D",value)
end
html_to_render = html_to_render + el
end
wrap_element.inner_html = html_to_render
end
2014-04-02 06:07:04 +00:00
html = doc.to_html
if keys[1]
(data[keys[1]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |key,value|
2014-04-14 03:27:09 +00:00
value = value.nil? ? "" : value
2014-04-02 06:07:04 +00:00
html = html.gsub("{{#{key}}}",value)
html = html.gsub("%7B%7B#{key}%7D%7D",value)
end
end
html.html_safe
2014-04-01 07:10:21 +00:00
elsif params[:target_action] == "show"
file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller].singularize, "#{params[:target_action]}.html.erb"))
2014-04-01 08:37:43 +00:00
doc = Nokogiri::HTML(file, nil, "UTF-8")
2014-04-01 07:10:21 +00:00
file.close
wrap_element_html = doc.to_s
html_to_render = ""
controller = "#{params[:target_controller].capitalize}_controller".classify.constantize.new
2014-04-01 07:10:21 +00:00
data = controller.send("#{params[:target_action]}")
if data.blank? || data.empty?
render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found
else
wrap_elements = doc.css("*[data-repeat]")
if wrap_elements.count == 0
el = wrap_element_html
data.each do |key,value|
value = value.nil? ? "" : value
el = el.gsub("{{#{key}}}",value)
el = el.gsub("%7B%7B#{key}%7D%7D",value)
end
el.html_safe
else
keys = data.keys
wrap_elements.each do |wrap_element|
html_to_render = ""
(data[keys[0]].kind_of?(Array) ? data[keys[0]] : data[keys[1]]).each do |item|
el = wrap_element.inner_html
item.each do |key,value|
value = value.nil? ? "" : value
el = el.gsub("{{#{key}}}",value)
el = el.gsub("%7B%7B#{key}%7D%7D",value)
end
html_to_render = html_to_render + el
end
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|
value = value.nil? ? "" : value
html = html.gsub("{{#{key}}}",value)
html = html.gsub("%7B%7B#{key}%7D%7D",value)
end
end
html.html_safe
end
2014-04-01 07:10:21 +00:00
end
end
end
def action_data
controller = "#{params[:target_controller].capitalize}Controller".constantize.new
data = controller.send("#{params[:target_action]}")
data
end
def active_for_controllers(*controller_names)
(controller_names.include?(controller.controller_name) || controller_names.include?(request.fullpath)) ? 'active' : nil
end
def visible_for_controllers(*controller_names)
(controller_names.include?(controller.controller_name) || controller_names.include?(request.fullpath)) ? '' : 'hide'
end
2014-04-08 10:46:27 +00:00
def active_for_action(controller_name, action_name)
((controller.controller_name.eql?(controller_name) || request.fullpath.eql?(controller_name)) && controller.action_name.eql?(action_name)) ? 'active' : nil
end
end