Commit 98ece6552749c10eb7098574019e3a05a305dac1

Authored by Andrey Karpikov
1 parent 36568436

add 404 page and robots txt

1 PATH 1 PATH
2 remote: . 2 remote: .
3 specs: 3 specs:
4 - kanjai (0.0.290) 4 + kanjai (0.0.342)
5 acts-as-taggable-on (~> 6.5) 5 acts-as-taggable-on (~> 6.5)
6 acts_as_list 6 acts_as_list
7 acts_as_tree 7 acts_as_tree
@@ -1194,7 +1194,7 @@ GEM @@ -1194,7 +1194,7 @@ GEM
1194 aws-sigv2 (1.1.0) 1194 aws-sigv2 (1.1.0)
1195 aws-sigv4 (1.4.0) 1195 aws-sigv4 (1.4.0)
1196 aws-eventstream (~> 1, >= 1.0.2) 1196 aws-eventstream (~> 1, >= 1.0.2)
1197 - bcrypt (3.1.16) 1197 + bcrypt (3.1.18)
1198 builder (3.2.4) 1198 builder (3.2.4)
1199 concurrent-ruby (1.1.9) 1199 concurrent-ruby (1.1.9)
1200 crass (1.0.6) 1200 crass (1.0.6)
@@ -45,7 +45,7 @@ module Kanjai @@ -45,7 +45,7 @@ module Kanjai
45 private 45 private
46 46
47 def permitted_params 47 def permitted_params
48 - params.permit(:domain => [:title, :default_lang_id, language_domains_attributes: [:id, :title, :page_lang_id, :_destroy], page_lang_ids: []]) 48 + params.permit(:domain => [:title, :default_lang_id, :robots, :page_404_id, language_domains_attributes: [:id, :title, :page_lang_id, :_destroy], page_lang_ids: []])
49 end 49 end
50 50
51 end 51 end
@@ -7,6 +7,9 @@ module Kanjai @@ -7,6 +7,9 @@ module Kanjai
7 7
8 8
9 def show 9 def show
  10 + render_status = @page_data.page == @page_data.page.domain.page_404 ? 401 : 200
  11 + domain = @page_data.page.domain
  12 +
10 if @page_data.page.block? 13 if @page_data.page.block?
11 render :template => 'kanjai/shared/401', status: 401, layout: false and return 14 render :template => 'kanjai/shared/401', status: 401, layout: false and return
12 end 15 end
@@ -15,7 +18,11 @@ module Kanjai @@ -15,7 +18,11 @@ module Kanjai
15 if @page_data.page.private_flag == true 18 if @page_data.page.private_flag == true
16 if defined?(warden).to_s == 'method' 19 if defined?(warden).to_s == 'method'
17 if warden.user.nil? 20 if warden.user.nil?
18 - render :template => 'kanjai/shared/401', status: 401, layout: false and return 21 + if domain.page_404.present?
  22 + redirect_to domain.page_404.menu_url(session[:scheme]) and return
  23 + else
  24 + render :template => 'kanjai/shared/401', status: 401, layout: false and return
  25 + end
19 end 26 end
20 end 27 end
21 end 28 end
@@ -35,7 +42,7 @@ module Kanjai @@ -35,7 +42,7 @@ module Kanjai
35 content_for_render = setTemplateContent(@page_data.page.domain, @page_data.page.page_template, layer, @page_data) 42 content_for_render = setTemplateContent(@page_data.page.domain, @page_data.page.page_template, layer, @page_data)
36 43
37 respond_to do |format| 44 respond_to do |format|
38 - format.html{render :plain => content_for_render} 45 + format.html{render :plain => content_for_render, status: render_status}
39 end 46 end
40 47
41 #render :text => content_for_render and return 48 #render :text => content_for_render and return
@@ -44,18 +51,22 @@ module Kanjai @@ -44,18 +51,22 @@ module Kanjai
44 layer = @page_data.page.page_template.get_html_content 51 layer = @page_data.page.page_template.get_html_content
45 content_for_render = setTemplateContent(@page_data.page.domain, @page_data.page.page_template, layer, @page_data) 52 content_for_render = setTemplateContent(@page_data.page.domain, @page_data.page.page_template, layer, @page_data)
46 respond_to do |format| 53 respond_to do |format|
47 - format.html{render :plain => content_for_render} 54 + format.html{render :plain => content_for_render, status: render_status}
48 end 55 end
49 end 56 end
50 end 57 end
51 else 58 else
52 page_content = get_html_by_json_client(@page_data, session) 59 page_content = get_html_by_json_client(@page_data, session)
53 - render :html => page_content.html_safe and return 60 + render :html => page_content.html_safe, status: render_status and return
54 end 61 end
55 62
56 63
57 else 64 else
58 - render :template => 'kanjai/shared/404', status: 404, layout: false and return 65 + if domain.page_404.present?
  66 + redirect_to domain.page_404.menu_url(session[:scheme]) and return
  67 + else
  68 + render :template => 'kanjai/shared/404', status: 404, layout: false and return
  69 + end
59 end 70 end
60 end 71 end
61 72
@@ -57,7 +57,7 @@ module Kanjai @@ -57,7 +57,7 @@ module Kanjai
57 lang = domain.default_lang.try(:code) 57 lang = domain.default_lang.try(:code)
58 end 58 end
59 else 59 else
60 - render plain: "Domain #{domain_title} Not Exist" and return 60 + render plain: "Domain #{domain_title} Not Exist", status: 404 and return
61 end 61 end
62 else 62 else
63 lang = domain.default_lang.try(:code) 63 lang = domain.default_lang.try(:code)
@@ -91,10 +91,18 @@ module Kanjai @@ -91,10 +91,18 @@ module Kanjai
91 if root_page 91 if root_page
92 redirect_to root_page.menu_url(session[:scheme]) 92 redirect_to root_page.menu_url(session[:scheme])
93 else 93 else
94 - render plain: "1. Can not found page #{@url} for domain #{domain_title} for lang #{I18n.locale}", status: 404 and return 94 + if domain.page_404.present?
  95 + redirect_to domain.page_404.menu_url(session[:scheme]) and return
  96 + else
  97 + render plain: "1. Can not found page #{@url} for domain #{domain_title} for lang #{I18n.locale}", status: 404 and return
  98 + end
95 end 99 end
96 else 100 else
97 - render plain: "2. Can not found page #{@url} for domain #{domain_title} for lang #{I18n.locale}", status: 404 and return 101 + if domain.page_404.present?
  102 + redirect_to domain.page_404.menu_url(session[:scheme]) and return
  103 + else
  104 + render plain: "2. Can not found page #{@url} for domain #{domain_title} for lang #{I18n.locale}", status: 404 and return
  105 + end
98 end 106 end
99 end 107 end
100 session[:url] = @url 108 session[:url] = @url
1 module Kanjai 1 module Kanjai
2 class Domain < ApplicationRecord 2 class Domain < ApplicationRecord
  3 + after_save :generate_robots_file
  4 +
3 validates :title, presence: true 5 validates :title, presence: true
4 6
5 belongs_to :default_lang, class_name: 'Kanjai::PageLang', optional: true 7 belongs_to :default_lang, class_name: 'Kanjai::PageLang', optional: true
@@ -8,5 +10,17 @@ module Kanjai @@ -8,5 +10,17 @@ module Kanjai
8 has_and_belongs_to_many :page_langs 10 has_and_belongs_to_many :page_langs
9 has_many :language_domains, dependent: :destroy 11 has_many :language_domains, dependent: :destroy
10 accepts_nested_attributes_for :language_domains, reject_if: :all_blank, allow_destroy: true 12 accepts_nested_attributes_for :language_domains, reject_if: :all_blank, allow_destroy: true
  13 +
  14 + belongs_to :page_404, class_name: "Kanjai::Page", optional: true
  15 +
  16 +
  17 + private
  18 +
  19 + def generate_robots_file
  20 + if saved_change_to_robots?
  21 + File.open("#{Rails.root}/public/robots.txt", 'w') { |file| file.write(robots) }
  22 + end
  23 + end
  24 +
11 end 25 end
12 end 26 end
@@ -30,6 +30,18 @@ @@ -30,6 +30,18 @@
30 </div> 30 </div>
31 </div> 31 </div>
32 32
  33 + <div class="form-group">
  34 + <%= f.label :robots, Kanjai::Domain.human_attribute_name(:robots), class: 'col-form-label' %>
  35 + <%= f.text_area :robots, class: "form-control #{@domain.errors.include?(:robots) ? 'parsley-error' : ''} ", rows: 10 %>
  36 + <%= error_messages(@domain, :robots) %>
  37 + </div>
  38 +
  39 + <div class="form-group">
  40 + <%= f.label :page_404_id, Kanjai::Domain.human_attribute_name(:page_404_id), class: 'col-form-label' %>
  41 + <%= f.select :page_404_id, Kanjai::Page.pages_for_choose(@domain).collect{|p| ["-" * p[:level]*2 + p[:title], p[:id]] }, {:include_blank => true}, :class => "form-control" %>
  42 + </div>
  43 +
  44 +
33 45
34 <div class="card-footer mt-20"> 46 <div class="card-footer mt-20">
35 <div class="clearfix"> 47 <div class="clearfix">
@@ -105,6 +105,8 @@ en: @@ -105,6 +105,8 @@ en:
105 kanjai/domain: 105 kanjai/domain:
106 page_lang_ids: "Languages" 106 page_lang_ids: "Languages"
107 default_lang_id: "Default Language" 107 default_lang_id: "Default Language"
  108 + robots: "robots.txt"
  109 + page_404_id: "Page 404"
108 110
109 111
110 actions: 112 actions:
  1 +class AddRobotsToDomain < ActiveRecord::Migration[5.2]
  2 + def change
  3 + add_column :kanjai_domains, :robots, :text
  4 + end
  5 +end
  1 +class AddPage404IdToDomain < ActiveRecord::Migration[5.2]
  2 + def change
  3 + add_column :kanjai_domains, :page_404_id, :integer, index: true
  4 + end
  5 +end
1 module Kanjai 1 module Kanjai
2 - VERSION = "0.0.342" 2 + VERSION = "0.0.343"
3 end 3 end