Showing
10 changed files
with
69 additions
and
12 deletions
| 1 | 1 | PATH |
| 2 | 2 | remote: . |
| 3 | 3 | specs: |
| 4 | - kanjai (0.0.290) | |
| 4 | + kanjai (0.0.342) | |
| 5 | 5 | acts-as-taggable-on (~> 6.5) |
| 6 | 6 | acts_as_list |
| 7 | 7 | acts_as_tree |
| ... | ... | @@ -1194,7 +1194,7 @@ GEM |
| 1194 | 1194 | aws-sigv2 (1.1.0) |
| 1195 | 1195 | aws-sigv4 (1.4.0) |
| 1196 | 1196 | aws-eventstream (~> 1, >= 1.0.2) |
| 1197 | - bcrypt (3.1.16) | |
| 1197 | + bcrypt (3.1.18) | |
| 1198 | 1198 | builder (3.2.4) |
| 1199 | 1199 | concurrent-ruby (1.1.9) |
| 1200 | 1200 | crass (1.0.6) | ... | ... |
| ... | ... | @@ -45,7 +45,7 @@ module Kanjai |
| 45 | 45 | private |
| 46 | 46 | |
| 47 | 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 | 49 | end |
| 50 | 50 | |
| 51 | 51 | end | ... | ... |
| ... | ... | @@ -7,6 +7,9 @@ module Kanjai |
| 7 | 7 | |
| 8 | 8 | |
| 9 | 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 | 13 | if @page_data.page.block? |
| 11 | 14 | render :template => 'kanjai/shared/401', status: 401, layout: false and return |
| 12 | 15 | end |
| ... | ... | @@ -15,7 +18,11 @@ module Kanjai |
| 15 | 18 | if @page_data.page.private_flag == true |
| 16 | 19 | if defined?(warden).to_s == 'method' |
| 17 | 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 | 26 | end |
| 20 | 27 | end |
| 21 | 28 | end |
| ... | ... | @@ -35,7 +42,7 @@ module Kanjai |
| 35 | 42 | content_for_render = setTemplateContent(@page_data.page.domain, @page_data.page.page_template, layer, @page_data) |
| 36 | 43 | |
| 37 | 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 | 46 | end |
| 40 | 47 | |
| 41 | 48 | #render :text => content_for_render and return |
| ... | ... | @@ -44,18 +51,22 @@ module Kanjai |
| 44 | 51 | layer = @page_data.page.page_template.get_html_content |
| 45 | 52 | content_for_render = setTemplateContent(@page_data.page.domain, @page_data.page.page_template, layer, @page_data) |
| 46 | 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 | 55 | end |
| 49 | 56 | end |
| 50 | 57 | end |
| 51 | 58 | else |
| 52 | 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 | 61 | end |
| 55 | 62 | |
| 56 | 63 | |
| 57 | 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 | 70 | end |
| 60 | 71 | end |
| 61 | 72 | ... | ... |
| ... | ... | @@ -57,7 +57,7 @@ module Kanjai |
| 57 | 57 | lang = domain.default_lang.try(:code) |
| 58 | 58 | end |
| 59 | 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 | 61 | end |
| 62 | 62 | else |
| 63 | 63 | lang = domain.default_lang.try(:code) |
| ... | ... | @@ -91,10 +91,18 @@ module Kanjai |
| 91 | 91 | if root_page |
| 92 | 92 | redirect_to root_page.menu_url(session[:scheme]) |
| 93 | 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 | 99 | end |
| 96 | 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 | 106 | end |
| 99 | 107 | end |
| 100 | 108 | session[:url] = @url | ... | ... |
| 1 | 1 | module Kanjai |
| 2 | 2 | class Domain < ApplicationRecord |
| 3 | + after_save :generate_robots_file | |
| 4 | + | |
| 3 | 5 | validates :title, presence: true |
| 4 | 6 | |
| 5 | 7 | belongs_to :default_lang, class_name: 'Kanjai::PageLang', optional: true |
| ... | ... | @@ -8,5 +10,17 @@ module Kanjai |
| 8 | 10 | has_and_belongs_to_many :page_langs |
| 9 | 11 | has_many :language_domains, dependent: :destroy |
| 10 | 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 | 25 | end |
| 12 | 26 | end | ... | ... |
| ... | ... | @@ -30,6 +30,18 @@ |
| 30 | 30 | </div> |
| 31 | 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 | 46 | <div class="card-footer mt-20"> |
| 35 | 47 | <div class="clearfix"> | ... | ... |