Showing
19 changed files
with
112 additions
and
70 deletions
| 1 | PATH | 1 | PATH |
| 2 | remote: . | 2 | remote: . |
| 3 | specs: | 3 | specs: |
| 4 | - kanjai (0.0.203) | 4 | + kanjai (0.0.232) |
| 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 |
| @@ -59,7 +59,7 @@ GEM | @@ -59,7 +59,7 @@ GEM | ||
| 59 | tzinfo (~> 1.1) | 59 | tzinfo (~> 1.1) |
| 60 | acts-as-taggable-on (6.5.0) | 60 | acts-as-taggable-on (6.5.0) |
| 61 | activerecord (>= 5.0, < 6.1) | 61 | activerecord (>= 5.0, < 6.1) |
| 62 | - acts_as_list (1.0.1) | 62 | + acts_as_list (1.0.2) |
| 63 | activerecord (>= 4.2) | 63 | activerecord (>= 4.2) |
| 64 | acts_as_tree (2.9.1) | 64 | acts_as_tree (2.9.1) |
| 65 | activerecord (>= 3.0.0) | 65 | activerecord (>= 3.0.0) |
| @@ -970,7 +970,7 @@ GEM | @@ -970,7 +970,7 @@ GEM | ||
| 970 | aws-sigv2 (1.0.1) | 970 | aws-sigv2 (1.0.1) |
| 971 | aws-sigv4 (1.2.1) | 971 | aws-sigv4 (1.2.1) |
| 972 | aws-eventstream (~> 1, >= 1.0.2) | 972 | aws-eventstream (~> 1, >= 1.0.2) |
| 973 | - bcrypt (3.1.15) | 973 | + bcrypt (3.1.16) |
| 974 | builder (3.2.4) | 974 | builder (3.2.4) |
| 975 | concurrent-ruby (1.1.6) | 975 | concurrent-ruby (1.1.6) |
| 976 | crass (1.0.6) | 976 | crass (1.0.6) |
| @@ -1064,8 +1064,8 @@ GEM | @@ -1064,8 +1064,8 @@ GEM | ||
| 1064 | thread_safe (~> 0.1) | 1064 | thread_safe (~> 0.1) |
| 1065 | unobtrusive_flash (3.3.1) | 1065 | unobtrusive_flash (3.3.1) |
| 1066 | railties | 1066 | railties |
| 1067 | - warden (1.2.8) | ||
| 1068 | - rack (>= 2.0.6) | 1067 | + warden (1.2.9) |
| 1068 | + rack (>= 2.0.9) | ||
| 1069 | websocket-driver (0.7.3) | 1069 | websocket-driver (0.7.3) |
| 1070 | websocket-extensions (>= 0.1.0) | 1070 | websocket-extensions (>= 0.1.0) |
| 1071 | websocket-extensions (0.1.5) | 1071 | websocket-extensions (0.1.5) |
| @@ -50,4 +50,8 @@ | @@ -50,4 +50,8 @@ | ||
| 50 | .filter .btn-group-toggle > .btn{margin-bottom:5px;position:relative;} | 50 | .filter .btn-group-toggle > .btn{margin-bottom:5px;position:relative;} |
| 51 | .filter .btn-group-toggle > .btn a, .filter .btn-group-toggle > .btn a:hover{text-decoration:none;position:absolute;top:-14px;right:2px;font-size:14px;line-height:14px;} | 51 | .filter .btn-group-toggle > .btn a, .filter .btn-group-toggle > .btn a:hover{text-decoration:none;position:absolute;top:-14px;right:2px;font-size:14px;line-height:14px;} |
| 52 | .filter .btn-group-toggle > .btn a{display:none;} | 52 | .filter .btn-group-toggle > .btn a{display:none;} |
| 53 | -.filter .btn-group-toggle > .btn:hover a{display:inline;} | ||
| 53 | +.filter .btn-group-toggle > .btn:hover a{display:inline;} | ||
| 54 | +.checkbox-list{ | ||
| 55 | + input{margin-right:3px;} | ||
| 56 | + label{margin-right:10px;} | ||
| 57 | +} |
| @@ -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, language_domains_attributes: [:id, :title, :_destroy]]) | 48 | + params.permit(:domain => [:title, :default_lang_id, language_domains_attributes: [:id, :title, :page_lang_id, :_destroy], page_lang_ids: []]) |
| 49 | end | 49 | end |
| 50 | 50 | ||
| 51 | end | 51 | end |
| @@ -6,17 +6,17 @@ module Kanjai | @@ -6,17 +6,17 @@ module Kanjai | ||
| 6 | end | 6 | end |
| 7 | 7 | ||
| 8 | def new | 8 | def new |
| 9 | - @domain = Domain.find(params[:domain_id]) | 9 | + #@domain = Domain.find(params[:domain_id]) |
| 10 | @page_lang = PageLang.new | 10 | @page_lang = PageLang.new |
| 11 | - @page_lang.domain = @domain | 11 | + #@page_lang.domain = @domain |
| 12 | end | 12 | end |
| 13 | 13 | ||
| 14 | def create | 14 | def create |
| 15 | @page_lang = PageLang.new(permitted_params[:page_lang]) | 15 | @page_lang = PageLang.new(permitted_params[:page_lang]) |
| 16 | 16 | ||
| 17 | - if params[:page_lang][:default_use].to_i == 1 | ||
| 18 | - @page_lang.domain.page_langs.all.each {|item| item.update_column(:default_use, false) } | ||
| 19 | - end | 17 | + #if params[:page_lang][:default_use].to_i == 1 |
| 18 | + # @page_lang.domain.page_langs.all.each {|item| item.update_column(:default_use, false) } | ||
| 19 | + #end | ||
| 20 | 20 | ||
| 21 | if @page_lang.save | 21 | if @page_lang.save |
| 22 | redirect_to admin_page_langs_url | 22 | redirect_to admin_page_langs_url |
| @@ -48,15 +48,19 @@ module Kanjai | @@ -48,15 +48,19 @@ module Kanjai | ||
| 48 | 48 | ||
| 49 | if domain.nil? | 49 | if domain.nil? |
| 50 | # try found alternative domain | 50 | # try found alternative domain |
| 51 | - lang_domain = LanguageDomain.joins(:page_langs).where(title: domain_title, kanjai_page_langs: {default_use: false}).first | ||
| 52 | - if lang_domain && lang_domain.page_langs.count > 0 | 51 | + lang_domain = LanguageDomain.where(title: domain_title).first |
| 52 | + if lang_domain | ||
| 53 | domain = lang_domain.domain | 53 | domain = lang_domain.domain |
| 54 | - lang = lang_domain.page_langs.where(default_use: false).first.code | 54 | + if lang_domain.page_lang |
| 55 | + lang = lang_domain.page_lang.code | ||
| 56 | + else | ||
| 57 | + lang = domain.default_lang.try(:code) | ||
| 58 | + end | ||
| 55 | else | 59 | else |
| 56 | render plain: "Domain #{domain_title} Not Exist" and return | 60 | render plain: "Domain #{domain_title} Not Exist" and return |
| 57 | end | 61 | end |
| 58 | else | 62 | else |
| 59 | - lang = domain.page_langs.where(default_use: true).first.try(:code) | 63 | + lang = domain.default_lang.try(:code) |
| 60 | end | 64 | end |
| 61 | 65 | ||
| 62 | if params && params[:locale].present? && request.original_fullpath.split('/')[1].length == 2 | 66 | if params && params[:locale].present? && request.original_fullpath.split('/')[1].length == 2 |
| @@ -2,8 +2,10 @@ module Kanjai | @@ -2,8 +2,10 @@ module Kanjai | ||
| 2 | class Domain < ApplicationRecord | 2 | class Domain < ApplicationRecord |
| 3 | validates :title, presence: true | 3 | validates :title, presence: true |
| 4 | 4 | ||
| 5 | + belongs_to :default_lang, class_name: 'Kanjai::PageLang', optional: true | ||
| 6 | + | ||
| 5 | has_many :pages, dependent: :destroy | 7 | has_many :pages, dependent: :destroy |
| 6 | - has_many :page_langs, dependent: :destroy | 8 | + has_and_belongs_to_many :page_langs |
| 7 | has_many :language_domains, dependent: :destroy | 9 | has_many :language_domains, dependent: :destroy |
| 8 | accepts_nested_attributes_for :language_domains, reject_if: :all_blank, allow_destroy: true | 10 | accepts_nested_attributes_for :language_domains, reject_if: :all_blank, allow_destroy: true |
| 9 | end | 11 | end |
| 1 | module Kanjai | 1 | module Kanjai |
| 2 | class LanguageDomain < ApplicationRecord | 2 | class LanguageDomain < ApplicationRecord |
| 3 | belongs_to :domain | 3 | belongs_to :domain |
| 4 | - has_many :page_langs, dependent: :nullify | 4 | + belongs_to :page_lang, optional: true |
| 5 | + #has_many :page_langs, dependent: :nullify | ||
| 5 | end | 6 | end |
| 6 | end | 7 | end |
| 1 | module Kanjai | 1 | module Kanjai |
| 2 | class PageLang < ActiveRecord::Base | 2 | class PageLang < ActiveRecord::Base |
| 3 | 3 | ||
| 4 | - belongs_to :domain | ||
| 5 | belongs_to :language_domain, optional: true | 4 | belongs_to :language_domain, optional: true |
| 6 | 5 | ||
| 6 | + has_and_belongs_to_many :domains | ||
| 7 | + | ||
| 7 | validates :code, :title, presence: true | 8 | validates :code, :title, presence: true |
| 8 | 9 | ||
| 9 | default_scope { order('code') } | 10 | default_scope { order('code') } |
| @@ -5,6 +5,21 @@ | @@ -5,6 +5,21 @@ | ||
| 5 | <%= f.text_field :title, class: "form-control #{@domain.errors.include?(:title) ? 'parsley-error' : ''} " %> | 5 | <%= f.text_field :title, class: "form-control #{@domain.errors.include?(:title) ? 'parsley-error' : ''} " %> |
| 6 | <%= error_messages(@domain, :title) %> | 6 | <%= error_messages(@domain, :title) %> |
| 7 | </div> | 7 | </div> |
| 8 | + <div class="form-group"> | ||
| 9 | + <%= f.label :page_lang_ids, Kanjai::Domain.human_attribute_name(:page_lang_ids), class: 'col-form-label' %> | ||
| 10 | + <div class="checkbox-list"> | ||
| 11 | + <%= f.collection_check_boxes :page_lang_ids, Kanjai::PageLang.order(:title), :id, :title %> | ||
| 12 | + </div> | ||
| 13 | + </div> | ||
| 14 | + | ||
| 15 | + <div class="form-group"> | ||
| 16 | + <%= f.label :default_lang_id, Kanjai::Domain.human_attribute_name(:default_lang_id), class: 'col-form-label' %> | ||
| 17 | + <div class="checkbox-list"> | ||
| 18 | + <%= f.select :default_lang_id, @domain.page_langs.collect{|item| [item.title, item.id]}, {include_blank: true}, class: 'form-control' %> | ||
| 19 | + </div> | ||
| 20 | + </div> | ||
| 21 | + | ||
| 22 | + | ||
| 8 | 23 | ||
| 9 | <div id="language_domains"> | 24 | <div id="language_domains"> |
| 10 | <%=f.fields_for :language_domains do |f2| %> | 25 | <%=f.fields_for :language_domains do |f2| %> |
| 1 | <div class="nested-fields mt-20"> | 1 | <div class="nested-fields mt-20"> |
| 2 | <div class="row"> | 2 | <div class="row"> |
| 3 | - <div class="col-md-8"><%= f.text_field :title, class: 'form-control' %></div> | ||
| 4 | - <div class="col-md-4"><%= link_to_remove_association t('actions.delete'), f %></div> | 3 | + <div class="col-md-5"><%= f.text_field :title, class: 'form-control' %></div> |
| 4 | + <div class="col-md-5"><%= f.select :page_lang_id, @domain.page_langs.order(:title).collect{|item| [item.title, item.id] } , {include_blank: true}, class: 'form-control' %></div> | ||
| 5 | + <div class="col-md-2"><%= link_to_remove_association t('actions.delete'), f %></div> | ||
| 5 | </div> | 6 | </div> |
| 6 | </div> | 7 | </div> |
| @@ -14,23 +14,6 @@ | @@ -14,23 +14,6 @@ | ||
| 14 | </div> | 14 | </div> |
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | - <div class="form-group row"> | ||
| 18 | - <%= f.label :default_use, Kanjai::PageLang.human_attribute_name(:default_use), class: 'col-md-2 col-form-label' %> | ||
| 19 | - <div class="col-md-10"> | ||
| 20 | - <label class="switch switch-lg"><%= f.check_box :default_use, class: 'default-lang-checkbox' %><span></span></label> | ||
| 21 | - </div> | ||
| 22 | - </div> | ||
| 23 | - | ||
| 24 | - <div class="language-domain-wrapper <%= f.object.default_use ? 'not-visible' : '' %>" > | ||
| 25 | - <% if @page_lang.domain.language_domains.count > 0 %> | ||
| 26 | - <div class="form-group"> | ||
| 27 | - <%= f.label :language_domain_id, Kanjai::PageLang.human_attribute_name(:language_domain) + ' *', class: 'col-form-label' %> | ||
| 28 | - <%= f.select :language_domain_id, options_for_select(@page_lang.domain.language_domains.collect{|item| [item.title, item.id]}, @page_lang.language_domain_id.to_i), {include_blank: true}, class: "form-control " %> | ||
| 29 | - <%= error_messages(@page_lang, :language_domain_id) %> | ||
| 30 | - </div> | ||
| 31 | - <% end %> | ||
| 32 | - </div> | ||
| 33 | - | ||
| 34 | 17 | ||
| 35 | <div class="card-footer mt-20"> | 18 | <div class="card-footer mt-20"> |
| 36 | <div class="clearfix"> | 19 | <div class="clearfix"> |
| @@ -4,42 +4,35 @@ | @@ -4,42 +4,35 @@ | ||
| 4 | <!-- START card--> | 4 | <!-- START card--> |
| 5 | 5 | ||
| 6 | <div id="accordion"> | 6 | <div id="accordion"> |
| 7 | - <% Kanjai::Domain.order(:title).each do |domain| %> | ||
| 8 | - <div class="card card-default mb-1"> | ||
| 9 | - <div class="card-header" id="domain-headline-<%= domain.id %>"> | ||
| 10 | - <h4 class="mb-0"><a class="text-inherit" data-toggle="collapse" data-target="#domain-<%= domain.id %>" aria-expanded="true" aria-controls="domain-<%= domain.id %>" href=""><%= domain.title %></a></h4> | 7 | + |
| 8 | + <!-- START card--> | ||
| 9 | + <div class="card card-default"> | ||
| 10 | + <div class="card-header"> | ||
| 11 | + <div class="row"> | ||
| 12 | + <div class="col-md-8"> | ||
| 13 | + <%= t('admin.page_langs.page_title') %> | ||
| 14 | + </div> | ||
| 15 | + <div class="col-md-4 text-right"> | ||
| 16 | + <%= link_to I18n.t('admin.page_langs.create'), new_admin_page_lang_url, class: 'btn btn-primary' %> | ||
| 17 | + </div> | ||
| 18 | + </div> | ||
| 11 | </div> | 19 | </div> |
| 12 | - <div class="collapse <%= params[:domain_id].to_i == domain.id ? 'show' : '' %>" id="domain-<%= domain.id %>" aria-labelledby="domain-headline-<%= domain.id %>" data-parent="#accordion" style=""> | ||
| 13 | - <div class="card-body border-top"> | ||
| 14 | - <div class="card card-default"> | ||
| 15 | - <div class="card-header"> | ||
| 16 | - <div class="row"> | ||
| 17 | - <div class="col-md-8"> | ||
| 18 | - <%= t('admin.page_langs.title') %> | ||
| 19 | - </div> | ||
| 20 | - <div class="col-md-4 text-right"> | ||
| 21 | - <%= link_to I18n.t('admin.page_langs.create'), new_admin_page_lang_url(domain_id: domain.id), class: 'btn btn-primary' %> | ||
| 22 | - </div> | ||
| 23 | - </div> | ||
| 24 | - </div> | ||
| 25 | - <div class="card-body"> | ||
| 26 | - <!-- START table-responsive--> | ||
| 27 | - <div class="table-responsive"> | 20 | + <div class="card-body"> |
| 21 | + <!-- START table-responsive--> | ||
| 22 | + <div class="table-responsive"> | ||
| 28 | <table class="table"> | 23 | <table class="table"> |
| 29 | <thead> | 24 | <thead> |
| 30 | <tr> | 25 | <tr> |
| 31 | <th><%= Kanjai::PageLang.human_attribute_name(:code) %></th> | 26 | <th><%= Kanjai::PageLang.human_attribute_name(:code) %></th> |
| 32 | <th><%= Kanjai::PageLang.human_attribute_name(:title) %></th> | 27 | <th><%= Kanjai::PageLang.human_attribute_name(:title) %></th> |
| 33 | - <th><%= Kanjai::PageLang.human_attribute_name(:language_domain) %></th> | ||
| 34 | <th width="50px"></th> | 28 | <th width="50px"></th> |
| 35 | </tr> | 29 | </tr> |
| 36 | </thead> | 30 | </thead> |
| 37 | <tbody> | 31 | <tbody> |
| 38 | - <% domain.page_langs.order(:code).each do |item| %> | 32 | + <% @collection.each do |item| %> |
| 39 | <tr id='<%= dom_id(item) %>'> | 33 | <tr id='<%= dom_id(item) %>'> |
| 40 | <td><%= item.code %></td> | 34 | <td><%= item.code %></td> |
| 41 | <td><%= item.title %></td> | 35 | <td><%= item.title %></td> |
| 42 | - <td><%= !item.default_use ? item.language_domain.try(:title) : '' %></td> | ||
| 43 | <td> | 36 | <td> |
| 44 | <div class="dropdown"> | 37 | <div class="dropdown"> |
| 45 | <button class="btn btn-secondary dropdown-toggle dropdown-toggle-nocaret" type="button" data-toggle="dropdown" aria-expanded="false"> | 38 | <button class="btn btn-secondary dropdown-toggle dropdown-toggle-nocaret" type="button" data-toggle="dropdown" aria-expanded="false"> |
| @@ -56,15 +49,11 @@ | @@ -56,15 +49,11 @@ | ||
| 56 | 49 | ||
| 57 | </tbody> | 50 | </tbody> |
| 58 | </table> | 51 | </table> |
| 59 | - </div><!-- END table-responsive--> | ||
| 60 | - </div> | ||
| 61 | - </div><!-- END card--> | 52 | + </div><!-- END table-responsive--> |
| 53 | + </div> | ||
| 54 | + </div><!-- END card--> | ||
| 62 | 55 | ||
| 63 | 56 | ||
| 64 | - </div> | ||
| 65 | - </div> | ||
| 66 | - </div> | ||
| 67 | - <% end %> | ||
| 68 | </div> | 57 | </div> |
| 69 | 58 | ||
| 70 | 59 |
| @@ -102,6 +102,9 @@ en: | @@ -102,6 +102,9 @@ en: | ||
| 102 | meta_title: Meta Title | 102 | meta_title: Meta Title |
| 103 | meta_description: Meta Description | 103 | meta_description: Meta Description |
| 104 | meta_keywords: Meta Keywords | 104 | meta_keywords: Meta Keywords |
| 105 | + kanjai/domain: | ||
| 106 | + page_lang_ids: "Languages" | ||
| 107 | + default_lang_id: "Default Language" | ||
| 105 | 108 | ||
| 106 | 109 | ||
| 107 | actions: | 110 | actions: |
| @@ -146,6 +149,7 @@ en: | @@ -146,6 +149,7 @@ en: | ||
| 146 | empty_text: "Empty language list" | 149 | empty_text: "Empty language list" |
| 147 | create: "Add new language" | 150 | create: "Add new language" |
| 148 | edit: "Edit language" | 151 | edit: "Edit language" |
| 152 | + page_title: "Languages" | ||
| 149 | pages: | 153 | pages: |
| 150 | page_title: "Pages" | 154 | page_title: "Pages" |
| 151 | add_new: "Add page" | 155 | add_new: "Add page" |
| @@ -167,7 +171,7 @@ en: | @@ -167,7 +171,7 @@ en: | ||
| 167 | add_new: "Add domain" | 171 | add_new: "Add domain" |
| 168 | empty_text: "Empty domain list" | 172 | empty_text: "Empty domain list" |
| 169 | create: "Add new domain" | 173 | create: "Add new domain" |
| 170 | - edit: "Edit domain" | 174 | + edit: "Edit domain" |
| 171 | template_status: | 175 | template_status: |
| 172 | not_file: "" | 176 | not_file: "" |
| 173 | unzip: "Ready" | 177 | unzip: "Ready" |
test/fixtures/kanjai/domain_languages.yml
0 → 100644
| 1 | +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html | ||
| 2 | + | ||
| 3 | +# This model initially had no columns defined. If you add columns to the | ||
| 4 | +# model remove the '{}' from the fixture names and add the columns immediately | ||
| 5 | +# below each fixture, per the syntax in the comments below | ||
| 6 | +# | ||
| 7 | +one: {} | ||
| 8 | +# column: value | ||
| 9 | +# | ||
| 10 | +two: {} | ||
| 11 | +# column: value |