Commit 9c62827d0ea7e89c6fccab89f0cdb81ba32fcae8

Authored by Andrey Karpikov
1 parent 98ece655

render not found page

@@ -19,7 +19,8 @@ module Kanjai @@ -19,7 +19,8 @@ module Kanjai
19 if defined?(warden).to_s == 'method' 19 if defined?(warden).to_s == 'method'
20 if warden.user.nil? 20 if warden.user.nil?
21 if domain.page_404.present? 21 if domain.page_404.present?
22 - redirect_to domain.page_404.menu_url(session[:scheme]) and return 22 + page_404_data = domain.page_404.page_data.find_by(lang: I18n.locale)
  23 + render html: GeneratePageContent.new(page_data: page_404_data, session: session, current_admin_user: current_admin_user).call.html_safe, status: 404 and return
23 else 24 else
24 render :template => 'kanjai/shared/401', status: 401, layout: false and return 25 render :template => 'kanjai/shared/401', status: 401, layout: false and return
25 end 26 end
@@ -63,7 +64,8 @@ module Kanjai @@ -63,7 +64,8 @@ module Kanjai
63 64
64 else 65 else
65 if domain.page_404.present? 66 if domain.page_404.present?
66 - redirect_to domain.page_404.menu_url(session[:scheme]) and return 67 + page_404_data = domain.page_404.page_data.find_by(lang: I18n.locale)
  68 + render html: GeneratePageContent.new(page_data: page_404_data, session: session, current_admin_user: current_admin_user).call.html_safe, status: 404 and return
67 else 69 else
68 render :template => 'kanjai/shared/404', status: 404, layout: false and return 70 render :template => 'kanjai/shared/404', status: 404, layout: false and return
69 end 71 end
@@ -92,14 +92,16 @@ module Kanjai @@ -92,14 +92,16 @@ module Kanjai
92 redirect_to root_page.menu_url(session[:scheme]) 92 redirect_to root_page.menu_url(session[:scheme])
93 else 93 else
94 if domain.page_404.present? 94 if domain.page_404.present?
95 - redirect_to domain.page_404.menu_url(session[:scheme]) and return 95 + page_404_data = domain.page_404.page_data.find_by(lang: I18n.locale)
  96 + render html: GeneratePageContent.new(page_data: page_404_data, session: session, current_admin_user: current_admin_user).call.html_safe, status: 404 and return
96 else 97 else
97 render plain: "1. Can not found page #{@url} for domain #{domain_title} for lang #{I18n.locale}", status: 404 and return 98 render plain: "1. Can not found page #{@url} for domain #{domain_title} for lang #{I18n.locale}", status: 404 and return
98 end 99 end
99 end 100 end
100 else 101 else
101 if domain.page_404.present? 102 if domain.page_404.present?
102 - redirect_to domain.page_404.menu_url(session[:scheme]) and return 103 + page_404_data = domain.page_404.page_data.find_by(lang: I18n.locale)
  104 + render html: GeneratePageContent.new(page_data: page_404_data, session: session, current_admin_user: current_admin_user).call.html_safe, status: 404 and return
103 else 105 else
104 render plain: "2. Can not found page #{@url} for domain #{domain_title} for lang #{I18n.locale}", status: 404 and return 106 render plain: "2. Can not found page #{@url} for domain #{domain_title} for lang #{I18n.locale}", status: 404 and return
105 end 107 end
  1 +module Kanjai
  2 + class GeneratePageContent
  3 +
  4 + include Admin::PagesHelper
  5 +
  6 + attr_reader :page_data, :session, :current_admin_user
  7 +
  8 + def initialize(page_data:, session:, current_admin_user:)
  9 + @page_data = page_data
  10 + @session = session
  11 + @current_admin_user = current_admin_user
  12 + end
  13 +
  14 + def call
  15 + build_page
  16 + end
  17 +
  18 + private
  19 +
  20 +
  21 + def build_page
  22 + layer = page_layer
  23 +
  24 + session[:scheme] = 'http://'
  25 +
  26 + unless current_admin_user
  27 + layer.gsub!('<meta name="csrf-param" content="###CSRF_PARAM###"/>', '')
  28 + layer.gsub!('<meta name="csrf-token" content="###CSRF_TOKEN###"/>', '')
  29 + end
  30 +
  31 + layer.scan(/(<element name="([\w\W]*?)" type="([\w\W]+?)"><\/element>)/).each do |item|
  32 + content = item[0]
  33 + name = item[1].to_s
  34 + type = item[2]
  35 + code = name.parameterize
  36 +
  37 + if type == "menu" && name.to_s.empty?
  38 + template_part = nil
  39 + template_part = page_template.template_parts.find_by_code(page_template.menu) if template_part.nil? && page_template.menu.present?
  40 + template_part = page_template.template_parts.where(part_type: 'menu').order(:name).first if template_part.nil?
  41 + else
  42 + template_part = page_template.template_parts.find_by_code(code)
  43 + end
  44 +
  45 + if template_part
  46 + html = TemplateGenerator::subpart_generate(session, domain, page_template, template_part.part_type, template_part.elements)
  47 + layer.gsub!(content, html)
  48 + end
  49 + end
  50 +
  51 + (0..1).each do |index|
  52 + layer.scan(/(<element name="([\w\W]*?)"><\/element>)/).each do |item|
  53 + content = item[0]
  54 + name = item[1].to_s
  55 + code = name.parameterize
  56 +
  57 + template_part = page_template.template_parts.find_by_code(code)
  58 +
  59 + if template_part
  60 + html = TemplateGenerator::subpart_generate(session, domain, page_template, template_part.part_type, template_part.elements)
  61 + layer.gsub!(content, html)
  62 + end
  63 + end
  64 + end
  65 +
  66 + #try find in static elements
  67 + page_template.page_content_markers.where(lang: I18n.locale).each do |marker|
  68 + layer.gsub!(marker.marker, marker.text_value.to_s)
  69 + end
  70 +
  71 + markers = PageTemplate.get_marker(layer)
  72 +
  73 + markers.each do |marker|
  74 + case marker
  75 + when '###CONTENT###'
  76 + page_content = get_html_by_json_client(page_data, session)
  77 + layer.gsub!(marker, page_content)
  78 + layer.gsub!('make-checked="false"', '')
  79 + layer.gsub!("make-checked='false'", '')
  80 + layer.gsub!('make-checked=""', '')
  81 + layer.gsub!("make-checked=''", '')
  82 +
  83 + layer.gsub!('make-checked="checked"', 'checked')
  84 + layer.gsub!("make-checked='checked'", 'checked')
  85 + layer.gsub!('make-checked="true"', 'checked')
  86 + layer.gsub!("make-checked='true'", 'checked')
  87 + when '###META_TITLE###'
  88 + layer.gsub!(marker, page_data.meta_title.to_s)
  89 + when '###META_DESCRIPTION###'
  90 + layer.gsub!(marker, page_data.meta_description.to_s)
  91 + when '###META_KEYWORDS###'
  92 + layer.gsub!(marker, page_data.meta_keywords.to_s)
  93 + when '###BODY_CONTENT_EDIT_CLASS_NAME###'
  94 + body_class_name = ''
  95 + body_class_name = 'editable-content' if current_admin_user
  96 + layer.gsub!(marker, body_class_name)
  97 + when '###VARIABLE_FOR_EDIT_CONTENT###'
  98 + content = ''
  99 + if current_admin_user
  100 + content = show_frontend_editor_admin_page_url(@page_data.page, lang: @page_data.lang)
  101 + end
  102 + layer.gsub!(marker, content)
  103 + when '###CSRF_PARAM###'
  104 + if current_admin_user || (class_exists?('UserSession') && UserSession.current_user)
  105 + layer.gsub!(marker, Rack::Utils.escape_html(request_forgery_protection_token))
  106 + end
  107 + when '###CSRF_TOKEN###'
  108 + if current_admin_user || (class_exists?('UserSession') && UserSession.current_user)
  109 + layer.gsub!(marker, Rack::Utils.escape_html(form_authenticity_token))
  110 + end
  111 + when '###DOMAIN_NAME###'
  112 + layer.gsub!(marker, session[:scheme] + ADMIN_CONFIG['domain_name'])
  113 + when '###INCLUDE_JS_FILE###'
  114 + js_array = []
  115 + if params[:format].to_s != 'pdf'
  116 + if current_admin_user
  117 + js_array << "<script src='#{session[:scheme]}#{ADMIN_CONFIG['domain_name']}#{ActionController::Base.helpers.asset_path('kanjai/frontend.js')}'></script>"
  118 + css_path = "#{session[:scheme]}#{ADMIN_CONFIG['domain_name']}#{ActionController::Base.helpers.asset_path('kanjai/frontend.css')}"
  119 + js_array << "<script type='text/javascript'>$('<link>', {rel: 'stylesheet',type: 'text/css',href: '#{css_path}'}).appendTo('head');</script>"
  120 + else
  121 + js_array << "<script src='#{session[:scheme]}#{ADMIN_CONFIG['domain_name']}#{ActionController::Base.helpers.asset_path('kanjai/frontend_not_login.js')}'></script>"
  122 + end
  123 + js_array << "<script src='#{session[:scheme]}#{ADMIN_CONFIG['domain_name']}#{ActionController::Base.helpers.asset_path('kanjai/frontend_extend.js')}'></script>"
  124 + css_path = "#{session[:scheme]}#{ADMIN_CONFIG['domain_name']}#{ActionController::Base.helpers.asset_path('kanjai/frontend_extend.css')}"
  125 + js_array << "<script type='text/javascript'>$('<link>', {rel: 'stylesheet',type: 'text/css',href: '#{css_path}'}).appendTo('head');</script>"
  126 + end
  127 + layer.gsub!(marker, js_array.join(''))
  128 + else
  129 + #if PageMarker.public_instance_methods.include?("process_#{marker.gsub('###', '')}".to_sym)
  130 + # page_marker = PageMarker.new
  131 + # content = page_marker.method("process_#{marker.gsub('###', '')}").call(page_data)
  132 + # layer.gsub!(marker, content)
  133 + #end
  134 +
  135 + end
  136 + end
  137 +
  138 + return layer
  139 +
  140 + end
  141 +
  142 + def domain
  143 + @domain ||= page_data.page.domain
  144 + end
  145 +
  146 + def page_template
  147 + @page_template ||= page_data.page.page_template
  148 + end
  149 +
  150 + def page_layer
  151 + @page_layer ||= page_data.page.page_template.get_html_content
  152 + end
  153 +
  154 + end
  155 +end
1 module Kanjai 1 module Kanjai
2 - VERSION = "0.0.343" 2 + VERSION = "0.0.344"
3 end 3 end