diff --git a/.gitignore b/.gitignore
index 40a9058..cc9010a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,5 @@ spec/decidim_dummy_app
# default development application
development_app
+tailwind.config.js
+development_app_27
diff --git a/.rubocop.yml b/.rubocop.yml
index 870c0b9..13bc55c 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,3 +1,94 @@
-inherit_from:
- - .rubocop_ruby.yml
- - .rubocop_rails.yml
+inherit_gem:
+ decidim-dev: rubocop-decidim.yml
+
+inherit_mode:
+ merge:
+ - Exclude
+
+AllCops:
+ Exclude:
+ - "decidim-initiatives/lib/gem_overrides/origami/date.rb"
+
+Naming/FileName:
+ Exclude:
+ - "decidim-dev/lib/decidim-dev.rb"
+
+Metrics/CyclomaticComplexity:
+ Exclude:
+ - "decidim-admin/app/queries/decidim/admin/newsletter_recipients.rb"
+
+Metrics/ParameterLists:
+ Exclude:
+ - "decidim-core/lib/decidim/filter_form_builder.rb"
+
+Metrics/PerceivedComplexity:
+ Exclude:
+ - "decidim-admin/app/queries/decidim/admin/newsletter_recipients.rb"
+
+RSpec/DescribeClass:
+ Exclude:
+ - decidim-core/spec/lib/global_engines_spec.rb
+
+RSpec/EmptyExampleGroup:
+ Exclude:
+ - decidim-core/spec/lib/participatory_space_manifest_spec.rb
+
+RSpec/MultipleMemoizedHelpers:
+ Exclude:
+ - decidim-assemblies/spec/forms/assembly_form_spec.rb
+
+Rails/Output:
+ Exclude:
+ - lib/decidim/git_backport_manager.rb
+ - lib/decidim/github_manager/poster.rb
+ - decidim-core/lib/decidim/core.rb
+ - decidim-core/lib/decidim/component_manifest.rb
+ - decidim-core/lib/decidim/participatory_space_manifest.rb
+
+Rails/Exit:
+ Exclude:
+ - lib/decidim/git_backport_manager.rb
+
+RSpec/NoExpectationExample:
+ Exclude:
+ - decidim-admin/spec/system/participatory_space_private_user_spec.rb
+ - decidim-comments/spec/services/decidim/comments/comment_creation_spec.rb
+ - decidim-conferences/spec/cells/decidim/conferences/conference_speaker_cell_spec.rb
+ - decidim-core/spec/cells/decidim/date_range_cell_spec.rb
+ - decidim-core/spec/commands/decidim/unsubscribe_settings_spec.rb
+ - decidim-core/spec/controllers/registrations_controller_spec.rb
+ - decidim-core/spec/lib/importers/import_manifest_spec.rb
+ - decidim-core/spec/lib/map/geocoding_spec.rb
+ - decidim-core/spec/lib/participatory_space_manifest_spec.rb
+ - decidim-core/spec/services/decidim/events_manager_spec.rb
+ - decidim-core/spec/services/decidim/settings_change_spec.rb
+ - decidim-core/spec/services/decidim/zip_stream/zip_stream_writer_spec.rb
+ - decidim-core/spec/tasks/decidim_tasks_right_to_be_forgotten_spec.rb
+ - decidim-elections/spec/lib/tasks/decidim_election_generate_identification_keys_spec.rb
+ - decidim-elections/spec/lib/tasks/decidim_election_scheduled_tasks_spec.rb
+ - decidim-elections/spec/shared/vote_examples.rb
+ - decidim-elections/spec/system/key_ceremony_spec.rb
+ - decidim-elections/spec/system/vote_online_inside_a_voting_spec.rb
+ - decidim-initiatives/spec/system/admin/update_initiative_spec.rb
+ - decidim-initiatives/spec/system/initiative_signing_spec.rb
+ - decidim-meetings/spec/commands/admin/export_meeting_registrations_spec.rb
+ - decidim-meetings/spec/system/explore_meeting_directory_spec.rb
+ - decidim-meetings/spec/system/explore_meetings_spec.rb
+ - decidim-proposals/spec/lib/decidim/proposals/markdown_to_proposals_spec.rb
+ - decidim-proposals/spec/shared/import_proposals_examples.rb
+ - decidim-proposals/spec/shared/proposals_wizards_examples.rb
+ - decidim-proposals/spec/system/admin/admin_manages_participatory_texts_spec.rb
+ - decidim-proposals/spec/system/participatory_texts_spec.rb
+ - decidim-participatory_processes/spec/system/participatory_processes_spec.rb
+
+# fix these rules later
+Capybara/SpecificFinders:
+ Enabled: false
+
+RSpec/IndexedLet:
+ Enabled: false
+
+Rails/HelperInstanceVariable:
+ Enabled: false
+
+# EOF fix these rules later
diff --git a/.rubocop_rails.yml b/.rubocop_rails.yml
deleted file mode 100644
index 97b1ecb..0000000
--- a/.rubocop_rails.yml
+++ /dev/null
@@ -1,100 +0,0 @@
-require: rubocop-rails
-
-Rails:
- Enabled: true
-
-Rails/ActionFilter:
- Include:
- - decidim-*/app/controllers/**/*.rb
-
-Rails/ContentTag:
- Enabled: false
-
-Rails/CreateTableWithTimestamps:
- Enabled: false
-
-Rails/EnumUniqueness:
- Include:
- - decidim-*/app/models/**/*.rb
-
-Rails/Exit:
- Include:
- - decidim-*/app/**/*.rb
- - decidim-*/config/**/*.rb
- - decidim-*/lib/**/*.rb
- Exclude:
- - decidim-*/lib/**/*.rake
-
-Rails/FindBy:
- Include:
- - "**/*.rb"
-
-Rails/FindEach:
- Include:
- - decidim-*/app/models/**/*.rb
-
-Rails/HasAndBelongsToMany:
- Include:
- - decidim-*/app/models/**/*.rb
-
-Rails/HasManyOrHasOneDependent:
- Include:
- - decidim-*/app/models/**/*.rb
-
-Rails/InverseOf:
- Enabled: false
-
-Rails/LexicallyScopedActionFilter:
- Include:
- - decidim-*/app/controllers/**/*.rb
-
-Rails/NotNullColumn:
- Enabled: false
-
-Rails/Output:
- Include:
- - decidim-*/app/**/*.rb
- - decidim-*/config/**/*.rb
- - decidim-*/db/**/*.rb
- - decidim-*/lib/**/*.rb
- Exclude:
- - decidim-core/db/seeds.rb
- - decidim-core/lib/decidim/core.rb
- - decidim-core/lib/decidim/component_manifest.rb
- - decidim-core/lib/decidim/participatory_space_manifest.rb
- - decidim-system/db/seeds.rb
- - decidim-templates/db/seeds.rb
-
-Rails/HelperInstanceVariable:
- Exclude:
- - app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb
-
-Rails/OutputSafety:
- Enabled: false
-
-Rails/Pluck:
- Enabled: false
-
-Rails/RakeEnvironment:
- Enabled: false
-
-Rails/ReadWriteAttribute:
- Include:
- - decidim-*/app/models/**/*.rb
-
-Rails/ReversibleMigration:
- Enabled: false
-
-Rails/ScopeArgs:
- Include:
- - decidim-*/app/models/**/*.rb
-
-Rails/SkipsModelValidations:
- Enabled: true
-
-Rails/Validation:
- Include:
- - decidim-*/app/models/**/*.rb
-
-Metrics/CyclomaticComplexity:
- Enabled: false
diff --git a/.rubocop_ruby.yml b/.rubocop_ruby.yml
deleted file mode 100644
index 1f546cc..0000000
--- a/.rubocop_ruby.yml
+++ /dev/null
@@ -1,1767 +0,0 @@
-require:
- - rubocop-rspec
- - rubocop-faker
-
-# Common configuration.
-AllCops:
- Include:
- - .simplecov
- - "**/*.rb"
- - "**/*.rake"
- - "**/*.gemspec"
- - "**/*.ru"
- - "**/Gemfile"
- - "**/Rakefile"
- Exclude:
- - "**/node_modules/**/*"
- - "**/vendor/**/*"
- - "development_app/**/*"
- - "decidim_app-design/node_modules/**/*"
- - "spec/decidim_dummy_app/**/*"
- - "node_modules/**/*"
- - "decidim-initiatives/lib/gem_overrides/origami/date.rb"
- # Default formatter will be used if no -f/--format option is given.
- DefaultFormatter: progress
- # Cop names are not displayed in offense messages by default. Change behavior
- # by overriding DisplayCopNames, or by giving the -D/--display-cop-names
- # option.
- DisplayCopNames: true
- # Style guide URLs are not displayed in offense messages by default. Change
- # behavior by overriding DisplayStyleGuide, or by giving the
- # -S/--display-style-guide option.
- DisplayStyleGuide: false
- # Extra details are not displayed in offense messages by default. Change
- # behavior by overriding ExtraDetails, or by giving the
- # -E/--extra-details option.
- ExtraDetails: false
- NewCops: enable
- # Additional cops that do not reference a style guide rule may be enabled by
- # default. Change behavior by overriding StyleGuideCopsOnly, or by giving
- # the --only-guide-cops option.
- StyleGuideCopsOnly: false
- # All cops except the ones in disabled.yml are enabled by default. Change
- # this behavior by overriding DisabledByDefault. When DisabledByDefault is
- # true, all cops in the default configuration are disabled, and and only cops
- # in user configuration are enabled. This makes cops opt-in instead of
- # opt-out. Note that when DisabledByDefault is true, cops in user
- # configuration will be enabled even if they don't set the Enabled parameter.
- DisabledByDefault: false
- # Enables the result cache if true. Can be overridden by the --cache command
- # line option.
- UseCache: true
- # Threshold for how many files can be stored in the result cache before some
- # of the files are automatically removed.
- MaxFilesInCache: 20000
- # The cache will be stored in "rubocop_cache" under this directory. The name
- # "/tmp" is special and will be converted to the system temporary directory,
- # which is "/tmp" on Unix-like systems, but could be something else on other
- # systems.
- CacheRootDirectory: /tmp
- # The default cache root directory is /tmp, which on most systems is
- # writable by any system user. This means that it is possible for a
- # malicious user to anticipate the location of Rubocop's cache directory,
- # and create a symlink in its place that could cause Rubocop to overwrite
- # unintended files, or read malicious input. If you are certain that your
- # cache location is secure from this kind of attack, and wish to use a
- # symlinked cache location, set this value to "true".
- AllowSymlinksInCacheRootDirectory: true
- # What MRI version of the Ruby interpreter is the inspected code intended to
- # run on? (If there is more than one, set this to the lowest version.)
- # If a value is specified for TargetRubyVersion then it is used.
- # Else if .ruby-version exists and it contains an MRI version it is used.
- # Otherwise we fallback to the oldest officially supported Ruby version (2.0).
- TargetRubyVersion: 3.0
-
-# RSpec:
-# Patterns:
-# - "(?:^|/)spec/"
-# - "(?:^|/)test/"
-
-# Indent private/protected/public as deep as method definitions
-Layout/AccessModifierIndentation:
- EnforcedStyle: indent
- SupportedStyles:
- - outdent
- - indent
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-Style/Alias:
- EnforcedStyle: prefer_alias
- SupportedStyles:
- - prefer_alias
- - prefer_alias_method
-
-# Align the elements of a hash literal if they span more than one line.
-Layout/HashAlignment:
- # Alignment of entries using hash rocket as separator. Valid values are:
- #
- # key - left alignment of keys
- # "a" => 2
- # "bb" => 3
- # separator - alignment of hash rockets, keys are right aligned
- # "a" => 2
- # "bb" => 3
- # table - left alignment of keys, hash rockets, and values
- # "a" => 2
- # "bb" => 3
- EnforcedHashRocketStyle: key
- # Alignment of entries using colon as separator. Valid values are:
- #
- # key - left alignment of keys
- # a: 0
- # bb: 1
- # separator - alignment of colons, keys are right aligned
- # a: 0
- # bb: 1
- # table - left alignment of keys and values
- # a: 0
- # bb: 1
- EnforcedColonStyle: key
- # Select whether hashes that are the last argument in a method call should be
- # inspected? Valid values are:
- #
- # always_inspect - Inspect both implicit and explicit hashes.
- # Registers an offense for:
- # function(a: 1,
- # b: 2)
- # Registers an offense for:
- # function({a: 1,
- # b: 2})
- # always_ignore - Ignore both implicit and explicit hashes.
- # Accepts:
- # function(a: 1,
- # b: 2)
- # Accepts:
- # function({a: 1,
- # b: 2})
- # ignore_implicit - Ignore only implicit hashes.
- # Accepts:
- # function(a: 1,
- # b: 2)
- # Registers an offense for:
- # function({a: 1,
- # b: 2})
- # ignore_explicit - Ignore only explicit hashes.
- # Accepts:
- # function({a: 1,
- # b: 2})
- # Registers an offense for:
- # function(a: 1,
- # b: 2)
- EnforcedLastArgumentHashStyle: always_inspect
- SupportedLastArgumentHashStyles:
- - always_inspect
- - always_ignore
- - ignore_implicit
- - ignore_explicit
-
-Layout/ParameterAlignment:
- # Alignment of parameters in multi-line method calls.
- #
- # The `with_first_parameter` style aligns the following lines along the same
- # column as the first parameter.
- #
- # method_call(a,
- # b)
- #
- # The `with_fixed_indentation` style aligns the following lines with one
- # level of indentation relative to the start of the line with the method call.
- #
- # method_call(a,
- # b)
- EnforcedStyle: with_first_parameter
- SupportedStyles:
- - with_first_parameter
- - with_fixed_indentation
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-Style/ArrayCoercion:
- Description: >-
- Use Array() instead of explicit Array check or [*var], when dealing
- with a variable you want to treat as an Array, but you're not certain it's an array.
- StyleGuide: '#array-coercion'
- Safe: false
- Enabled: false
- VersionAdded: '0.88'
-
-Style/AndOr:
- # Whether `and` and `or` are banned only in conditionals (conditionals)
- # or completely (always).
- EnforcedStyle: always
- SupportedStyles:
- - always
- - conditionals
-
-Style/AsciiComments:
- Enabled: false
-
-# Checks if usage of %() or %Q() matches configuration.
-Style/BarePercentLiterals:
- EnforcedStyle: bare_percent
- SupportedStyles:
- - percent_q
- - bare_percent
-
-Style/BlockDelimiters:
- EnforcedStyle: line_count_based
- SupportedStyles:
- # The `line_count_based` style enforces braces around single line blocks and
- # do..end around multi-line blocks.
- - line_count_based
- # The `semantic` style enforces braces around functional blocks, where the
- # primary purpose of the block is to return a value and do..end for
- # procedural blocks, where the primary purpose of the block is its
- # side-effects.
- #
- # This looks at the usage of a block's method to determine its type (e.g. is
- # the result of a `map` assigned to a variable or passed to another
- # method) but exceptions are permitted in the `ProceduralMethods`,
- # `FunctionalMethods` and `IgnoredMethods` sections below.
- - semantic
- # The `braces_for_chaining` style enforces braces around single line blocks
- # and do..end around multi-line blocks, except for multi-line blocks whose
- # return value is being chained with another method (in which case braces
- # are enforced).
- - braces_for_chaining
- ProceduralMethods:
- # Methods that are known to be procedural in nature but look functional from
- # their usage, e.g.
- #
- # time = Benchmark.realtime do
- # foo.bar
- # end
- #
- # Here, the return value of the block is discarded but the return value of
- # `Benchmark.realtime` is used.
- - benchmark
- - bm
- - bmbm
- - create
- - each_with_object
- - measure
- - new
- - realtime
- - tap
- - with_object
- FunctionalMethods:
- # Methods that are known to be functional in nature but look procedural from
- # their usage, e.g.
- #
- # let(:foo) { Foo.new }
- #
- # Here, the return value of `Foo.new` is used to define a `foo` helper but
- # doesn't appear to be used from the return value of `let`.
- - let
- - let!
- - subject
- - watch
- IgnoredMethods:
- # Methods that can be either procedural or functional and cannot be
- # categorised from their usage alone, e.g.
- #
- # foo = lambda do |x|
- # puts "Hello, #{x}"
- # end
- #
- # foo = lambda do |x|
- # x * 100
- # end
- #
- # Here, it is impossible to tell from the return value of `lambda` whether
- # the inner block's return value is significant.
- - lambda
- - proc
- - it
-
-Style/ExplicitBlockArgument:
- Enabled: false
-
-Style/HashEachMethods:
- Enabled: false
-
-Style/HashLikeCase:
- MinBranchesCount: 5
-
-# Indentation of `when`.
-Layout/CaseIndentation:
- EnforcedStyle: case
- SupportedStyles:
- - case
- - end
- IndentOneStep: false
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- # This only matters if IndentOneStep is true
- IndentationWidth: ~
-
-Style/ClassAndModuleChildren:
- Enabled: false
- # Checks the style of children definitions at classes and modules.
- #
- # Basically there are two different styles:
- #
- # `nested` - have each child on a separate line
- # class Foo
- # class Bar
- # end
- # end
- #
- # `compact` - combine definitions as much as possible
- # class Foo::Bar
- # end
- #
- # The compact style is only forced, for classes / modules with one child.
- EnforcedStyle: nested
- SupportedStyles:
- - nested
- - compact
-
-Style/ClassCheck:
- EnforcedStyle: is_a?
- SupportedStyles:
- - is_a?
- - kind_of?
-
-# Align with the style guide.
-Style/CollectionMethods:
- # Mapping from undesired method to desired_method
- # e.g. to use `detect` over `find`:
- #
- # CollectionMethods:
- # PreferredMethods:
- # find: detect
- PreferredMethods:
- collect: "map"
- collect!: "map!"
- inject: "reduce"
- detect: "find"
- find_all: "select"
-
-# Use ` or %x around command literals.
-Style/CommandLiteral:
- EnforcedStyle: backticks
- # backticks: Always use backticks.
- # percent_x: Always use %x.
- # mixed: Use backticks on single-line commands, and %x on multi-line commands.
- SupportedStyles:
- - backticks
- - percent_x
- - mixed
- # If false, the cop will always recommend using %x if one or more backticks
- # are found in the command string.
- AllowInnerBackticks: false
-
-# Checks formatting of special comments
-Style/CommentAnnotation:
- Keywords:
- - TODO
- - FIXME
- - OPTIMIZE
- - HACK
- - REVIEW
-
-Style/ConditionalAssignment:
- EnforcedStyle: assign_to_condition
- SupportedStyles:
- - assign_to_condition
- - assign_inside_condition
- # When configured to `assign_to_condition`, `SingleLineConditionsOnly`
- # will only register an offense when all branches of a condition are
- # a single line.
- # When configured to `assign_inside_condition`, `SingleLineConditionsOnly`
- # will only register an offense for assignment to a condition that has
- # at least one multiline branch.
- SingleLineConditionsOnly: true
-
-# Checks that you have put a copyright in a comment before any code.
-#
-# You can override the default Notice in your .rubocop.yml file.
-#
-# In order to use autocorrect, you must supply a value for the
-# AutocorrectNotice key that matches the regexp Notice. A blank
-# AutocorrectNotice will cause an error during autocorrect.
-#
-# Autocorrect will add a copyright notice in a comment at the top
-# of the file immediately after any shebang or encoding comments.
-#
-# Example rubocop.yml:
-#
-# Style/Copyright:
-# Enabled: true
-# Notice: 'Copyright (\(c\) )?2015 Yahoo! Inc'
-# AutocorrectNotice: "# Copyright (c) 2015 Yahoo! Inc."
-#
-Style/Copyright:
- Notice: '^Copyright (\(c\) )?2[0-9]{3} .+'
- AutocorrectNotice: ""
-
-Style/DocumentationMethod:
- RequireForNonPublicMethods: false
-
-# Multi-line method chaining should be done with leading dots.
-Layout/DotPosition:
- EnforcedStyle: leading
- SupportedStyles:
- - leading
- - trailing
-
-# Warn on empty else statements
-# empty - warn only on empty else
-# nil - warn on else with nil in it
-# both - warn on empty else and else with nil in it
-Style/EmptyElse:
- EnforcedStyle: both
- SupportedStyles:
- - empty
- - nil
- - both
-
-# Use empty lines between defs.
-Layout/EmptyLineBetweenDefs:
- # If true, this parameter means that single line method definitions don't
- # need an empty line between them.
- AllowAdjacentOneLineDefs: false
-
-Layout/EmptyLinesAroundBlockBody:
- EnforcedStyle: no_empty_lines
- SupportedStyles:
- - empty_lines
- - no_empty_lines
-
-Layout/EmptyLinesAroundClassBody:
- EnforcedStyle: no_empty_lines
- SupportedStyles:
- - empty_lines
- - no_empty_lines
-
-Layout/EmptyLinesAroundModuleBody:
- EnforcedStyle: no_empty_lines
- SupportedStyles:
- - empty_lines
- - no_empty_lines
-
-# Checks whether the source file has a utf-8 encoding comment or not
-# AutoCorrectEncodingComment must match the regex
-# /#.*coding\s?[:=]\s?(?:UTF|utf)-8/
-Style/Encoding:
- Enabled: true
-
-Layout/ExtraSpacing:
- # When true, allows most uses of extra spacing if the intent is to align
- # things with the previous or next line, not counting empty lines or comment
- # lines.
- AllowForAlignment: false
- # When true, forces the alignment of = in assignments on consecutive lines.
- ForceEqualSignAlignment: false
-
-Naming/FileName:
- Exclude:
- - "**/Gemfile"
- - "**/Rakefile"
- - "**/*.gemspec"
- - "decidim-dev/lib/decidim-dev.rb"
- # When true, requires that each source file should define a class or module
- # with a name which matches the file name (converted to ... case).
- # It further expects it to be nested inside modules which match the names
- # of subdirectories in its path.
- ExpectMatchingDefinition: false
- # If non-nil, expect all source file names to match the following regex.
- # Only the file name itself is matched, not the entire file path.
- # Use anchors as necessary if you want to match the entire name rather than
- # just a part of it.
- Regex: ~
- # With `IgnoreExecutableScripts` set to `true`, this cop does not
- # report offending filenames for executable scripts (i.e. source
- # files with a shebang in the first line).
- IgnoreExecutableScripts: true
-
-Layout/FirstArgumentIndentation:
- EnforcedStyle: special_for_inner_method_call_in_parentheses
- SupportedStyles:
- # The first parameter should always be indented one step more than the
- # preceding line.
- - consistent
- # The first parameter should normally be indented one step more than the
- # preceding line, but if it's a parameter for a method call that is itself
- # a parameter in a method call, then the inner parameter should be indented
- # relative to the inner method.
- - special_for_inner_method_call
- # Same as special_for_inner_method_call except that the special rule only
- # applies if the outer method call encloses its arguments in parentheses.
- - special_for_inner_method_call_in_parentheses
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-# Checks use of for or each in multiline loops.
-Style/For:
- EnforcedStyle: each
- SupportedStyles:
- - for
- - each
-
-# Enforce the method used for string formatting.
-Style/FormatString:
- EnforcedStyle: format
- SupportedStyles:
- - format
- - sprintf
- - percent
-
-Style/FormatStringToken:
- EnforcedStyle: template
-
-Style/FrozenStringLiteralComment:
- EnforcedStyle: always
- SupportedStyles:
- - never
- # `always` will always add the frozen string literal comment to a file
- # regardless of the Ruby version or if `freeze` or `<<` are called on a
- # string literal. If you run code against multiple versions of Ruby, it is
- # possible that this will create errors in Ruby 2.3.0+.
- - always
-
-# Built-in global variables are allowed by default.
-Style/GlobalVars:
- AllowedVariables: []
-
-# `MinBodyLength` defines the number of lines of the a body of an if / unless
-# needs to have to trigger this cop
-Style/GuardClause:
- MinBodyLength: 6
-
-Style/HashSyntax:
- EnforcedStyle: ruby19
- SupportedStyles:
- # checks for 1.9 syntax (e.g. {a: 1}) for all symbol keys
- - ruby19
- # checks for hash rocket syntax for all hashes
- - hash_rockets
- # forbids mixed key syntaxes (e.g. {a: 1, :b => 2})
- - no_mixed_keys
- # enforces both ruby19 and no_mixed_keys styles
- - ruby19_no_mixed_keys
- # Force hashes that have a symbol value to use hash rockets
- UseHashRocketsWithSymbolValues: false
- # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
- PreferHashRocketsForNonAlnumEndingSymbols: false
-
-Layout/IndentationConsistency:
- # The difference between `rails` and `normal` is that the `rails` style
- # prescribes that in classes and modules the `protected` and `private`
- # modifier keywords shall be indented the same as public methods and that
- # protected and private members shall be indented one step more than the
- # modifiers. Other than that, both styles mean that entities on the same
- # logical depth shall have the same indentation.
- EnforcedStyle: normal
- SupportedStyles:
- - normal
- - rails
-
-Layout/IndentationWidth:
- # Number of spaces for each indentation level.
- Width: 2
-
-# Checks the indentation of the first element in an array literal.
-Layout/FirstArrayElementIndentation:
- # The value `special_inside_parentheses` means that array literals with
- # brackets that have their opening bracket on the same line as a surrounding
- # opening round parenthesis, shall have their first element indented relative
- # to the first position inside the parenthesis.
- #
- # The value `consistent` means that the indentation of the first element shall
- # always be relative to the first position of the line where the opening
- # bracket is.
- #
- # The value `align_brackets` means that the indentation of the first element
- # shall always be relative to the position of the opening bracket.
- EnforcedStyle: special_inside_parentheses
- SupportedStyles:
- - special_inside_parentheses
- - consistent
- - align_brackets
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-# Checks the indentation of assignment RHS, when on a different line from LHS
-Layout/AssignmentIndentation:
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-# Checks the indentation of the first key in a hash literal.
-Layout/FirstHashElementIndentation:
- # The value `special_inside_parentheses` means that hash literals with braces
- # that have their opening brace on the same line as a surrounding opening
- # round parenthesis, shall have their first key indented relative to the
- # first position inside the parenthesis.
- #
- # The value `consistent` means that the indentation of the first key shall
- # always be relative to the first position of the line where the opening
- # brace is.
- #
- # The value `align_braces` means that the indentation of the first key shall
- # always be relative to the position of the opening brace.
- EnforcedStyle: special_inside_parentheses
- SupportedStyles:
- - special_inside_parentheses
- - consistent
- - align_braces
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-Style/Lambda:
- EnforcedStyle: line_count_dependent
- SupportedStyles:
- - line_count_dependent
- - lambda
- - literal
- Exclude:
- - "**/types/**/*"
- - "**/*_interface.rb"
-
-Style/LambdaCall:
- EnforcedStyle: call
- SupportedStyles:
- - call
- - braces
-
-Style/Next:
- # With `always` all conditions at the end of an iteration needs to be
- # replaced by next - with `skip_modifier_ifs` the modifier if like this one
- # are ignored: [1, 2].each { |a| return "yes" if a == 1 }
- EnforcedStyle: skip_modifier_ifs
- # `MinBodyLength` defines the number of lines of the a body of an if / unless
- # needs to have to trigger this cop
- MinBodyLength: 3
- SupportedStyles:
- - skip_modifier_ifs
- - always
-
-Style/NonNilCheck:
- # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
- # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
- # **usually** OK, but might change behavior.
- #
- # With `IncludeSemanticChanges` set to `false`, this cop does not report
- # offenses for `!x.nil?` and does no changes that might change behavior.
- IncludeSemanticChanges: false
-
-Style/NumericPredicate:
- EnforcedStyle: predicate
- SupportedStyles:
- - predicate
- - comparison
-
-Style/MethodDefParentheses:
- EnforcedStyle: require_parentheses
- SupportedStyles:
- - require_parentheses
- - require_no_parentheses
- - require_no_parentheses_except_multiline
-
-Naming/MethodName:
- EnforcedStyle: snake_case
- SupportedStyles:
- - snake_case
- - camelCase
-
-Style/ModuleFunction:
- EnforcedStyle: module_function
- SupportedStyles:
- - module_function
- - extend_self
-
-Layout/MultilineArrayBraceLayout:
- EnforcedStyle: symmetrical
- SupportedStyles:
- # symmetrical: closing brace is positioned in same way as opening brace
- # new_line: closing brace is always on a new line
- # same_line: closing brace is always on the same line as last element
- - symmetrical
- - new_line
- - same_line
-
-Layout/MultilineAssignmentLayout:
- # The types of assignments which are subject to this rule.
- SupportedTypes:
- - block
- - case
- - class
- - if
- - kwbegin
- - module
- EnforcedStyle: new_line
- SupportedStyles:
- # Ensures that the assignment operator and the rhs are on the same line for
- # the set of supported types.
- - same_line
- # Ensures that the assignment operator and the rhs are on separate lines
- # for the set of supported types.
- - new_line
-
-Layout/MultilineHashBraceLayout:
- EnforcedStyle: symmetrical
- SupportedStyles:
- # symmetrical: closing brace is positioned in same way as opening brace
- # new_line: closing brace is always on a new line
- # same_line: closing brace is always on same line as last element
- - symmetrical
- - new_line
- - same_line
-
-Layout/MultilineMethodCallBraceLayout:
- EnforcedStyle: symmetrical
- SupportedStyles:
- # symmetrical: closing brace is positioned in same way as opening brace
- # new_line: closing brace is always on a new line
- # same_line: closing brace is always on the same line as last argument
- - symmetrical
- - new_line
- - same_line
-
-Layout/MultilineMethodCallIndentation:
- EnforcedStyle: aligned
- SupportedStyles:
- - aligned
- - indented
- - indented_relative_to_receiver
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-Layout/MultilineMethodDefinitionBraceLayout:
- EnforcedStyle: symmetrical
- SupportedStyles:
- # symmetrical: closing brace is positioned in same way as opening brace
- # new_line: closing brace is always on a new line
- # same_line: closing brace is always on the same line as last parameter
- - symmetrical
- - new_line
- - same_line
-
-Layout/MultilineOperationIndentation:
- EnforcedStyle: aligned
- SupportedStyles:
- - aligned
- - indented
- # By default, the indentation width from Style/IndentationWidth is used
- # But it can be overridden by setting this parameter
- IndentationWidth: ~
-
-Style/NumericLiterals:
- MinDigits: 5
-
-Style/NumericLiteralPrefix:
- EnforcedOctalStyle: zero_with_o
- SupportedOctalStyles:
- - zero_with_o
- - zero_only
-
-Style/OptionHash:
- # A list of parameter names that will be flagged by this cop.
- SuspiciousParamNames:
- - options
- - opts
- - args
- - params
- - parameters
-
-# Allow safe assignment in conditions.
-Style/ParenthesesAroundCondition:
- AllowSafeAssignment: true
-
-Style/PercentLiteralDelimiters:
- PreferredDelimiters:
- "%": ()
- "%i": ()
- "%q": ()
- "%Q": ()
- "%r": "{}"
- "%s": ()
- "%w": ()
- "%W": ()
- "%x": ()
-
-Style/PercentQLiterals:
- EnforcedStyle: lower_case_q
- SupportedStyles:
- - lower_case_q # Use %q when possible, %Q when necessary
- - upper_case_q # Always use %Q
-
-Style/SlicingWithRange:
- Enabled: false
-
-Naming/PredicateName:
- # Predicate name prefixes.
- NamePrefix:
- - is_
- - has_
- - have_
- # Predicate name prefixes that should be removed.
- ForbiddenPrefixes:
- - is_
- - have_
- # Predicate names which, despite having a blacklisted prefix, or no ?,
- # should still be accepted
- AllowedMethods:
- - is_a?
- # Exclude Rspec specs because there is a strong convetion to write spec
- # helpers in the form of `have_something` or `be_something`.
- Exclude:
- - "**/spec/**/*"
- - "**/test/**/*"
-
-Style/PreferredHashMethods:
- Enabled: true
- EnforcedStyle: verbose
-
-Style/DateTime:
- Enabled: true
-
-Style/Documentation:
- Enabled: false
-
-Style/RaiseArgs:
- EnforcedStyle: exploded
- SupportedStyles:
- - compact # raise Exception.new(msg)
- - exploded # raise Exception, msg
-
-Style/RedundantReturn:
- # When true allows code like `return x, y`.
- AllowMultipleReturnValues: false
-
-# Use / or %r around regular expressions.
-Style/RegexpLiteral:
- EnforcedStyle: slashes
- # slashes: Always use slashes.
- # percent_r: Always use %r.
- # mixed: Use slashes on single-line regexes, and %r on multi-line regexes.
- SupportedStyles:
- - slashes
- - percent_r
- - mixed
- # If false, the cop will always recommend using %r if one or more slashes
- # are found in the regexp string.
- AllowInnerSlashes: false
-
-Style/SafeNavigation:
- Enabled: false
-
-Style/Semicolon:
- # Allow ; to separate several expressions on the same line.
- AllowAsExpressionSeparator: false
-
-Style/SignalException:
- EnforcedStyle: only_raise
- SupportedStyles:
- - only_raise
- - only_fail
- - semantic
-
-Style/SingleLineBlockParams:
- Methods:
- - reduce:
- - a
- - e
- - inject:
- - a
- - e
-
-Style/SingleLineMethods:
- AllowIfMethodIsEmpty: true
-
-Layout/SpaceBeforeFirstArg:
- # When true, allows most uses of extra spacing if the intent is to align
- # things with the previous or next line, not counting empty lines or comment
- # lines.
- AllowForAlignment: true
-
-Style/SpecialGlobalVars:
- EnforcedStyle: use_english_names
- SupportedStyles:
- - use_perl_names
- - use_english_names
-
-Style/StabbyLambdaParentheses:
- EnforcedStyle: require_parentheses
- SupportedStyles:
- - require_parentheses
- - require_no_parentheses
-
-Style/StringLiterals:
- EnforcedStyle: double_quotes
- SupportedStyles:
- - single_quotes
- - double_quotes
- # If true, strings which span multiple lines using \ for continuation must
- # use the same type of quotes on each line.
- ConsistentQuotesInMultiline: false
-
-Style/StringLiteralsInInterpolation:
- EnforcedStyle: double_quotes
- SupportedStyles:
- - single_quotes
- - double_quotes
-
-Style/StringMethods:
- # Mapping from undesired method to desired_method
- # e.g. to use `to_sym` over `intern`:
- #
- # StringMethods:
- # PreferredMethods:
- # intern: to_sym
- PreferredMethods:
- intern: to_sym
-
-Layout/SpaceAroundBlockParameters:
- EnforcedStyleInsidePipes: no_space
-
-Layout/SpaceAroundEqualsInParameterDefault:
- EnforcedStyle: space
- SupportedStyles:
- - space
- - no_space
-
-Layout/SpaceAroundOperators:
- # When true, allows most uses of extra spacing if the intent is to align
- # with an operator on the previous or next line, not counting empty lines
- # or comment lines.
- AllowForAlignment: true
-
-Layout/SpaceBeforeBlockBraces:
- EnforcedStyle: space
- SupportedStyles:
- - space
- - no_space
-
-Layout/SpaceInsideBlockBraces:
- EnforcedStyle: space
- SupportedStyles:
- - space
- - no_space
- # Valid values are: space, no_space
- EnforcedStyleForEmptyBraces: no_space
- # Space between { and |. Overrides EnforcedStyle if there is a conflict.
- SpaceBeforeBlockParameters: true
-
-Layout/SpaceInsideHashLiteralBraces:
- EnforcedStyle: space
- EnforcedStyleForEmptyBraces: no_space
- SupportedStyles:
- - space
- - no_space
- # "compact" normally requires a space inside hash braces, with the exception
- # that successive left braces or right braces are collapsed together
- - compact
-
-Layout/SpaceInsideStringInterpolation:
- EnforcedStyle: no_space
- SupportedStyles:
- - space
- - no_space
-
-Style/AccessModifierDeclarations:
- Enabled: false
-
-Style/SymbolArray:
- EnforcedStyle: brackets
- SupportedStyles:
- - percent
- - brackets
-
-Style/SymbolProc:
- # A list of method names to be ignored by the check.
- # The names should be fairly unique, otherwise you'll end up ignoring lots of code.
- IgnoredMethods:
- - respond_to
- - define_method
-
-Style/TernaryParentheses:
- EnforcedStyle: require_no_parentheses
- SupportedStyles:
- - require_parentheses
- - require_no_parentheses
- AllowSafeAssignment: true
-
-Layout/TrailingEmptyLines:
- EnforcedStyle: final_newline
- SupportedStyles:
- - final_newline
- - final_blank_line
-
-Style/TrailingCommaInArguments:
- # If `comma`, the cop requires a comma after the last argument, but only for
- # parenthesized method calls where each argument is on its own line.
- # If `consistent_comma`, the cop requires a comma after the last argument,
- # for all parenthesized method calls with arguments.
- EnforcedStyleForMultiline: no_comma
-
-Style/TrailingCommaInArrayLiteral:
- # If `comma`, the cop requires a comma after the last item in an array or
- # hash, but only when each item is on its own line.
- # If `consistent_comma`, the cop requires a comma after the last item of all
- # non-empty array and hash literals.
- EnforcedStyleForMultiline: no_comma
-
-Style/TrailingCommaInHashLiteral:
- # If `comma`, the cop requires a comma after the last item in an array or
- # hash, but only when each item is on its own line.
- # If `consistent_comma`, the cop requires a comma after the last item of all
- # non-empty array and hash literals.
- EnforcedStyleForMultiline: no_comma
-
-# TrivialAccessors requires exact name matches and doesn't allow
-# predicated methods by default.
-Style/TrivialAccessors:
- # When set to false the cop will suggest the use of accessor methods
- # in situations like:
- #
- # def name
- # @other_name
- # end
- #
- # This way you can uncover "hidden" attributes in your code.
- ExactNameMatch: true
- AllowPredicates: true
- # Allows trivial writers that don't end in an equal sign. e.g.
- #
- # def on_exception(action)
- # @on_exception=action
- # end
- # on_exception :restart
- #
- # Commonly used in DSLs
- AllowDSLWriters: false
- IgnoreClassMethods: false
- AllowedMethods:
- - to_ary
- - to_a
- - to_c
- - to_enum
- - to_h
- - to_hash
- - to_i
- - to_int
- - to_io
- - to_open
- - to_path
- - to_proc
- - to_r
- - to_regexp
- - to_str
- - to_s
- - to_sym
-
-Naming/VariableName:
- EnforcedStyle: snake_case
- SupportedStyles:
- - snake_case
- - camelCase
-
-Naming/VariableNumber:
- EnforcedStyle: normalcase
- SupportedStyles:
- - snake_case
- - normalcase
- - non_integer
-
-# WordArray enforces how array literals of word-like strings should be expressed.
-Style/WordArray:
- EnforcedStyle: percent
- SupportedStyles:
- # percent style: %w(word1 word2)
- - percent
- # bracket style: ["word1", "word2"]
- - brackets
- # The MinSize option causes the WordArray rule to be ignored for arrays
- # smaller than a certain size. The rule is only applied to arrays
- # whose element count is greater than or equal to MinSize.
- MinSize: 2
- # The regular expression WordRegex decides what is considered a word.
- WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/'
-
-##################### Metrics ##################################
-
-Metrics/AbcSize:
- # The ABC size is a calculated magnitude, so this number can be an Integer or
- # a Float.
- Max: 15
- Enabled: false
-
-Metrics/BlockNesting:
- Max: 3
-
-Metrics/ClassLength:
- CountComments: false # count full line comments?
- Max: 100
- Enabled: false
-
-Metrics/ModuleLength:
- CountComments: false # count full line comments?
- Max: 100
- Enabled: false
-
-# Avoid complex methods.
-Metrics/CyclomaticComplexity:
- Max: 9
- Exclude:
- - "bin/bundle"
- - "decidim-admin/app/queries/decidim/admin/newsletter_recipients.rb"
- - "**/*/dummy_authorization_handler.rb"
- - "**/*/permissions.rb"
-
-Metrics/MethodLength:
- CountComments: false # count full line comments?
- Max: 15
- Enabled: false
-
-Metrics/ParameterLists:
- Max: 5
- CountKeywordArgs: true
- Exclude:
- - "decidim-core/lib/decidim/filter_form_builder.rb"
-
-Metrics/PerceivedComplexity:
- Max: 10
- Exclude:
- - "decidim-admin/app/queries/decidim/admin/newsletter_recipients.rb"
- - "**/*/dummy_authorization_handler.rb"
- - "**/*/permissions.rb"
-
-##################### Lint ##################################
-
-Lint/AmbiguousBlockAssociation:
- Enabled: true
- Exclude:
- - "**/abilities/**/*"
-
-# Allow safe assignment in conditions.
-Lint/AssignmentInCondition:
- AllowSafeAssignment: true
-
-Lint/ConstantDefinitionInBlock:
- Enabled: false
-
-# Call super to initialize state of the parent class.
-Lint/MissingSuper:
- Enabled: false
-
-# checks whether the end keywords are aligned properly for `do` `end` blocks.
-Layout/BlockAlignment:
- # The value `start_of_block` means that the `end` should be aligned with line
- # where the `do` keyword appears.
- # The value `start_of_line` means it should be aligned with the whole
- # expression's starting line.
- # The value `either` means both are allowed.
- EnforcedStyleAlignWith: either
-
-# Align ends correctly.
-Layout/EndAlignment:
- # The value `keyword` means that `end` should be aligned with the matching
- # keyword (if, while, etc.).
- # The value `variable` means that in assignments, `end` should be aligned
- # with the start of the variable on the left hand side of `=`. In all other
- # situations, `end` should still be aligned with the keyword.
- # The value `start_of_line` means that `end` should be aligned with the start
- # of the line which the matching keyword appears on.
- EnforcedStyleAlignWith: keyword
- AutoCorrect: false
-
-Layout/DefEndAlignment:
- # The value `def` means that `end` should be aligned with the def keyword.
- # The value `start_of_line` means that `end` should be aligned with method
- # calls like `private`, `public`, etc, if present in front of the `def`
- # keyword on the same line.
- EnforcedStyleAlignWith: start_of_line
- AutoCorrect: false
-
-Lint/InheritException:
- # The default base class in favour of `Exception`.
- EnforcedStyle: runtime_error
- SupportedStyles:
- - runtime_error
- - standard_error
-
-Layout/LineLength:
- Max: 180
- # To make it possible to copy or click on URIs in the code, we allow lines
- # containing a URI to be longer than Max.
- AllowHeredoc: true
- AllowURI: true
- URISchemes:
- - http
- - https
- Exclude:
- - "**/spec/**/*"
-
-# Checks for unused block arguments
-Lint/UnusedBlockArgument:
- IgnoreEmptyBlocks: true
- AllowUnusedKeywordArguments: false
-
-# Checks for unused method arguments.
-Lint/UnusedMethodArgument:
- AllowUnusedKeywordArguments: false
- IgnoreEmptyMethods: true
-
-##################### Performance ############################
-
-Metrics/BlockLength:
- Enabled: false
-
-RSpec/BeforeAfterAll:
- Enabled: true
-
-RSpec/ContextWording:
- Enabled: true
- Prefixes:
- - when
- - with
- - without
- - and
-
-RSpec/DescribeClass:
- Exclude:
- - spec/gemfiles_spec.rb
- - spec/webpacker_spec.rb
- - spec/i18n_spec.rb
- - "**/*/spec/**/*_badge_spec.rb"
- - decidim-core/spec/lib/global_engines_spec.rb
- - "**/tasks/**/*"
-
-RSpec/EmptyExampleGroup:
- Exclude:
- - decidim-core/spec/lib/participatory_space_manifest_spec.rb
-
-RSpec/ExampleLength:
- Max: 49
-
-RSpec/ExpectInHook:
- Enabled: false
-
-RSpec/IteratedExpectation:
- Enabled: true
-
-RSpec/LetSetup:
- Enabled: false
-
-RSpec/MessageSpies:
- Enabled: false
-
-RSpec/MultipleExpectations:
- Enabled: false
-
-RSpec/MultipleMemoizedHelpers:
- Max: 35
- Exclude:
- - decidim-assemblies/spec/forms/assembly_form_spec.rb
-
-RSpec/NestedGroups:
- Max: 7
-
-RSpec/NamedSubject:
- Enabled: false
-
-RSpec/RepeatedExampleGroupDescription:
- Enabled: true
-
-RSpec/RepeatedExampleGroupBody:
- Enabled: true
-
-RSpec/VerifiedDoubles:
- Enabled: false
-
-RSpec/LeakyConstantDeclaration:
- Enabled: false
-
-RSpec/DescribedClass:
- Enabled: false
-
-# This is the default configuration file.
-
-Faker/DeprecatedArguments:
- Description: 'Checks that Faker arguments style is based on Faker 2.'
- Enabled: true
- VersionAdded: '0.1'
- Reference: 'https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md#v20-2019-31-07'
- ArgumentKeywords:
- #
- # FakerClassName:
- # method_name:
- # - keyword_name_for_first_argument
- # - keyword_name_for_second_argument
- # - keyword_name_for_third_argument
- #
- Faker::Dune:
- quote:
- - character
- saying:
- - source
- Faker::Books::Lovecraft:
- fhtagn:
- - number
- sentence:
- - word_count
- - random_words_to_add
- words:
- - number
- - spaces_allowed
- sentences:
- - number
- paragraph:
- - sentence_count
- - random_sentences_to_add
- paragraphs:
- - number
- paragraph_by_chars:
- - characters
- Faker::Address:
- city:
- - options
- street_address:
- - include_secondary
- zip_code:
- - state_abbreviation
- country_by_code:
- - code
- country_name_to_code:
- - name
- Faker::Alphanumeric:
- alpha:
- - number
- alphanumeric:
- - number
- Faker::App:
- semantic_version:
- - major
- - minor
- - patch
- Faker::Avatar:
- image:
- - slug
- - size
- - format
- - set
- - bgset
- Faker::Bank:
- account_number:
- - digits
- iban:
- - country_code
- Faker::Boolean:
- boolean:
- - true_ratio
- Faker::ChileRut:
- rut:
- - min_rut
- - fixed
- full_rut:
- - min_rut
- - fixed
- Faker::Code:
- isbn:
- - base
- ean:
- - base
- nric:
- - min_age
- - max_age
- Faker::Commerce:
- promotion_code:
- - digits
- department:
- - max
- - fixed_amount
- price:
- - range
- - as_string
- Faker::Company:
- polish_register_of_national_economy:
- - length
- brazilian_company_number:
- - formatted
- Faker::CryptoCoin:
- coin_name:
- - coin
- acronym:
- - coin
- url_logo:
- - coin
- Faker::Date:
- between:
- - from
- - to
- between_except:
- - from
- - to
- - excepted
- forward:
- - days
- backward:
- - days
- birthday:
- - min_age
- - max_age
- Faker::Demographic:
- height:
- - unit
- Faker::DrivingLicence:
- british_driving_licence:
- - last_name
- - initials
- - gender
- - date_of_birth
- Faker::File:
- dir:
- - segment_count
- - root
- - directory_separator
- file_name:
- - dir
- - name
- - ext
- - directory_separator
- Faker::Fillmurray:
- image:
- - grayscale
- - width
- - height
- Faker::Finance:
- vat_number:
- - country
- Faker::Hipster:
- words:
- - number
- - supplemental
- - spaces_allowed
- sentence:
- - word_count
- - supplemental
- - random_words_to_add
- sentences:
- - number
- - supplemental
- paragraph:
- - sentence_count
- - supplemental
- - random_sentences_to_add
- paragraphs:
- - number
- - supplemental
- paragraph_by_chars:
- - characters
- - supplemental
- Faker::IDNumber:
- brazilian_citizen_number:
- - formatted
- brazilian_id:
- - formatted
- Faker::Internet:
- email:
- - name
- - separators
- free_email:
- - name
- safe_email:
- - name
- username:
- - specifier
- - separators
- password:
- - min_length
- - max_length
- - mix_case
- - special_characters
- domain_name:
- - subdomain
- fix_umlauts:
- - string
- mac_address:
- - prefix
- url:
- - host
- - path
- - scheme
- slug:
- - words
- - glue
- user_agent:
- - vendor
- Faker::Invoice:
- amount_between:
- - from
- - to
- creditor_reference:
- - ref
- reference:
- - ref
- Faker::Json:
- shallow_json:
- - width
- - options
- add_depth_to_json:
- - json
- - width
- - options
- Faker::Lorem:
- words:
- - number
- - supplemental
- characters:
- - number
- sentence:
- - word_count
- - supplemental
- - random_words_to_add
- sentences:
- - number
- - supplemental
- paragraph:
- - sentence_count
- - supplemental
- - random_sentences_to_add
- paragraphs:
- - number
- - supplemental
- paragraph_by_chars:
- - number
- - supplemental
- question:
- - word_count
- - supplemental
- - random_words_to_add
- questions:
- - number
- - supplemental
- Faker::LoremFlickr:
- image:
- - size
- - search_terms
- - match_all
- grayscale_image:
- - size
- - search_terms
- - match_all
- pixelated_image:
- - size
- - search_terms
- - match_all
- colorized_image:
- - size
- - color
- - search_terms
- - match_all
- Faker::LoremPixel:
- image:
- - size
- - is_gray
- - category
- - number
- - text
- - secure
- Faker::Markdown:
- sandwich:
- - sentences
- - repeat
- Faker::Measurement:
- height:
- - amount
- length:
- - amount
- volume:
- - amount
- weight:
- - amount
- metric_height:
- - amount
- metric_length:
- - amount
- metric_volume:
- - amount
- metric_weight:
- - amount
- Faker::Name:
- initials:
- - number
- Faker::NationalHealthService:
- check_digit:
- - number
- Faker::Number:
- number:
- - digits
- leading_zero_number:
- - digits
- decimal_part:
- - digits
- decimal:
- - l_digits
- - r_digits
- hexadecimal:
- - digits
- normal:
- - mean
- - standard_deviation
- between:
- - from
- - to
- within:
- - range
- positive:
- - from
- - to
- negative:
- - from
- - to
- Faker::Omniauth:
- google:
- - name
- - email
- - uid
- facebook:
- - name
- - email
- - username
- - uid
- twitter:
- - name
- - nickname
- - uid
- linkedin:
- - name
- - email
- - uid
- github:
- - name
- - email
- - uid
- Faker::PhoneNumber:
- subscriber_number:
- - length
- Faker::Placeholdit:
- image:
- - size
- - format
- - background_color
- - text_color
- - text
- Faker::Relationship:
- familial:
- - connection
- Faker::Source:
- hello_world:
- - lang
- print:
- - str
- - lang
- print_1_to_10:
- - lang
- Faker::String:
- random:
- - length
- Faker::Stripe:
- valid_card:
- - card_type
- valid_token:
- - card_type
- invalid_card:
- - card_error
- ccv:
- - card_type
- Faker::Time:
- between:
- - from
- - to
- - format
- between_dates:
- - from
- - to
- - period
- - format
- forward:
- - days
- - period
- - format
- backward:
- - days
- - period
- - format
- Faker::Twitter:
- user:
- - include_status
- - include_email
- status:
- - include_user
- - include_photo
- status_entities:
- - include_photo
- Faker::Types:
- rb_string:
- - words
- rb_integer:
- - from
- - to
- rb_hash:
- - number
- - type
- complex_rb_hash:
- - number
- rb_array:
- - len
- Faker::Vehicle:
- model:
- - make_of_model
- mileage:
- - min
- - max
- license_plate:
- - state_abbreviation
- Faker::WorldCup:
- group:
- - group
- roster:
- - country
- - type
- Faker::Dota:
- quote:
- - hero
- Faker::Movies::StarWars:
- quote:
- - character
- Decidim::Faker::Localized:
- words:
- - number
- - supplemental
- characters:
- - number
- sentence:
- - word_count
- - supplemental
- - random_words_to_add
- sentences:
- - number
- - supplemental
- paragraph:
- - sentence_count
- - supplemental
- - random_sentences_to_add
- paragraphs:
- - number
- - supplemental
- paragraph_by_chars:
- - number
- - supplemental
- question:
- - word_count
- - supplemental
- - random_words_to_add
- questions:
- - number
- - supplemental
diff --git a/.ruby-version b/.ruby-version
index 818bd47..94ff29c 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-3.0.6
+3.1.1
diff --git a/Gemfile b/Gemfile
index aec26c5..a897592 100644
--- a/Gemfile
+++ b/Gemfile
@@ -18,12 +18,11 @@ gem "decidim-term_customizer", path: "."
gem "bootsnap", "~> 1.4"
gem "puma", ">= 5.6.2"
-gem "faker", "~> 2.14"
+gem "faker", "~> 3.2"
group :development, :test do
gem "byebug", "~> 11.0", platform: :mri
gem "dalli", "~> 2.7", ">= 2.7.10" # For testing MemCacheStore
- gem "decidim-consultations", DECIDIM_VERSION
gem "decidim-dev", DECIDIM_VERSION
gem "rubocop-performance", "~> 1.6.0"
end
diff --git a/Gemfile.lock b/Gemfile.lock
index 896e1ff..437b644 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,47 +1,47 @@
PATH
remote: .
specs:
- decidim-term_customizer (0.27.0)
- decidim-admin (~> 0.27.0)
- decidim-core (~> 0.27.0)
+ decidim-term_customizer (0.28.0)
+ decidim-admin (~> 0.28.0)
+ decidim-core (~> 0.28.0)
GEM
remote: https://rubygems.org/
specs:
- actioncable (6.1.7.4)
- actionpack (= 6.1.7.4)
- activesupport (= 6.1.7.4)
+ actioncable (6.1.7.6)
+ actionpack (= 6.1.7.6)
+ activesupport (= 6.1.7.6)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
- actionmailbox (6.1.7.4)
- actionpack (= 6.1.7.4)
- activejob (= 6.1.7.4)
- activerecord (= 6.1.7.4)
- activestorage (= 6.1.7.4)
- activesupport (= 6.1.7.4)
+ actionmailbox (6.1.7.6)
+ actionpack (= 6.1.7.6)
+ activejob (= 6.1.7.6)
+ activerecord (= 6.1.7.6)
+ activestorage (= 6.1.7.6)
+ activesupport (= 6.1.7.6)
mail (>= 2.7.1)
- actionmailer (6.1.7.4)
- actionpack (= 6.1.7.4)
- actionview (= 6.1.7.4)
- activejob (= 6.1.7.4)
- activesupport (= 6.1.7.4)
+ actionmailer (6.1.7.6)
+ actionpack (= 6.1.7.6)
+ actionview (= 6.1.7.6)
+ activejob (= 6.1.7.6)
+ activesupport (= 6.1.7.6)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
- actionpack (6.1.7.4)
- actionview (= 6.1.7.4)
- activesupport (= 6.1.7.4)
+ actionpack (6.1.7.6)
+ actionview (= 6.1.7.6)
+ activesupport (= 6.1.7.6)
rack (~> 2.0, >= 2.0.9)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
- actiontext (6.1.7.4)
- actionpack (= 6.1.7.4)
- activerecord (= 6.1.7.4)
- activestorage (= 6.1.7.4)
- activesupport (= 6.1.7.4)
+ actiontext (6.1.7.6)
+ actionpack (= 6.1.7.6)
+ activerecord (= 6.1.7.6)
+ activestorage (= 6.1.7.6)
+ activesupport (= 6.1.7.6)
nokogiri (>= 1.8.5)
- actionview (6.1.7.4)
- activesupport (= 6.1.7.4)
+ actionview (6.1.7.6)
+ activesupport (= 6.1.7.6)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@@ -49,51 +49,40 @@ GEM
active_link_to (1.0.5)
actionpack
addressable
- activejob (6.1.7.4)
- activesupport (= 6.1.7.4)
+ activejob (6.1.7.6)
+ activesupport (= 6.1.7.6)
globalid (>= 0.3.6)
- activemodel (6.1.7.4)
- activesupport (= 6.1.7.4)
- activerecord (6.1.7.4)
- activemodel (= 6.1.7.4)
- activesupport (= 6.1.7.4)
- activestorage (6.1.7.4)
- actionpack (= 6.1.7.4)
- activejob (= 6.1.7.4)
- activerecord (= 6.1.7.4)
- activesupport (= 6.1.7.4)
+ activemodel (6.1.7.6)
+ activesupport (= 6.1.7.6)
+ activerecord (6.1.7.6)
+ activemodel (= 6.1.7.6)
+ activesupport (= 6.1.7.6)
+ activestorage (6.1.7.6)
+ actionpack (= 6.1.7.6)
+ activejob (= 6.1.7.6)
+ activerecord (= 6.1.7.6)
+ activesupport (= 6.1.7.6)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
- activesupport (6.1.7.4)
+ activesupport (6.1.7.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
- acts_as_list (0.9.19)
- activerecord (>= 3.0)
- addressable (2.8.5)
+ acts_as_list (1.1.0)
+ activerecord (>= 4.2)
+ addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
ast (2.4.2)
- axe-core-api (4.7.0)
- dumb_delegator
- virtus
- axe-core-rspec (4.1.0)
- axe-core-api
- dumb_delegator
- virtus
- axiom-types (0.1.1)
- descendants_tracker (~> 0.0.4)
- ice_nine (~> 0.11.0)
- thread_safe (~> 0.3, >= 0.3.1)
+ base64 (0.2.0)
batch-loader (1.5.0)
- bcrypt (3.1.19)
- better_html (1.0.16)
- actionview (>= 4.0)
- activesupport (>= 4.0)
+ bcrypt (3.1.20)
+ better_html (2.0.2)
+ actionview (>= 6.0)
+ activesupport (>= 6.0)
ast (~> 2.0)
erubi (~> 1.4)
- html_tokenizer (~> 0.0.6)
parser (>= 2.4)
smart_properties
bindex (0.8.1)
@@ -101,6 +90,9 @@ GEM
msgpack (~> 1.2)
browser (2.7.1)
builder (3.2.4)
+ bullet (7.1.4)
+ activesupport (>= 3.0.0)
+ uniform_notifier (~> 1.11)
byebug (11.1.3)
capybara (3.39.2)
addressable
@@ -111,7 +103,7 @@ GEM
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
- carrierwave (2.2.4)
+ carrierwave (2.2.5)
activemodel (>= 5.0.0)
activesupport (>= 5.0.0)
addressable (~> 2.6)
@@ -131,98 +123,80 @@ GEM
actionpack (>= 5.0)
cells (>= 4.1.6, < 5.0.0)
charlock_holmes (0.7.7)
- chef-utils (18.2.7)
- concurrent-ruby
- childprocess (4.1.0)
- coercible (1.0.0)
- descendants_tracker (~> 0.0.1)
- coffee-rails (5.0.0)
- coffee-script (>= 2.2.0)
- railties (>= 5.2.0)
- coffee-script (2.4.1)
- coffee-script-source
- execjs
- coffee-script-source (1.12.2)
commonmarker (0.23.10)
concurrent-ruby (1.2.2)
crack (0.4.5)
rexml
crass (1.0.6)
- css_parser (1.14.0)
+ css_parser (1.16.0)
addressable
dalli (2.7.11)
- date (3.3.3)
+ date (3.3.4)
date_validator (0.12.0)
activemodel (>= 3)
activesupport (>= 3)
- db-query-matchers (0.10.0)
- activesupport (>= 4.0, < 7)
- rspec (~> 3.0)
- decidim (0.27.4)
- decidim-accountability (= 0.27.4)
- decidim-admin (= 0.27.4)
- decidim-api (= 0.27.4)
- decidim-assemblies (= 0.27.4)
- decidim-blogs (= 0.27.4)
- decidim-budgets (= 0.27.4)
- decidim-comments (= 0.27.4)
- decidim-core (= 0.27.4)
- decidim-debates (= 0.27.4)
- decidim-forms (= 0.27.4)
- decidim-generators (= 0.27.4)
- decidim-meetings (= 0.27.4)
- decidim-pages (= 0.27.4)
- decidim-participatory_processes (= 0.27.4)
- decidim-proposals (= 0.27.4)
- decidim-sortitions (= 0.27.4)
- decidim-surveys (= 0.27.4)
- decidim-system (= 0.27.4)
- decidim-templates (= 0.27.4)
- decidim-verifications (= 0.27.4)
- decidim-accountability (0.27.4)
- decidim-comments (= 0.27.4)
- decidim-core (= 0.27.4)
- decidim-admin (0.27.4)
+ decidim (0.28.0)
+ decidim-accountability (= 0.28.0)
+ decidim-admin (= 0.28.0)
+ decidim-api (= 0.28.0)
+ decidim-assemblies (= 0.28.0)
+ decidim-blogs (= 0.28.0)
+ decidim-budgets (= 0.28.0)
+ decidim-comments (= 0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-debates (= 0.28.0)
+ decidim-forms (= 0.28.0)
+ decidim-generators (= 0.28.0)
+ decidim-meetings (= 0.28.0)
+ decidim-pages (= 0.28.0)
+ decidim-participatory_processes (= 0.28.0)
+ decidim-proposals (= 0.28.0)
+ decidim-sortitions (= 0.28.0)
+ decidim-surveys (= 0.28.0)
+ decidim-system (= 0.28.0)
+ decidim-templates (= 0.28.0)
+ decidim-verifications (= 0.28.0)
+ decidim-accountability (0.28.0)
+ decidim-comments (= 0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-admin (0.28.0)
active_link_to (~> 1.0)
- decidim-core (= 0.27.4)
+ decidim-core (= 0.28.0)
devise (~> 4.7)
devise-i18n (~> 1.2)
- devise_invitable (~> 2.0)
- decidim-api (0.27.4)
- graphql (~> 1.12, < 1.13)
- graphql-docs (~> 2.1.0)
+ devise_invitable (~> 2.0, >= 2.0.9)
+ decidim-api (0.28.0)
+ commonmarker (~> 0.23.0, >= 0.23.9)
+ graphql (~> 2.0.0)
+ graphql-docs (~> 3.0.1)
rack-cors (~> 1.0)
- decidim-assemblies (0.27.4)
- decidim-core (= 0.27.4)
- decidim-blogs (0.27.4)
- decidim-admin (= 0.27.4)
- decidim-comments (= 0.27.4)
- decidim-core (= 0.27.4)
- decidim-budgets (0.27.4)
- decidim-comments (= 0.27.4)
- decidim-core (= 0.27.4)
- decidim-comments (0.27.4)
- decidim-core (= 0.27.4)
+ decidim-assemblies (0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-blogs (0.28.0)
+ decidim-admin (= 0.28.0)
+ decidim-comments (= 0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-budgets (0.28.0)
+ decidim-comments (= 0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-comments (0.28.0)
+ decidim-core (= 0.28.0)
redcarpet (~> 3.5, >= 3.5.1)
- decidim-consultations (0.27.4)
- decidim-admin (= 0.27.4)
- decidim-comments (= 0.27.4)
- decidim-core (= 0.27.4)
- decidim-core (0.27.4)
+ decidim-core (0.28.0)
active_link_to (~> 1.0)
- acts_as_list (~> 0.9)
+ acts_as_list (~> 1.0)
batch-loader (~> 1.2)
browser (~> 2.7)
- carrierwave (~> 2.2.1)
+ carrierwave (~> 2.2.5, >= 2.2.5)
cells-erb (~> 0.1.0)
cells-rails (~> 0.1.3)
charlock_holmes (~> 0.7)
date_validator (~> 0.12.0)
- decidim-api (= 0.27.4)
+ decidim-api (= 0.28.0)
devise (~> 4.7)
- devise-i18n (~> 1.2)
+ devise-i18n (~> 1.2, < 1.11.1)
diffy (~> 3.3)
- doorkeeper (~> 5.1)
+ doorkeeper (~> 5.6, >= 5.6.6)
doorkeeper-i18n (~> 4.0)
file_validators (~> 3.0)
fog-local (~> 0.6)
@@ -231,110 +205,110 @@ GEM
hashdiff (>= 0.4.0, < 2.0.0)
invisible_captcha (~> 0.12)
kaminari (~> 1.2, >= 1.2.1)
- loofah (~> 2.19.0)
+ loofah (~> 2.19, >= 2.19.1)
mime-types (>= 1.16, < 4.0)
mini_magick (~> 4.9)
mustache (~> 1.1.0)
+ net-smtp (~> 0.3.1)
omniauth (~> 2.0)
omniauth-facebook (~> 5.0)
omniauth-google-oauth2 (~> 1.0)
omniauth-rails_csrf_protection (~> 1.0)
omniauth-twitter (~> 1.4)
paper_trail (~> 12.0)
- pg (~> 1.1.4, < 2)
+ pg (~> 1.4.0, < 2)
pg_search (~> 2.2)
premailer-rails (~> 1.10)
- rack (~> 2.2, >= 2.2.3)
+ psych (~> 4.0)
+ rack (~> 2.2, >= 2.2.6.4)
rack-attack (~> 6.0)
- rails (~> 6.1.0)
+ rails (~> 6.1.7, >= 6.1.7.4)
rails-i18n (~> 6.0)
- ransack (~> 2.4.1)
+ ransack (~> 3.2.1)
redis (~> 4.1)
request_store (~> 1.5.0)
rubyXL (~> 3.4)
rubyzip (~> 2.0)
seven_zip_ruby (~> 1.3)
- social-share-button (~> 1.2, >= 1.2.1)
- valid_email2 (~> 2.1)
- webpacker (= 6.0.0.rc.5)
- webpush (~> 1.1)
+ shakapacker (~> 7.1.0)
+ valid_email2 (~> 4.0)
+ web-push (~> 3.0)
wisper (~> 2.0)
- decidim-debates (0.27.4)
- decidim-comments (= 0.27.4)
- decidim-core (= 0.27.4)
- decidim-dev (0.27.4)
- axe-core-rspec (~> 4.1.0)
+ decidim-debates (0.28.0)
+ decidim-comments (= 0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-dev (0.28.0)
+ bullet (~> 7.0)
byebug (~> 11.0)
- capybara (~> 3.24)
- db-query-matchers (~> 0.10.0)
- decidim (= 0.27.4)
- erb_lint (~> 0.0.35)
- factory_bot_rails (~> 4.8)
- i18n-tasks (~> 0.9.18)
- mdl (~> 0.5)
- nokogiri (~> 1.13)
- parallel_tests (~> 3.7)
- puma (~> 5.0)
+ capybara (~> 3.39)
+ decidim (= 0.28.0)
+ erb_lint (~> 0.4.0)
+ factory_bot_rails (~> 6.2)
+ faker (~> 3.2)
+ i18n-tasks (~> 1.0)
+ nokogiri (~> 1.14, >= 1.14.3)
+ parallel_tests (~> 4.2)
+ puma (~> 6.2, >= 6.3.1)
rails-controller-testing (~> 1.0)
+ rspec (~> 3.12)
rspec-cells (~> 0.3.7)
- rspec-html-matchers (~> 0.9.1)
- rspec-rails (~> 4.0)
+ rspec-html-matchers (~> 0.10)
+ rspec-rails (~> 6.0)
rspec-retry (~> 0.6.2)
- rspec_junit_formatter (~> 0.3.0)
- rubocop (~> 1.28.0)
- rubocop-rails (~> 2.14)
- rubocop-rspec (~> 2.10)
- selenium-webdriver (~> 4.1.0)
- simplecov (~> 0.21.0)
+ rspec_junit_formatter (~> 0.6.0)
+ rubocop (~> 1.50.0)
+ rubocop-faker (~> 1.1)
+ rubocop-rails (~> 2.19)
+ rubocop-rspec (~> 2.20)
+ selenium-webdriver (~> 4.9)
+ simplecov (~> 0.22.0)
simplecov-cobertura (~> 2.1.0)
w3c_rspec_validators (~> 0.3.0)
- webmock (~> 3.6)
+ webmock (~> 3.18)
wisper-rspec (~> 1.0)
- decidim-forms (0.27.4)
- decidim-core (= 0.27.4)
+ decidim-forms (0.28.0)
+ decidim-core (= 0.28.0)
wicked_pdf (~> 2.1)
wkhtmltopdf-binary (~> 0.12)
- decidim-generators (0.27.4)
- decidim-core (= 0.27.4)
- decidim-meetings (0.27.4)
- decidim-core (= 0.27.4)
- decidim-forms (= 0.27.4)
+ decidim-generators (0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-meetings (0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-forms (= 0.28.0)
icalendar (~> 2.5)
- decidim-pages (0.27.4)
- decidim-core (= 0.27.4)
- decidim-participatory_processes (0.27.4)
- decidim-core (= 0.27.4)
- decidim-proposals (0.27.4)
- decidim-comments (= 0.27.4)
- decidim-core (= 0.27.4)
- doc2text (~> 0.4.5)
+ decidim-pages (0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-participatory_processes (0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-proposals (0.28.0)
+ decidim-comments (= 0.28.0)
+ decidim-core (= 0.28.0)
+ doc2text (~> 0.4.6)
redcarpet (~> 3.5, >= 3.5.1)
- decidim-sortitions (0.27.4)
- decidim-admin (= 0.27.4)
- decidim-comments (= 0.27.4)
- decidim-core (= 0.27.4)
- decidim-proposals (= 0.27.4)
- decidim-surveys (0.27.4)
- decidim-core (= 0.27.4)
- decidim-forms (= 0.27.4)
- decidim-templates (= 0.27.4)
- decidim-system (0.27.4)
+ decidim-sortitions (0.28.0)
+ decidim-admin (= 0.28.0)
+ decidim-comments (= 0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-proposals (= 0.28.0)
+ decidim-surveys (0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-forms (= 0.28.0)
+ decidim-templates (= 0.28.0)
+ decidim-system (0.28.0)
active_link_to (~> 1.0)
- decidim-core (= 0.27.4)
+ decidim-core (= 0.28.0)
devise (~> 4.7)
devise-i18n (~> 1.2)
- devise_invitable (~> 2.0)
- decidim-templates (0.27.4)
- decidim-core (= 0.27.4)
- decidim-forms (= 0.27.4)
- decidim-verifications (0.27.4)
- decidim-core (= 0.27.4)
+ devise_invitable (~> 2.0, >= 2.0.9)
+ decidim-templates (0.28.0)
+ decidim-core (= 0.28.0)
+ decidim-forms (= 0.28.0)
+ decidim-verifications (0.28.0)
+ decidim-core (= 0.28.0)
declarative-builder (0.1.0)
declarative-option (< 0.2.0)
declarative-option (0.1.0)
- descendants_tracker (0.0.4)
- thread_safe (~> 0.3, >= 0.3.1)
- devise (4.9.2)
+ devise (4.9.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
@@ -342,7 +316,7 @@ GEM
warden (~> 1.2.3)
devise-i18n (1.11.0)
devise (>= 4.9.0)
- devise_invitable (2.0.8)
+ devise_invitable (2.0.9)
actionmailer (>= 5.0)
devise (>= 4.6)
diff-lcs (1.5.0)
@@ -351,14 +325,12 @@ GEM
nokogiri (>= 1.13.2, < 1.15.0)
rubyzip (~> 2.3.0)
docile (1.4.0)
- doorkeeper (5.6.6)
+ doorkeeper (5.6.8)
railties (>= 5)
doorkeeper-i18n (4.0.1)
- dumb_delegator (1.0.0)
- erb_lint (0.0.37)
+ erb_lint (0.4.0)
activesupport
- better_html (~> 1.0.7)
- html_tokenizer
+ better_html (>= 2.0.1)
parser (>= 2.7.1.4)
rainbow
rubocop
@@ -366,23 +338,23 @@ GEM
erbse (0.1.4)
temple
erubi (1.12.0)
- escape_utils (1.3.0)
- excon (0.100.0)
- execjs (2.8.1)
+ escape_utils (1.2.2)
+ excon (0.108.0)
extended-markdown-filter (0.7.0)
html-pipeline (~> 2.9)
- factory_bot (4.11.1)
- activesupport (>= 3.0.0)
- factory_bot_rails (4.11.1)
- factory_bot (~> 4.11.1)
- railties (>= 3.0.0)
- faker (2.23.0)
+ factory_bot (6.4.5)
+ activesupport (>= 5.0.0)
+ factory_bot_rails (6.4.3)
+ factory_bot (~> 6.4)
+ railties (>= 5.0.0)
+ faker (3.2.2)
i18n (>= 1.8.11, < 2)
- faraday (2.7.10)
+ faraday (2.8.1)
+ base64
faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4)
faraday-net_http (3.0.2)
- ffi (1.15.5)
+ ffi (1.16.3)
file_validators (3.0.0)
activemodel (>= 3.2)
mime-types (>= 1.0)
@@ -401,48 +373,46 @@ GEM
railties (>= 4.1, < 7.1)
gemoji (3.0.1)
geocoder (1.8.2)
- globalid (1.1.0)
- activesupport (>= 5.0)
- graphql (1.12.24)
- graphql-docs (2.1.0)
+ globalid (1.2.1)
+ activesupport (>= 6.1)
+ graphql (2.0.27)
+ graphql-docs (3.0.1)
commonmarker (~> 0.16)
- escape_utils (~> 1.2)
+ escape_utils (~> 1.2.2)
extended-markdown-filter (~> 0.4)
gemoji (~> 3.0)
- graphql (~> 1.12)
+ graphql (~> 2.0)
html-pipeline (~> 2.9)
sass (~> 3.4)
- hashdiff (1.0.1)
+ hashdiff (1.1.0)
hashie (5.0.0)
highline (2.1.0)
- hkdf (0.3.0)
html-pipeline (2.14.3)
activesupport (>= 2)
nokogiri (>= 1.4)
- html_tokenizer (0.0.7)
htmlentities (4.3.4)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
- i18n-tasks (0.9.37)
+ i18n-tasks (1.0.13)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
+ better_html (>= 1.0, < 3.0)
erubi
highline (>= 2.0.0)
i18n
- parser (>= 2.2.3.0)
+ parser (>= 3.2.2.1)
rails-i18n
rainbow (>= 2.2.2, < 4.0)
terminal-table (>= 1.5.1)
- icalendar (2.8.0)
+ icalendar (2.10.1)
ice_cube (~> 0.16)
ice_cube (0.16.4)
- ice_nine (0.11.2)
image_processing (1.12.2)
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
invisible_captcha (0.13.0)
rails (>= 3.2.0)
- json (2.6.3)
+ json (2.7.1)
jwt (2.7.1)
kaminari (1.2.2)
activesupport (>= 4.1.0)
@@ -456,10 +426,6 @@ GEM
activerecord
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
- kramdown (2.4.0)
- rexml
- kramdown-parser-gfm (1.1.0)
- kramdown (~> 2.0)
launchy (2.5.2)
addressable (~> 2.8)
letter_opener (1.8.1)
@@ -472,9 +438,9 @@ GEM
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
- loofah (2.19.1)
+ loofah (2.22.0)
crass (~> 1.0.2)
- nokogiri (>= 1.5.9)
+ nokogiri (>= 1.12.0)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
@@ -482,37 +448,26 @@ GEM
net-smtp
marcel (1.0.2)
matrix (0.4.2)
- mdl (0.12.0)
- kramdown (~> 2.3)
- kramdown-parser-gfm (~> 1.1)
- mixlib-cli (~> 2.1, >= 2.1.1)
- mixlib-config (>= 2.2.1, < 4)
- mixlib-shellout
method_source (1.0.0)
- mime-types (3.5.0)
+ mime-types (3.5.2)
mime-types-data (~> 3.2015)
- mime-types-data (3.2023.0808)
+ mime-types-data (3.2023.1205)
mini_magick (4.12.0)
mini_mime (1.1.5)
- minitest (5.19.0)
- mixlib-cli (2.1.8)
- mixlib-config (3.0.27)
- tomlrb
- mixlib-shellout (3.2.7)
- chef-utils
+ minitest (5.20.0)
msgpack (1.7.2)
multi_xml (0.6.0)
mustache (1.1.1)
- net-imap (0.3.7)
+ net-imap (0.4.9)
date
net-protocol
net-pop (0.1.2)
net-protocol
- net-protocol (0.2.1)
+ net-protocol (0.2.2)
timeout
net-smtp (0.3.3)
net-protocol
- nio4r (2.5.9)
+ nio4r (2.7.0)
nokogiri (1.14.5-x86_64-linux)
racc (~> 1.4)
oauth (1.1.0)
@@ -528,7 +483,7 @@ GEM
rack (>= 1.2, < 4)
snaky_hash (~> 2.0)
version_gem (~> 1.1)
- omniauth (2.1.1)
+ omniauth (2.1.2)
hashie (>= 3.4.6)
rack (>= 2.2.3)
rack-protection
@@ -551,21 +506,22 @@ GEM
omniauth-twitter (1.4.0)
omniauth-oauth (~> 1.1)
rack
+ openssl (3.2.0)
orm_adapter (0.5.0)
paper_trail (12.3.0)
activerecord (>= 5.2)
request_store (~> 1.1)
- parallel (1.23.0)
- parallel_tests (3.13.0)
+ parallel (1.24.0)
+ parallel_tests (4.4.0)
parallel
- parser (3.2.2.3)
+ parser (3.3.0.2)
ast (~> 2.4.1)
racc
- pg (1.1.4)
+ pg (1.4.6)
pg_search (2.3.6)
activerecord (>= 5.2)
activesupport (>= 5.2)
- premailer (1.21.0)
+ premailer (1.22.0)
addressable
css_parser (>= 1.12.0)
htmlentities (>= 4.0.0)
@@ -573,35 +529,38 @@ GEM
actionmailer (>= 3)
net-smtp
premailer (~> 1.7, >= 1.7.9)
- public_suffix (5.0.3)
- puma (5.6.6)
+ psych (4.0.6)
+ stringio
+ public_suffix (5.0.4)
+ puma (6.4.1)
nio4r (~> 2.0)
- racc (1.7.1)
+ racc (1.7.3)
rack (2.2.8)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
rack-cors (1.1.1)
rack (>= 2.0.0)
- rack-protection (3.1.0)
+ rack-protection (3.2.0)
+ base64 (>= 0.1.0)
rack (~> 2.2, >= 2.2.4)
- rack-proxy (0.7.6)
+ rack-proxy (0.7.7)
rack
rack-test (2.1.0)
rack (>= 1.3)
- rails (6.1.7.4)
- actioncable (= 6.1.7.4)
- actionmailbox (= 6.1.7.4)
- actionmailer (= 6.1.7.4)
- actionpack (= 6.1.7.4)
- actiontext (= 6.1.7.4)
- actionview (= 6.1.7.4)
- activejob (= 6.1.7.4)
- activemodel (= 6.1.7.4)
- activerecord (= 6.1.7.4)
- activestorage (= 6.1.7.4)
- activesupport (= 6.1.7.4)
+ rails (6.1.7.6)
+ actioncable (= 6.1.7.6)
+ actionmailbox (= 6.1.7.6)
+ actionmailer (= 6.1.7.6)
+ actionpack (= 6.1.7.6)
+ actiontext (= 6.1.7.6)
+ actionview (= 6.1.7.6)
+ activejob (= 6.1.7.6)
+ activemodel (= 6.1.7.6)
+ activerecord (= 6.1.7.6)
+ activestorage (= 6.1.7.6)
+ activesupport (= 6.1.7.6)
bundler (>= 1.15.0)
- railties (= 6.1.7.4)
+ railties (= 6.1.7.6)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
@@ -611,32 +570,33 @@ GEM
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
- rails-html-sanitizer (1.5.0)
- loofah (~> 2.19, >= 2.19.1)
+ rails-html-sanitizer (1.6.0)
+ loofah (~> 2.21)
+ nokogiri (~> 1.14)
rails-i18n (6.0.0)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 7)
- railties (6.1.7.4)
- actionpack (= 6.1.7.4)
- activesupport (= 6.1.7.4)
+ railties (6.1.7.6)
+ actionpack (= 6.1.7.6)
+ activesupport (= 6.1.7.6)
method_source
rake (>= 12.2)
thor (~> 1.0)
rainbow (3.1.1)
- rake (13.0.6)
- ransack (2.4.2)
- activerecord (>= 5.2.4)
- activesupport (>= 5.2.4)
+ rake (13.1.0)
+ ransack (3.2.1)
+ activerecord (>= 6.1.5)
+ activesupport (>= 6.1.5)
i18n
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
redcarpet (3.6.0)
redis (4.8.1)
- regexp_parser (2.8.1)
+ regexp_parser (2.9.0)
request_store (1.5.1)
rack (>= 1.4)
- responders (3.1.0)
+ responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.6)
@@ -644,57 +604,65 @@ GEM
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
- rspec-cells (0.3.8)
+ rspec-cells (0.3.9)
cells (>= 4.0.0, < 6.0.0)
- rspec-rails (>= 3.0.0, < 6.1.0)
+ rspec-rails (>= 3.0.0, < 6.2.0)
rspec-core (3.12.2)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
- rspec-html-matchers (0.9.4)
+ rspec-html-matchers (0.10.0)
nokogiri (~> 1)
- rspec (>= 3.0.0.a, < 4)
+ rspec (>= 3.0.0.a)
rspec-mocks (3.12.6)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
- rspec-rails (4.1.2)
- actionpack (>= 4.2)
- activesupport (>= 4.2)
- railties (>= 4.2)
- rspec-core (~> 3.10)
- rspec-expectations (~> 3.10)
- rspec-mocks (~> 3.10)
- rspec-support (~> 3.10)
+ rspec-rails (6.1.0)
+ actionpack (>= 6.1)
+ activesupport (>= 6.1)
+ railties (>= 6.1)
+ rspec-core (~> 3.12)
+ rspec-expectations (~> 3.12)
+ rspec-mocks (~> 3.12)
+ rspec-support (~> 3.12)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.12.1)
- rspec_junit_formatter (0.3.0)
+ rspec_junit_formatter (0.6.0)
rspec-core (>= 2, < 4, != 2.12.0)
- rubocop (1.28.2)
+ rubocop (1.50.2)
+ json (~> 2.3)
parallel (~> 1.10)
- parser (>= 3.1.0.0)
+ parser (>= 3.2.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
- rexml
- rubocop-ast (>= 1.17.0, < 2.0)
+ rexml (>= 3.2.5, < 4.0)
+ rubocop-ast (>= 1.28.0, < 2.0)
ruby-progressbar (~> 1.7)
- unicode-display_width (>= 1.4.0, < 3.0)
- rubocop-ast (1.29.0)
+ unicode-display_width (>= 2.4.0, < 3.0)
+ rubocop-ast (1.30.0)
parser (>= 3.2.1.0)
+ rubocop-capybara (2.20.0)
+ rubocop (~> 1.41)
+ rubocop-factory_bot (2.24.0)
+ rubocop (~> 1.33)
rubocop-faker (1.1.0)
faker (>= 2.12.0)
rubocop (>= 0.82.0)
rubocop-performance (1.6.1)
rubocop (>= 0.71.0)
- rubocop-rails (2.15.2)
+ rubocop-rails (2.23.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
- rubocop (>= 1.7.0, < 2.0)
- rubocop-rspec (2.11.1)
- rubocop (~> 1.19)
+ rubocop (>= 1.33.0, < 2.0)
+ rubocop-ast (>= 1.30.0, < 2.0)
+ rubocop-rspec (2.25.0)
+ rubocop (~> 1.40)
+ rubocop-capybara (~> 2.17)
+ rubocop-factory_bot (~> 2.22)
ruby-progressbar (1.13.0)
- ruby-vips (2.1.4)
+ ruby-vips (2.2.0)
ffi (~> 1.12)
ruby2_keywords (0.0.5)
rubyXL (3.4.25)
@@ -706,13 +674,18 @@ GEM
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
- selenium-webdriver (4.1.0)
- childprocess (>= 0.5, < 5.0)
+ selenium-webdriver (4.16.0)
rexml (~> 3.2, >= 3.2.5)
- rubyzip (>= 1.2.2)
+ rubyzip (>= 1.2.2, < 3.0)
+ websocket (~> 1.0)
semantic_range (3.0.0)
seven_zip_ruby (1.3.0)
- simplecov (0.21.2)
+ shakapacker (7.1.0)
+ activesupport (>= 5.2)
+ rack-proxy (>= 0.6.1)
+ railties (>= 5.2)
+ semantic_range (>= 2.3.0)
+ simplecov (0.22.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
@@ -725,40 +698,34 @@ GEM
snaky_hash (2.0.1)
hashie
version_gem (~> 1.1, >= 1.1.1)
- social-share-button (1.2.4)
- coffee-rails
spring (2.1.1)
spring-watcher-listen (2.0.1)
listen (>= 2.7, < 4.0)
spring (>= 1.2, < 3.0)
- sprockets (4.2.0)
+ sprockets (4.2.1)
concurrent-ruby (~> 1.0)
rack (>= 2.2.4, < 4)
sprockets-rails (3.4.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
- ssrf_filter (1.1.1)
- temple (0.10.2)
+ ssrf_filter (1.1.2)
+ stringio (3.1.0)
+ temple (0.10.3)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
- thor (1.2.2)
- thread_safe (0.3.6)
- tilt (2.2.0)
- timeout (0.4.0)
- tomlrb (2.0.3)
+ thor (1.3.0)
+ tilt (2.3.0)
+ timeout (0.4.1)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
uber (0.1.0)
- unicode-display_width (2.4.2)
- valid_email2 (2.3.1)
+ unicode-display_width (2.5.0)
+ uniform_notifier (1.16.0)
+ valid_email2 (4.0.6)
activemodel (>= 3.2)
mail (~> 2.5)
version_gem (1.1.3)
- virtus (2.0.0)
- axiom-types (~> 0.1)
- coercible (~> 1.0)
- descendants_tracker (~> 0.0, >= 0.0.3)
w3c_rspec_validators (0.3.0)
rails
rspec
@@ -774,29 +741,25 @@ GEM
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
railties (>= 6.0.0)
- webmock (3.18.1)
+ web-push (3.0.1)
+ jwt (~> 2.0)
+ openssl (~> 3.0)
+ webmock (3.19.1)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
- webpacker (6.0.0.rc.5)
- activesupport (>= 5.2)
- rack-proxy (>= 0.6.1)
- railties (>= 5.2)
- semantic_range (>= 2.3.0)
- webpush (1.1.0)
- hkdf (~> 0.2)
- jwt (~> 2.0)
+ websocket (1.2.10)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
- wicked_pdf (2.6.3)
+ wicked_pdf (2.7.0)
activesupport
wisper (2.0.1)
wisper-rspec (1.1.0)
wkhtmltopdf-binary (0.12.6.6)
xpath (3.2.0)
nokogiri (~> 1.8)
- zeitwerk (2.6.11)
+ zeitwerk (2.6.12)
PLATFORMS
x86_64-linux
@@ -805,11 +768,10 @@ DEPENDENCIES
bootsnap (~> 1.4)
byebug (~> 11.0)
dalli (~> 2.7, >= 2.7.10)
- decidim (~> 0.27.0)
- decidim-consultations (~> 0.27.0)
- decidim-dev (~> 0.27.0)
+ decidim (~> 0.28.0)
+ decidim-dev (~> 0.28.0)
decidim-term_customizer!
- faker (~> 2.14)
+ faker (~> 3.2)
letter_opener_web (~> 2.0)
listen (~> 3.1)
puma (>= 5.6.2)
@@ -820,7 +782,7 @@ DEPENDENCIES
web-console (~> 4.2)
RUBY VERSION
- ruby 3.0.6p216
+ ruby 3.1.1p18
BUNDLED WITH
- 2.2.33
+ 2.4.6
diff --git a/Rakefile b/Rakefile
index dd14cff..1cdcf43 100644
--- a/Rakefile
+++ b/Rakefile
@@ -6,20 +6,6 @@ def install_module(path)
Dir.chdir(path) do
system("bundle exec rake decidim_term_customizer:install:migrations")
system("bundle exec rake db:migrate")
-
- # Temporary fix to overcome the issue with sass-embedded, see:
- # https://github.com/decidim/decidim/pull/11074
- system("npm i sass-embedded@~1.62.0")
- end
-end
-
-# Temporary fix to overcome the issue with babel plugin updates, see:
-# https://github.com/decidim/decidim/pull/10916
-def fix_babel_config(path)
- Dir.chdir(path) do
- babel_config = "#{Dir.pwd}/babel.config.json"
- File.delete(babel_config) if File.exist?(babel_config)
- FileUtils.cp("#{__dir__}/babel.config.json", Dir.pwd)
end
end
@@ -32,7 +18,6 @@ end
desc "Generates a dummy app for testing"
task test_app: "decidim:generate_external_test_app" do
ENV["RAILS_ENV"] = "test"
- fix_babel_config("spec/decidim_dummy_app")
install_module("spec/decidim_dummy_app")
end
@@ -50,7 +35,6 @@ task :development_app do
)
end
- fix_babel_config("development_app")
install_module("development_app")
seed_db("development_app")
end
diff --git a/app/commands/decidim/term_customizer/admin/create_translation.rb b/app/commands/decidim/term_customizer/admin/create_translation.rb
index c749f99..081a688 100644
--- a/app/commands/decidim/term_customizer/admin/create_translation.rb
+++ b/app/commands/decidim/term_customizer/admin/create_translation.rb
@@ -45,8 +45,8 @@ def create_translations
TermCustomizer::Translation.create!(
translation_set: form.translation_set,
key: form.key,
- value: value,
- locale: locale
+ value:,
+ locale:
)
end
end
diff --git a/app/commands/decidim/term_customizer/admin/import_translation_keys.rb b/app/commands/decidim/term_customizer/admin/import_translation_keys.rb
index 59469a5..c9a96f6 100644
--- a/app/commands/decidim/term_customizer/admin/import_translation_keys.rb
+++ b/app/commands/decidim/term_customizer/admin/import_translation_keys.rb
@@ -44,12 +44,12 @@ def create_translations
items = form.keys.map do |key|
form.current_organization.available_locales.map do |locale|
attrs = {
- key: key,
- locale: locale
+ key:,
+ locale:
}
next unless form.translation_set.translations.find_by(attrs).nil?
- attrs.merge(value: I18n.t(key, locale: locale, default: ""))
+ attrs.merge(value: I18n.t(key, locale:, default: ""))
end
end.flatten
diff --git a/app/commands/decidim/term_customizer/admin/update_translation.rb b/app/commands/decidim/term_customizer/admin/update_translation.rb
index fcddd5c..c4e4356 100644
--- a/app/commands/decidim/term_customizer/admin/update_translation.rb
+++ b/app/commands/decidim/term_customizer/admin/update_translation.rb
@@ -43,21 +43,21 @@ def update_translations!
l_translation = TermCustomizer::Translation.find_by(
translation_set: translation.translation_set,
key: translation.key,
- locale: locale
+ locale:
)
if l_translation
l_translation.update!(
key: form.key,
- value: value,
- locale: locale
+ value:,
+ locale:
)
else
l_translation = TermCustomizer::Translation.create!(
translation_set: translation.translation_set,
key: form.key,
- value: value,
- locale: locale
+ value:,
+ locale:
)
end
diff --git a/app/controllers/decidim/term_customizer/admin/add_translations_controller.rb b/app/controllers/decidim/term_customizer/admin/add_translations_controller.rb
index 5ceb072..7d089fe 100644
--- a/app/controllers/decidim/term_customizer/admin/add_translations_controller.rb
+++ b/app/controllers/decidim/term_customizer/admin/add_translations_controller.rb
@@ -16,7 +16,7 @@ def create
enforce_permission_to :create, :translation
@form = form(TranslationKeyImportForm).from_params(
params,
- current_organization: current_organization,
+ current_organization:,
translation_set: set
)
diff --git a/app/controllers/decidim/term_customizer/admin/translation_sets_controller.rb b/app/controllers/decidim/term_customizer/admin/translation_sets_controller.rb
index 8a2cba8..d27f595 100644
--- a/app/controllers/decidim/term_customizer/admin/translation_sets_controller.rb
+++ b/app/controllers/decidim/term_customizer/admin/translation_sets_controller.rb
@@ -21,11 +21,16 @@ def new
)
end
+ def edit
+ enforce_permission_to :update, :translation_set, translation_set: set
+ @form = form(TranslationSetForm).from_model(set)
+ end
+
def create
enforce_permission_to :create, :translation_set
@form = form(TranslationSetForm).from_params(
params,
- current_organization: current_organization
+ current_organization:
)
CreateTranslationSet.call(@form) do
@@ -41,16 +46,11 @@ def create
end
end
- def edit
- enforce_permission_to :update, :translation_set, translation_set: set
- @form = form(TranslationSetForm).from_model(set)
- end
-
def update
enforce_permission_to :update, :translation_set, translation_set: set
@form = form(TranslationSetForm).from_params(
params,
- current_organization: current_organization
+ current_organization:
)
UpdateTranslationSet.call(@form, set) do
@@ -84,7 +84,7 @@ def duplicate
hash["name_#{locale}"] = I18n.t(
"translation_sets.duplicate.copied_set_name",
name: set.name[locale],
- locale: locale,
+ locale:,
scope: "decidim.term_customizer.admin"
)
end
@@ -92,7 +92,7 @@ def duplicate
@form = form(TranslationSetForm).from_params(
params.merge(name_attrs),
- current_organization: current_organization
+ current_organization:
)
DuplicateTranslationSet.call(@form, set) do
diff --git a/app/controllers/decidim/term_customizer/admin/translations_controller.rb b/app/controllers/decidim/term_customizer/admin/translations_controller.rb
index e431fa5..88be650 100644
--- a/app/controllers/decidim/term_customizer/admin/translations_controller.rb
+++ b/app/controllers/decidim/term_customizer/admin/translations_controller.rb
@@ -18,11 +18,16 @@ def new
@form = form(TranslationForm).from_model(Translation.new)
end
+ def edit
+ enforce_permission_to(:update, :translation, translation:)
+ @form = form(TranslationForm).from_model(translation)
+ end
+
def create
enforce_permission_to :create, :translation
@form = form(TranslationForm).from_params(
params,
- current_organization: current_organization,
+ current_organization:,
translation_set: set
)
@@ -39,16 +44,11 @@ def create
end
end
- def edit
- enforce_permission_to :update, :translation, translation: translation
- @form = form(TranslationForm).from_model(translation)
- end
-
def update
- enforce_permission_to :update, :translation, translation: translation
+ enforce_permission_to(:update, :translation, translation:)
@form = form(TranslationForm).from_params(
params,
- current_organization: current_organization,
+ current_organization:,
translation_set: set
)
@@ -66,7 +66,7 @@ def update
end
def destroy
- enforce_permission_to :destroy, :translation, translation: translation
+ enforce_permission_to(:destroy, :translation, translation:)
# Destroy all locales of the translation key
pfm = TermCustomizer::PluralFormsManager.new(current_organization)
@@ -104,7 +104,7 @@ def import
@import = form(Admin::TranslationsImportForm).from_params(
params,
- current_organization: current_organization
+ current_organization:
)
ImportSetTranslations.call(@import, set) do
on(:ok) do
diff --git a/app/controllers/decidim/term_customizer/admin/translations_destroys_controller.rb b/app/controllers/decidim/term_customizer/admin/translations_destroys_controller.rb
index ba6b2e0..b2fb71b 100644
--- a/app/controllers/decidim/term_customizer/admin/translations_destroys_controller.rb
+++ b/app/controllers/decidim/term_customizer/admin/translations_destroys_controller.rb
@@ -39,7 +39,7 @@ def set_form
@form = form(Admin::TranslationsDestroyForm).from_params(
params
).with_context(
- current_organization: current_organization,
+ current_organization:,
translation_set: set
)
end
diff --git a/app/forms/decidim/term_customizer/admin/translation_form.rb b/app/forms/decidim/term_customizer/admin/translation_form.rb
index 7130859..112cf2f 100644
--- a/app/forms/decidim/term_customizer/admin/translation_form.rb
+++ b/app/forms/decidim/term_customizer/admin/translation_form.rb
@@ -14,7 +14,7 @@ class TranslationForm < Decidim::Form
translatable_attribute :value, String
validates :key, presence: true
- validates :key, format: { with: %r{\A([a-z0-9_/?\-]+\.)*[a-z0-9_/?\-]+\z} }, unless: -> { key.blank? }
+ validates :key, format: { with: %r{\A([a-z0-9_/?-]+\.)*[a-z0-9_/?-]+\z} }, unless: -> { key.blank? }
validates :value, translatable_presence: true
validate :key_uniqueness
@@ -30,8 +30,8 @@ def map_model(model)
def key_uniqueness
errors.add(:key, :taken) if translation_set && translation_set.translations.where(
locale: I18n.locale,
- key: key
- ).where.not(id: id).exists?
+ key:
+ ).where.not(id:).exists?
end
end
end
diff --git a/app/models/decidim/term_customizer/translation.rb b/app/models/decidim/term_customizer/translation.rb
index fd3c728..7b85589 100644
--- a/app/models/decidim/term_customizer/translation.rb
+++ b/app/models/decidim/term_customizer/translation.rb
@@ -10,7 +10,7 @@ class Translation < TermCustomizer::ApplicationRecord
validates :locale, presence: true
validates :key, presence: true
- validates :key, format: { with: %r{\A([a-z0-9_/?\-]+\.)*[a-z0-9_/?\-]+\z} }, unless: -> { key.blank? }
+ validates :key, format: { with: %r{\A([a-z0-9_/?-]+\.)*[a-z0-9_/?-]+\z} }, unless: -> { key.blank? }
validates :key, uniqueness: { scope: [:translation_set, :locale] }, unless: -> { key.blank? }
class << self
diff --git a/app/views/decidim/term_customizer/admin/add_translations/index.html.erb b/app/views/decidim/term_customizer/admin/add_translations/index.html.erb
index 210f583..b1fabd2 100644
--- a/app/views/decidim/term_customizer/admin/add_translations/index.html.erb
+++ b/app/views/decidim/term_customizer/admin/add_translations/index.html.erb
@@ -1,85 +1,85 @@
-
-
-
-
- <%= link_to t("decidim.term_customizer.menu.term_customizer"), translation_sets_path %>
- >
- <%= link_to translated_attribute(set.name), translation_set_translations_path(set) %>
- >
- <%= t "decidim.term_customizer.admin.titles.add_multiple_translations" %>
+
+
+
-
- <%= link_to t("actions.back", scope: "decidim.term_customizer.admin"), translation_set_translations_path(set), class: "button hollow tiny button--simple" %>
+ <%= link_to t("actions.back", scope: "decidim.term_customizer.admin"), translation_set_translations_path(set), class: "button button__sm button__secondary hollow tiny button--simple" %>
-
-
-
-
-
-
<%= t ".help_title" %>
- <%= t ".help_html", button_name: t(".add") %>
+
-
-
- <%= form_tag search_translation_set_add_translations_path, autocomplete: "off", method: :get do %>
-
- <%= search_field_tag :term, nil, label: false, id: "tc-autocomplete", class: "autocomplete-input input-group-field", placeholder: t(".search"), data: {
- autocomplete: {
- searchURL: search_translation_set_add_translations_url,
- searchPromptText: t("autocomplete.search_prompt", scope: "decidim.admin")
- }
- } %>
-
- <% end %>
+
+
<%= t ".help_title" %>
+ <%= t ".help_html", button_name: t(".add") %>
+
+
+
+
+ <%= form_tag search_translation_set_add_translations_path, autocomplete: "off", method: :get do %>
+
+ <%= search_field_tag :term, nil, label: false, id: "tc-autocomplete", class: "autocomplete-input input-group-field", placeholder: t(".search"), data: {
+ autocomplete: {
+ searchURL: search_translation_set_add_translations_url,
+ searchPromptText: t("autocomplete.search_prompt", scope: "decidim.admin")
+ }
+ } %>
+
+ <% end %>
+
-
-
-<%= decidim_form_for(@form, url: translation_set_add_translations_path(set), html: { class: "form translations-form add_translations translations_form_admin" }) do |f| %>
-
-
-
-
-<% end %>
-
-<%= javascript_pack_tag "decidim_term_customizer_admin" %>
-
+
+<%= append_javascript_pack_tag "decidim_term_customizer_admin" %>
diff --git a/app/views/decidim/term_customizer/admin/translation_sets/_form.html.erb b/app/views/decidim/term_customizer/admin/translation_sets/_form.html.erb
index d404877..f50fd17 100644
--- a/app/views/decidim/term_customizer/admin/translation_sets/_form.html.erb
+++ b/app/views/decidim/term_customizer/admin/translation_sets/_form.html.erb
@@ -1,55 +1,36 @@
-
-
-
-
-
-
-
- <%= link_to t("actions.back", scope: "decidim.term_customizer.admin"), translation_sets_path, class: "button hollow tiny button--simple" %>
-
+
+
<%= t ".help_title" %>
+ <%= t ".help_html" %>
+
<%= t ".constraint_help_title" %>
+ <%= t ".constraint_help_html" %>
+
+