Commit 76ad2fbcc4ed83764bad587d72f553ecdeed1857

Authored by Karpikau Andrei
1 parent e1522026

check language part

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"
  1 +class CreateJoinTableDomainPageLang < ActiveRecord::Migration[5.2]
  2 + def change
  3 + create_table :kanjai_domains_page_langs, id: false do |t|
  4 + t.integer :domain_id
  5 + t.integer :page_lang_id
  6 + end
  7 + end
  8 +end
  1 +class AddPageLangIdToKanjaiLanguageDomain < ActiveRecord::Migration[5.2]
  2 + def change
  3 + add_column :kanjai_language_domains, :page_lang_id, :integer
  4 + end
  5 +end
  1 +class AddDefaultPageLangIdToKanjaiDomain < ActiveRecord::Migration[5.2]
  2 + def change
  3 + add_column :kanjai_domains, :default_lang_id, :integer
  4 + end
  5 +end
1 module Kanjai 1 module Kanjai
2 - VERSION = "0.0.232" 2 + VERSION = "0.0.233"
3 end 3 end
  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
  1 +require 'test_helper'
  2 +
  3 +module Kanjai
  4 + class DomainLanguageTest < ActiveSupport::TestCase
  5 + # test "the truth" do
  6 + # assert true
  7 + # end
  8 + end
  9 +end