Showing
19 changed files
with
112 additions
and
70 deletions
| 1 | 1 | PATH |
| 2 | 2 | remote: . |
| 3 | 3 | specs: |
| 4 | - kanjai (0.0.203) | |
| 4 | + kanjai (0.0.232) | |
| 5 | 5 | acts-as-taggable-on (~> 6.5) |
| 6 | 6 | acts_as_list |
| 7 | 7 | acts_as_tree |
| ... | ... | @@ -59,7 +59,7 @@ GEM |
| 59 | 59 | tzinfo (~> 1.1) |
| 60 | 60 | acts-as-taggable-on (6.5.0) |
| 61 | 61 | activerecord (>= 5.0, < 6.1) |
| 62 | - acts_as_list (1.0.1) | |
| 62 | + acts_as_list (1.0.2) | |
| 63 | 63 | activerecord (>= 4.2) |
| 64 | 64 | acts_as_tree (2.9.1) |
| 65 | 65 | activerecord (>= 3.0.0) |
| ... | ... | @@ -970,7 +970,7 @@ GEM |
| 970 | 970 | aws-sigv2 (1.0.1) |
| 971 | 971 | aws-sigv4 (1.2.1) |
| 972 | 972 | aws-eventstream (~> 1, >= 1.0.2) |
| 973 | - bcrypt (3.1.15) | |
| 973 | + bcrypt (3.1.16) | |
| 974 | 974 | builder (3.2.4) |
| 975 | 975 | concurrent-ruby (1.1.6) |
| 976 | 976 | crass (1.0.6) |
| ... | ... | @@ -1064,8 +1064,8 @@ GEM |
| 1064 | 1064 | thread_safe (~> 0.1) |
| 1065 | 1065 | unobtrusive_flash (3.3.1) |
| 1066 | 1066 | railties |
| 1067 | - warden (1.2.8) | |
| 1068 | - rack (>= 2.0.6) | |
| 1067 | + warden (1.2.9) | |
| 1068 | + rack (>= 2.0.9) | |
| 1069 | 1069 | websocket-driver (0.7.3) |
| 1070 | 1070 | websocket-extensions (>= 0.1.0) |
| 1071 | 1071 | websocket-extensions (0.1.5) | ... | ... |
| ... | ... | @@ -50,4 +50,8 @@ |
| 50 | 50 | .filter .btn-group-toggle > .btn{margin-bottom:5px;position:relative;} |
| 51 | 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 | 52 | .filter .btn-group-toggle > .btn a{display:none;} |
| 53 | -.filter .btn-group-toggle > .btn:hover a{display:inline;} | |
| \ No newline at end of file | ||
| 53 | +.filter .btn-group-toggle > .btn:hover a{display:inline;} | |
| 54 | +.checkbox-list{ | |
| 55 | + input{margin-right:3px;} | |
| 56 | + label{margin-right:10px;} | |
| 57 | +} | |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -45,7 +45,7 @@ module Kanjai |
| 45 | 45 | private |
| 46 | 46 | |
| 47 | 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 | 49 | end |
| 50 | 50 | |
| 51 | 51 | end | ... | ... |
| ... | ... | @@ -6,17 +6,17 @@ module Kanjai |
| 6 | 6 | end |
| 7 | 7 | |
| 8 | 8 | def new |
| 9 | - @domain = Domain.find(params[:domain_id]) | |
| 9 | + #@domain = Domain.find(params[:domain_id]) | |
| 10 | 10 | @page_lang = PageLang.new |
| 11 | - @page_lang.domain = @domain | |
| 11 | + #@page_lang.domain = @domain | |
| 12 | 12 | end |
| 13 | 13 | |
| 14 | 14 | def create |
| 15 | 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 | 21 | if @page_lang.save |
| 22 | 22 | redirect_to admin_page_langs_url | ... | ... |
| ... | ... | @@ -48,15 +48,19 @@ module Kanjai |
| 48 | 48 | |
| 49 | 49 | if domain.nil? |
| 50 | 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 | 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 | 59 | else |
| 56 | 60 | render plain: "Domain #{domain_title} Not Exist" and return |
| 57 | 61 | end |
| 58 | 62 | else |
| 59 | - lang = domain.page_langs.where(default_use: true).first.try(:code) | |
| 63 | + lang = domain.default_lang.try(:code) | |
| 60 | 64 | end |
| 61 | 65 | |
| 62 | 66 | if params && params[:locale].present? && request.original_fullpath.split('/')[1].length == 2 | ... | ... |
| ... | ... | @@ -2,8 +2,10 @@ module Kanjai |
| 2 | 2 | class Domain < ApplicationRecord |
| 3 | 3 | validates :title, presence: true |
| 4 | 4 | |
| 5 | + belongs_to :default_lang, class_name: 'Kanjai::PageLang', optional: true | |
| 6 | + | |
| 5 | 7 | has_many :pages, dependent: :destroy |
| 6 | - has_many :page_langs, dependent: :destroy | |
| 8 | + has_and_belongs_to_many :page_langs | |
| 7 | 9 | has_many :language_domains, dependent: :destroy |
| 8 | 10 | accepts_nested_attributes_for :language_domains, reject_if: :all_blank, allow_destroy: true |
| 9 | 11 | end | ... | ... |
| ... | ... | @@ -5,6 +5,21 @@ |
| 5 | 5 | <%= f.text_field :title, class: "form-control #{@domain.errors.include?(:title) ? 'parsley-error' : ''} " %> |
| 6 | 6 | <%= error_messages(@domain, :title) %> |
| 7 | 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 | 24 | <div id="language_domains"> |
| 10 | 25 | <%=f.fields_for :language_domains do |f2| %> | ... | ... |
| 1 | 1 | <div class="nested-fields mt-20"> |
| 2 | 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 | 6 | </div> |
| 6 | 7 | </div> |
| \ No newline at end of file | ... | ... |
| ... | ... | @@ -14,23 +14,6 @@ |
| 14 | 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 | 18 | <div class="card-footer mt-20"> |
| 36 | 19 | <div class="clearfix"> | ... | ... |
| ... | ... | @@ -4,42 +4,35 @@ |
| 4 | 4 | <!-- START card--> |
| 5 | 5 | |
| 6 | 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 | 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 | 23 | <table class="table"> |
| 29 | 24 | <thead> |
| 30 | 25 | <tr> |
| 31 | 26 | <th><%= Kanjai::PageLang.human_attribute_name(:code) %></th> |
| 32 | 27 | <th><%= Kanjai::PageLang.human_attribute_name(:title) %></th> |
| 33 | - <th><%= Kanjai::PageLang.human_attribute_name(:language_domain) %></th> | |
| 34 | 28 | <th width="50px"></th> |
| 35 | 29 | </tr> |
| 36 | 30 | </thead> |
| 37 | 31 | <tbody> |
| 38 | - <% domain.page_langs.order(:code).each do |item| %> | |
| 32 | + <% @collection.each do |item| %> | |
| 39 | 33 | <tr id='<%= dom_id(item) %>'> |
| 40 | 34 | <td><%= item.code %></td> |
| 41 | 35 | <td><%= item.title %></td> |
| 42 | - <td><%= !item.default_use ? item.language_domain.try(:title) : '' %></td> | |
| 43 | 36 | <td> |
| 44 | 37 | <div class="dropdown"> |
| 45 | 38 | <button class="btn btn-secondary dropdown-toggle dropdown-toggle-nocaret" type="button" data-toggle="dropdown" aria-expanded="false"> |
| ... | ... | @@ -56,15 +49,11 @@ |
| 56 | 49 | |
| 57 | 50 | </tbody> |
| 58 | 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 | 57 | </div> |
| 69 | 58 | |
| 70 | 59 | ... | ... |
| ... | ... | @@ -102,6 +102,9 @@ en: |
| 102 | 102 | meta_title: Meta Title |
| 103 | 103 | meta_description: Meta Description |
| 104 | 104 | meta_keywords: Meta Keywords |
| 105 | + kanjai/domain: | |
| 106 | + page_lang_ids: "Languages" | |
| 107 | + default_lang_id: "Default Language" | |
| 105 | 108 | |
| 106 | 109 | |
| 107 | 110 | actions: |
| ... | ... | @@ -146,6 +149,7 @@ en: |
| 146 | 149 | empty_text: "Empty language list" |
| 147 | 150 | create: "Add new language" |
| 148 | 151 | edit: "Edit language" |
| 152 | + page_title: "Languages" | |
| 149 | 153 | pages: |
| 150 | 154 | page_title: "Pages" |
| 151 | 155 | add_new: "Add page" |
| ... | ... | @@ -167,7 +171,7 @@ en: |
| 167 | 171 | add_new: "Add domain" |
| 168 | 172 | empty_text: "Empty domain list" |
| 169 | 173 | create: "Add new domain" |
| 170 | - edit: "Edit domain" | |
| 174 | + edit: "Edit domain" | |
| 171 | 175 | template_status: |
| 172 | 176 | not_file: "" |
| 173 | 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 | ... | ... |