Showing
10 changed files
with
69 additions
and
12 deletions
| 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: |