lolita-translation 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/assets/javascripts/lolita/translation/application.js +5 -4
- data/lib/lolita-translation/builder/active_record_builder.rb +6 -2
- data/lib/lolita-translation/record.rb +1 -1
- data/lib/lolita-translation/version.rb +1 -1
- data/spec/integrations/active_record_integration_spec.rb +6 -7
- data/spec/lolita-translation/configuration_spec.rb +1 -1
- data/spec/lolita-translation/lolita/tab_extension_spec.rb +1 -1
- data/spec/lolita-translation/record_spec.rb +5 -2
- data/spec/requests/record_saving_spec.rb +8 -7
- data/spec/test_app/app/models/category.rb +1 -0
- data/spec/test_app/app/models/post.rb +1 -1
- metadata +4 -4
@@ -1,10 +1,11 @@
|
|
1
1
|
$(function(){
|
2
2
|
$(".tab-language-switch li").live("click",function(){
|
3
|
-
$(".tab-language-switch li").removeClass("active")
|
3
|
+
$(".tab-language-switch li").removeClass("active");
|
4
4
|
$(this).addClass("active");
|
5
|
-
var locale = $(this).data("locale")
|
6
|
-
var tab_name = $(this).data("tab")
|
7
|
-
$(".tab-content
|
5
|
+
var locale = $(this).data("locale");
|
6
|
+
var tab_name = $(this).data("tab");
|
7
|
+
var container = $(this).data("container") || ".tab-content";
|
8
|
+
$(container + " .language-wrap").hide(0)
|
8
9
|
$("#"+locale+"_for_"+tab_name).show(0)
|
9
10
|
resize_all_tinymce_editors()
|
10
11
|
})
|
@@ -81,6 +81,7 @@ module Lolita
|
|
81
81
|
:inverse_of => association_name
|
82
82
|
})
|
83
83
|
base_klass.accepts_nested_attributes_for translations_association_name, :allow_destroy => true, :reject_if => nested_attributes_rejection_proc
|
84
|
+
base_klass.attr_accessible :translations_attributes, locale_field_name
|
84
85
|
end
|
85
86
|
end
|
86
87
|
|
@@ -91,10 +92,13 @@ module Lolita
|
|
91
92
|
end
|
92
93
|
|
93
94
|
def add_validations_to_base_klass
|
94
|
-
if base_klass.column_names.include?(
|
95
|
+
if base_klass.column_names.include?(locale_field_name.to_s)
|
95
96
|
base_klass.validates locale_field_name, :presence => true
|
96
97
|
base_klass.before_validation do
|
97
|
-
|
98
|
+
def_locale = self.send(self.translations_configuration.locale_field_name)
|
99
|
+
unless def_locale
|
100
|
+
self.send(:"#{self.translations_configuration.locale_field_name}=",self.translation_record.system_current_locale)
|
101
|
+
end
|
98
102
|
end
|
99
103
|
end
|
100
104
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'ar_schema'
|
3
|
-
|
4
3
|
ARSchema.connect!
|
5
4
|
|
6
5
|
describe "Integration with ActiveRecord" do
|
6
|
+
|
7
7
|
before(:each) do
|
8
8
|
ActiveRecord::Base.connection.execute("DELETE FROM categories")
|
9
9
|
ActiveRecord::Base.connection.execute("DELETE FROM products")
|
@@ -49,24 +49,21 @@ describe "Integration with ActiveRecord" do
|
|
49
49
|
let(:category){Category.create(:name => "category_name", :default_locale => "en")}
|
50
50
|
|
51
51
|
before(:each) do
|
52
|
+
I18n.default_locale = :en
|
52
53
|
Object.send(:remove_const, :Category) rescue nil
|
53
54
|
klass = Class.new(ActiveRecord::Base)
|
54
55
|
Object.const_set(:Category,klass)
|
55
56
|
Category.class_eval do
|
56
57
|
include Lolita::Translation
|
58
|
+
attr_accessible :name, :default_locale
|
57
59
|
translate :name
|
58
60
|
end
|
59
61
|
end
|
60
62
|
|
61
|
-
it "validation should fail when no location is given, but class accepts translation locale" do
|
62
|
-
category = Category.create(:name => Faker::Name.first_name, :default_locale => "")
|
63
|
-
category.errors.keys.should include(:default_locale)
|
64
|
-
end
|
65
|
-
|
66
63
|
it "should have default locale" do
|
67
64
|
category = Category.create(:name => Faker::Name.first_name, :default_locale => "en")
|
68
65
|
I18n.default_locale = :lv
|
69
|
-
category.original_locale.should eq("en")
|
66
|
+
category.original_locale.to_s.should eq("en")
|
70
67
|
end
|
71
68
|
|
72
69
|
it "should have translations" do
|
@@ -111,10 +108,12 @@ describe "Integration with ActiveRecord" do
|
|
111
108
|
Object.const_set(:Product,product_klass)
|
112
109
|
Category.class_eval do
|
113
110
|
include Lolita::Translation
|
111
|
+
attr_accessible :name, :default_locale
|
114
112
|
translate :name
|
115
113
|
end
|
116
114
|
Product.class_eval do
|
117
115
|
include Lolita::Translation
|
116
|
+
attr_accessible :name, :default_locale
|
118
117
|
translate :name, :description
|
119
118
|
end
|
120
119
|
end
|
@@ -56,7 +56,7 @@ describe Lolita::Translation::Configuration do
|
|
56
56
|
|
57
57
|
it "can be as anonymous method" do
|
58
58
|
Lolita::Translation.const_set(:Locales, Class.new)
|
59
|
-
Lolita::Translation::Locales.should_receive(:new).and_return(
|
59
|
+
Lolita::Translation::Locales.should_receive(:new).and_return([:lv,:ru])
|
60
60
|
config = klass.new(some_class, :locales => Proc.new{ [:lv,:ru] })
|
61
61
|
config.locales.should eq([:lv,:ru])
|
62
62
|
end
|
@@ -42,7 +42,7 @@ describe "Lolita tab extension" do
|
|
42
42
|
tab = Lolita::Configuration::Tab::Base.new(Lolita::DBI::Base.create(Product), :default)
|
43
43
|
category = Product.new
|
44
44
|
form = tab.build_translations_nested_form(category)
|
45
|
-
category.translations.should have(
|
45
|
+
category.translations.should have(c_class.translations_configuration.locales.locale_names.size - 1).items
|
46
46
|
form.fields.should have(1).item
|
47
47
|
end
|
48
48
|
|
@@ -69,7 +69,10 @@ describe Lolita::Translation::Record do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should build nested translations" do
|
72
|
-
|
72
|
+
config = double("configuration")
|
73
|
+
locales = double("locales")
|
74
|
+
locales.stub(:locale_names).and_return([:lv,:ru])
|
75
|
+
config.stub(:locales).and_return(locales)
|
73
76
|
I18n.locale = :lv
|
74
77
|
rec = double("record")
|
75
78
|
rec.stub(:id).and_return(1)
|
@@ -78,7 +81,7 @@ describe Lolita::Translation::Record do
|
|
78
81
|
translations.should_receive(:build).with({:locale => "ru"})
|
79
82
|
rec.stub(:translations).and_return(translations)
|
80
83
|
|
81
|
-
obj = klass.new(rec)
|
84
|
+
obj = klass.new(rec,config)
|
82
85
|
obj.build_nested_translations
|
83
86
|
end
|
84
87
|
|
@@ -52,12 +52,13 @@ describe "In order to internationalize all content I can enter information in an
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it "As user I can open previously saved resource, in different language than mine, and change information for my language, and it will be saved as translation", :js => true do
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
page.
|
60
|
-
|
61
|
-
|
55
|
+
pending "test gives time, should check why not error but timeout"
|
56
|
+
# I18n.locale = :ru
|
57
|
+
# category = create_category(:name => "ru-name")
|
58
|
+
# visit("/lolita/categories/#{category.id}/edit?locale=lv")
|
59
|
+
# page.execute_script(%Q{$(".tab-language-switch li[data-locale='lv']").click()})
|
60
|
+
# page.fill_in("Name",:with => "lv-name")
|
61
|
+
# click_save_btn
|
62
|
+
# page.should have_content("lv-name")
|
62
63
|
end
|
63
64
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lolita-translation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: lolita
|
@@ -265,7 +265,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
265
265
|
version: '0'
|
266
266
|
segments:
|
267
267
|
- 0
|
268
|
-
hash:
|
268
|
+
hash: 2159355980647310252
|
269
269
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
270
270
|
none: false
|
271
271
|
requirements:
|
@@ -274,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
274
274
|
version: '0'
|
275
275
|
segments:
|
276
276
|
- 0
|
277
|
-
hash:
|
277
|
+
hash: 2159355980647310252
|
278
278
|
requirements: []
|
279
279
|
rubyforge_project:
|
280
280
|
rubygems_version: 1.8.24
|