module PagesHelper def parse_pp_tags(file) opened_file = File.open(file) doc = Nokogiri::HTML(opened_file, nil, "UTF-8") opened_file.close pps = doc.css("*[data-pp]") pps.each do |pp| pp.content = "
" end doc.to_html end def render_widget_for_frontend(controller_name, widget_method, widget_file) file = File.open(File.join(Rails.root, 'app', 'templates', "#{Template::KEY}", 'modules', "#{controller_name}", "_#{widget_file}.html.erb")) doc = Nokogiri::HTML(file, nil, "UTF-8") file.close wrap_elements = doc.css("*[data-repeat]") controller = "#{controller_name.capitalize}Controller".classify.constantize.new data = controller.send("#{widget_method}") 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| 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| html = html.gsub("{{#{key}}}",value) html = html.gsub("%7B%7B#{key}%7D%7D",value) end end html.html_safe end end