Commit 6a4b9d99982a74cfcb40f480b2a25e2353e198d5

Authored by Andrey Karpikov
1 parent 20f39774

check generate page url, add new type for template element

@@ -105,6 +105,8 @@ module Kanjai @@ -105,6 +105,8 @@ module Kanjai
105 def show_editor 105 def show_editor
106 prepare_edit_content 106 prepare_edit_content
107 107
  108 + get_page_list(@page.domain)
  109 +
108 render :layout => false 110 render :layout => false
109 end 111 end
110 112
@@ -74,21 +74,19 @@ module Kanjai @@ -74,21 +74,19 @@ module Kanjai
74 74
75 #@page_data = PageDatum.where(:url => @url).first 75 #@page_data = PageDatum.where(:url => @url).first
76 #$current_locale = PageLang.where(default_use: true).first.code 76 #$current_locale = PageLang.where(default_use: true).first.code
77 - @page_data = PageDatum.joins(page: :domain).where(kanjai_domains: {id: domain.id}).where(:url => @url, lang: I18n.locale).first  
78 - session[:current_locale] = I18n.locale  
79 - if @page_data.nil?  
80 - mas = @url.split('/')  
81 - if mas.length > 1  
82 - @url = '/' + mas[1] + '/:path'  
83 - @page_data = PageDatum.joins(page: :domain).where(kanjai_domains: {id: domain.id}).where(:url => @url, lang: I18n.locale).first  
84 - end  
85 - end 77 + @page_data = Kanjai::CurrentPage.new(domain: domain, lang: I18n.locale, url: @url).call
86 78
  79 + session[:current_locale] = I18n.locale
  80 + #if @page_data.nil?
  81 + # mas = @url.split('/')
  82 + # if mas.length > 1
  83 + # @url = '/' + mas[1] + '/:path'
  84 + # @page_data = PageDatum.joins(page: :domain).where(kanjai_domains: {id: domain.id}).where(:url => @url, lang: I18n.locale).first
  85 + # end
  86 + #end
87 87
88 - if @page_data  
89 - #$current_locale = @page_data.lang  
90 - else  
91 - if @url == '/' 88 + if @page_data.nil?
  89 + if @url == '/' || @url == ''
92 root_page = Page.joins(:domain).where(kanjai_domains: {id: domain.id}).where(root_page: true).first 90 root_page = Page.joins(:domain).where(kanjai_domains: {id: domain.id}).where(root_page: true).first
93 if root_page 91 if root_page
94 redirect_to root_page.menu_url(session[:scheme]) 92 redirect_to root_page.menu_url(session[:scheme])
@@ -55,17 +55,38 @@ module Kanjai @@ -55,17 +55,38 @@ module Kanjai
55 55
56 if /(http|https):\/\//.match url 56 if /(http|https):\/\//.match url
57 url 57 url
  58 + elsif url[0] == '/'
  59 + url == '/' ? "/#{lang}" : "/#{lang}#{url}"
  60 + else
  61 + current_page = self
  62 + segments = []
  63 + loop do
  64 + current_page_url = current_page.lang_attributes(lang, :url)
  65 + segments << current_page_url.gsub(/^\//, '').gsub(/\/$/, '')
  66 + break if current_page_url[0] == '/'
  67 + break if current_page.parent.nil?
  68 + current_page = current_page.parent
  69 + end
  70 +
  71 + url = segments.reverse.join('/')
  72 + url = "/#{url}" unless url[0] == '/'
  73 + "/#{lang}#{url}"
  74 + end
  75 + end
  76 +
  77 + def generate_url_old(scheme, url, lang)
  78 + lang = I18n.locale.to_s if lang.nil?
  79 +
  80 + if /(http|https):\/\//.match url
  81 + url
58 else 82 else
59 if /\//.match url 83 if /\//.match url
60 if url == '/' 84 if url == '/'
61 - #scheme + ADMIN_CONFIG['domain_name'] + '/' + lang  
62 '/' + lang 85 '/' + lang
63 else 86 else
64 - #scheme + ADMIN_CONFIG['domain_name'] + '/' + lang + url  
65 '/' + lang + url 87 '/' + lang + url
66 end 88 end
67 else 89 else
68 - #scheme + ADMIN_CONFIG['domain_name'] + '/' + lang + '/' + url  
69 '/' + lang + '/' + url 90 '/' + lang + '/' + url
70 end 91 end
71 end 92 end
@@ -187,7 +187,7 @@ module Kanjai @@ -187,7 +187,7 @@ module Kanjai
187 page_template = self.page.page_template 187 page_template = self.page.page_template
188 subpart = page_template.template_parts.find_by_code(self.type_content) 188 subpart = page_template.template_parts.find_by_code(self.type_content)
189 if subpart 189 if subpart
190 - html = Kanjai::TemplateGenerator.subpart_generate(session, self.page.domain, page_template, 'content', subpart.elements, self.marker_hash, self.id) 190 + html = Kanjai::TemplateGenerator.subpart_generate(session, self.page.domain, page_template, 'content', subpart.elements, self.marker_hash(subpart), self.id)
191 else 191 else
192 html = '' 192 html = ''
193 end 193 end
@@ -201,11 +201,19 @@ module Kanjai @@ -201,11 +201,19 @@ module Kanjai
201 end 201 end
202 202
203 203
204 - def marker_hash 204 + def marker_hash(subpart)
205 result = {} 205 result = {}
206 self.page_content_markers.order(:row_item).each do |item| 206 self.page_content_markers.order(:row_item).each do |item|
207 result[item.row_item] ||= {} 207 result[item.row_item] ||= {}
208 - result[item.row_item][item.marker] = item.text_value 208 + element = subpart.field_options.find{|element| element[:name] == item.marker}
  209 + marker_value = item.text_value
  210 + if element && element[:attributes] && element[:attributes]['type'] == 'page'
  211 + page = Kanjai::Page.find_by(id: marker_value)
  212 + if page
  213 + marker_value = page.menu_url('https://')
  214 + end
  215 + end
  216 + result[item.row_item][item.marker] = marker_value
209 end 217 end
210 result 218 result
211 end 219 end
@@ -55,6 +55,10 @@ @@ -55,6 +55,10 @@
55 </div> 55 </div>
56 <% end %> 56 <% end %>
57 57
  58 + <% if form2.object.get_marker_type(@type_content) == 'page' %>
  59 + <%= form2.select :text_value, @pages.collect{|p| ["-" * p[:level]*2 + p[:title], p[:id], :style => "padding-left:#{p[:level]*10}px;"] }, {:include_blank => true}, :class => "form-control" %>
  60 + <% end %>
  61 +
58 </div> 62 </div>
59 63
60 <% end %> 64 <% end %>
  1 +module Kanjai
  2 + class CurrentPage
  3 +
  4 + attr_reader :domain, :lang, :url
  5 +
  6 + def initialize(domain:, lang:, url:)
  7 + @domain = domain
  8 + @lang = lang
  9 + @url = url
  10 + end
  11 +
  12 + def call
  13 + mas = url.split('/').reject { |c| c.empty? }
  14 + root_page = nil
  15 + page_datum = nil
  16 +
  17 + loop do
  18 + break if mas.count == 0
  19 +
  20 + check_length = mas.count
  21 +
  22 + loop do
  23 + break if check_length <= 0
  24 +
  25 + work_url = mas[0...check_length].join('/')
  26 + work_url = '/' if work_url.to_s.empty?
  27 + sheck_scope = scope
  28 + if root_page
  29 + page_ids = [].tap do |n|
  30 + root_page.walk_tree do |page, level|
  31 + n << page.id
  32 + end
  33 + end
  34 + sheck_scope = sheck_scope.where(kanjai_pages: {id: page_ids})
  35 + end
  36 +
  37 + page_datum = sheck_scope.find_by(url: work_url)
  38 + page_datum = sheck_scope.find_by(url: "/#{work_url}") if page_datum.nil?
  39 + page_datum = sheck_scope.find_by(url: "#{work_url}/") if page_datum.nil?
  40 + page_datum = sheck_scope.find_by(url: "/#{work_url}/") if page_datum.nil?
  41 +
  42 + if page_datum
  43 + root_page = page_datum.page
  44 + mas = mas.last(mas.count - check_length)
  45 + break
  46 + else
  47 + check_length -= 1
  48 + end
  49 + end
  50 + break if page_datum.nil?
  51 + end
  52 +
  53 + if page_datum.nil? && url == '/'
  54 + page_datum = scope.find_by(url: url)
  55 + end
  56 +
  57 + page_datum
  58 + end
  59 +
  60 + private
  61 +
  62 + def scope
  63 + @scope ||= PageDatum.joins(page: :domain).where(lang: lang, kanjai_domains: {id: domain.id})
  64 + end
  65 +
  66 + end
  67 +end
1 module Kanjai 1 module Kanjai
2 - VERSION = "0.0.331" 2 + VERSION = "0.0.332"
3 end 3 end