tr8n 3.2.1 → 3.2.2
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/Gemfile.lock +1 -1
- data/README.rdoc +19 -13
- data/app/controllers/tr8n/base_controller.rb +5 -1
- data/app/controllers/tr8n/language_controller.rb +2 -2
- data/app/models/tr8n/base_filter.rb +21 -0
- data/app/models/tr8n/daily_language_metric.rb +46 -22
- data/app/models/tr8n/date_rule.rb +41 -22
- data/app/models/tr8n/gender_list_rule.rb +41 -22
- data/app/models/tr8n/gender_rule.rb +41 -22
- data/app/models/tr8n/glossary.rb +44 -27
- data/app/models/tr8n/glossary_filter.rb +56 -33
- data/app/models/tr8n/ip_location.rb +23 -0
- data/app/models/tr8n/ip_location_filter.rb +57 -34
- data/app/models/tr8n/language.rb +28 -0
- data/app/models/tr8n/language_case.rb +27 -0
- data/app/models/tr8n/language_case_filter.rb +53 -30
- data/app/models/tr8n/language_case_rule.rb +24 -0
- data/app/models/tr8n/language_case_rule_filter.rb +53 -30
- data/app/models/tr8n/language_case_value_map.rb +24 -0
- data/app/models/tr8n/language_case_value_map_filter.rb +68 -45
- data/app/models/tr8n/language_filter.rb +23 -0
- data/app/models/tr8n/language_forum_abuse_report.rb +56 -33
- data/app/models/tr8n/language_forum_abuse_report_filter.rb +57 -34
- data/app/models/tr8n/language_forum_message.rb +69 -46
- data/app/models/tr8n/language_forum_message_filter.rb +61 -38
- data/app/models/tr8n/language_forum_topic.rb +62 -41
- data/app/models/tr8n/language_forum_topic_filter.rb +61 -38
- data/app/models/tr8n/language_metric.rb +28 -1
- data/app/models/tr8n/language_metric_filter.rb +23 -0
- data/app/models/tr8n/language_rule.rb +23 -0
- data/app/models/tr8n/language_rule_filter.rb +72 -49
- data/app/models/tr8n/language_user.rb +86 -61
- data/app/models/tr8n/language_user_filter.rb +57 -34
- data/app/models/tr8n/list_rule.rb +41 -22
- data/app/models/tr8n/monthly_language_metric.rb +46 -22
- data/app/models/tr8n/numeric_rule.rb +41 -22
- data/app/models/tr8n/sync_log.rb +21 -0
- data/app/models/tr8n/sync_log_filter.rb +48 -27
- data/app/models/tr8n/total_language_metric.rb +46 -22
- data/app/models/tr8n/translation.rb +28 -0
- data/app/models/tr8n/translation_domain.rb +76 -56
- data/app/models/tr8n/translation_domain_filter.rb +49 -26
- data/app/models/tr8n/translation_filter.rb +57 -34
- data/app/models/tr8n/translation_key.rb +44 -8
- data/app/models/tr8n/translation_key_comment.rb +60 -37
- data/app/models/tr8n/translation_key_comment_filter.rb +53 -30
- data/app/models/tr8n/translation_key_filter.rb +68 -45
- data/app/models/tr8n/translation_key_lock.rb +81 -59
- data/app/models/tr8n/translation_key_lock_filter.rb +53 -30
- data/app/models/tr8n/translation_key_source.rb +22 -0
- data/app/models/tr8n/translation_key_source_filter.rb +53 -30
- data/app/models/tr8n/translation_source.rb +20 -0
- data/app/models/tr8n/translation_source_filter.rb +53 -30
- data/app/models/tr8n/translation_source_language.rb +58 -39
- data/app/models/tr8n/translation_vote.rb +56 -35
- data/app/models/tr8n/translation_vote_filter.rb +57 -34
- data/app/models/tr8n/translator.rb +38 -0
- data/app/models/tr8n/translator_filter.rb +73 -50
- data/app/models/tr8n/translator_following.rb +58 -38
- data/app/models/tr8n/translator_following_filter.rb +57 -34
- data/app/models/tr8n/translator_log.rb +25 -0
- data/app/models/tr8n/translator_log_filter.rb +72 -49
- data/app/models/tr8n/translator_metric.rb +27 -0
- data/app/models/tr8n/translator_metric_filter.rb +61 -38
- data/app/models/tr8n/translator_report.rb +23 -0
- data/app/models/tr8n/translator_report_filter.rb +53 -30
- data/app/models/tr8n/value_rule.rb +41 -22
- data/bin/{tr8n.rb → tr8n} +0 -0
- data/file +94 -0
- data/lib/tasks/dev.rake +162 -0
- data/lib/tr8n/config.rb +5 -1
- data/lib/tr8n/version.rb +1 -1
- data/local/tr8n_server/config/tr8n/config.yml +2 -1
- data/local/tr8n_server/db/schema.rb +0 -2
- metadata +45 -43
@@ -20,11 +20,38 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
|
+
#
|
24
|
+
#-- Tr8n::TranslationKey Schema Information
|
25
|
+
#
|
26
|
+
# Table name: tr8n_translation_keys
|
27
|
+
#
|
28
|
+
# id INTEGER not null, primary key
|
29
|
+
# type varchar(255)
|
30
|
+
# key varchar(255) not null
|
31
|
+
# label text not null
|
32
|
+
# description text
|
33
|
+
# verified_at datetime
|
34
|
+
# translation_count integer
|
35
|
+
# admin boolean
|
36
|
+
# locale varchar(255)
|
37
|
+
# level integer default = 0
|
38
|
+
# created_at datetime
|
39
|
+
# updated_at datetime
|
40
|
+
# synced_at datetime
|
41
|
+
#
|
42
|
+
# Indexes
|
43
|
+
#
|
44
|
+
# index_tr8n_translation_keys_on_key (key) UNIQUE
|
45
|
+
#
|
46
|
+
#++
|
23
47
|
|
24
48
|
require 'digest/md5'
|
25
49
|
|
26
50
|
class Tr8n::TranslationKey < ActiveRecord::Base
|
27
51
|
set_table_name :tr8n_translation_keys
|
52
|
+
|
53
|
+
attr_accessible :key, :label, :description, :verified_at, :translation_count, :admin, :locale, :level, :synced_at
|
54
|
+
|
28
55
|
after_save :clear_cache
|
29
56
|
after_destroy :clear_cache
|
30
57
|
|
@@ -77,13 +104,9 @@ class Tr8n::TranslationKey < ActiveRecord::Base
|
|
77
104
|
:level => level,
|
78
105
|
:admin => Tr8n::Config.block_options[:admin])
|
79
106
|
|
80
|
-
# for backwards compatibility only
|
81
107
|
mark_as_admin(existing_key, options)
|
82
108
|
update_default_locale(existing_key, options)
|
83
|
-
|
84
|
-
# mark each key as verified - but only if caching is enabled
|
85
|
-
# verification is used to cleanup unused keys
|
86
|
-
existing_key.update_attributes(:verified_at => Time.now) if Tr8n::Config.enable_caching?
|
109
|
+
verify_key(existing_key, options)
|
87
110
|
existing_key
|
88
111
|
end
|
89
112
|
|
@@ -107,6 +130,14 @@ class Tr8n::TranslationKey < ActiveRecord::Base
|
|
107
130
|
tkey.update_attributes(:locale => key_locale)
|
108
131
|
end
|
109
132
|
|
133
|
+
# mark each key as verified - but only if caching is enabled
|
134
|
+
# verification is used to cleanup unused keys
|
135
|
+
def self.verify_key(tkey, options)
|
136
|
+
return unless Tr8n::Config.enable_key_verification?
|
137
|
+
existing_key.update_attributes(:verified_at => Time.now)
|
138
|
+
|
139
|
+
end
|
140
|
+
|
110
141
|
# creates associations between the translation keys and sources
|
111
142
|
# used for the site map and javascript support
|
112
143
|
def self.track_source(translation_key, options = {})
|
@@ -135,9 +166,8 @@ class Tr8n::TranslationKey < ActiveRecord::Base
|
|
135
166
|
options[:caller_key] = generate_key(options[:caller_key])
|
136
167
|
translation_key_source.update_details!(options)
|
137
168
|
end
|
138
|
-
|
139
169
|
end
|
140
|
-
|
170
|
+
|
141
171
|
def self.generate_key(label, desc = "")
|
142
172
|
"#{Digest::MD5.hexdigest("#{label};;;#{desc}")}~"[0..-2]
|
143
173
|
end
|
@@ -553,6 +583,12 @@ class Tr8n::TranslationKey < ActiveRecord::Base
|
|
553
583
|
map
|
554
584
|
end
|
555
585
|
end
|
586
|
+
|
587
|
+
def touch_sources
|
588
|
+
sources.each do |source|
|
589
|
+
source.touch
|
590
|
+
end
|
591
|
+
end
|
556
592
|
|
557
593
|
def touch_sources
|
558
594
|
sources.each do |source|
|
@@ -561,7 +597,7 @@ class Tr8n::TranslationKey < ActiveRecord::Base
|
|
561
597
|
end
|
562
598
|
|
563
599
|
def clear_cache
|
564
|
-
Tr8n::Cache.delete(cache_key)
|
600
|
+
# Tr8n::Cache.delete(cache_key)
|
565
601
|
touch_sources
|
566
602
|
end
|
567
603
|
|
@@ -1,37 +1,60 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
#++
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
#-- Tr8n::TranslationKeyComment Schema Information
|
25
|
+
#
|
26
|
+
# Table name: tr8n_translation_key_comments
|
27
|
+
#
|
28
|
+
# id INTEGER not null, primary key
|
29
|
+
# language_id integer not null
|
30
|
+
# translation_key_id integer not null
|
31
|
+
# translator_id integer not null
|
32
|
+
# message text not null
|
33
|
+
# created_at datetime
|
34
|
+
# updated_at datetime
|
35
|
+
#
|
36
|
+
# Indexes
|
37
|
+
#
|
38
|
+
# tr8n_tkey_msgs_lang_id_tkey_id (language_id, translation_key_id)
|
39
|
+
# tr8n_tkey_msgs_translator_id (translator_id)
|
40
|
+
# tr8n_tkey_msgs_lang_id (language_id)
|
41
|
+
#
|
42
|
+
#++
|
43
|
+
|
44
|
+
class Tr8n::TranslationKeyComment < ActiveRecord::Base
|
45
|
+
set_table_name :tr8n_translation_key_comments
|
46
|
+
|
47
|
+
attr_accessible :language_id, :translation_key_id, :translator_id, :message
|
48
|
+
attr_accessible :language, :translator, :translation_key
|
49
|
+
|
50
|
+
belongs_to :language, :class_name => "Tr8n::Language"
|
51
|
+
belongs_to :translator, :class_name => "Tr8n::Translator"
|
52
|
+
belongs_to :translation_key, :class_name => "Tr8n::TranslationKey"
|
53
|
+
|
54
|
+
alias :key :translation_key
|
55
|
+
|
56
|
+
def toHTML
|
57
|
+
return "" unless message
|
58
|
+
message.gsub("\n", "<br>")
|
59
|
+
end
|
60
|
+
end
|
@@ -1,30 +1,53 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
#++
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
#-- Tr8n::TranslationKeyCommentFilter Schema Information
|
25
|
+
#
|
26
|
+
# Table name: will_filter_filters
|
27
|
+
#
|
28
|
+
# id INTEGER not null, primary key
|
29
|
+
# type varchar(255)
|
30
|
+
# name varchar(255)
|
31
|
+
# data text
|
32
|
+
# user_id integer
|
33
|
+
# model_class_name varchar(255)
|
34
|
+
# created_at datetime
|
35
|
+
# updated_at datetime
|
36
|
+
#
|
37
|
+
# Indexes
|
38
|
+
#
|
39
|
+
# index_will_filter_filters_on_user_id (user_id)
|
40
|
+
#
|
41
|
+
#++
|
42
|
+
|
43
|
+
class Tr8n::TranslationKeyCommentFilter < Tr8n::BaseFilter
|
44
|
+
|
45
|
+
def model_class
|
46
|
+
Tr8n::TranslationKeyComment
|
47
|
+
end
|
48
|
+
|
49
|
+
def inner_joins
|
50
|
+
[:language, :translation_key, :translator]
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -1,45 +1,68 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
#++
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
#-- Tr8n::TranslationKeyFilter Schema Information
|
25
|
+
#
|
26
|
+
# Table name: will_filter_filters
|
27
|
+
#
|
28
|
+
# id INTEGER not null, primary key
|
29
|
+
# type varchar(255)
|
30
|
+
# name varchar(255)
|
31
|
+
# data text
|
32
|
+
# user_id integer
|
33
|
+
# model_class_name varchar(255)
|
34
|
+
# created_at datetime
|
35
|
+
# updated_at datetime
|
36
|
+
#
|
37
|
+
# Indexes
|
38
|
+
#
|
39
|
+
# index_will_filter_filters_on_user_id (user_id)
|
40
|
+
#
|
41
|
+
#++
|
42
|
+
|
43
|
+
class Tr8n::TranslationKeyFilter < Tr8n::BaseFilter
|
44
|
+
|
45
|
+
def model_class
|
46
|
+
Tr8n::TranslationKey
|
47
|
+
end
|
48
|
+
|
49
|
+
def default_filters
|
50
|
+
super + [
|
51
|
+
["Verified Keys", "verified"],
|
52
|
+
["Unverified Keys", "unverified"]
|
53
|
+
]
|
54
|
+
end
|
55
|
+
|
56
|
+
def default_filter_conditions(key)
|
57
|
+
super_conditions = super(key)
|
58
|
+
return super_conditions if super_conditions
|
59
|
+
|
60
|
+
case key
|
61
|
+
when "verified"
|
62
|
+
return [:verified_at, :is_provided]
|
63
|
+
when "unverified"
|
64
|
+
return [:verified_at, :is_not_provided]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -1,59 +1,81 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
#++
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
3
|
+
#
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
# a copy of this software and associated documentation files (the
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
# the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be
|
13
|
+
# included in all copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
#-- Tr8n::TranslationKeyLock Schema Information
|
25
|
+
#
|
26
|
+
# Table name: tr8n_translation_key_locks
|
27
|
+
#
|
28
|
+
# id INTEGER not null, primary key
|
29
|
+
# translation_key_id integer not null
|
30
|
+
# language_id integer not null
|
31
|
+
# translator_id integer
|
32
|
+
# locked boolean
|
33
|
+
# created_at datetime
|
34
|
+
# updated_at datetime
|
35
|
+
#
|
36
|
+
# Indexes
|
37
|
+
#
|
38
|
+
# tr8n_locks_key_id_lang_id (translation_key_id, language_id)
|
39
|
+
#
|
40
|
+
#++
|
41
|
+
|
42
|
+
class Tr8n::TranslationKeyLock < ActiveRecord::Base
|
43
|
+
set_table_name :tr8n_translation_key_locks
|
44
|
+
|
45
|
+
attr_accessible :translation_key_id, :language_id, :translator_id, :locked
|
46
|
+
attr_accessible :language, :translator, :translation_key
|
47
|
+
|
48
|
+
after_save :clear_cache
|
49
|
+
after_destroy :clear_cache
|
50
|
+
|
51
|
+
belongs_to :translation_key, :class_name => "Tr8n::TranslationKey"
|
52
|
+
belongs_to :language, :class_name => "Tr8n::Language"
|
53
|
+
belongs_to :translator, :class_name => "Tr8n::Translator"
|
54
|
+
|
55
|
+
alias :key :translation_key
|
56
|
+
|
57
|
+
def self.find_or_create(translation_key, language)
|
58
|
+
lock = where("translation_key_id = ? and language_id = ?", translation_key.id, language.id).first
|
59
|
+
lock || create(:translation_key => translation_key, :language => language)
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.for(translation_key, language)
|
63
|
+
Tr8n::Cache.fetch("translation_key_lock_#{language.locale}_#{translation_key.key}") do
|
64
|
+
find_or_create(translation_key, language)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def lock!(translator = Tr8n::Config.current_translator)
|
69
|
+
update_attributes(:locked => true, :translator => translator)
|
70
|
+
translator.locked_translation_key!(translation_key, language)
|
71
|
+
end
|
72
|
+
|
73
|
+
def unlock!(translator = Tr8n::Config.current_translator)
|
74
|
+
update_attributes(:locked => false, :translator => translator)
|
75
|
+
translator.unlocked_translation_key!(translation_key, language)
|
76
|
+
end
|
77
|
+
|
78
|
+
def clear_cache
|
79
|
+
Tr8n::Cache.delete("translation_key_lock_#{language.locale}_#{translation_key.key}")
|
80
|
+
end
|
81
|
+
end
|