decidim-term_customizer 0.16.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.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE-AGPLv3.txt +661 -0
  3. data/README.md +180 -0
  4. data/Rakefile +48 -0
  5. data/app/assets/config/translation_sets_admin_manifest.js +2 -0
  6. data/app/assets/javascripts/decidim/term_customizer/admin/constraint_fields.js.es6 +45 -0
  7. data/app/assets/javascripts/decidim/term_customizer/admin/multifield/component.js.es6 +103 -0
  8. data/app/assets/javascripts/decidim/term_customizer/admin/multifield.js.es6 +5 -0
  9. data/app/assets/javascripts/decidim/term_customizer/admin/translation_sets_admin.js.es6 +19 -0
  10. data/app/assets/javascripts/decidim/term_customizer/admin/translations_admin.js.es6 +72 -0
  11. data/app/commands/decidim/term_customizer/admin/create_translation.rb +53 -0
  12. data/app/commands/decidim/term_customizer/admin/create_translation_set.rb +68 -0
  13. data/app/commands/decidim/term_customizer/admin/import_translation_keys.rb +59 -0
  14. data/app/commands/decidim/term_customizer/admin/update_translation.rb +65 -0
  15. data/app/commands/decidim/term_customizer/admin/update_translation_set.rb +61 -0
  16. data/app/controllers/decidim/term_customizer/admin/add_translations_controller.rb +72 -0
  17. data/app/controllers/decidim/term_customizer/admin/application_controller.rb +15 -0
  18. data/app/controllers/decidim/term_customizer/admin/translation_sets_controller.rb +107 -0
  19. data/app/controllers/decidim/term_customizer/admin/translations_controller.rb +102 -0
  20. data/app/forms/decidim/term_customizer/admin/translation_form.rb +39 -0
  21. data/app/forms/decidim/term_customizer/admin/translation_key_import_form.rb +15 -0
  22. data/app/forms/decidim/term_customizer/admin/translation_set_constraint_form.rb +58 -0
  23. data/app/forms/decidim/term_customizer/admin/translation_set_form.rb +18 -0
  24. data/app/forms/decidim/term_customizer/admin/translation_set_subject_component_form.rb +12 -0
  25. data/app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb +61 -0
  26. data/app/helpers/decidim/term_customizer/admin/application_helper.rb +13 -0
  27. data/app/models/decidim/term_customizer/application_record.rb +10 -0
  28. data/app/models/decidim/term_customizer/constraint.rb +36 -0
  29. data/app/models/decidim/term_customizer/translation.rb +23 -0
  30. data/app/models/decidim/term_customizer/translation_set.rb +19 -0
  31. data/app/permissions/decidim/term_customizer/admin/permissions.rb +66 -0
  32. data/app/queries/decidim/term_customizer/organization_translation_sets.rb +37 -0
  33. data/app/queries/decidim/term_customizer/set_translations.rb +21 -0
  34. data/app/views/decidim/term_customizer/admin/add_translations/index.html.erb +59 -0
  35. data/app/views/decidim/term_customizer/admin/translation_sets/_constraint_fields.html.erb +58 -0
  36. data/app/views/decidim/term_customizer/admin/translation_sets/_form.html.erb +29 -0
  37. data/app/views/decidim/term_customizer/admin/translation_sets/edit.html.erb +9 -0
  38. data/app/views/decidim/term_customizer/admin/translation_sets/index.html.erb +44 -0
  39. data/app/views/decidim/term_customizer/admin/translation_sets/new.html.erb +9 -0
  40. data/app/views/decidim/term_customizer/admin/translations/_form.html.erb +15 -0
  41. data/app/views/decidim/term_customizer/admin/translations/edit.html.erb +7 -0
  42. data/app/views/decidim/term_customizer/admin/translations/index.html.erb +52 -0
  43. data/app/views/decidim/term_customizer/admin/translations/new.html.erb +7 -0
  44. data/config/locales/en.yml +65 -0
  45. data/config/locales/fi.yml +65 -0
  46. data/config/locales/sv.yml +65 -0
  47. data/lib/decidim/term_customizer/admin.rb +10 -0
  48. data/lib/decidim/term_customizer/admin_engine.rb +46 -0
  49. data/lib/decidim/term_customizer/engine.rb +35 -0
  50. data/lib/decidim/term_customizer/i18n_backend.rb +82 -0
  51. data/lib/decidim/term_customizer/resolver.rb +108 -0
  52. data/lib/decidim/term_customizer/test/factories.rb +43 -0
  53. data/lib/decidim/term_customizer/translation_directory.rb +50 -0
  54. data/lib/decidim/term_customizer/translation_store.rb +67 -0
  55. data/lib/decidim/term_customizer/version.rb +8 -0
  56. data/lib/decidim/term_customizer.rb +21 -0
  57. metadata +170 -0
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module TermCustomizer
5
+ class TranslationStore
6
+ def initialize(hash)
7
+ @values = flat_hash(hash || {})
8
+ end
9
+
10
+ def by_key(search)
11
+ @values.select do |key|
12
+ includes_string?(key, search, case_sensitive: true)
13
+ end
14
+ end
15
+
16
+ def by_term(search, case_sensitive: false)
17
+ @values.select do |_key, term|
18
+ includes_string?(term, search, case_sensitive: case_sensitive)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def includes_string?(source, search, case_sensitive: false)
25
+ return source.include?(search) if case_sensitive
26
+
27
+ source.downcase.include?(search.downcase)
28
+ end
29
+
30
+ def flat_hash(hash)
31
+ hash.each_with_object({}) do |(k, v), h|
32
+ if v.is_a? Hash
33
+ flat_hash(v).map do |h_k, h_v|
34
+ append_to_hash(h, "#{k}.#{h_k}", h_v)
35
+ end
36
+ else
37
+ append_to_hash(h, k.to_s, v)
38
+ end
39
+ end
40
+ end
41
+
42
+ def append_to_hash(hash, key, value)
43
+ # Specific translations have a proc value but in our context these
44
+ # translations are not interesting. An example of such translation is
45
+ # `i18n.plural.rule` which takes in an integer when called and returns
46
+ # either `:one` or `:other` depending on the integer's value.
47
+ return if value.is_a?(Proc)
48
+
49
+ # Some translation values are symbols which are also not interesting in
50
+ # our context. Example of such translation is `i18n.plural.rule` which
51
+ # has a value of `[:one, :other]`.
52
+ return if value.is_a?(Symbol)
53
+
54
+ # Exclude the faker translations.
55
+ return if key =~ /^faker\./
56
+
57
+ if value.is_a?(Array)
58
+ value.each_with_index do |v, i|
59
+ append_to_hash(hash, "#{key}.#{i}", v)
60
+ end
61
+ else
62
+ hash[key] = value.to_s
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module TermCustomizer
5
+ VERSION = "0.16.0"
6
+ DECIDIM_VERSION = "~> 0.16.0"
7
+ end
8
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "term_customizer/version"
4
+ require_relative "term_customizer/engine"
5
+ require_relative "term_customizer/admin"
6
+ require_relative "term_customizer/admin_engine"
7
+
8
+ module Decidim
9
+ module TermCustomizer
10
+ autoload :I18nBackend, "decidim/term_customizer/i18n_backend"
11
+ autoload :Resolver, "decidim/term_customizer/resolver"
12
+ autoload :TranslationDirectory, "decidim/term_customizer/translation_directory"
13
+ autoload :TranslationStore, "decidim/term_customizer/translation_store"
14
+
15
+ EMPTY_HASH = {}.freeze
16
+
17
+ class << self
18
+ attr_accessor :resolver
19
+ end
20
+ end
21
+ end
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: decidim-term_customizer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.16.0
5
+ platform: ruby
6
+ authors:
7
+ - Antti Hukkanen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: decidim-admin
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.16.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.16.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: decidim-core
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.16.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.16.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: decidim-dev
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.16.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.16.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: decidim-participatory_processes
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.16.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.16.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: decidim-proposals
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.16.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.16.0
83
+ description: Adds a UI to customize the terms and limit the customizations to specific
84
+ places.
85
+ email:
86
+ - antti.hukkanen@mainiotech.fi
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - LICENSE-AGPLv3.txt
92
+ - README.md
93
+ - Rakefile
94
+ - app/assets/config/translation_sets_admin_manifest.js
95
+ - app/assets/javascripts/decidim/term_customizer/admin/constraint_fields.js.es6
96
+ - app/assets/javascripts/decidim/term_customizer/admin/multifield.js.es6
97
+ - app/assets/javascripts/decidim/term_customizer/admin/multifield/component.js.es6
98
+ - app/assets/javascripts/decidim/term_customizer/admin/translation_sets_admin.js.es6
99
+ - app/assets/javascripts/decidim/term_customizer/admin/translations_admin.js.es6
100
+ - app/commands/decidim/term_customizer/admin/create_translation.rb
101
+ - app/commands/decidim/term_customizer/admin/create_translation_set.rb
102
+ - app/commands/decidim/term_customizer/admin/import_translation_keys.rb
103
+ - app/commands/decidim/term_customizer/admin/update_translation.rb
104
+ - app/commands/decidim/term_customizer/admin/update_translation_set.rb
105
+ - app/controllers/decidim/term_customizer/admin/add_translations_controller.rb
106
+ - app/controllers/decidim/term_customizer/admin/application_controller.rb
107
+ - app/controllers/decidim/term_customizer/admin/translation_sets_controller.rb
108
+ - app/controllers/decidim/term_customizer/admin/translations_controller.rb
109
+ - app/forms/decidim/term_customizer/admin/translation_form.rb
110
+ - app/forms/decidim/term_customizer/admin/translation_key_import_form.rb
111
+ - app/forms/decidim/term_customizer/admin/translation_set_constraint_form.rb
112
+ - app/forms/decidim/term_customizer/admin/translation_set_form.rb
113
+ - app/forms/decidim/term_customizer/admin/translation_set_subject_component_form.rb
114
+ - app/forms/decidim/term_customizer/admin/translation_set_subject_form.rb
115
+ - app/helpers/decidim/term_customizer/admin/application_helper.rb
116
+ - app/models/decidim/term_customizer/application_record.rb
117
+ - app/models/decidim/term_customizer/constraint.rb
118
+ - app/models/decidim/term_customizer/translation.rb
119
+ - app/models/decidim/term_customizer/translation_set.rb
120
+ - app/permissions/decidim/term_customizer/admin/permissions.rb
121
+ - app/queries/decidim/term_customizer/organization_translation_sets.rb
122
+ - app/queries/decidim/term_customizer/set_translations.rb
123
+ - app/views/decidim/term_customizer/admin/add_translations/index.html.erb
124
+ - app/views/decidim/term_customizer/admin/translation_sets/_constraint_fields.html.erb
125
+ - app/views/decidim/term_customizer/admin/translation_sets/_form.html.erb
126
+ - app/views/decidim/term_customizer/admin/translation_sets/edit.html.erb
127
+ - app/views/decidim/term_customizer/admin/translation_sets/index.html.erb
128
+ - app/views/decidim/term_customizer/admin/translation_sets/new.html.erb
129
+ - app/views/decidim/term_customizer/admin/translations/_form.html.erb
130
+ - app/views/decidim/term_customizer/admin/translations/edit.html.erb
131
+ - app/views/decidim/term_customizer/admin/translations/index.html.erb
132
+ - app/views/decidim/term_customizer/admin/translations/new.html.erb
133
+ - config/locales/en.yml
134
+ - config/locales/fi.yml
135
+ - config/locales/sv.yml
136
+ - lib/decidim/term_customizer.rb
137
+ - lib/decidim/term_customizer/admin.rb
138
+ - lib/decidim/term_customizer/admin_engine.rb
139
+ - lib/decidim/term_customizer/engine.rb
140
+ - lib/decidim/term_customizer/i18n_backend.rb
141
+ - lib/decidim/term_customizer/resolver.rb
142
+ - lib/decidim/term_customizer/test/factories.rb
143
+ - lib/decidim/term_customizer/translation_directory.rb
144
+ - lib/decidim/term_customizer/translation_store.rb
145
+ - lib/decidim/term_customizer/version.rb
146
+ homepage: https://github.com/mainio/decidim-module-term_customizer
147
+ licenses:
148
+ - AGPL-3.0
149
+ metadata: {}
150
+ post_install_message:
151
+ rdoc_options: []
152
+ require_paths:
153
+ - lib
154
+ required_ruby_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ requirements: []
165
+ rubyforge_project:
166
+ rubygems_version: 2.7.6
167
+ signing_key:
168
+ specification_version: 4
169
+ summary: Provides possibility to customize Decidim's localized terms.
170
+ test_files: []