From f6e55a451a7a4cc362760cdb1f8a2d90fe742cb5 Mon Sep 17 00:00:00 2001 From: Laura J <75725233+laurajaime@users.noreply.github.com> Date: Mon, 16 Dec 2024 12:08:02 +0100 Subject: [PATCH] Upgrade to Decidim v0.28 (#74) * Upgrade Ruby and Decidim and challenges admin CRUD * Upgrade: survey in challenges * Upgrade: challenges * Changes in show challenges * More changes in challenges * Update admin components * Fix admin tests * Adapt SDGs list * Rework challenges * Rework views in problems * Some rework in challenges * Rework solutions views * Rubocopify * Fix tests * Rework all filters and create solutions * Fix tests and remove category * Fix styles in global search * Fix public filters * Remove unnecesary method * Rework sdgs filters * Fix tests * Small changes * Rework helper includes --- .github/workflows/challenges_system_tests.yml | 2 +- .github/workflows/linters.yml | 2 +- .github/workflows/problems_system_tests.yml | 2 +- .github/workflows/sgds_system_tests.yml | 2 +- .github/workflows/solutions_system_tests.yml | 2 +- .github/workflows/test.yml | 2 +- .node-version | 2 +- .rubocop.yml | 5 +- .ruby-version | 2 +- CHANGELOG.md | 6 + Gemfile | 15 +- Gemfile.lock | 511 ++++++++------- .../decidim/challenges/challenge_cell.rb | 2 +- .../decidim/challenges/challenge_g/show.erb | 47 ++ ...hallenge_m_cell.rb => challenge_g_cell.rb} | 25 +- .../decidim/challenges/challenge_m/show.erb | 50 -- app/cells/decidim/problems/problem_cell.rb | 4 +- app/cells/decidim/problems/problem_g/show.erb | 35 ++ .../{problem_m_cell.rb => problem_g_cell.rb} | 7 +- app/cells/decidim/problems/problem_m/show.erb | 54 -- app/cells/decidim/solutions/solution_cell.rb | 2 +- .../decidim/solutions/solution_g/show.erb | 30 + ...{solution_m_cell.rb => solution_g_cell.rb} | 8 +- .../decidim/solutions/solution_m/show.erb | 63 -- .../challenges/admin/update_challenge.rb | 2 +- .../decidim/challenges/survey_challenge.rb | 4 +- .../decidim/problems/admin/update_problem.rb | 2 +- .../solutions/admin/update_solution.rb | 2 +- .../concerns/decidim/with_default_filters.rb | 23 + app/controllers/concerns/decidim/with_sdgs.rb | 19 + .../challenge_publications_controller.rb | 4 +- .../challenges/admin/challenges_controller.rb | 16 +- .../challenges/admin/surveys_controller.rb | 28 +- .../challenges/challenges_controller.rb | 28 +- .../decidim/challenges/surveys_controller.rb | 4 +- .../admin/problem_publications_controller.rb | 4 +- .../problems/admin/problems_controller.rb | 17 +- .../decidim/problems/problems_controller.rb | 29 +- .../admin/solution_publications_controller.rb | 4 +- .../solutions/admin/solutions_controller.rb | 27 +- .../decidim/solutions/solutions_controller.rb | 64 +- .../decidim/problems/admin/problems_form.rb | 2 +- .../decidim/solutions/admin/solutions_form.rb | 4 +- app/forms/decidim/solutions/solutions_form.rb | 2 +- .../decidim/challenges/application_helper.rb | 15 + .../challenges/challenge_cells_helper.rb | 3 +- .../decidim/challenges/challenges_helper.rb | 20 +- .../decidim/problems/problem_cells_helper.rb | 23 + .../decidim/problems/problems_helper.rb | 22 +- app/helpers/decidim/sdgs/sdgs_helper.rb | 11 +- .../solutions/solution_cells_helper.rb | 2 +- .../decidim/solutions/solutions_helper.rb | 21 + app/models/decidim/challenges/challenge.rb | 3 +- app/models/decidim/problems/problem.rb | 11 +- app/models/decidim/solutions/solution.rb | 5 +- app/packs/entrypoints/decidim_sdgs.scss | 2 + app/packs/entrypoints/decidim_shared.js | 1 + app/packs/entrypoints/decidim_shared.scss | 1 + app/packs/src/decidim/sdgs/filter.js | 12 +- .../decidim/challenges/challenges.scss | 134 +--- .../decidim/problems/problems.scss | 133 +--- app/packs/stylesheets/decidim/sdgs/ods.scss | 31 +- .../decidim/sdgs/sdgs_filter/modal.scss | 75 ++- .../stylesheets/decidim/shared/_cards.scss | 52 ++ .../stylesheets/decidim/shared/base.scss | 9 + .../decidim/solutions/solutions.scss | 56 +- .../solutions/solutions/_solution.scss | 85 --- .../decidim/challenges/challenge_presenter.rb | 8 +- .../decidim/problems/problem_presenter.rb | 6 +- .../decidim/solutions/solution_presenter.rb | 16 +- .../decidim/challenges/data_serializer.rb | 2 +- .../decidim/challenges/survey_serializer.rb | 2 +- .../decidim/challenges/challenges_type.rb | 2 +- app/types/decidim/problems/problems_type.rb | 2 +- app/types/decidim/solutions/solutions_type.rb | 2 +- .../admin/challenges/_form.html.erb | 125 ++-- .../challenges/admin/challenges/edit.html.erb | 32 +- .../admin/challenges/index.html.erb | 159 ++--- .../challenges/admin/challenges/new.html.erb | 23 +- .../challenges/admin/surveys/_form.html.erb | 23 +- .../challenges/admin/surveys/edit.html.erb | 40 +- .../challenges/admin/surveys/index.html.erb | 88 ++- .../challenges/admin/surveys/show.html.erb | 33 +- .../challenges/challenges/_challenge.html.erb | 4 +- .../challenges/_challenges.html.erb | 33 +- .../challenges/challenges/_count.html.erb | 1 - .../challenges/challenges/_filters.html.erb | 30 - .../challenges/_filters_small_view.html.erb | 18 - .../challenges/_related_problems.html.erb | 14 + .../challenges/_sidebar_data.html.erb | 60 ++ .../challenges/challenges/index.html.erb | 47 +- .../challenges/challenges/index.js.erb | 5 - .../challenges/challenges/show.html.erb | 161 ++--- .../problems/admin/problems/_form.html.erb | 117 ++-- .../problems/admin/problems/edit.html.erb | 32 +- .../problems/admin/problems/index.html.erb | 169 ++--- .../problems/admin/problems/new.html.erb | 23 +- .../decidim/problems/problems/_count.html.erb | 1 - .../problems/problems/_filters.html.erb | 32 - .../problems/_filters_small_view.html.erb | 18 - .../problems/problems/_problem.html.erb | 4 +- .../problems/problems/_problems.html.erb | 33 +- .../problems/problems/_sidebar_data.html.erb | 70 +++ .../decidim/problems/problems/index.html.erb | 48 +- .../decidim/problems/problems/index.js.erb | 5 - .../decidim/problems/problems/show.html.erb | 162 +---- .../decidim/sdgs/sdgs/_objectives.html.erb | 320 ++++++++++ app/views/decidim/sdgs/sdgs/_ods.html.erb | 132 ++++ app/views/decidim/sdgs/sdgs/index.html.erb | 583 ++---------------- .../decidim/sdgs/sdgs_filter/_modal.html.erb | 34 +- .../shared/_related_solutions.html.erb | 14 + .../admin/solutions/_documents.html.erb | 13 + .../solutions/admin/solutions/_form.html.erb | 119 ++-- .../admin/solutions/_photos.html.erb | 13 + .../solutions/admin/solutions/edit.html.erb | 32 +- .../solutions/admin/solutions/index.html.erb | 173 +++--- .../solutions/admin/solutions/new.html.erb | 23 +- .../solutions/admin/solutions/show.html.erb | 150 +++-- .../solutions/solutions/_count.html.erb | 1 - .../solutions/solutions/_filters.html.erb | 28 - .../solutions/_filters_small_view.html.erb | 18 - .../solutions/solutions/_form.html.erb | 42 +- .../solutions/_sidebar_data.html.erb | 114 ++++ .../solutions/solutions/_solution.html.erb | 4 +- .../solutions/solutions/_solutions.html.erb | 35 +- .../solutions/solutions/index.html.erb | 57 +- .../decidim/solutions/solutions/index.js.erb | 5 - .../decidim/solutions/solutions/new.html.erb | 44 +- .../decidim/solutions/solutions/show.html.erb | 257 +++----- config/assets.rb | 1 + config/locales/ca.yml | 42 +- config/locales/cs.yml | 33 +- config/locales/en.yml | 45 +- config/locales/es.yml | 39 +- config/locales/oc.yml | 28 +- decidim-challenges.gemspec | 3 +- lib/decidim/challenges/test/factories.rb | 6 +- lib/decidim/problems/test/factories.rb | 6 +- lib/decidim/sdgs/test/factories.rb | 2 +- lib/decidim/solutions/test/factories.rb | 10 +- .../decidim/challenges/challenge_cell_spec.rb | 6 +- ..._cell_spec.rb => challenge_g_cell_spec.rb} | 8 +- .../decidim/problems/problem_cell_spec.rb | 11 +- ..._m_cell_spec.rb => problem_g_cell_spec.rb} | 11 +- .../decidim/solutions/solution_cell_spec.rb | 16 +- .../decidim/solutions/solution_g_cell_spec.rb | 33 + .../decidim/solutions/solution_m_cell_spec.rb | 58 -- .../challenges/admin/create_challenge_spec.rb | 32 +- .../admin/destroy_challenge_spec.rb | 10 +- .../admin/export_challenge_surveys_spec.rb | 4 +- .../challenges/admin/update_challenge_spec.rb | 34 +- .../challenges/admin/update_surveys_spec.rb | 2 +- .../challenges/survey_challenge_spec.rb | 20 +- .../problems/admin/create_problem_spec.rb | 34 +- .../problems/admin/destroy_problem_spec.rb | 10 +- .../problems/admin/update_problem_spec.rb | 36 +- .../solutions/admin/create_solution_spec.rb | 44 +- .../solutions/admin/destroy_solution_spec.rb | 8 +- .../solutions/admin/update_solution_spec.rb | 46 +- .../decidim/solutions/create_solution_spec.rb | 20 +- .../admin/challenges_controller_spec.rb | 80 +-- .../admin/problems_controller_spec.rb | 80 +-- .../admin/solutions_controller_spec.rb | 116 ++-- .../solutions/solutions_controller_spec.rb | 30 +- .../admin/challenge_surveys_form_spec.rb | 4 +- .../challenges/admin/challenges_form_spec.rb | 18 +- .../problems/admin/problems_form_spec.rb | 20 +- .../solutions/admin/solutions_form_spec.rb | 14 +- .../decidim/solutions/solutions_form_spec.rb | 12 +- .../challenges/challenges_helper_spec.rb | 6 +- spec/lib/decidim/challenges/component_spec.rb | 2 +- spec/lib/decidim/problems/component_spec.rb | 2 +- spec/lib/decidim/solutions/component_spec.rb | 2 +- spec/models/decidim/challenges/survey_spec.rb | 4 +- .../challenges/admin/permissions_spec.rb | 6 +- .../problems/admin/permissions_spec.rb | 6 +- .../solutions/admin/permissions_spec.rb | 6 +- .../challenges/survey_serializer_spec.rb | 24 +- .../export_survey_user_answers_examples.rb | 34 +- spec/shared/manage_challenges_examples.rb | 82 +-- spec/shared/manage_problems_examples.rb | 58 +- .../manage_questionnaires_answers_examples.rb | 46 +- spec/shared/manage_questionnaires_examples.rb | 48 +- spec/shared/manage_solutions_examples.rb | 66 +- spec/shared/manage_surveys_examples.rb | 47 -- ...nreportable_searchable_results_examples.rb | 27 +- .../admin_manages_challenge_survey_spec.rb | 34 +- .../admin_manages_challenges_spec.rb | 5 +- .../challenges/challenge_surveys_spec.rb | 20 +- .../challenges_global_search_spec.rb | 4 +- .../decidim/challenges/challenges_spec.rb | 57 +- .../challenges/filter_challenges_spec.rb | 118 ++-- .../without_filters_challenges_spec.rb | 23 +- .../filter_resources_by_scope_examples.rb | 71 +-- .../problems/admin/manage_problems_spec.rb | 11 +- .../decidim/problems/filter_problems_spec.rb | 211 ++----- .../problems/problems_global_search_spec.rb | 4 +- spec/system/decidim/problems/problems_spec.rb | 38 +- .../problems/without_filters_problems_spec.rb | 25 +- .../decidim/sdgs/admin/manage_sdgs_spec.rb | 4 +- spec/system/decidim/sdgs/browse_sdgs_spec.rb | 11 +- .../solutions/admin/manage_solutions_spec.rb | 11 +- .../solutions/filter_solutions_spec.rb | 96 +-- .../solutions/solutions_global_search_spec.rb | 4 +- .../decidim/solutions/solutions_spec.rb | 42 +- .../without_filters_solutions_spec.rb | 27 +- spec/types/problem_type_spec.rb | 2 +- 207 files changed, 3692 insertions(+), 4377 deletions(-) create mode 100644 app/cells/decidim/challenges/challenge_g/show.erb rename app/cells/decidim/challenges/{challenge_m_cell.rb => challenge_g_cell.rb} (86%) delete mode 100644 app/cells/decidim/challenges/challenge_m/show.erb create mode 100644 app/cells/decidim/problems/problem_g/show.erb rename app/cells/decidim/problems/{problem_m_cell.rb => problem_g_cell.rb} (89%) delete mode 100644 app/cells/decidim/problems/problem_m/show.erb create mode 100644 app/cells/decidim/solutions/solution_g/show.erb rename app/cells/decidim/solutions/{solution_m_cell.rb => solution_g_cell.rb} (92%) delete mode 100644 app/cells/decidim/solutions/solution_m/show.erb create mode 100644 app/controllers/concerns/decidim/with_default_filters.rb create mode 100644 app/controllers/concerns/decidim/with_sdgs.rb create mode 100644 app/helpers/decidim/problems/problem_cells_helper.rb create mode 100644 app/helpers/decidim/solutions/solutions_helper.rb create mode 100644 app/packs/entrypoints/decidim_shared.js create mode 100644 app/packs/entrypoints/decidim_shared.scss create mode 100644 app/packs/stylesheets/decidim/shared/_cards.scss create mode 100644 app/packs/stylesheets/decidim/shared/base.scss delete mode 100644 app/packs/stylesheets/decidim/solutions/solutions/_solution.scss delete mode 100644 app/views/decidim/challenges/challenges/_count.html.erb delete mode 100644 app/views/decidim/challenges/challenges/_filters.html.erb delete mode 100644 app/views/decidim/challenges/challenges/_filters_small_view.html.erb create mode 100644 app/views/decidim/challenges/challenges/_related_problems.html.erb create mode 100644 app/views/decidim/challenges/challenges/_sidebar_data.html.erb delete mode 100644 app/views/decidim/problems/problems/_count.html.erb delete mode 100644 app/views/decidim/problems/problems/_filters.html.erb delete mode 100644 app/views/decidim/problems/problems/_filters_small_view.html.erb create mode 100644 app/views/decidim/problems/problems/_sidebar_data.html.erb create mode 100644 app/views/decidim/sdgs/sdgs/_objectives.html.erb create mode 100644 app/views/decidim/sdgs/sdgs/_ods.html.erb create mode 100644 app/views/decidim/shared/_related_solutions.html.erb create mode 100644 app/views/decidim/solutions/admin/solutions/_documents.html.erb create mode 100644 app/views/decidim/solutions/admin/solutions/_photos.html.erb delete mode 100644 app/views/decidim/solutions/solutions/_count.html.erb delete mode 100644 app/views/decidim/solutions/solutions/_filters.html.erb delete mode 100644 app/views/decidim/solutions/solutions/_filters_small_view.html.erb create mode 100644 app/views/decidim/solutions/solutions/_sidebar_data.html.erb rename spec/cells/decidim/challenges/{challenge_m_cell_spec.rb => challenge_g_cell_spec.rb} (74%) rename spec/cells/decidim/problems/{problem_m_cell_spec.rb => problem_g_cell_spec.rb} (64%) create mode 100644 spec/cells/decidim/solutions/solution_g_cell_spec.rb delete mode 100644 spec/cells/decidim/solutions/solution_m_cell_spec.rb delete mode 100644 spec/shared/manage_surveys_examples.rb diff --git a/.github/workflows/challenges_system_tests.yml b/.github/workflows/challenges_system_tests.yml index 306580ec..f824ea95 100644 --- a/.github/workflows/challenges_system_tests.yml +++ b/.github/workflows/challenges_system_tests.yml @@ -9,7 +9,7 @@ on: pull_request: env: - RUBY_VERSION: 3.0.6 + RUBY_VERSION: 3.1.1 jobs: test-report: diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index ea6c5e8c..14bf5815 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -9,7 +9,7 @@ on: pull_request: env: - RUBY_VERSION: 3.0.6 + RUBY_VERSION: 3.1.1 jobs: test-report: diff --git a/.github/workflows/problems_system_tests.yml b/.github/workflows/problems_system_tests.yml index 6328db14..a0de0eaa 100644 --- a/.github/workflows/problems_system_tests.yml +++ b/.github/workflows/problems_system_tests.yml @@ -9,7 +9,7 @@ on: pull_request: env: - RUBY_VERSION: 3.0.6 + RUBY_VERSION: 3.1.1 jobs: test-report: diff --git a/.github/workflows/sgds_system_tests.yml b/.github/workflows/sgds_system_tests.yml index 2ee6667f..df5055f6 100644 --- a/.github/workflows/sgds_system_tests.yml +++ b/.github/workflows/sgds_system_tests.yml @@ -9,7 +9,7 @@ on: pull_request: env: - RUBY_VERSION: 3.0.6 + RUBY_VERSION: 3.1.1 jobs: test-report: diff --git a/.github/workflows/solutions_system_tests.yml b/.github/workflows/solutions_system_tests.yml index 7d573edf..3f74de98 100644 --- a/.github/workflows/solutions_system_tests.yml +++ b/.github/workflows/solutions_system_tests.yml @@ -9,7 +9,7 @@ on: pull_request: env: - RUBY_VERSION: 3.0.6 + RUBY_VERSION: 3.1.1 jobs: test-report: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1e620226..9e408e22 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,7 +9,7 @@ on: pull_request: env: - RUBY_VERSION: 3.0.6 + RUBY_VERSION: 3.1.1 jobs: test-report: diff --git a/.node-version b/.node-version index 06e75159..4a1f488b 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -16.9.1 +18.17.1 diff --git a/.rubocop.yml b/.rubocop.yml index 486f07b4..5932c3bb 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -64,13 +64,16 @@ AllCops: # 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 + TargetRubyVersion: 3.1.1 RSpec: Include: - "(?:^|/)spec/" - "(?:^|/)test/" +Capybara/SpecificActions: + Enabled: false + # Indent private/protected/public as deep as method definitions Layout/AccessModifierIndentation: EnforcedStyle: indent diff --git a/.ruby-version b/.ruby-version index 818bd47a..94ff29cc 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.0.6 +3.1.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c6e0e7a..6a6593fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ Following Semantic Versioning 2. ## next version: +## Version 0.5.0 (MINOR) +- Upgrade module's Ruby to 3.1.1 +- Increase minimum Decidim version to 0.28 +- Rework views +- Remove categories, as they were not being used + ## Version 0.4.2 (MINOR) - Show create solution button in challenge, show only if there is a solution component. diff --git a/Gemfile b/Gemfile index 30c9f0a5..6ca76d6e 100644 --- a/Gemfile +++ b/Gemfile @@ -4,27 +4,24 @@ source "https://rubygems.org" ruby RUBY_VERSION -DECIDIM_VERSION = { git: "https://github.com/decidim/decidim", branch: "release/0.27-stable" }.freeze +DECIDIM_VERSION = { git: "https://github.com/decidim/decidim", branch: "release/0.28-stable" }.freeze gem "decidim", DECIDIM_VERSION gem "decidim-challenges", path: "." -gem "bootsnap", "~> 1.4" +gem "bootsnap" gem "puma", ">= 4.3" gem "uglifier", "~> 4.1" -# Remove this nokogiri forces version at any time but make sure that no __truncato_root__ text appears in the cards in general. -# More exactly in comments in the homepage and in processes cards in the processes listing -gem "nokogiri", "1.13.3" - -# temporal solution while gems embrace new psych 4 (the default in Ruby 3.1) behavior. -gem "psych", "< 4" group :development, :test do gem "byebug", ">= 11.1.3" gem "decidim-dev", DECIDIM_VERSION gem "rubocop" gem "rubocop-rails" - gem "rubocop-rspec" + # Set versions because Property AutoCorrect errors. + gem "rspec-rails", "~> 6.0.4" + gem "rubocop-factory_bot", "2.25.1" + gem "rubocop-rspec", "2.26.1" end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index bd2aa0a7..89285ed0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,69 +1,69 @@ GIT remote: https://github.com/decidim/decidim - revision: 98222cee1af2bb5cb81d92a41b75220e9beb8741 - branch: release/0.27-stable + revision: 355de8a9f2d87bec6551db241dd1e4935242a652 + branch: release/0.28-stable specs: - decidim (0.27.5) - decidim-accountability (= 0.27.5) - decidim-admin (= 0.27.5) - decidim-api (= 0.27.5) - decidim-assemblies (= 0.27.5) - decidim-blogs (= 0.27.5) - decidim-budgets (= 0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-debates (= 0.27.5) - decidim-forms (= 0.27.5) - decidim-generators (= 0.27.5) - decidim-meetings (= 0.27.5) - decidim-pages (= 0.27.5) - decidim-participatory_processes (= 0.27.5) - decidim-proposals (= 0.27.5) - decidim-sortitions (= 0.27.5) - decidim-surveys (= 0.27.5) - decidim-system (= 0.27.5) - decidim-templates (= 0.27.5) - decidim-verifications (= 0.27.5) - decidim-accountability (0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-admin (0.27.5) + decidim (0.28.4) + decidim-accountability (= 0.28.4) + decidim-admin (= 0.28.4) + decidim-api (= 0.28.4) + decidim-assemblies (= 0.28.4) + decidim-blogs (= 0.28.4) + decidim-budgets (= 0.28.4) + decidim-comments (= 0.28.4) + decidim-core (= 0.28.4) + decidim-debates (= 0.28.4) + decidim-forms (= 0.28.4) + decidim-generators (= 0.28.4) + decidim-meetings (= 0.28.4) + decidim-pages (= 0.28.4) + decidim-participatory_processes (= 0.28.4) + decidim-proposals (= 0.28.4) + decidim-sortitions (= 0.28.4) + decidim-surveys (= 0.28.4) + decidim-system (= 0.28.4) + decidim-verifications (= 0.28.4) + decidim-accountability (0.28.4) + decidim-comments (= 0.28.4) + decidim-core (= 0.28.4) + decidim-admin (0.28.4) active_link_to (~> 1.0) - decidim-core (= 0.27.5) + decidim-core (= 0.28.4) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0, >= 2.0.9) - decidim-api (0.27.5) - graphql (~> 1.12, < 1.13) - graphql-docs (~> 2.1.0) + decidim-api (0.28.4) + commonmarker (~> 0.23.0, >= 0.23.9) + decidim-core (= 0.28.4) + graphql (~> 2.0.0) + graphql-docs (~> 3.0.1) rack-cors (~> 1.0) - decidim-assemblies (0.27.5) - decidim-core (= 0.27.5) - decidim-blogs (0.27.5) - decidim-admin (= 0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-budgets (0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-comments (0.27.5) - decidim-core (= 0.27.5) + decidim-assemblies (0.28.4) + decidim-core (= 0.28.4) + decidim-blogs (0.28.4) + decidim-admin (= 0.28.4) + decidim-comments (= 0.28.4) + decidim-core (= 0.28.4) + decidim-budgets (0.28.4) + decidim-comments (= 0.28.4) + decidim-core (= 0.28.4) + decidim-comments (0.28.4) + decidim-core (= 0.28.4) redcarpet (~> 3.5, >= 3.5.1) - decidim-core (0.27.5) + decidim-core (0.28.4) 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.5) 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) @@ -72,104 +72,102 @@ GIT 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.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-dev (0.27.5) - axe-core-rspec (~> 4.1.0) + decidim-debates (0.28.4) + decidim-comments (= 0.28.4) + decidim-core (= 0.28.4) + decidim-dev (0.28.4) + bullet (~> 7.0) byebug (~> 11.0) - capybara (~> 3.24) - db-query-matchers (~> 0.10.0) - decidim (= 0.27.5) - 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.4) + 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) + spring (~> 2.0) + spring-watcher-listen (~> 2.0) w3c_rspec_validators (~> 0.3.0) - webmock (~> 3.6) + webmock (~> 3.18) wisper-rspec (~> 1.0) - decidim-forms (0.27.5) - decidim-core (= 0.27.5) + decidim-forms (0.28.4) + decidim-core (= 0.28.4) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-generators (0.27.5) - decidim-core (= 0.27.5) - decidim-meetings (0.27.5) - decidim-core (= 0.27.5) - decidim-forms (= 0.27.5) + decidim-generators (0.28.4) + decidim-core (= 0.28.4) + decidim-meetings (0.28.4) + decidim-core (= 0.28.4) + decidim-forms (= 0.28.4) icalendar (~> 2.5) - decidim-pages (0.27.5) - decidim-core (= 0.27.5) - decidim-participatory_processes (0.27.5) - decidim-core (= 0.27.5) - decidim-proposals (0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - doc2text (~> 0.4.5) + decidim-pages (0.28.4) + decidim-core (= 0.28.4) + decidim-participatory_processes (0.28.4) + decidim-core (= 0.28.4) + decidim-proposals (0.28.4) + decidim-comments (= 0.28.4) + decidim-core (= 0.28.4) + doc2text (~> 0.4.6) redcarpet (~> 3.5, >= 3.5.1) - decidim-sortitions (0.27.5) - decidim-admin (= 0.27.5) - decidim-comments (= 0.27.5) - decidim-core (= 0.27.5) - decidim-proposals (= 0.27.5) - decidim-surveys (0.27.5) - decidim-core (= 0.27.5) - decidim-forms (= 0.27.5) - decidim-templates (= 0.27.5) - decidim-system (0.27.5) + decidim-sortitions (0.28.4) + decidim-admin (= 0.28.4) + decidim-comments (= 0.28.4) + decidim-core (= 0.28.4) + decidim-proposals (= 0.28.4) + decidim-surveys (0.28.4) + decidim-core (= 0.28.4) + decidim-forms (= 0.28.4) + decidim-system (0.28.4) active_link_to (~> 1.0) - decidim-core (= 0.27.5) + decidim-core (= 0.28.4) devise (~> 4.7) devise-i18n (~> 1.2) devise_invitable (~> 2.0, >= 2.0.9) - decidim-templates (0.27.5) - decidim-core (= 0.27.5) - decidim-forms (= 0.27.5) - decidim-verifications (0.27.5) - decidim-core (= 0.27.5) + decidim-verifications (0.28.4) + decidim-core (= 0.28.4) PATH remote: . @@ -242,44 +240,37 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - acts_as_list (0.9.19) - activerecord (>= 3.0) + acts_as_list (1.2.3) + activerecord (>= 6.1) + activesupport (>= 6.1) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) - axe-core-api (4.8.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.20) - better_html (1.0.16) - actionview (>= 4.0) - activesupport (>= 4.0) + better_html (2.1.1) + actionview (>= 6.0) + activesupport (>= 6.0) ast (~> 2.0) erubi (~> 1.4) - html_tokenizer (~> 0.0.6) parser (>= 2.4) smart_properties + bigdecimal (3.1.8) bindex (0.8.1) bootsnap (1.18.4) msgpack (~> 1.2) browser (2.7.1) builder (3.2.4) + bullet (7.2.0) + activesupport (>= 3.0.0) + uniform_notifier (~> 1.11) byebug (11.1.3) - capybara (3.39.2) + capybara (3.40.0) addressable matrix mini_mime (>= 0.1.3) - nokogiri (~> 1.8) + nokogiri (~> 1.11) rack (>= 1.6.0) rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) @@ -304,21 +295,10 @@ GEM actionpack (>= 5.0) cells (>= 4.1.6, < 5.0.0) charlock_holmes (0.7.7) - chef-utils (18.3.0) - 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) + crack (1.0.0) + bigdecimal rexml crass (1.0.6) css_parser (1.16.0) @@ -327,39 +307,32 @@ GEM date_validator (0.12.0) activemodel (>= 3) activesupport (>= 3) - db-query-matchers (0.10.0) - activesupport (>= 4.0, < 7) - rspec (~> 3.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.3) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 4.1.0) responders warden (~> 1.2.3) - devise-i18n (1.12.0) + devise-i18n (1.11.0) devise (>= 4.9.0) devise_invitable (2.0.9) actionmailer (>= 5.0) devise (>= 4.6) - diff-lcs (1.5.0) + diff-lcs (1.5.1) diffy (3.4.2) - doc2text (0.4.6) - nokogiri (>= 1.13.2, < 1.15.0) + doc2text (0.4.7) + nokogiri (>= 1.13.2, < 1.17.0) rubyzip (~> 2.3.0) - docile (1.4.0) + docile (1.4.1) 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 @@ -367,16 +340,16 @@ GEM erbse (0.1.4) temple erubi (1.12.0) - escape_utils (1.3.0) + escape_utils (1.2.2) excon (0.108.0) execjs (2.9.1) 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) + factory_bot (6.5.0) + 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.8.1) @@ -405,46 +378,47 @@ GEM geocoder (1.8.2) globalid (1.2.1) activesupport (>= 6.1) - graphql (1.12.24) - graphql-docs (2.1.0) + graphql (2.0.31) + base64 + 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.1.0) hashie (5.0.0) - highline (2.1.0) - hkdf (0.3.0) + highline (3.1.1) + reline 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.14) activesupport (>= 4.0.2) ast (>= 2.1.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.10.1) + icalendar (2.10.3) ice_cube (~> 0.16) - ice_cube (0.16.4) - ice_nine (0.11.2) + ostruct + ice_cube (0.17.0) 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.7.1) + io-console (0.7.2) + json (2.7.2) jwt (2.7.1) kaminari (1.2.2) activesupport (>= 4.1.0) @@ -458,10 +432,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) @@ -473,6 +443,7 @@ GEM listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) + logger (1.6.1) loofah (2.19.1) crass (~> 1.0.2) nokogiri (>= 1.5.9) @@ -483,12 +454,6 @@ GEM net-smtp marcel (1.0.2) matrix (0.4.2) - mdl (0.13.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.2) mime-types-data (~> 3.2015) @@ -496,14 +461,8 @@ GEM mini_magick (4.12.0) mini_mime (1.1.5) minitest (5.20.0) - mixlib-cli (2.1.8) - mixlib-config (3.0.27) - tomlrb - mixlib-shellout (3.2.7) - chef-utils - msgpack (1.7.5) + msgpack (1.7.2) multi_xml (0.6.0) - mustache (1.1.1) net-imap (0.4.9) date net-protocol @@ -511,10 +470,10 @@ GEM net-protocol net-protocol (0.2.2) timeout - net-smtp (0.4.0) + net-smtp (0.3.4) net-protocol nio4r (2.7.0) - nokogiri (1.13.3-x86_64-linux) + nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) oauth (1.1.0) oauth-tty (~> 1.0, >= 1.0.1) @@ -552,17 +511,19 @@ GEM omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack + openssl (3.2.0) orm_adapter (0.5.0) + ostruct (0.6.0) paper_trail (12.3.0) activerecord (>= 5.2) request_store (~> 1.1) parallel (1.24.0) - parallel_tests (3.13.0) + parallel_tests (4.7.2) parallel parser (3.2.2.4) ast (~> 2.4.1) racc - pg (1.1.4) + pg (1.4.6) pg_search (2.3.6) activerecord (>= 5.2) activesupport (>= 5.2) @@ -574,9 +535,10 @@ GEM actionmailer (>= 3) net-smtp premailer (~> 1.7, >= 1.7.9) - psych (3.3.4) + psych (4.0.6) + stringio public_suffix (5.0.4) - puma (5.6.7) + puma (6.4.3) nio4r (~> 2.0) racc (1.7.3) rack (2.2.8) @@ -627,9 +589,9 @@ GEM thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) - ransack (2.4.2) - activerecord (>= 5.2.4) - activesupport (>= 5.2.4) + ransack (3.2.1) + activerecord (>= 6.1.5) + activesupport (>= 6.1.5) i18n rb-fsevent (0.11.2) rb-inotify (0.10.1) @@ -637,60 +599,73 @@ GEM redcarpet (3.6.0) redis (4.8.1) regexp_parser (2.8.3) + reline (0.5.10) + io-console (~> 0.5) request_store (1.5.1) rack (>= 1.4) responders (3.1.1) actionpack (>= 5.2) railties (>= 5.2) rexml (3.2.6) - rspec (3.12.0) - rspec-core (~> 3.12.0) - rspec-expectations (~> 3.12.0) - rspec-mocks (~> 3.12.0) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) rspec-cells (0.3.9) cells (>= 4.0.0, < 6.0.0) rspec-rails (>= 3.0.0, < 6.2.0) - rspec-core (3.12.2) - rspec-support (~> 3.12.0) - rspec-expectations (3.12.3) + rspec-core (3.13.1) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-html-matchers (0.9.4) + rspec-support (~> 3.13.0) + rspec-html-matchers (0.10.0) nokogiri (~> 1) - rspec (>= 3.0.0.a, < 4) - rspec-mocks (3.12.6) + rspec (>= 3.0.0.a) + rspec-mocks (3.13.2) 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-support (~> 3.13.0) + rspec-rails (6.0.4) + 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-support (3.13.1) + 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) + unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.30.0) parser (>= 3.2.1.0) - rubocop-rails (2.15.2) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-factory_bot (2.25.1) + rubocop (~> 1.41) + rubocop-faker (1.1.0) + faker (>= 2.12.0) + rubocop (>= 0.82.0) + 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.26.1) + rubocop (~> 1.40) + rubocop-capybara (~> 2.17) + rubocop-factory_bot (~> 2.22) ruby-progressbar (1.13.0) ruby-vips (2.2.0) ffi (~> 1.12) @@ -704,31 +679,35 @@ 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.25.0) + base64 (~> 0.2) + logger (~> 1.4) 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) simplecov-cobertura (2.1.0) rexml simplecov (~> 0.19) - simplecov-html (0.12.3) + simplecov-html (0.13.1) simplecov_json_formatter (0.1.4) smart_properties (1.17.0) snaky_hash (2.0.1) hashie version_gem (~> 1.1, >= 1.1.1) - social-share-button (1.2.4) - coffee-rails - spring (4.1.3) - spring-watcher-listen (2.1.0) + spring (2.1.1) + spring-watcher-listen (2.0.1) listen (>= 2.7, < 4.0) - spring (>= 4) + spring (>= 1.2, < 3.0) sprockets (4.2.1) concurrent-ruby (~> 1.0) rack (>= 2.2.4, < 4) @@ -737,28 +716,24 @@ GEM activesupport (>= 5.2) sprockets (>= 3.0.0) ssrf_filter (1.1.2) + stringio (3.1.1) temple (0.10.3) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) thor (1.3.0) - thread_safe (0.3.6) tilt (2.3.0) timeout (0.4.1) - tomlrb (2.0.3) tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) uglifier (4.2.0) execjs (>= 0.3.0, < 3) unicode-display_width (2.5.0) - valid_email2 (2.3.1) + 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,26 +749,22 @@ GEM activemodel (>= 5.0) bindex (>= 0.4.0) railties (>= 5.0) - webmock (3.19.1) + web-push (3.0.1) + jwt (~> 2.0) + openssl (~> 3.0) + webmock (3.24.0) 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.11) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - wicked_pdf (2.7.0) + wicked_pdf (2.8.1) activesupport wisper (2.0.1) wisper-rspec (1.1.0) - wkhtmltopdf-binary (0.12.6.6) + wkhtmltopdf-binary (0.12.6.8) xpath (3.2.0) nokogiri (~> 1.8) zeitwerk (2.6.12) @@ -802,7 +773,7 @@ PLATFORMS x86_64-linux DEPENDENCIES - bootsnap (~> 1.4) + bootsnap byebug (>= 11.1.3) decidim! decidim-challenges! @@ -810,19 +781,19 @@ DEPENDENCIES faker letter_opener_web (~> 1.3) listen (~> 3.1) - nokogiri (= 1.13.3) - psych (< 4) puma (>= 4.3) + rspec-rails (~> 6.0.4) rubocop + rubocop-factory_bot (= 2.25.1) rubocop-rails - rubocop-rspec + rubocop-rspec (= 2.26.1) spring spring-watcher-listen uglifier (~> 4.1) web-console (~> 3.5) RUBY VERSION - ruby 3.0.6p216 + ruby 3.1.1p18 BUNDLED WITH 2.4.10 diff --git a/app/cells/decidim/challenges/challenge_cell.rb b/app/cells/decidim/challenges/challenge_cell.rb index 8c244f38..5e83876e 100644 --- a/app/cells/decidim/challenges/challenge_cell.rb +++ b/app/cells/decidim/challenges/challenge_cell.rb @@ -14,7 +14,7 @@ def show private def card_size - "decidim/challenges/challenge_m" + "decidim/challenges/challenge_g" end end end diff --git a/app/cells/decidim/challenges/challenge_g/show.erb b/app/cells/decidim/challenges/challenge_g/show.erb new file mode 100644 index 00000000..a3fc5e98 --- /dev/null +++ b/app/cells/decidim/challenges/challenge_g/show.erb @@ -0,0 +1,47 @@ +<%= append_stylesheet_pack_tag "decidim_challenges" %> + +<%= link_to resource_path, class: "card__list", id: resource_id do %> +
+ <% if has_image? %> + <%= image_tag resource_image_url, class: "w-full h-full object-cover" %> + <% else %> +
+
+
+ <%= external_icon "media/images/placeholder-card-l.svg", class: "card__placeholder-l" %> +
+ <% end %> +
+ +
+ <%= content_tag title_tag, class: "h4 card__list-title" do %> + <%= translated_attribute(title) %> + <% end %> +
+ <%= description %> + <% if has_sdgs? %> +
+
+
+ <% if resource_sdg_index %> + <%= image_pack_tag "media/images/ods-#{resource_sdg_index}.svg", alt: "Logo SDG #{resource_sdg_index}", class: "challenge--view" %> + <% end %> +
+
+
+ <% if resource_sdg %> + <%= t_sdg(resource_sdg) %> + <% end %> +
+
+ <% end %> +
+
+
+ + <%= t(resource_state, scope: 'decidim.challenges.states') %> + +
+
+
+<% end %> diff --git a/app/cells/decidim/challenges/challenge_m_cell.rb b/app/cells/decidim/challenges/challenge_g_cell.rb similarity index 86% rename from app/cells/decidim/challenges/challenge_m_cell.rb rename to app/cells/decidim/challenges/challenge_g_cell.rb index ce09ee9e..c70b51b1 100644 --- a/app/cells/decidim/challenges/challenge_m_cell.rb +++ b/app/cells/decidim/challenges/challenge_g_cell.rb @@ -2,12 +2,13 @@ module Decidim module Challenges - # This cell renders the Medium (:m) Challenge card + # This cell renders the Grid (:g) Challenge card # for an given instance of a Challenge - class ChallengeMCell < Decidim::CardMCell + class ChallengeGCell < Decidim::CardGCell include ActiveSupport::NumberHelper include Decidim::Challenges::ChallengesHelper include Decidim::Sdgs::SdgsHelper + include ChallengeCellsHelper private @@ -15,6 +16,18 @@ def resource_icon icon "challenges", class: "icon--big" end + def resource_image_url + model.attached_uploader(:card_image).url + end + + def has_image? + @has_image ||= model.component.settings.allow_card_image && model.card_image.attached? + end + + def resource_image_path + @resource_image_path ||= has_image? ? model.attached_uploader(:card_image).path : nil + end + def description text = translated_attribute(model.global_description) decidim_sanitize(html_truncate(text, length: 100)) @@ -51,14 +64,6 @@ def resource_state def current_organization current_organization end - - def has_image? - @has_image ||= model.component.settings.allow_card_image && model.card_image.attached? - end - - def resource_image_path - @resource_image_path ||= has_image? ? model.attached_uploader(:card_image).path : nil - end end end end diff --git a/app/cells/decidim/challenges/challenge_m/show.erb b/app/cells/decidim/challenges/challenge_m/show.erb deleted file mode 100644 index 7cba314a..00000000 --- a/app/cells/decidim/challenges/challenge_m/show.erb +++ /dev/null @@ -1,50 +0,0 @@ -
- <% if resource_image_path.present? %> - <%= link_to resource_path do %> - <%= image_tag resource_image_path, class: "card__image", alt: title %> - <% end %> - <% end %> -
-
- <%= link_to challenge_path, class: "card__link" do %> -
- <%= resource_title %> -
- <% end %> -
-
-
- <%= t(resource_state, scope: 'decidim.challenges.states') %><%= description%> -
-
-
-
-
- <% if resource_sdg %> -
-

<%= t(resource_sdg + ".logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t(resource_sdg + ".logo.line2", scope: "decidim.components.sdgs") %>

-
- <% end %> - <% if resource_sdg_index %> - <%= image_pack_tag "media/images/ods-#{resource_sdg_index}.svg", alt: "Logo SDG #{resource_sdg_index}", class: "challenge--view" %> - <% end %> -
-
-
- <% if resource_sdg %> -
- <%= t('sdg', scope: "activemodel.attributes.challenge") %> -
-
- <%= t_sdg(resource_sdg) %> -
- <% end %> -
-
-
-
-
- -
diff --git a/app/cells/decidim/problems/problem_cell.rb b/app/cells/decidim/problems/problem_cell.rb index 088b06ba..e14624b3 100644 --- a/app/cells/decidim/problems/problem_cell.rb +++ b/app/cells/decidim/problems/problem_cell.rb @@ -5,6 +5,8 @@ module Problems # This cell renders the problem card for an instance of a problem # the default size is the Medium Card (:m) class ProblemCell < Decidim::ViewModel + include ProblemCellsHelper + include Decidim::SanitizeHelper include Cell::ViewModel::Partial def show @@ -12,7 +14,7 @@ def show end def card_size - "decidim/problems/problem_m" + "decidim/problems/problem_g" end end end diff --git a/app/cells/decidim/problems/problem_g/show.erb b/app/cells/decidim/problems/problem_g/show.erb new file mode 100644 index 00000000..ca41e8eb --- /dev/null +++ b/app/cells/decidim/problems/problem_g/show.erb @@ -0,0 +1,35 @@ +<%= append_stylesheet_pack_tag "decidim_challenges" %> + +<%= link_to resource_path, class: "card__list", id: resource_id do %> +
+ <%= content_tag title_tag, class: "h4 card__list-title" do %> + <%= title %> + <% end %> +
+

<%= description %>

+ <% if has_sdgs? %> +
+
+
+ <% if resource_sdg_index %> + <%= image_pack_tag "media/images/ods-#{resource_sdg_index}.svg", alt: "Logo SDG #{resource_sdg_index}", class: "challenge--view" %> + <% end %> +
+
+
+ <% if resource_sdg %> + <%= t_sdg(resource_sdg) %> + <% end %> +
+
+ <% end %> +
+
+
+ + <%= t(resource_state, scope: 'decidim.challenges.states') %> + +
+
+
+<% end %> diff --git a/app/cells/decidim/problems/problem_m_cell.rb b/app/cells/decidim/problems/problem_g_cell.rb similarity index 89% rename from app/cells/decidim/problems/problem_m_cell.rb rename to app/cells/decidim/problems/problem_g_cell.rb index ba6c0b84..4927c88e 100644 --- a/app/cells/decidim/problems/problem_m_cell.rb +++ b/app/cells/decidim/problems/problem_g_cell.rb @@ -2,12 +2,15 @@ module Decidim module Problems - # This cell renders the Medium (:m) problem card + # This cell renders the Grid (:g) Problem card # for an given instance of a Problem - class ProblemMCell < Decidim::CardMCell + class ProblemGCell < Decidim::CardGCell include ActiveSupport::NumberHelper include Decidim::Problems::ProblemsHelper include Decidim::Sdgs::SdgsHelper + include ProblemCellsHelper + + private def resource_icon icon "problems", class: "icon--big" diff --git a/app/cells/decidim/problems/problem_m/show.erb b/app/cells/decidim/problems/problem_m/show.erb deleted file mode 100644 index a54091e3..00000000 --- a/app/cells/decidim/problems/problem_m/show.erb +++ /dev/null @@ -1,54 +0,0 @@ -
-
-
- <%= link_to problem_path, class: "card__link" do %> -
- <%= resource_title %> -
- <% end %> -
-
-
- <%= t("challenge", scope: 'decidim.problems') %>: - <%= link_to challenge_path, class: "card__link card__text--paragraph--challenge--title" do %> -
<%= resource_challenge_title%>
- <% end %> -
-
-
-
- <%= t(resource_state, scope: 'decidim.problems.states') %> - <%= resource_description%> -
-
-
-
-
- <% if resource_sdg %> -
-

<%= t(resource_sdg + ".logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t(resource_sdg + ".logo.line2", scope: "decidim.components.sdgs") %>

-
- <% end %> - <% if resource_sdg_index %> - <%= image_pack_tag "media/images/ods-#{resource_sdg_index}.svg", alt: "Logo SDG #{resource_sdg_index}", class: "problem--view" %> - <% end %> -
-
-
- <% if resource_sdg %> -
- <%= t('sdg', scope: "activemodel.attributes.problem") %> -
-
- <%= t_sdg(resource_sdg) %> -
- <% end %> -
-
-
-
-
- -
diff --git a/app/cells/decidim/solutions/solution_cell.rb b/app/cells/decidim/solutions/solution_cell.rb index 6039f7a4..e1105ffc 100644 --- a/app/cells/decidim/solutions/solution_cell.rb +++ b/app/cells/decidim/solutions/solution_cell.rb @@ -14,7 +14,7 @@ def show private def card_size - "decidim/solutions/solution_m" + "decidim/solutions/solution_g" end end end diff --git a/app/cells/decidim/solutions/solution_g/show.erb b/app/cells/decidim/solutions/solution_g/show.erb new file mode 100644 index 00000000..e555a8cf --- /dev/null +++ b/app/cells/decidim/solutions/solution_g/show.erb @@ -0,0 +1,30 @@ +<%= append_stylesheet_pack_tag "decidim_challenges" %> + +<%= link_to resource_path, class: "card__list", id: resource_id do %> +
+ <%= content_tag resource_title, class: "h4 card__list-title" do %> + <%= title %> + <% end %> +
+ <%= description %> + <% if resource_sdg %> +
+
+
+ <% if resource_sdg_index %> + <%= image_pack_tag "media/images/ods-#{resource_sdg_index}.svg", alt: "Logo SDG #{resource_sdg_index}", class: "challenge--view" %> + <% end %> +
+
+
+ <% if resource_sdg %> + <%= t_sdg(resource_sdg) %> + <% end %> +
+
+ <% end %> +
+
+
+
+<% end %> diff --git a/app/cells/decidim/solutions/solution_m_cell.rb b/app/cells/decidim/solutions/solution_g_cell.rb similarity index 92% rename from app/cells/decidim/solutions/solution_m_cell.rb rename to app/cells/decidim/solutions/solution_g_cell.rb index e1e9f2bf..369e4da3 100644 --- a/app/cells/decidim/solutions/solution_m_cell.rb +++ b/app/cells/decidim/solutions/solution_g_cell.rb @@ -2,9 +2,9 @@ module Decidim module Solutions - # This cell renders the Medium (:m) Solution card + # This cell renders the Grid (:g) Solution card # for an given instance of a Solution - class SolutionMCell < Decidim::CardMCell + class SolutionGCell < Decidim::CardGCell include ActiveSupport::NumberHelper include Decidim::Sdgs::SdgsHelper @@ -47,6 +47,10 @@ def resource_title translated_attribute model.title end + def resource_id + model.id + end + def problem_path resource_locator(model.problem).path if model.problem.present? end diff --git a/app/cells/decidim/solutions/solution_m/show.erb b/app/cells/decidim/solutions/solution_m/show.erb deleted file mode 100644 index 1074ba18..00000000 --- a/app/cells/decidim/solutions/solution_m/show.erb +++ /dev/null @@ -1,63 +0,0 @@ -
-
-
- <%= link_to solution_path, class: "card__link" do %> -
- <%= resource_title %> -
- <% end %> -
-
-
- <%= t("challenge", scope: 'decidim.solutions') %>: - <%= link_to challenge_path, class: "card__link card__text--paragraph--challenge--title" do %> -
<%= resource_challenge_title %>
- <% end %> -
-
- <% if model.problem %> -
-
- <%= t("problem", scope: 'decidim.solutions') %>: - <%= link_to problem_path, class: "card__link card__text--paragraph--problem--title" do %> -
<%= resource_problem_title %>
- <% end %> -
-
- <% end %> -
-
- <%= description%> -
-
- <% if resource_sdg %> -
-
-
-
-

<%= t(resource_sdg + ".logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t(resource_sdg + ".logo.line2", scope: "decidim.components.sdgs") %>

-
- <% if resource_sdg_index %> - <%= image_pack_tag "media/images/ods-#{resource_sdg_index}.svg", alt: "Logo ODS #{resource_sdg_index}", class: "solution--view" %> - <% end %> -
-
-
- <% if resource_sdg ? t_sdg(resource_sdg) : "" %> -
- <%= t('sdg', scope: "activemodel.attributes.solution") %> -
-
- <%= resource_sdg ? t_sdg(resource_sdg) : "" %> -
- <% end %> -
-
- <% end %> -
-
-
- -
diff --git a/app/commands/decidim/challenges/admin/update_challenge.rb b/app/commands/decidim/challenges/admin/update_challenge.rb index f35f0660..fe1415fa 100644 --- a/app/commands/decidim/challenges/admin/update_challenge.rb +++ b/app/commands/decidim/challenges/admin/update_challenge.rb @@ -41,7 +41,7 @@ def update_challenge Decidim.traceability.update!( challenge, form.current_user, - attributes: attributes + attributes: ) end diff --git a/app/commands/decidim/challenges/survey_challenge.rb b/app/commands/decidim/challenges/survey_challenge.rb index 925000a3..f2e0453d 100644 --- a/app/commands/decidim/challenges/survey_challenge.rb +++ b/app/commands/decidim/challenges/survey_challenge.rb @@ -50,8 +50,8 @@ def answer_questionnaire def create_survey @survey = Decidim::Challenges::Survey.create!( - challenge: challenge, - user: user + challenge:, + user: ) end diff --git a/app/commands/decidim/problems/admin/update_problem.rb b/app/commands/decidim/problems/admin/update_problem.rb index c22d8406..5106f418 100644 --- a/app/commands/decidim/problems/admin/update_problem.rb +++ b/app/commands/decidim/problems/admin/update_problem.rb @@ -39,7 +39,7 @@ def update_problem Decidim.traceability.update!( problem, form.current_user, - attributes: attributes + attributes: ) end diff --git a/app/commands/decidim/solutions/admin/update_solution.rb b/app/commands/decidim/solutions/admin/update_solution.rb index 9134e99d..3c9c3b46 100644 --- a/app/commands/decidim/solutions/admin/update_solution.rb +++ b/app/commands/decidim/solutions/admin/update_solution.rb @@ -42,7 +42,7 @@ def update_solution Decidim.traceability.update!( solution, form.current_user, - attributes: attributes + attributes: ) end diff --git a/app/controllers/concerns/decidim/with_default_filters.rb b/app/controllers/concerns/decidim/with_default_filters.rb new file mode 100644 index 00000000..3a0687dd --- /dev/null +++ b/app/controllers/concerns/decidim/with_default_filters.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require "active_support/concern" + +module Decidim + module WithDefaultFilters + extend ActiveSupport::Concern + + included do + private + + def default_filter_scope_params + return "all" unless current_component.participatory_space.scopes.any? + + if current_component.participatory_space.scope + ["all", current_component.participatory_space.scope.id] + current_component.participatory_space.scope.children.map { |scope| scope.id.to_s } + else + %w(all global) + current_component.participatory_space.scopes.map { |scope| scope.id.to_s } + end + end + end + end +end diff --git a/app/controllers/concerns/decidim/with_sdgs.rb b/app/controllers/concerns/decidim/with_sdgs.rb new file mode 100644 index 00000000..62d483f8 --- /dev/null +++ b/app/controllers/concerns/decidim/with_sdgs.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require "active_support/concern" + +module Decidim + module WithSdgs + extend ActiveSupport::Concern + + included do + private + + def has_sdgs? + sdgs_component = current_component.participatory_space.components.where(manifest_name: "sdgs").where.not(published_at: nil) + + sdgs_component.present? + end + end + end +end diff --git a/app/controllers/decidim/challenges/admin/challenge_publications_controller.rb b/app/controllers/decidim/challenges/admin/challenge_publications_controller.rb index a9ab69cb..24d1c3cd 100644 --- a/app/controllers/decidim/challenges/admin/challenge_publications_controller.rb +++ b/app/controllers/decidim/challenges/admin/challenge_publications_controller.rb @@ -7,7 +7,7 @@ module Admin # class ChallengePublicationsController < Decidim::Challenges::Admin::ApplicationController def create - enforce_permission_to :publish, :challenge, challenge: challenge + enforce_permission_to(:publish, :challenge, challenge:) Decidim::Challenges::Admin::PublishChallenge.call(challenge, current_user) do on(:ok) do @@ -23,7 +23,7 @@ def create end def destroy - enforce_permission_to :publish, :challenge, challenge: challenge + enforce_permission_to(:publish, :challenge, challenge:) Decidim::Challenges::Admin::UnpublishChallenge.call(challenge, current_user) do on(:ok) do diff --git a/app/controllers/decidim/challenges/admin/challenges_controller.rb b/app/controllers/decidim/challenges/admin/challenges_controller.rb index 96bc4bf3..292182bb 100644 --- a/app/controllers/decidim/challenges/admin/challenges_controller.rb +++ b/app/controllers/decidim/challenges/admin/challenges_controller.rb @@ -8,7 +8,9 @@ module Admin class ChallengesController < Decidim::Challenges::Admin::ApplicationController include Decidim::ApplicationHelper + helper Challenges::ApplicationHelper helper Decidim::Sdgs::SdgsHelper + helper Decidim::PaginateHelper helper_method :challenges, :challenge, :form_presenter @@ -22,6 +24,11 @@ def new @form = form(Decidim::Challenges::Admin::ChallengesForm).instance end + def edit + enforce_permission_to(:edit, :challenge, challenge:) + @form = form(Decidim::Challenges::Admin::ChallengesForm).from_model(challenge) + end + def create enforce_permission_to :create, :challenge @form = form(Decidim::Challenges::Admin::ChallengesForm).from_params(params) @@ -42,13 +49,8 @@ def create end end - def edit - enforce_permission_to :edit, :challenge, challenge: challenge - @form = form(Decidim::Challenges::Admin::ChallengesForm).from_model(challenge) - end - def update - enforce_permission_to :edit, :challenge, challenge: challenge + enforce_permission_to(:edit, :challenge, challenge:) @form = form(Decidim::Challenges::Admin::ChallengesForm).from_params(params) Decidim::Challenges::Admin::UpdateChallenge.call(@form, challenge) do @@ -65,7 +67,7 @@ def update end def destroy - enforce_permission_to :destroy, :challenge, challenge: challenge + enforce_permission_to(:destroy, :challenge, challenge:) Decidim::Challenges::Admin::DestroyChallenge.call(challenge, current_user) do on(:ok) do diff --git a/app/controllers/decidim/challenges/admin/surveys_controller.rb b/app/controllers/decidim/challenges/admin/surveys_controller.rb index eafc4608..593bd8be 100644 --- a/app/controllers/decidim/challenges/admin/surveys_controller.rb +++ b/app/controllers/decidim/challenges/admin/surveys_controller.rb @@ -16,16 +16,22 @@ def index @total = participants_query.count_participants end + def show + enforce_permission_to :show, :questionnaire_answers + + @participant = participant(participants_query.participant(params[:session_token])) + end + def edit - enforce_permission_to :edit, :challenge, challenge: challenge + enforce_permission_to(:edit, :challenge, challenge:) @form = ChallengeSurveysForm.from_model(challenge) end def update - enforce_permission_to :edit, :challenge, challenge: challenge + enforce_permission_to(:edit, :challenge, challenge:) - @form = ChallengeSurveysForm.from_params(params).with_context(current_organization: challenge.organization, challenge: challenge) + @form = ChallengeSurveysForm.from_params(params).with_context(current_organization: challenge.organization, challenge:) UpdateSurveys.call(@form, challenge) do on(:ok) do @@ -41,7 +47,7 @@ def update end def export - enforce_permission_to :export_surveys, :challenge, challenge: challenge + enforce_permission_to(:export_surveys, :challenge, challenge:) ExportChallengeSurveys.call(challenge, params[:format], current_user) do on(:ok) do |export_data| @@ -63,28 +69,26 @@ def export_response redirect_back(fallback_location: questionnaire_participant_answers_url(session_token)) end - def show - enforce_permission_to :show, :questionnaire_answers - - @participant = participant(participants_query.participant(params[:session_token])) - end - def questionnaire_participants_url index_answers_challenge_surveys_path end def questionnaire_participant_answers_url(session_token) - show_answers_challenge_surveys_url(session_token: session_token) + show_answers_challenge_surveys_url(session_token:) end def questionnaire_export_response_url(session_token) - export_response_challenge_surveys_url(session_token: session_token, format: "pdf") + export_response_challenge_surveys_url(session_token:, format: "pdf") end def questionnaire_for challenge end + def public_url + Decidim::EngineRouter.main_proxy(current_component).answer_challenge_survey_path(challenge.id) + end + private def challenge diff --git a/app/controllers/decidim/challenges/challenges_controller.rb b/app/controllers/decidim/challenges/challenges_controller.rb index de13701d..7dddf590 100644 --- a/app/controllers/decidim/challenges/challenges_controller.rb +++ b/app/controllers/decidim/challenges/challenges_controller.rb @@ -9,15 +9,16 @@ class ChallengesController < Decidim::Challenges::ApplicationController include FilterResource include Paginable include OrderableChallenges - include ChallengesHelper - include Decidim::Sdgs::SdgsHelper - include Decidim::ShowFiltersHelper + include WithSdgs + include WithDefaultFilters helper Decidim::CheckBoxesTreeHelper helper Decidim::Sdgs::SdgsHelper helper Decidim::ShowFiltersHelper + helper Decidim::Challenges::ChallengesHelper + helper Decidim::PaginateHelper - helper_method :challenges, :new_solution_path, :solutions_component + helper_method :challenges, :has_sdgs?, :new_solution_path, :solutions_component, :default_filter_scope_params def index @challenges = search.result @@ -38,25 +39,24 @@ def challenge_scope @challenge_scope ||= current_organization.scopes.find_by(id: @challenge.decidim_scope_id) end + def challenges + @challenges ||= reorder(paginate(search.result)) + end + + def search_collection + ::Decidim::Challenges::Challenge.where(component: current_component).published + end + def default_filter_params { search_text_cont: "", - with_any_category: default_filter_category_params, with_any_state: %w(proposal execution finished), with_any_scope: default_filter_scope_params, - with_related_to: "", with_any_sdgs_codes: [], + related_to: "", } end - def challenges - @challenges ||= reorder(paginate(search.result)) - end - - def search_collection - ::Decidim::Challenges::Challenge.where(component: current_component).published - end - def new_solution_path component = solutions_component Decidim::EngineRouter.main_proxy(component).new_solution_path diff --git a/app/controllers/decidim/challenges/surveys_controller.rb b/app/controllers/decidim/challenges/surveys_controller.rb index 4cc2b9e9..1a1dc291 100644 --- a/app/controllers/decidim/challenges/surveys_controller.rb +++ b/app/controllers/decidim/challenges/surveys_controller.rb @@ -7,9 +7,9 @@ class SurveysController < Decidim::Challenges::ApplicationController include Decidim::Forms::Concerns::HasQuestionnaire def answer - enforce_permission_to :answer, :challenge, challenge: challenge + enforce_permission_to(:answer, :challenge, challenge:) - @form = form(Decidim::Forms::QuestionnaireForm).from_params(params, session_token: session_token) + @form = form(Decidim::Forms::QuestionnaireForm).from_params(params, session_token:) SurveyChallenge.call(challenge, current_user, @form) do on(:ok) do diff --git a/app/controllers/decidim/problems/admin/problem_publications_controller.rb b/app/controllers/decidim/problems/admin/problem_publications_controller.rb index 5875c6c0..24078446 100644 --- a/app/controllers/decidim/problems/admin/problem_publications_controller.rb +++ b/app/controllers/decidim/problems/admin/problem_publications_controller.rb @@ -7,7 +7,7 @@ module Admin # class ProblemPublicationsController < Decidim::Problems::Admin::ApplicationController def create - enforce_permission_to :publish, :problem, problem: problem + enforce_permission_to(:publish, :problem, problem:) Decidim::Problems::Admin::PublishProblem.call(problem, current_user) do on(:ok) do @@ -23,7 +23,7 @@ def create end def destroy - enforce_permission_to :publish, :problem, problem: problem + enforce_permission_to(:publish, :problem, problem:) Decidim::Problems::Admin::UnpublishProblem.call(problem, current_user) do on(:ok) do diff --git a/app/controllers/decidim/problems/admin/problems_controller.rb b/app/controllers/decidim/problems/admin/problems_controller.rb index 828392d3..b525d327 100644 --- a/app/controllers/decidim/problems/admin/problems_controller.rb +++ b/app/controllers/decidim/problems/admin/problems_controller.rb @@ -6,7 +6,8 @@ module Admin # Controller that allows managing admin problems. # class ProblemsController < Decidim::Problems::Admin::ApplicationController - include Decidim::ApplicationHelper + helper Challenges::ApplicationHelper + helper Decidim::PaginateHelper helper_method :problems, :problem, :form_presenter @@ -20,6 +21,11 @@ def new @form = form(Decidim::Problems::Admin::ProblemsForm).instance end + def edit + enforce_permission_to(:edit, :problem, problem:) + @form = form(Decidim::Problems::Admin::ProblemsForm).from_model(problem) + end + def create enforce_permission_to :create, :problem @form = form(Decidim::Problems::Admin::ProblemsForm).from_params(params) @@ -37,13 +43,8 @@ def create end end - def edit - enforce_permission_to :edit, :problem, problem: problem - @form = form(Decidim::Problems::Admin::ProblemsForm).from_model(problem) - end - def update - enforce_permission_to :edit, :problem, problem: problem + enforce_permission_to(:edit, :problem, problem:) @form = form(Decidim::Problems::Admin::ProblemsForm).from_params(params) Decidim::Problems::Admin::UpdateProblem.call(@form, problem) do @@ -60,7 +61,7 @@ def update end def destroy - enforce_permission_to :destroy, :problem, problem: problem + enforce_permission_to(:destroy, :problem, problem:) Decidim::Problems::Admin::DestroyProblem.call(problem, current_user) do on(:ok) do diff --git a/app/controllers/decidim/problems/problems_controller.rb b/app/controllers/decidim/problems/problems_controller.rb index cbce0bdd..0ebbd659 100644 --- a/app/controllers/decidim/problems/problems_controller.rb +++ b/app/controllers/decidim/problems/problems_controller.rb @@ -9,15 +9,17 @@ class ProblemsController < Decidim::Problems::ApplicationController include FilterResource include Paginable include OrderableProblems - include ProblemsHelper - include Decidim::Sdgs::SdgsHelper - include Decidim::ShowFiltersHelper + include WithSdgs + include WithDefaultFilters helper Decidim::CheckBoxesTreeHelper helper Decidim::Sdgs::SdgsHelper helper Decidim::ShowFiltersHelper + helper ProblemsHelper + helper Decidim::Challenges::ApplicationHelper + helper Decidim::PaginateHelper - helper_method :problems + helper_method :problems, :has_sdgs?, :default_filter_scope_params def index @problems = search.result @@ -39,26 +41,15 @@ def challenge_scope def default_filter_params { search_text_cont: "", - with_any_category: default_filter_category_params, with_any_state: %w(proposal execution finished), - with_any_sectorial_scope_id: default_filter_scope_params, - with_any_technological_scope_id: default_filter_scope_params, - with_any_territorial_scope_id: default_filter_scope_params, - with_related_to: "", + with_any_sectorial_scope: default_filter_scope_params, + with_any_technological_scope: default_filter_scope_params, + with_any_territorial_scope: default_filter_scope_params, with_any_sdgs_codes: [], + related_to: "", } end - def default_filter_scope_params - return "all" unless current_component.participatory_space.scopes.any? - - if current_component.participatory_space.scope - ["all", current_component.participatory_space.scope.id] + current_component.participatory_space.scope.children.map { |scope| scope.id.to_s } - else - %w(all global) + current_component.participatory_space.scopes.map { |scope| scope.id.to_s } - end - end - def problems @problems ||= order(paginate(search.result)) end diff --git a/app/controllers/decidim/solutions/admin/solution_publications_controller.rb b/app/controllers/decidim/solutions/admin/solution_publications_controller.rb index 252f4e8b..029b0e1b 100644 --- a/app/controllers/decidim/solutions/admin/solution_publications_controller.rb +++ b/app/controllers/decidim/solutions/admin/solution_publications_controller.rb @@ -7,7 +7,7 @@ module Admin # class SolutionPublicationsController < Decidim::Solutions::Admin::ApplicationController def create - enforce_permission_to :publish, :solution, solution: solution + enforce_permission_to(:publish, :solution, solution:) Decidim::Solutions::Admin::PublishSolution.call(solution, current_user) do on(:ok) do @@ -23,7 +23,7 @@ def create end def destroy - enforce_permission_to :publish, :solution, solution: solution + enforce_permission_to(:publish, :solution, solution:) Decidim::Solutions::Admin::UnpublishSolution.call(solution, current_user) do on(:ok) do diff --git a/app/controllers/decidim/solutions/admin/solutions_controller.rb b/app/controllers/decidim/solutions/admin/solutions_controller.rb index 5e16a045..ce13a436 100644 --- a/app/controllers/decidim/solutions/admin/solutions_controller.rb +++ b/app/controllers/decidim/solutions/admin/solutions_controller.rb @@ -8,6 +8,9 @@ module Admin class SolutionsController < Decidim::Solutions::Admin::ApplicationController include Decidim::ApplicationHelper + helper Challenges::ApplicationHelper + helper Decidim::PaginateHelper + helper_method :solution, :solution, :form_presenter def index @@ -15,11 +18,21 @@ def index @solutions = solutions end + def show + enforce_permission_to :show, :solution + @solution = Decidim::Solutions::Solution.find(params[:id]) + end + def new enforce_permission_to :create, :solution @form = form(Decidim::Solutions::Admin::SolutionsForm).instance end + def edit + enforce_permission_to(:edit, :solution, solution:) + @form = form(Decidim::Solutions::Admin::SolutionsForm).from_model(solution) + end + def create enforce_permission_to :create, :solution @form = form(Decidim::Solutions::Admin::SolutionsForm).from_params(params.merge({ author_id: current_user.id })) @@ -37,18 +50,8 @@ def create end end - def show - enforce_permission_to :show, :solution - @solution = Decidim::Solutions::Solution.find(params[:id]) - end - - def edit - enforce_permission_to :edit, :solution, solution: solution - @form = form(Decidim::Solutions::Admin::SolutionsForm).from_model(solution) - end - def update - enforce_permission_to :edit, :solution, solution: solution + enforce_permission_to(:edit, :solution, solution:) @form = form(Decidim::Solutions::Admin::SolutionsForm).from_params(params.merge({ author_id: current_user.id })) Decidim::Solutions::Admin::UpdateSolution.call(@form, solution) do @@ -65,7 +68,7 @@ def update end def destroy - enforce_permission_to :destroy, :solution, solution: solution + enforce_permission_to(:destroy, :solution, solution:) Decidim::Solutions::Admin::DestroySolution.call(solution, current_user) do on(:ok) do diff --git a/app/controllers/decidim/solutions/solutions_controller.rb b/app/controllers/decidim/solutions/solutions_controller.rb index 14c1da85..97cf2347 100644 --- a/app/controllers/decidim/solutions/solutions_controller.rb +++ b/app/controllers/decidim/solutions/solutions_controller.rb @@ -6,19 +6,36 @@ module Solutions # class SolutionsController < Decidim::Solutions::ApplicationController include Decidim::ApplicationHelper - include Decidim::ShowFiltersHelper - include Decidim::Sdgs::SdgsHelper include FilterResource include Paginable include OrderableSolutions include FormFactory + include WithSdgs + include WithDefaultFilters helper Decidim::CheckBoxesTreeHelper - helper Decidim::ShowFiltersHelper helper Decidim::Sdgs::SdgsHelper - helper Decidim::Solutions::ApplicationHelper + helper Decidim::ShowFiltersHelper + helper SolutionsHelper + helper Decidim::Challenges::ApplicationHelper + + helper_method :solutions, :form_presenter, :has_sdgs?, :has_problem?, :default_filter_scope_params - helper_method :solutions, :form_presenter + def index + @solutions = search.result + @solutions = reorder(@solutions) + @solutions = paginate(@solutions) + end + + def show + @solution = solution + if @solution.problem.present? + @sectorial_scope = sectorial_scope + @technological_scope = technological_scope + end + @sdg_index = sdg_index if @solution.problem.present? || @solution.challenge.present? + @challenge_scope = challenge_scope + end def new enforce_permission_to :create, :solution @@ -42,46 +59,19 @@ def create end end - def index - @solutions = search.result - @solutions = reorder(solutions) - @solutions = paginate(solutions) - end - - def show - @solution = solution - if @solution.problem.present? - @sectorial_scope = sectorial_scope - @technological_scope = technological_scope - end - @sdg_index = sdg_index if @solution.problem.present? || @solution.challenge.present? - @challenge_scope = challenge_scope - end - private def default_filter_params { search_text_cont: "", - with_any_category: default_filter_category_params, - with_any_territorial_scope_id: default_filter_scope_params, - with_related_to: "", + with_any_territorial_scope: default_filter_scope_params, with_any_sdgs_codes: [], + related_to: "", } end - def default_filter_scope_params - return "all" unless current_component.participatory_space.scopes.any? - - if current_component.participatory_space.scope - ["all", current_component.participatory_space.scope.id] + current_component.participatory_space.scope.children.map { |scope| scope.id.to_s } - else - %w(all global) + current_component.participatory_space.scopes.map { |scope| scope.id.to_s } - end - end - def solutions - @solutions ||= paginate(search.result) + @solutions ||= reorder(paginate(search.result)) end def solution @@ -116,6 +106,10 @@ def search_collection def form_presenter @form_presenter ||= present(@form, presenter_class: Decidim::Solutions::SolutionPresenter) end + + def has_problem? + current_participatory_space.components.where(manifest_name: "problems").present? && @solution.problem.present? + end end end end diff --git a/app/forms/decidim/problems/admin/problems_form.rb b/app/forms/decidim/problems/admin/problems_form.rb index f8bcdb70..afa3df83 100644 --- a/app/forms/decidim/problems/admin/problems_form.rb +++ b/app/forms/decidim/problems/admin/problems_form.rb @@ -48,7 +48,7 @@ def select_states_collection # Return a challenge's list filtered by participatory's space component def select_challenge_collection participatory_space = Decidim::Component.find(current_component.id).participatory_space - challenge_component = Decidim::Component.where(participatory_space: participatory_space).where(manifest_name: "challenges") + challenge_component = Decidim::Component.where(participatory_space:).where(manifest_name: "challenges") Decidim::Challenges::Challenge.where(component: challenge_component).map do |ch| [translated_attribute(ch.title), ch.id] end diff --git a/app/forms/decidim/solutions/admin/solutions_form.rb b/app/forms/decidim/solutions/admin/solutions_form.rb index be2cf8bc..cd6cd666 100644 --- a/app/forms/decidim/solutions/admin/solutions_form.rb +++ b/app/forms/decidim/solutions/admin/solutions_form.rb @@ -35,7 +35,7 @@ class SolutionsForm < Decidim::Form # Return a problem's list filtered by participatory's space component def select_problem_collection participatory_space = Decidim::Component.find(current_component.id).participatory_space - problem_component = Decidim::Component.where(participatory_space: participatory_space).where(manifest_name: "problems") + problem_component = Decidim::Component.where(participatory_space:).where(manifest_name: "problems") Decidim::Problems::Problem.where(component: problem_component).map do |p| [translated_attribute(p.title), p.id] end @@ -44,7 +44,7 @@ def select_problem_collection # Return a challenges's list filtered by participatory's space component def select_challenge_collection participatory_space = Decidim::Component.find(current_component.id).participatory_space - challenge_component = Decidim::Component.where(participatory_space: participatory_space).where(manifest_name: "challenges") + challenge_component = Decidim::Component.where(participatory_space:).where(manifest_name: "challenges") Decidim::Challenges::Challenge.where(component: challenge_component).map do |p| [translated_attribute(p.title), p.id] end diff --git a/app/forms/decidim/solutions/solutions_form.rb b/app/forms/decidim/solutions/solutions_form.rb index fa77e0af..1d75000d 100644 --- a/app/forms/decidim/solutions/solutions_form.rb +++ b/app/forms/decidim/solutions/solutions_form.rb @@ -31,7 +31,7 @@ def map_model(model) self.title = translated_attribute(model.title) self.description = translated_attribute(model.description) - sefl.documents = model.attachments + self.documents = model.attachments return unless model.categorization end diff --git a/app/helpers/decidim/challenges/application_helper.rb b/app/helpers/decidim/challenges/application_helper.rb index 2b007ee9..055dd896 100644 --- a/app/helpers/decidim/challenges/application_helper.rb +++ b/app/helpers/decidim/challenges/application_helper.rb @@ -5,6 +5,21 @@ module Challenges # Custom helpers, scoped to the challenges engine. # module ApplicationHelper + def component_name + i18n_key = "decidim.components.challenges.name" + (defined?(current_component) && translated_attribute(current_component&.name).presence) || t(i18n_key) + end + + def filter_custom_state_values + Decidim::CheckBoxesTreeHelper::TreeNode.new( + Decidim::CheckBoxesTreeHelper::TreePoint.new("", t("decidim.challenges.challenges_helper.filter_state_values.all")), + [ + Decidim::CheckBoxesTreeHelper::TreePoint.new("proposal", t("decidim.challenges.challenges_helper.filter_state_values.proposal")), + Decidim::CheckBoxesTreeHelper::TreePoint.new("execution", t("decidim.challenges.challenges_helper.filter_state_values.execution")), + Decidim::CheckBoxesTreeHelper::TreePoint.new("finished", t("decidim.challenges.challenges_helper.filter_state_values.finished")), + ] + ) + end end end end diff --git a/app/helpers/decidim/challenges/challenge_cells_helper.rb b/app/helpers/decidim/challenges/challenge_cells_helper.rb index ee761944..f79f1698 100644 --- a/app/helpers/decidim/challenges/challenge_cells_helper.rb +++ b/app/helpers/decidim/challenges/challenge_cells_helper.rb @@ -13,6 +13,7 @@ module ChallengeCellsHelper include Decidim::ResourceReferenceHelper include Decidim::TranslatableAttributes include Decidim::CardHelper + include WithSdgs delegate :title, :state, :published_state?, :withdrawn?, :amendable?, :emendation?, to: :model @@ -29,7 +30,7 @@ def has_footer? end def challenges_controller? - context[:controller].class.to_s == "Decidim::Challenges::ChallengesController" + context[:controller].instance_of?(::Decidim::Challenges::ChallengesController) end def index_action? diff --git a/app/helpers/decidim/challenges/challenges_helper.rb b/app/helpers/decidim/challenges/challenges_helper.rb index 9146b3fa..8d65fd16 100644 --- a/app/helpers/decidim/challenges/challenges_helper.rb +++ b/app/helpers/decidim/challenges/challenges_helper.rb @@ -5,15 +5,17 @@ module Challenges # Custom helpers, scoped to the challenges engine. # module ChallengesHelper - def filter_challenges_state_values - Decidim::CheckBoxesTreeHelper::TreeNode.new( - Decidim::CheckBoxesTreeHelper::TreePoint.new("", t("decidim.challenges.challenges_helper.filter_state_values.all")), - [ - Decidim::CheckBoxesTreeHelper::TreePoint.new("proposal", t("decidim.challenges.challenges_helper.filter_state_values.proposal")), - Decidim::CheckBoxesTreeHelper::TreePoint.new("execution", t("decidim.challenges.challenges_helper.filter_state_values.execution")), - Decidim::CheckBoxesTreeHelper::TreePoint.new("finished", t("decidim.challenges.challenges_helper.filter_state_values.finished")), - ] - ) + def filter_sections + items = [] + items.append(method: :with_any_state, collection: filter_custom_state_values, label_scope: "decidim.shared.filters", id: "state") + items.append(method: :related_to, collection: linked_classes_filter_values_for(Decidim::Challenges::Challenge), label_scope: "decidim.shared.filters", id: "related_to", + type: :radio_buttons) + if current_participatory_space.has_subscopes? + items.append(method: :with_any_scope, collection: filter_global_scopes_values, label_scope: "decidim.shared.filters", + id: "scope") + end + + items.reject { |item| item[:collection].blank? } end def challenge_associated_solutions(challenge) diff --git a/app/helpers/decidim/problems/problem_cells_helper.rb b/app/helpers/decidim/problems/problem_cells_helper.rb new file mode 100644 index 00000000..0aed5e0e --- /dev/null +++ b/app/helpers/decidim/problems/problem_cells_helper.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Decidim + module Problems + # Custom helpers, scoped to the problems engine. + # + module ProblemCellsHelper + include Decidim::Problems::ApplicationHelper + include Decidim::Problems::Engine.routes.url_helpers + include Decidim::LayoutHelper + include Decidim::ApplicationHelper + include Decidim::TranslationsHelper + include Decidim::ResourceReferenceHelper + include Decidim::TranslatableAttributes + include Decidim::CardHelper + include WithSdgs + + def current_component + model.component + end + end + end +end diff --git a/app/helpers/decidim/problems/problems_helper.rb b/app/helpers/decidim/problems/problems_helper.rb index 0230180c..b519015d 100644 --- a/app/helpers/decidim/problems/problems_helper.rb +++ b/app/helpers/decidim/problems/problems_helper.rb @@ -5,15 +5,19 @@ module Problems # Custom helpers, scoped to the problems engine. # module ProblemsHelper - def filter_problems_state_values - Decidim::CheckBoxesTreeHelper::TreeNode.new( - Decidim::CheckBoxesTreeHelper::TreePoint.new("", t("decidim.problems.problems_helper.filter_state_values.all")), - [ - Decidim::CheckBoxesTreeHelper::TreePoint.new("proposal", t("decidim.problems.problems_helper.filter_state_values.proposal")), - Decidim::CheckBoxesTreeHelper::TreePoint.new("execution", t("decidim.problems.problems_helper.filter_state_values.execution")), - Decidim::CheckBoxesTreeHelper::TreePoint.new("finished", t("decidim.problems.problems_helper.filter_state_values.finished")), - ] - ) + def filter_sections + items = [] + items.append(method: :with_any_state, collection: filter_custom_state_values, label_scope: "decidim.problems.problems.filters", id: "state") + items.append(method: :related_to, collection: linked_classes_filter_values_for(Decidim::Challenges::Challenge), label_scope: "decidim.problems.problems.filters", + id: "related_to", type: :radio_buttons) + + if current_participatory_space.has_subscopes? + items.append(method: :with_any_sectorial_scope, collection: filter_global_scopes_values, label_scope: "decidim.problems.problems.filters", id: "sectorial_scope") + items.append(method: :with_any_technological_scope, collection: filter_global_scopes_values, label_scope: "decidim.problems.problems.filters", id: "technological_scope") + items.append(method: :with_any_territorial_scope, collection: filter_global_scopes_values, label_scope: "decidim.problems.problems.filters", id: "territorial_scope") + end + + items.reject { |item| item[:collection].blank? } end end end diff --git a/app/helpers/decidim/sdgs/sdgs_helper.rb b/app/helpers/decidim/sdgs/sdgs_helper.rb index 53566ba4..3c99bf31 100644 --- a/app/helpers/decidim/sdgs/sdgs_helper.rb +++ b/app/helpers/decidim/sdgs/sdgs_helper.rb @@ -6,7 +6,7 @@ module Sdgs # module SdgsHelper def sdgs_filter_selector(form) - render partial: "decidim/sdgs/sdgs_filter/filter_selector", locals: { form: form } + render partial: "decidim/sdgs/sdgs_filter/filter_selector", locals: { form: } end def t_sdg(code) @@ -14,6 +14,15 @@ def t_sdg(code) t(code, scope: "decidim.sdgs.names") end + + def filter_sdgs_values + Decidim::CheckBoxesTreeHelper::TreeNode.new( + Decidim::CheckBoxesTreeHelper::TreePoint.new("", t("decidim.challenges.challenges_helper.filter_state_values.all")), + Decidim::Sdgs::Sdg::SDGS.map do |sdg_code| + Decidim::CheckBoxesTreeHelper::TreePoint.new(sdg_code, I18n.t("#{sdg_code}.objectives.subtitle", scope: "decidim.components.sdgs")) + end + ) + end end end end diff --git a/app/helpers/decidim/solutions/solution_cells_helper.rb b/app/helpers/decidim/solutions/solution_cells_helper.rb index ead7fcf9..26eb11b9 100644 --- a/app/helpers/decidim/solutions/solution_cells_helper.rb +++ b/app/helpers/decidim/solutions/solution_cells_helper.rb @@ -29,7 +29,7 @@ def has_footer? end def solutions_controller? - context[:controller].class.to_s == "Decidim::Solutions::SolutionsController" + context[:controller].instance_of?(::Decidim::Solutions::SolutionsController) end def index_action? diff --git a/app/helpers/decidim/solutions/solutions_helper.rb b/app/helpers/decidim/solutions/solutions_helper.rb new file mode 100644 index 00000000..28654082 --- /dev/null +++ b/app/helpers/decidim/solutions/solutions_helper.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Decidim + module Solutions + # Custom helpers, scoped to the challenges engine. + # + module SolutionsHelper + def filter_sections + items = [] + if current_participatory_space.has_subscopes? + items.append(method: :with_any_territorial_scope, collection: filter_global_scopes_values, label_scope: "decidim.problems.problems.filters", + id: "territorial_scope") + end + items.append(method: :related_to, collection: linked_classes_filter_values_for(Decidim::Challenges::Challenge), label_scope: "decidim.solutions.solutions.filters", + id: "related_to", type: :radio_buttons) + + items.reject { |item| item[:collection].blank? } + end + end + end +end diff --git a/app/models/decidim/challenges/challenge.rb b/app/models/decidim/challenges/challenge.rb index 2307082c..90044293 100644 --- a/app/models/decidim/challenges/challenge.rb +++ b/app/models/decidim/challenges/challenge.rb @@ -7,7 +7,6 @@ class Challenge < Decidim::ApplicationRecord include Decidim::HasComponent include Decidim::FilterableResource include Decidim::ScopableResource - include Decidim::HasCategory include Decidim::Loggable include Decidim::Publicable include Decidim::Resourceable @@ -58,7 +57,7 @@ class Challenge < Decidim::ApplicationRecord } def self.ransackable_scopes(_auth_object = nil) - [:with_any_state, :search_text_cont, :with_any_sdgs_codes, :with_any_scope, :with_any_category] + [:with_any_state, :search_text_cont, :with_any_sdgs_codes, :with_any_scope, :related_to] end searchable_fields({ diff --git a/app/models/decidim/problems/problem.rb b/app/models/decidim/problems/problem.rb index dc18890e..18be7e75 100644 --- a/app/models/decidim/problems/problem.rb +++ b/app/models/decidim/problems/problem.rb @@ -7,7 +7,6 @@ class Problem < Decidim::ApplicationRecord include Decidim::HasComponent include Decidim::FilterableResource include Decidim::ScopableResource - include Decidim::HasCategory include Decidim::Loggable include Decidim::Publicable include Decidim::Resourceable @@ -52,7 +51,7 @@ class Problem < Decidim::ApplicationRecord joins(:challenge).where("decidim_challenges_challenges" => { sdg_code: Array(values).map(&:to_sym) }) } - scope :with_any_sectorial_scope_id, lambda { |*sectorial_scope_id| + scope :with_any_sectorial_scope, lambda { |*sectorial_scope_id| if sectorial_scope_id.include?("all") all else @@ -66,7 +65,7 @@ class Problem < Decidim::ApplicationRecord end } - scope :with_any_technological_scope_id, lambda { |*technological_scope_id| + scope :with_any_technological_scope, lambda { |*technological_scope_id| if technological_scope_id.include?("all") all else @@ -80,7 +79,7 @@ class Problem < Decidim::ApplicationRecord end } - scope :with_any_territorial_scope_id, lambda { |*territorial_scope_id| + scope :with_any_territorial_scope, lambda { |*territorial_scope_id| if territorial_scope_id.include?("all") all else @@ -95,8 +94,8 @@ class Problem < Decidim::ApplicationRecord } def self.ransackable_scopes(_auth_object = nil) - [:with_any_state, :search_text_cont, :with_any_sdgs_codes, :with_any_category, - :with_any_sectorial_scope_id, :with_any_technological_scope_id, :with_any_territorial_scope_id] + [:with_any_state, :search_text_cont, :with_any_sdgs_codes, + :with_any_sectorial_scope, :with_any_technological_scope, :with_any_territorial_scope, :related_to] end searchable_fields({ diff --git a/app/models/decidim/solutions/solution.rb b/app/models/decidim/solutions/solution.rb index 9ac5fd07..0a45302a 100644 --- a/app/models/decidim/solutions/solution.rb +++ b/app/models/decidim/solutions/solution.rb @@ -6,7 +6,6 @@ module Solutions class Solution < Solutions::ApplicationRecord include Decidim::HasComponent include Decidim::FilterableResource - include Decidim::HasCategory include Decidim::Loggable include Decidim::Publicable include Decidim::Resourceable @@ -33,7 +32,7 @@ class Solution < Solutions::ApplicationRecord joins(:challenge).where("decidim_challenges_challenges" => { sdg_code: Array(values).map(&:to_sym) }) } - scope :with_any_territorial_scope_id, lambda { |*territorial_scope_id| + scope :with_any_territorial_scope, lambda { |*territorial_scope_id| if territorial_scope_id.include?("all") all else @@ -48,7 +47,7 @@ class Solution < Solutions::ApplicationRecord } def self.ransackable_scopes(_auth_object = nil) - [:search_text_cont, :with_any_category, :with_any_sdgs_codes, :with_any_territorial_scope_id] + [:search_text_cont, :with_any_territorial_scope, :with_any_sdgs_codes, :related_to] end searchable_fields({ diff --git a/app/packs/entrypoints/decidim_sdgs.scss b/app/packs/entrypoints/decidim_sdgs.scss index 10787c8f..11ad96a1 100644 --- a/app/packs/entrypoints/decidim_sdgs.scss +++ b/app/packs/entrypoints/decidim_sdgs.scss @@ -1 +1,3 @@ +@import "stylesheets/decidim/sdgs/sdgs_filter/button.scss"; +@import "stylesheets/decidim/sdgs/sdgs_filter/modal.scss"; @import "stylesheets/decidim/sdgs/ods.scss"; diff --git a/app/packs/entrypoints/decidim_shared.js b/app/packs/entrypoints/decidim_shared.js new file mode 100644 index 00000000..2c95434d --- /dev/null +++ b/app/packs/entrypoints/decidim_shared.js @@ -0,0 +1 @@ +import "entrypoints/decidim_shared.scss"; diff --git a/app/packs/entrypoints/decidim_shared.scss b/app/packs/entrypoints/decidim_shared.scss new file mode 100644 index 00000000..c13a9a26 --- /dev/null +++ b/app/packs/entrypoints/decidim_shared.scss @@ -0,0 +1 @@ +@import "stylesheets/decidim/shared/base"; diff --git a/app/packs/src/decidim/sdgs/filter.js b/app/packs/src/decidim/sdgs/filter.js index 803d3cc2..e0b3a25f 100644 --- a/app/packs/src/decidim/sdgs/filter.js +++ b/app/packs/src/decidim/sdgs/filter.js @@ -9,7 +9,15 @@ function toggleSdgFilterCellSelect(cell, selected) { } } -$( document ).ready(function() { +$(document).ready(function() { + window.onclick = function(event) { + let modal = document.querySelector("#sdgs-modal"); + + if (event.target == modal) { + modal.style.display = "none"; + } + } + /** * Setup Sdgs selector */ @@ -62,4 +70,6 @@ $( document ).ready(function() { sdgs_opener.parent("form").submit() sdgs_opener= null }); + + }) diff --git a/app/packs/stylesheets/decidim/challenges/challenges.scss b/app/packs/stylesheets/decidim/challenges/challenges.scss index bbd1d76c..7a24defc 100644 --- a/app/packs/stylesheets/decidim/challenges/challenges.scss +++ b/app/packs/stylesheets/decidim/challenges/challenges.scss @@ -1,135 +1,3 @@ -@import "stylesheets/decidim/sdgs/ods.scss"; +@import "stylesheets/decidim/shared/base.scss"; @import "stylesheets/decidim/sdgs/sdgs_filter/button.scss"; @import "stylesheets/decidim/sdgs/sdgs_filter/modal.scss"; - -.card--challenge { - - border-color: rgb(254, 174, 2); - border-top-color: rgb(254, 174, 2); - - .card__text--paragraph--status { - color: rgb(254, 174, 2); - } -} - -.card--challenge.proposal { - - border-color: rgb(254, 174, 2); - border-top-color: rgb(254, 174, 2); - - .card__text--paragraph--status { - color: rgb(254, 174, 2); - } -} - -.card--challenge { - .card__title { - margin-bottom: 5px; - } - - .card_text--sdg--image { - display: inline-block; - width: 20%; - - img { - vertical-align: bottom; - } - } - - .card__sdg { - display: inline-flex; - } - - .card_text--sdg--text { - display: inline-block; - width: 75%; - padding-left: 5px; - } - - .card__text--paragraph--status { - font-weight: bold; - display: inline; - text-transform: uppercase; - padding-right: 5px; - } - - .card__text--paragraph p:first-of-type { - display: inline; - } -} - -.card--challenge.executing { - border-color: rgb(0, 163, 144); - border-top-color: rgb(0, 163, 144); - - .card__text--paragraph--status { - color: rgb(0, 163, 144); - } -} - -.card--challenge.finished { - border-color: rgb(0, 188, 255); - border-top-color: rgb(0, 188, 255); - - .card__text--paragraph--status { - color: rgb(0, 188, 255); - } -} - -.definition-data__image { - padding-top: 0.1em; -} - -.status{ - text-transform: uppercase; -} - -.section p.tags{ - color: #D04040; - font-weight: 600; -} - -.ods.challenges { - cursor: default; - &:hover { - -webkit-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0); - -moz-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0); - box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0); - transition: all 0.0s ease; - } - - .text-container { - top: 0.3rem; - left: 1.3rem; - width: 60px; - } - .text-container.show { - top: 0.6rem; - left: 6.5rem; - width: 60px; - text-align: start; - } - - p { - font-size: 6pt; - } - - img.challenge--view { - width: 100%; - max-width: 100px; - } -} - -.card-associated-problem { - padding: 5px 10px; -} - -.card-proposed-solution { - padding: 5px 10px; -} - -.challenge-action-buttons { - display: flex; - flex-direction: column; - gap: 12px; -} diff --git a/app/packs/stylesheets/decidim/problems/problems.scss b/app/packs/stylesheets/decidim/problems/problems.scss index eee39e0e..7a24defc 100644 --- a/app/packs/stylesheets/decidim/problems/problems.scss +++ b/app/packs/stylesheets/decidim/problems/problems.scss @@ -1,134 +1,3 @@ -@import "stylesheets/decidim/sdgs/ods.scss"; +@import "stylesheets/decidim/shared/base.scss"; @import "stylesheets/decidim/sdgs/sdgs_filter/button.scss"; @import "stylesheets/decidim/sdgs/sdgs_filter/modal.scss"; - -.card--problem { - - border-color: rgb(254, 174, 2); - border-top-color: rgb(254, 174, 2); - - .card__text--paragraph--status { - color: rgb(254, 174, 2); - } -} - -.card--problem.proposal { - - border-color: rgb(254, 174, 2); - border-top-color: rgb(254, 174, 2); - - .card__text--paragraph--status { - color: rgb(254, 174, 2); - } -} - -.card--problem { - .card__title { - margin-bottom: 5px; - } - - .card_text--sdg--image { - display: inline-block; - width: 20%; - - img { - vertical-align: bottom; - } - } - - .card_text--sdg--text { - display: inline-block; - width: 75%; - padding-left: 5px; - } - - .card__text--paragraph--status { - font-weight: bold; - display: inline; - text-transform: uppercase; - padding-right: 5px; - } - - .card__text--paragraph p:first-of-type { - display: inline; - } - - .card__text--paragraph--challenge { - font-weight: bold; - display: inline-block; - } - - .card__text--paragraph--challenge--title { - display: inline-block; - } -} - -.card--problem.executing { - border-color: rgb(0, 163, 144); - border-top-color: rgb(0, 163, 144); - - .card__text--paragraph--status { - color: rgb(0, 163, 144); - } -} - -.card--problem.finished { - border-color: rgb(0, 188, 255); - border-top-color: rgb(0, 188, 255); - - .card__text--paragraph--status { - color: rgb(0, 188, 255); - } -} - -.definition-data__image { - padding-top: 0.1em; -} - -.definition-data__title { - font-weight: bold; -} - -.status{ - text-transform: uppercase; -} - -.section p.tags{ - color: #D04040; - font-weight: 600; -} - -.ods.problems { - cursor: default; - &:hover { - -webkit-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0); - -moz-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0); - box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0); - transition: all 0.0s ease; - } - - .text-container { - top: 0.3rem; - left: 1.3rem; - width: 60px; - } - .text-container.show { - top: 0.6rem; - left: 6.5rem; - width: 60px; - text-align: start; - } - - p { - font-size: 6pt; - } - - img.problem--view { - width: 100%; - max-width: 100px; - } -} - -.card-proposed-solution { - padding: 5px 10px; -} diff --git a/app/packs/stylesheets/decidim/sdgs/ods.scss b/app/packs/stylesheets/decidim/sdgs/ods.scss index d36d78a0..b38ca9fa 100644 --- a/app/packs/stylesheets/decidim/sdgs/ods.scss +++ b/app/packs/stylesheets/decidim/sdgs/ods.scss @@ -6,6 +6,14 @@ src: url('../fonts/Oswald-Medium.ttf') } +.sdgs-title { + display: flex; + justify-content: space-between; + + .text { + width: 64%; + } +} #ods-logo-container { width: 250px; @@ -32,7 +40,12 @@ text-align: center; font-size: 9.5pt; } +} +#ods-container { + display: grid; + grid-template-columns: repeat(6, 1fr); + gap: 16px; } .ods { @@ -56,8 +69,8 @@ .text-container { position: absolute; - top: 10.2px; - left: 45px; + top: 4.2px; + left: 76px; width: 120px; &.stretch { @@ -77,7 +90,21 @@ object { width: 100%; } +} + +#objective-container { + .hide { + display: none; + } +} +.card__highlight { + .text-container { + position: absolute; + top: 0; + left: 23px; + width: 120px; + } } .objectives_container { diff --git a/app/packs/stylesheets/decidim/sdgs/sdgs_filter/modal.scss b/app/packs/stylesheets/decidim/sdgs/sdgs_filter/modal.scss index c1a1889e..29eae87f 100644 --- a/app/packs/stylesheets/decidim/sdgs/sdgs_filter/modal.scss +++ b/app/packs/stylesheets/decidim/sdgs/sdgs_filter/modal.scss @@ -1,23 +1,60 @@ -#sdg-container { - .sdg-cell{ - cursor: pointer; - text-align: center; - border: 3px solid white; +#sdgs-modal { + display: none; + position: fixed; + z-index: 99; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgb(0,0,0); + background-color: rgba(0,0,0,0.4); - img { - width: 100%; - } - div.text{ - height: 3em; - background-color: lightgrey; + .reveal__header { + background-color: #fefefe; + display: flex; + justify-content: space-between; + padding-bottom: 8px; + + .close-button { + font-size: 24px; + line-height: 30px; } - p{ - height: 3em; - //line-height: 3em; - padding-top: 0.5em; - display: inline-block; - vertical-align: middle; - font-size: 0.8em; + } + + .modal-content { + background-color: #fefefe; + margin: 2% auto; + padding: 20px; + width: 43%; + } + + #sdg-container { + background-color: #fefefe; + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 16px; + + .sdg-cell { + cursor: pointer; + text-align: center; + border: 3px solid white; + + img { + width: 100%; + } + + div.text{ + width: 100%; + height: 5em; + background-color: lightgrey; + font-size: 12px; + } } } -} \ No newline at end of file + + .buttons { + display: flex; + justify-content: center; + } +} diff --git a/app/packs/stylesheets/decidim/shared/_cards.scss b/app/packs/stylesheets/decidim/shared/_cards.scss new file mode 100644 index 00000000..cd3db57e --- /dev/null +++ b/app/packs/stylesheets/decidim/shared/_cards.scss @@ -0,0 +1,52 @@ +.card__list { + .card__list-content { + width: 100%; + } + + .card__list-image { + margin-right: 14px; + } + + .card__list-text { + display: flex; + gap: 20px; + + p { + width: 650px; + min-width: 650px; + } + + .card__sdg { + margin-right: 20px; + } + + .card_text--sdg--image { + width: 48px; + + img { + vertical-align: bottom; + } + } + + .card_text--sdg--text { + font-size: 12px; + } + } + + .card__list-metadata { + .label.proposal { + background-color: rgb(254, 174, 2); + color: rgb(86, 59, 1); + } + + .label.executing { + background-color: rgb(0, 163, 144); + color: rgb(0, 49, 43); + } + + .label.finished { + background-color: rgb(0, 188, 255); + color: rgb(0, 49, 43); + } + } +} diff --git a/app/packs/stylesheets/decidim/shared/base.scss b/app/packs/stylesheets/decidim/shared/base.scss new file mode 100644 index 00000000..30b5dfab --- /dev/null +++ b/app/packs/stylesheets/decidim/shared/base.scss @@ -0,0 +1,9 @@ +@import "cards"; + +.layout-item__aside { + .ods.challenges { + width: 150px; + display: block; + text-align: center; + } +} diff --git a/app/packs/stylesheets/decidim/solutions/solutions.scss b/app/packs/stylesheets/decidim/solutions/solutions.scss index 03e54522..7a24defc 100644 --- a/app/packs/stylesheets/decidim/solutions/solutions.scss +++ b/app/packs/stylesheets/decidim/solutions/solutions.scss @@ -1,57 +1,3 @@ -@import "stylesheets/decidim/sdgs/ods.scss"; -@import "stylesheets/decidim/solutions/solutions/solution.scss"; +@import "stylesheets/decidim/shared/base.scss"; @import "stylesheets/decidim/sdgs/sdgs_filter/button.scss"; @import "stylesheets/decidim/sdgs/sdgs_filter/modal.scss"; - -h3.parents{ - line-height: 1; - margin: 0.8em 0; -} - -h3.parents span.title{ - text-transform: uppercase; -} - -.status{ - text-transform: uppercase; -} - -.section p.tags, .section p.indicators{ - color: #D04040; - font-weight: 600; -} - -.ods { - margin-bottom: 0; - cursor: inherit; - - &:hover { - -webkit-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0); - -moz-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0); - box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0); - transition: all 0.0s ease; - } - - .text-container { - top: 0.3rem; - left: 1.3rem; - width: 60px; - } - - .text-container.show { - top: 0.6rem; - left: 6.5rem; - width: 60px; - text-align: start; - } - - p { - font-size: 6pt; - } - - img.challenge--view { - margin-top: 4px; - width: 100%; - max-width: 100px; - } -} diff --git a/app/packs/stylesheets/decidim/solutions/solutions/_solution.scss b/app/packs/stylesheets/decidim/solutions/solutions/_solution.scss deleted file mode 100644 index dd5b7baf..00000000 --- a/app/packs/stylesheets/decidim/solutions/solutions/_solution.scss +++ /dev/null @@ -1,85 +0,0 @@ -.card--solution { - .card__title { - margin-bottom: 5px; - } - - .card_text--sdg--image { - display: inline-block; - width: 20%; - - img { - vertical-align: bottom; - } - } - - .card__sdg { - display: inline-flex; - } - - .card_text--sdg--text { - display: inline-block; - width: 75%; - padding-left: 5px; - } - - .card__text--paragraph--status { - font-weight: bold; - display: inline; - text-transform: uppercase; - padding-right: 5px; - } - - .card__text--paragraph p:first-of-type { - display: inline; - } - - .card__text--paragraph--problem { - font-weight: bold; - display: inline-block; - } - - .card__text--paragraph--problem--title { - display: inline-block; - } - - .card__text--paragraph--challenge { - font-weight: bold; - display: inline-block; - } - - .card__text--paragraph--challenge--title { - display: inline-block; - } -} - -.ods.solutions { - cursor: default !important; - &:hover { - -webkit-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0) !important; - -moz-box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0) !important; - box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.0) !important; - transition: all 0.0s ease !important; - } - - .text-container { - top: 0.3rem !important; - left: 1.3rem !important; - width: 60px !important; - } - - .text-container.show { - top: 0.6rem; - left: 6.5rem; - width: 60px !important; - text-align: start !important; - } - - p { - font-size: 6pt !important; - } - - img.problem--view { - width: 100% !important; - max-width: 100px !important; - } -} diff --git a/app/presenters/decidim/challenges/challenge_presenter.rb b/app/presenters/decidim/challenges/challenge_presenter.rb index c34748ad..1cb39fea 100644 --- a/app/presenters/decidim/challenges/challenge_presenter.rb +++ b/app/presenters/decidim/challenges/challenge_presenter.rb @@ -36,11 +36,11 @@ def title(links: false, extras: true, html_escape: false) text = decidim_html_escape(text) if html_escape renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - renderer.render(links: links, extras: extras).html_safe + renderer.render(links:, extras:).html_safe end def id_and_title(links: false, extras: true, html_escape: false) - "##{challenge.id} - #{title(links: links, extras: extras, html_escape: html_escape)}" + "##{challenge.id} - #{title(links:, extras:, html_escape:)}" end # Render the challenge local_description @@ -55,7 +55,7 @@ def local_description(links: false, extras: true, strip_tags: false) text = strip_tags(sanitize_text(text)) if strip_tags renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - text = renderer.render(links: links, extras: extras).html_safe + text = renderer.render(links:, extras:).html_safe text = Decidim::ContentRenderers::LinkRenderer.new(text).render if links text @@ -73,7 +73,7 @@ def global_description(links: false, extras: true, strip_tags: false) text = strip_tags(sanitize_text(text)) if strip_tags renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - text = renderer.render(links: links, extras: extras).html_safe + text = renderer.render(links:, extras:).html_safe text = Decidim::ContentRenderers::LinkRenderer.new(text).render if links text diff --git a/app/presenters/decidim/problems/problem_presenter.rb b/app/presenters/decidim/problems/problem_presenter.rb index 0230a0e3..1893d191 100644 --- a/app/presenters/decidim/problems/problem_presenter.rb +++ b/app/presenters/decidim/problems/problem_presenter.rb @@ -34,11 +34,11 @@ def title(links: false, extras: true, html_escape: false) text = decidim_html_escape(text) if html_escape renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - renderer.render(links: links, extras: extras).html_safe + renderer.render(links:, extras:).html_safe end def id_and_title(links: false, extras: true, html_escape: false) - "##{problem.id} - #{title(links: links, extras: extras, html_escape: html_escape)}" + "##{problem.id} - #{title(links:, extras:, html_escape:)}" end # Render the problem description @@ -53,7 +53,7 @@ def description(links: false, extras: true, strip_tags: false) text = strip_tags(sanitize_text(text)) if strip_tags renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - text = renderer.render(links: links, extras: extras).html_safe + text = renderer.render(links:, extras:).html_safe text = Decidim::ContentRenderers::LinkRenderer.new(text).render if links text diff --git a/app/presenters/decidim/solutions/solution_presenter.rb b/app/presenters/decidim/solutions/solution_presenter.rb index d70c3f07..642fa62e 100644 --- a/app/presenters/decidim/solutions/solution_presenter.rb +++ b/app/presenters/decidim/solutions/solution_presenter.rb @@ -34,11 +34,11 @@ def title(links: false, extras: true, html_escape: false) text = decidim_html_escape(text) if html_escape renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - renderer.render(links: links, extras: extras).html_safe + renderer.render(links:, extras:).html_safe end def id_and_title(links: false, extras: true, html_escape: false) - "##{solution.id} - #{title(links: links, extras: extras, html_escape: html_escape)}" + "##{solution.id} - #{title(links:, extras:, html_escape:)}" end # Render the solution description @@ -53,7 +53,7 @@ def description(links: false, extras: true, strip_tags: false) text = strip_tags(sanitize_text(text)) if strip_tags renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - text = renderer.render(links: links, extras: extras).html_safe + text = renderer.render(links:, extras:).html_safe text = Decidim::ContentRenderers::LinkRenderer.new(text).render if links text @@ -71,7 +71,7 @@ def indicators(links: false, extras: true, strip_tags: false) text = strip_tags(sanitize_text(text)) if strip_tags renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - text = renderer.render(links: links, extras: extras).html_safe + text = renderer.render(links:, extras:).html_safe text = Decidim::ContentRenderers::LinkRenderer.new(text).render if links text @@ -89,7 +89,7 @@ def beneficiaries(links: false, extras: true, strip_tags: false) text = strip_tags(sanitize_text(text)) if strip_tags renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - text = renderer.render(links: links, extras: extras).html_safe + text = renderer.render(links:, extras:).html_safe text = Decidim::ContentRenderers::LinkRenderer.new(text).render if links text @@ -107,7 +107,7 @@ def requirements(links: false, extras: true, strip_tags: false) text = strip_tags(sanitize_text(text)) if strip_tags renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - text = renderer.render(links: links, extras: extras).html_safe + text = renderer.render(links:, extras:).html_safe text = Decidim::ContentRenderers::LinkRenderer.new(text).render if links text @@ -125,7 +125,7 @@ def financing_type(links: false, extras: true, strip_tags: false) text = strip_tags(sanitize_text(text)) if strip_tags renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - text = renderer.render(links: links, extras: extras).html_safe + text = renderer.render(links:, extras:).html_safe text = Decidim::ContentRenderers::LinkRenderer.new(text).render if links text @@ -143,7 +143,7 @@ def objectives(links: false, extras: true, strip_tags: false) text = strip_tags(sanitize_text(text)) if strip_tags renderer = Decidim::ContentRenderers::HashtagRenderer.new(text) - text = renderer.render(links: links, extras: extras).html_safe + text = renderer.render(links:, extras:).html_safe text = Decidim::ContentRenderers::LinkRenderer.new(text).render if links text diff --git a/app/serializers/decidim/challenges/data_serializer.rb b/app/serializers/decidim/challenges/data_serializer.rb index 94cba892..4017bab4 100644 --- a/app/serializers/decidim/challenges/data_serializer.rb +++ b/app/serializers/decidim/challenges/data_serializer.rb @@ -10,7 +10,7 @@ class DataSerializer < Decidim::Exporters::Serializer # or nil if none exists. def serialize component = resource - surveys = Decidim::Challenges::Survey.where(component: component) + surveys = Decidim::Challenges::Survey.where(component:) surveys.collect do |survey| next if survey.questionnaire.nil? diff --git a/app/serializers/decidim/challenges/survey_serializer.rb b/app/serializers/decidim/challenges/survey_serializer.rb index 612086f9..b3ab3b89 100644 --- a/app/serializers/decidim/challenges/survey_serializer.rb +++ b/app/serializers/decidim/challenges/survey_serializer.rb @@ -22,7 +22,7 @@ def serialize_answers questions = resource.challenge.questionnaire.questions answers = resource.challenge.questionnaire.answers.where(user: resource.user) questions.each_with_index.inject({}) do |serialized, (question, idx)| - answer = answers.find_by(question: question) + answer = answers.find_by(question:) serialized.update("#{idx + 1}. #{translated_attribute(question.body)}" => normalize_body(answer)) end end diff --git a/app/types/decidim/challenges/challenges_type.rb b/app/types/decidim/challenges/challenges_type.rb index b1dd55a9..15e9d2e6 100644 --- a/app/types/decidim/challenges/challenges_type.rb +++ b/app/types/decidim/challenges/challenges_type.rb @@ -25,7 +25,7 @@ def challenge(**args) module ChallengesTypeHelper def self.base_scope(component) - Challenge.where(component: component).published + Challenge.where(component:).published end end end diff --git a/app/types/decidim/problems/problems_type.rb b/app/types/decidim/problems/problems_type.rb index 5bd927fe..1305d826 100644 --- a/app/types/decidim/problems/problems_type.rb +++ b/app/types/decidim/problems/problems_type.rb @@ -25,7 +25,7 @@ def problem(**args) module ProblemsTypeHelper def self.base_scope(component) - Problem.where(component: component).published + Problem.where(component:).published end end end diff --git a/app/types/decidim/solutions/solutions_type.rb b/app/types/decidim/solutions/solutions_type.rb index 8d418c14..3dc39710 100644 --- a/app/types/decidim/solutions/solutions_type.rb +++ b/app/types/decidim/solutions/solutions_type.rb @@ -25,7 +25,7 @@ def solution(**args) module SolutionsTypeHelper def self.base_scope(component) - Solution.where(component: component).published + Solution.where(component:).published end end end diff --git a/app/views/decidim/challenges/admin/challenges/_form.html.erb b/app/views/decidim/challenges/admin/challenges/_form.html.erb index 5a37230a..8c951fa6 100644 --- a/app/views/decidim/challenges/admin/challenges/_form.html.erb +++ b/app/views/decidim/challenges/admin/challenges/_form.html.erb @@ -1,83 +1,78 @@ -
-
-

<%= current_organization.name %>

-
- -
-
- <%= form.translated :text_field, :title, autofocus: true %> -
+
+
+
+
+ <%= form.translated :text_field, :title, autofocus: true, class: "js-hashtags", hashtaggable: true, aria: { label: :title } %> +
-
- <%= form.translated :editor, :local_description %> -
+
+ <%= form.translated :editor, :local_description %> +
-
- <%= form.translated :editor, :global_description %> -
+
+ <%= form.translated :editor, :global_description %> +
-
- <%= form.text_field :tags %> -
+
+ <%= form.text_field :tags %> +
-
- <%= scopes_picker_field form, :decidim_scope_id, root: nil %> -
+
+ <%= scopes_select_field form, :decidim_scope_id, root: nil %> +
- <% if params[:component_id] %> - <% if Decidim::Component.where(participatory_space: Decidim::Component.find(params[:component_id]).participatory_space).pluck(:manifest_name).include? 'sdgs' %> -
- <%= form.select :sdg_code, - @form.select_sdg_collection, - selected: [t_sdg(@form.sdg_code), @form.sdg_code], - label: t("models.challenge.fields.sdg", scope: "decidim.challenges.admin") %> -
+ <% if params[:component_id] %> + <% if Decidim::Component.where(participatory_space: Decidim::Component.find(params[:component_id]).participatory_space).pluck(:manifest_name).include? 'sdgs' %> +
+ <%= form.select :sdg_code, + @form.select_sdg_collection, + selected: [t_sdg(@form.sdg_code), @form.sdg_code], + label: t("models.challenge.fields.sdg", scope: "decidim.challenges.admin") %> +
+ <% end %> <% end %> - <% end %> - -
- <%= form.select :state, - @form.select_states_collection, - selected: [I18n.t(@form.try(:state), scope: 'decidim.challenges.states'), Decidim::Challenges::Challenge::states[@form.try(:state)]], - label: t("models.challenge.fields.state", scope: "decidim.challenges.admin") %> -
-
- <%= form.text_field :collaborating_entities %> -
+
+ <%= form.select :state, + @form.select_states_collection, + selected: [I18n.t(@form.try(:state), scope: 'decidim.challenges.states'), Decidim::Challenges::Challenge::states[@form.try(:state)]], + label: t("models.challenge.fields.state", scope: "decidim.challenges.admin") %> +
-
- <%= form.text_field :coordinating_entities %> -
-
+
+ <%= form.text_field :collaborating_entities %> +
- <% if component_settings.allow_card_image? %> -
-

<%= t(".images") %>

-
+
+ <%= form.text_field :coordinating_entities %> +
-
-
-
- <%= form.upload :card_image %> + <% if component_settings.allow_card_image? %> +
+

<%= t(".images") %>

-
-
- <% end %> -
-

<%= t(".duration") %>

-
+
+
+ <%= form.upload :card_image, button_class: "button button__sm button__transparent-secondary" %> +
+
+ <% end %> -
-
-
- <%= form.date_field :start_date, autocomplete: "off" %> +
+

<%= t(".duration") %>

-
- <%= form.date_field :end_date, autocomplete: "off" %> -
+
+
+
+ <%= form.date_field :start_date, autocomplete: "off" %> +
+ +
+ <%= form.date_field :end_date, autocomplete: "off" %> +
+
diff --git a/app/views/decidim/challenges/admin/challenges/edit.html.erb b/app/views/decidim/challenges/admin/challenges/edit.html.erb index b790cb8b..cd4fb5c7 100644 --- a/app/views/decidim/challenges/admin/challenges/edit.html.erb +++ b/app/views/decidim/challenges/admin/challenges/edit.html.erb @@ -1,12 +1,24 @@ -<%= decidim_form_for(@form, html: { class: "form edit_challenge challenge_form_admin" }) do |f| %> - <%= render partial: "form", object: f %> -
- <%= f.submit t(".update"), class: "button" %> - - <% if challenge.published? %> - <%= link_to t("actions.unpublish", scope: "decidim.challenges.admin"), challenge_publish_path(challenge), method: :delete, class: "button muted" %> - <% else %> - <%= link_to t("actions.publish", scope: "decidim.challenges.admin"), challenge_publish_path(challenge), method: :post, class: "button hollow" %> +<% add_decidim_page_title(t(".title")) %> +
+

+ <%= t(".title") %> +

+
+
+
+ <%= decidim_form_for(@form, html: { class: "form-defaults form edit_challenge challenge_form_admin" }) do |f| %> + <%= render partial: "form", object: f, locals: { title: t(".title") } %> +
+
+ <%= f.submit t(".update"), class: "button button__sm button__secondary" %> + + <% if challenge.published? %> + <%= link_to t("actions.unpublish", scope: "decidim.challenges.admin"), challenge_publish_path(challenge), method: :delete, class: "button button__sm button__secondary" %> + <% else %> + <%= link_to t("actions.publish", scope: "decidim.challenges.admin"), challenge_publish_path(challenge), method: :post, class: "button button__sm button__secondary" %> + <% end %> +
+
<% end %>
-<% end %> +
diff --git a/app/views/decidim/challenges/admin/challenges/index.html.erb b/app/views/decidim/challenges/admin/challenges/index.html.erb index 80f0537a..38fe453c 100644 --- a/app/views/decidim/challenges/admin/challenges/index.html.erb +++ b/app/views/decidim/challenges/admin/challenges/index.html.erb @@ -1,83 +1,88 @@ -
-
-

+<% add_decidim_page_title(t(".title")) %> +
+
+

+
+ <%= t(".title") %> + "> +
+
+ <% if allowed_to? :create, :challenge %> + <%= link_to t("actions.new_challenge", scope: "decidim.challenges.admin"), + new_challenge_path, + class: "button button__sm button__secondary" %> + <% end %> - <%= t("titles.challenges_list", scope: "decidim.challenges.admin") %> - - <% if allowed_to? :create, :challenge %> - <%= link_to t("actions.new_challenge", scope: "decidim.challenges.admin"), - new_challenge_path, - class: "button tiny button--title" %> - <% end %> - -

+ <%= render partial: "decidim/admin/components/resource_action" %> +
+

-
-
- - + +
+
+ + + + + + + + + + + + + <% @challenges.each do |challenge| %> - - - - - - - - - - - <% @challenges.each do |challenge| %> - - - - - - - + + + + + + - - - <% end %> - -
+ <%= t("models.challenge.fields.title", scope: "decidim.challenges.admin") %> + + <%= t("models.challenge.fields.created_at", scope: "decidim.challenges.admin") %> + + <%= t("models.challenge.fields.state", scope: "decidim.challenges.admin") %> + + <%= t("models.challenge.fields.start_date", scope: "decidim.challenges.admin") %> + + <%= t("models.challenge.fields.end_date", scope: "decidim.challenges.admin") %> + + <%= t("models.challenge.fields.published", scope: "decidim.challenges.admin") %> + <%= t("actions.title", scope: "decidim.challenges.admin") %>
- <%= t("models.challenge.fields.title", scope: "decidim.challenges.admin") %> - - <%= t("models.challenge.fields.created_at", scope: "decidim.challenges.admin") %> - - <%= t("models.challenge.fields.state", scope: "decidim.challenges.admin") %> - - <%= t("models.challenge.fields.start_date", scope: "decidim.challenges.admin") %> - - <%= t("models.challenge.fields.end_date", scope: "decidim.challenges.admin") %> - - <%= t("models.challenge.fields.published", scope: "decidim.challenges.admin") %> -
- <%= translated_attribute(challenge.title) %> - - <%= l(challenge.created_at, format: :decidim_short) if challenge.created_at %> - - <%= I18n.t(challenge.state, scope: "decidim.challenges.states") %> - - <%= challenge.start_date %> - - <%= challenge.end_date %> - - <% if challenge.published? %> - <%= t("index.published", scope: "decidim.challenges") %> - <% else %> - <%= t("index.not_published", scope: "decidim.challenges") %> + + <%= translated_attribute(challenge.title) %> + + <%= l(challenge.created_at, format: :decidim_short) if challenge.created_at %> + + <%= I18n.t(challenge.state, scope: "decidim.challenges.states") %> + + <%= challenge.start_date %> + + <%= challenge.end_date %> + + <% if challenge.published? %> + <%= t("index.published", scope: "decidim.challenges") %> + <% else %> + <%= t("index.not_published", scope: "decidim.challenges") %> + <% end %> + + <% if allowed_to? :edit, :challenge %> + <%= icon_link_to "pencil-line", edit_challenge_path(challenge), t("actions.configure", scope: "decidim.challenges.admin"), class: "action-icon--new" %> + <%= icon_link_to "group-line", edit_challenge_surveys_path(challenge), t("actions.survey", scope: "decidim.challenges.admin"), class: "action-icon--registrations" %> <% end %> - - <% if allowed_to? :edit, :challenge %> - <%= icon_link_to "pencil", edit_challenge_path(challenge), t("actions.configure", scope: "decidim.challenges.admin"), class: "action-icon--new" %> - <%= icon_link_to "people", edit_challenge_surveys_path(challenge), t("actions.survey", scope: "decidim.challenges.admin"), class: "action-icon--registrations" %> - <% end %> - <%= icon_link_to "eye", resource_locator(challenge).path, t("actions.view", scope: "decidim.challenges.admin"), class: "action-icon--preview", target: :blank %> - <% if allowed_to? :destroy, :challenge, challenge: challenge %> - <%= icon_link_to "circle-x", challenge, t("actions.destroy", scope: "decidim.challenges.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.challenges.admin", name: translated_attribute(challenge.title)) } %> - <% end %> -
- <%= paginate @challenges, theme: "decidim" %> -
+ <%= icon_link_to "eye-line", resource_locator(challenge).path, t("actions.view", scope: "decidim.challenges.admin"), class: "action-icon--preview", target: :blank %> + <% if allowed_to? :destroy, :challenge, challenge: challenge %> + <%= icon_link_to "close-circle-line", challenge, t("actions.destroy", scope: "decidim.challenges.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.challenges.admin", name: translated_attribute(challenge.title)) } %> + <% end %> + + + <% end %> + +
+ +<%= decidim_paginate @challenges %> diff --git a/app/views/decidim/challenges/admin/challenges/new.html.erb b/app/views/decidim/challenges/admin/challenges/new.html.erb index 3dc79262..688bcc33 100644 --- a/app/views/decidim/challenges/admin/challenges/new.html.erb +++ b/app/views/decidim/challenges/admin/challenges/new.html.erb @@ -1,7 +1,18 @@ -<%= decidim_form_for(@form, html: { class: "form new_challenge challenge_form_admin" }) do |f| %> - <%= render partial: "form", object: f, locals: { title: t(".title") } %> - -
- <%= f.submit t(".create") %> +<% add_decidim_page_title(t(".title")) %> +
+

+ <%= t(".title") %> +

+
+
+
+ <%= decidim_form_for(@form, html: { class: "form-defaults form new_challenge challenge_form_admin" }) do |f| %> + <%= render partial: "form", object: f, locals: { title: t(".title") } %> +
+
+ <%= f.submit t(".create"), class: "button button__sm button__secondary" %> +
+
+ <% end %>
-<% end %> +
diff --git a/app/views/decidim/challenges/admin/surveys/_form.html.erb b/app/views/decidim/challenges/admin/surveys/_form.html.erb index 06b1af1d..996f49b7 100644 --- a/app/views/decidim/challenges/admin/surveys/_form.html.erb +++ b/app/views/decidim/challenges/admin/surveys/_form.html.erb @@ -1,22 +1,9 @@ -
-
-

- <%= t('.title') %> - <%= link_to t(".edit"), edit_challenge_surveys_form_path(challenge_id: @challenge.id), class: "button tiny button--title" %> - <%= t "actions.export", scope: "decidim.admin" %> -

-
- -
-
- <%= form.check_box :survey_enabled %>
diff --git a/app/views/decidim/challenges/admin/surveys/edit.html.erb b/app/views/decidim/challenges/admin/surveys/edit.html.erb index d615efc8..bb623b40 100644 --- a/app/views/decidim/challenges/admin/surveys/edit.html.erb +++ b/app/views/decidim/challenges/admin/surveys/edit.html.erb @@ -1,7 +1,39 @@ -<%= decidim_form_for(@form, url: challenge_surveys_path) do |f| %> - <%= render partial: "form", object: f %> +<% add_decidim_page_title(t("decidim.forms.admin.questionnaires.edit.title")) %> -
- <%= f.submit t('.save') %> +<% if templates_defined? && choose_template? %> + <%= render partial: "decidim/templates/admin/questionnaire_templates/choose", locals: { target: questionnaire, form_title: t("decidim.forms.admin.questionnaires.edit.title") } %> +<% else %> +
+

+ <%= edit_questionnaire_title %> + + <%= link_to t("decidim.challenges.admin.surveys.form.edit"), edit_challenge_surveys_form_path(challenge_id: @challenge.id), class: "button button__sm button__secondary" %> + <% unless template? questionnaire.questionnaire_for %> + <% if allowed_to? :preview, :questionnaire %> + <%= link_to t("preview", scope: "decidim.forms.admin.questionnaires.form"), public_url, class: "button button__sm button__secondary", target: :_blank, data: { "external-link": false } %> + <% end %> + <% if questionnaire.answers.any? %> + <%= export_dropdown(current_component, questionnaire.id) if allowed_to? :export_answers, :questionnaire %> + <% if allowed_to? :show, :questionnaire_answers %> + <%= link_to t("actions.show", scope: "decidim.forms.admin.questionnaires"), questionnaire_participants_url, class: "button button__sm button__secondary new whitespace-nowrap" %> + <% end %> + <% else %> + + <% end %> + <% end %> +

+
+ +
+
+ <%= decidim_form_for(@form, url: challenge_surveys_path, method: :put, html: { class: "form-defaults form edit_questionnaire" }) do |form| %> + <%= render partial: "form", object: form %> +
+
+ <%= form.submit t(".save"), class: "button button__sm button__secondary" %> +
+
+ <% end %> +
<% end %> diff --git a/app/views/decidim/challenges/admin/surveys/index.html.erb b/app/views/decidim/challenges/admin/surveys/index.html.erb index d589c59f..58fa40b8 100644 --- a/app/views/decidim/challenges/admin/surveys/index.html.erb +++ b/app/views/decidim/challenges/admin/surveys/index.html.erb @@ -1,53 +1,49 @@
-
-

+
+

<%= t ".title", total: @total %> -
- <%= link_to t("actions.back", scope: "decidim.forms.admin.questionnaires"), edit_challenge_surveys_form_path(challenge_id: @challenge.id), class: "button tiny button--title new" %> -
-

+ <%= link_to t("actions.back", scope: "decidim.forms.admin.questionnaires"), questionnaire_url, class: "button button__sm button__secondary new" %> +

-
-
- - +
+
+ + + + + + + + + + + + + <% @participants.each_with_index do |participant, idx| %> - - - - - - - + + + <% end %> + + + + + - - - <% @participants.each_with_index do |participant, idx| %> - - - - <% end %> - - - - - - - <% end %> - -
#<%= first_table_th(@participants.first) %><%= t("user_status", scope: "decidim.forms.user_answers_serializer") %><%= t("ip_hash", scope: "decidim.forms.user_answers_serializer") %><%= t("completion", scope: "decidim.forms.user_answers_serializer") %><%= t("created_at", scope: "decidim.forms.user_answers_serializer") %>
#<%= first_table_th(@participants.first) %><%= t("user_status", scope: "decidim.forms.user_answers_serializer") %><%= t("ip_hash", scope: "decidim.forms.user_answers_serializer") %><%= t("completion", scope: "decidim.forms.user_answers_serializer") %><%= t("created_at", scope: "decidim.forms.user_answers_serializer") %><%= idx + 1 + page_offset %> + <% if allowed_to? :show, :questionnaire_answers %> + <%= link_to first_table_td(participant), questionnaire_participant_answers_url(participant.session_token) %> + <% else %> + <%= first_table_td(participant) %><%= participant.status %><%= participant.ip_hash %><%= display_percentage(participant.completion) %><%= l participant.answered_at, format: :short %> + <% if allowed_to? :show, :questionnaire_answers %> + <%= icon_link_to "eye-line", questionnaire_participant_answers_url(participant.session_token), t("actions.show", scope: "decidim.forms.admin.questionnaires.answers"), class: "action-icon--eye" %> + <% end %> + <% if allowed_to? :export_response, :questionnaire_answers %> + <%= icon_link_to "download-line", questionnaire_export_response_url(participant.session_token), t("actions.export", scope: "decidim.forms.admin.questionnaires.answers"), class: "action-icon--data-transfer-download" %> + <% end %> +
<%= idx + 1 + page_offset %> - <% if allowed_to? :show, :questionnaire_answers %> - <%= link_to first_table_td(participant), questionnaire_participant_answers_url(participant.session_token) %> - <% else %> - <%= first_table_td(participant) %><%= participant.status %><%= participant.ip_hash %><%= display_percentage(participant.completion) %><%= l participant.answered_at, format: :short %> - <% if allowed_to? :show, :questionnaire_answers %> - <%= icon_link_to "eye", questionnaire_participant_answers_url(participant.session_token), t("actions.show", scope: "decidim.forms.admin.questionnaires.answers"), class: "action-icon--eye" %> - <% end %> - <% if allowed_to? :export_response, :questionnaire_answers %> - <%= icon_link_to "data-transfer-download", questionnaire_export_response_url(participant.session_token), t("actions.export", scope: "decidim.forms.admin.questionnaires.answers"), class: "action-icon--data-transfer-download" %> - <% end %> -
- <%= paginate @query, theme: "decidim" %> -
+ <% end %> + + + <%= decidim_paginate @query %>
diff --git a/app/views/decidim/challenges/admin/surveys/show.html.erb b/app/views/decidim/challenges/admin/surveys/show.html.erb index ed3cd159..5860ab17 100644 --- a/app/views/decidim/challenges/admin/surveys/show.html.erb +++ b/app/views/decidim/challenges/admin/surveys/show.html.erb @@ -1,18 +1,13 @@
-
-

+
+

<%= t ".title", number: current_idx %> -
- <%= link_to_unless last?, t("views.pagination.next").html_safe, next_url, rel: "next", class: "button tiny button--title next" %> -
-
- <%= link_to_unless first?, t("views.pagination.previous").html_safe, prev_url, rel: "prev", class: "button tiny button--title prev" %> -
-
- <%= link_to t("actions.export", scope: "decidim.forms.admin.questionnaires.answers"), questionnaire_export_response_url(@participant.session_token), class: "button tiny button--title export" %> - <%= link_to t("actions.back", scope: "decidim.forms.admin.questionnaires.answers"), questionnaire_participants_url, class: "button tiny button--title back" %> -
-

+ + <%= link_to t("actions.next", scope: "decidim.forms.admin.questionnaires.answers").html_safe, next_url, rel: "next", class: "button button__sm button__secondary next" unless last? %> + <%= link_to t("actions.previous", scope: "decidim.forms.admin.questionnaires.answers").html_safe, prev_url, rel: "prev", class: "button button__sm button__secondary prev" unless first? %> + <%= link_to t("actions.export", scope: "decidim.forms.admin.questionnaires.answers"), questionnaire_export_response_url(@participant.session_token), class: "button button__sm button__secondary export" %> + <%= link_to t("actions.back", scope: "decidim.forms.admin.questionnaires.answers"), questionnaire_participants_url, class: "button button__sm button__secondary back" %> +

@@ -20,10 +15,10 @@ <%= t("session_token", scope: "decidim.forms.user_answers_serializer") %> - <%= t("user_status", scope: "decidim.forms.user_answers_serializer") %> - <%= t("ip_hash", scope: "decidim.forms.user_answers_serializer") %> - <%= t("completion", scope: "decidim.forms.user_answers_serializer") %> - <%= t("created_at", scope: "decidim.forms.user_answers_serializer") %> + <%= t("user_status", scope: "decidim.forms.user_answers_serializer") %> + <%= t("ip_hash", scope: "decidim.forms.user_answers_serializer") %> + <%= t("completion", scope: "decidim.forms.user_answers_serializer") %> + <%= t("created_at", scope: "decidim.forms.user_answers_serializer") %> @@ -38,9 +33,9 @@
-
+
<% @participant.answers.each do |answer| %> -
<%= answer.question %>
+
<%= answer.question %>
<%= answer.body %>
<% end %>
diff --git a/app/views/decidim/challenges/challenges/_challenge.html.erb b/app/views/decidim/challenges/challenges/_challenge.html.erb index 4c7e0659..e1df466f 100644 --- a/app/views/decidim/challenges/challenges/_challenge.html.erb +++ b/app/views/decidim/challenges/challenges/_challenge.html.erb @@ -1,3 +1 @@ -
- <%= cell "decidim/challenges/challenge_m", challenge %> -
+<%= card_for challenge, highlight: true, size: :g %> diff --git a/app/views/decidim/challenges/challenges/_challenges.html.erb b/app/views/decidim/challenges/challenges/_challenges.html.erb index 9b493f50..f607eb64 100644 --- a/app/views/decidim/challenges/challenges/_challenges.html.erb +++ b/app/views/decidim/challenges/challenges/_challenges.html.erb @@ -1,28 +1,11 @@ -
-
- <%= order_selector available_orders, i18n_scope: "decidim.challenges.challenges.orders" %> -
+<% if @challenges.empty? %> + <%= cell("decidim/announcement", params[:filter].present? ? t(".empty_filters") : t(".empty")) %> +<% else %> +

<%= t("decidim.challenges.challenges.count.challenges_count", count: @challenges.total_count) %>

-
- <%= render partial: "decidim/shared/results_per_page" %> -
-
+ <%= order_selector available_orders, i18n_scope: "decidim.challenges.challenges.orders" %> -
- <%= render challenges %> -
+ <%= render @challenges %> -
-
- <% if challenges.empty? %> -
- <% if params[:filter].present? %> -

<%= t(".empty_filters") %>

- <% else %> -

<%= t(".empty") %>

- <% end %> -
- <% end %> -
-
-<%= decidim_paginate challenges %> + <%= decidim_paginate @challenges %> +<% end %> diff --git a/app/views/decidim/challenges/challenges/_count.html.erb b/app/views/decidim/challenges/challenges/_count.html.erb deleted file mode 100644 index 5905bc92..00000000 --- a/app/views/decidim/challenges/challenges/_count.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= t(".challenges_count", count: challenges.count) %> diff --git a/app/views/decidim/challenges/challenges/_filters.html.erb b/app/views/decidim/challenges/challenges/_filters.html.erb deleted file mode 100644 index 07ce772b..00000000 --- a/app/views/decidim/challenges/challenges/_filters.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -<%= filter_form_for filter do |form| %> -
- -
- - <%= form.check_boxes_tree :with_any_state, filter_challenges_state_values, legend_title: t(".state") %> - - <% if current_participatory_space.has_subscopes? %> - <%= form.check_boxes_tree :with_any_scope, filter_scopes_values, legend_title: t(".scope") %> - <% end %> - - <% if current_component.categories.any? %> - <%= form.check_boxes_tree :with_any_category, filter_categories_values, legend_title: t(".category") %> - <% end %> - - <% if current_participatory_space.components.published.where(manifest_name: "sdgs").any? %> - <%= sdgs_filter_selector(form) %> - <% end %> - - <%= hidden_field_tag :order, order, id: nil, class: "order_filter" %> -<% end %> diff --git a/app/views/decidim/challenges/challenges/_filters_small_view.html.erb b/app/views/decidim/challenges/challenges/_filters_small_view.html.erb deleted file mode 100644 index b009ae0b..00000000 --- a/app/views/decidim/challenges/challenges/_filters_small_view.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -
- -
- -
-
-

<%= t ".filter_by" %>:

- -
-
- <%= render partial: "filters" %> -
-
diff --git a/app/views/decidim/challenges/challenges/_related_problems.html.erb b/app/views/decidim/challenges/challenges/_related_problems.html.erb new file mode 100644 index 00000000..64d0eb98 --- /dev/null +++ b/app/views/decidim/challenges/challenges/_related_problems.html.erb @@ -0,0 +1,14 @@ +
+

+ <%= resource_type_icon "Decidim::Amendment", class: "fill-tertiary w-6 h-6" %> + <%= t("decidim.problems.problems.count.problems_count", count: problems.count) %> +

+ +
+ <% problems.each do |problem| %> + <%= link_to resource_locator(problem).path, class: "card__link" do %> + <%= translated_attribute problem.title %> + <% end %> + <% end %> +
+
diff --git a/app/views/decidim/challenges/challenges/_sidebar_data.html.erb b/app/views/decidim/challenges/challenges/_sidebar_data.html.erb new file mode 100644 index 00000000..69fff058 --- /dev/null +++ b/app/views/decidim/challenges/challenges/_sidebar_data.html.erb @@ -0,0 +1,60 @@ +
+ <% if @challenge.survey_enabled %> + <%= link_to t('surveys.answer', scope: "decidim.challenges"), answer_challenge_survey_path(@challenge), class: "button button__lg w-full button__secondary" %> + <% end %> + + <% if solutions_component&.settings&.creation_enabled? %> + <%= action_authorized_link_to :create, new_solution_path, class: "button button__lg w-full button__secondary", data: { "redirect_url": new_solution_path } do %> + <%= t("decidim.challenges.challenges.show.new_solution") %> + <% end %> + <% end %> +
+ +
+
+
+

<%= t("status", scope: "activemodel.attributes.challenge") %>

+

<%= t(@challenge.state, scope: "decidim.challenges.states") %>

+
+ + <% if @challenge_scope.present? %> +
+

<%= t("scope", scope: "activemodel.attributes.challenge") %>

+

<%= translated_attribute(@challenge_scope.name) %>

+
+ <% end %> + + <% if @challenge.coordinating_entities.present? %> +
+

<%= t("coordinating_entities", scope: "activemodel.attributes.challenge") %>

+

<%= present(@challenge).coordinating_entities %>

+
+ <% end %> + + <% if @challenge.collaborating_entities.present? %> +
+

<%= t("collaborating_entities", scope: "activemodel.attributes.challenge") %>

+

<%= present(@challenge).collaborating_entities %>

+
+ <% end %> +
+ + <% if has_sdgs? %> +
+

<%= t("sdg", scope: "activemodel.attributes.challenge") %>

+
+
+

<%= t(@sdg + ".logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t(@sdg + ".logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-#{@sdg_index}.svg", alt: "Logo ODS #{@sdg_index}", class: "challenge--view" %> +
+
+ <% end %> +
+ +
+ <%= resource_reference(current_participatory_space) %> + <%= render partial: "decidim/shared/follow_button", class: "text-center", locals: { followable: current_participatory_space, large: false } %> + <%= cell "decidim/share_button", nil %> +
diff --git a/app/views/decidim/challenges/challenges/index.html.erb b/app/views/decidim/challenges/challenges/index.html.erb index c1001f2c..3f6b5864 100644 --- a/app/views/decidim/challenges/challenges/index.html.erb +++ b/app/views/decidim/challenges/challenges/index.html.erb @@ -1,30 +1,29 @@ -<%= render partial: "decidim/shared/component_announcement" %> +<% add_decidim_page_title(t("name", scope: "decidim.components.challenges")) %> -<%= stylesheet_pack_tag "decidim_sdgs" %> -<%= stylesheet_pack_tag "decidim_challenges" %> +<%= append_stylesheet_pack_tag "decidim_challenges" %> -
-
-

- <%= render partial: "count", locals: {challenges: challenges} %> -

-
-
+<% content_for :aside do %> +

<%= component_name %>

-
- <% if !@component_settings.hide_filters %> -
- <%= render partial: "filters_small_view" %> -
- <%= render partial: "filters" %> -
-
-
- <% else %> -
+ <% unless @component_settings.hide_filters? %> + <%= render layout: "decidim/shared/filters", locals: { filter_sections:, search_variable: :search_text_cont, skip_to_id: "challenges" } do %> + <%= hidden_field_tag :order, order, id: nil, class: "order_filter" %> + <% end %> + + <% if has_sdgs? %> + <%= filter_form_for filter do |form| %> + <%= sdgs_filter_selector(form) %> + <% end %> + <% end %> <% end %> +<% end %> + +<%= render layout: "layouts/decidim/shared/layout_two_col" do %> + <%= render partial: "decidim/shared/component_announcement" %> + +
<%= render partial: "challenges" %> -
-
+ +<% end %> - <%= render partial: "decidim/sdgs/sdgs_filter/modal" %> +<%= render partial: "decidim/sdgs/sdgs_filter/modal" %> diff --git a/app/views/decidim/challenges/challenges/index.js.erb b/app/views/decidim/challenges/challenges/index.js.erb index 4a74d8a1..f1377958 100644 --- a/app/views/decidim/challenges/challenges/index.js.erb +++ b/app/views/decidim/challenges/challenges/index.js.erb @@ -1,10 +1,5 @@ var $challenges = $('#challenges'); -var $challengesCount = $('#challenges-count'); var $orderFilterInput = $('.order_filter'); $challenges.html('<%= j(render partial: "challenges").strip.html_safe %>'); -$challengesCount.html('<%= j(render partial: "count").strip.html_safe %>'); $orderFilterInput.val('<%= order %>'); - -var $dropdownMenu = $('.dropdown.menu', $challenges); -$dropdownMenu.foundation(); diff --git a/app/views/decidim/challenges/challenges/show.html.erb b/app/views/decidim/challenges/challenges/show.html.erb index 62d275e5..acc2b10b 100644 --- a/app/views/decidim/challenges/challenges/show.html.erb +++ b/app/views/decidim/challenges/challenges/show.html.erb @@ -1,132 +1,41 @@ -<%= stylesheet_pack_tag "decidim_sdgs" %> -<%= stylesheet_pack_tag "decidim_challenges" %> - -
-
- -
- -
-
-
- <% if @challenge.survey_enabled? %> - <%= link_to t('surveys.answer', scope: "decidim.challenges"), answer_challenge_survey_path(@challenge), class: "card__button button button--sc small" %> - <% end %> - - <% if solutions_component&.settings&.creation_enabled? %> - <%= action_authorized_link_to :create, new_solution_path, class: "card__button button button--sc small", data: { "redirect_url": new_solution_path } do %> - <%= t(".new_solution") %> - <%= icon "plus", role: "img", "aria-hidden": true %> - <% end %> - <% end %> -
- <%= render partial: "decidim/shared/follow_button", - locals: { followable: current_participatory_space, large: false } %> -
-
- -
- -
- <%= t("status", scope: "activemodel.attributes.challenge") %> - <%= t(@challenge.state, scope: "decidim.challenges.states") %> -
- - <% if @challenge_scope.present? %> -
- <%= t("scope", scope: "activemodel.attributes.challenge") %> - <%= translated_attribute(@challenge_scope.name) %> -
- <% end %> - - <% if @challenge.coordinating_entities.present? %> -
- <%= t("coordinating_entities", scope: "activemodel.attributes.challenge") %> - <%= present(@challenge).coordinating_entities %> -
- <% end %> - - <% if @challenge.collaborating_entities.present? %> -
- <%= t("collaborating_entities", scope: "activemodel.attributes.challenge") %> - <%= present(@challenge).collaborating_entities %> -
- <% end %> - - <% if @sdg %> -
- <%= t("sdg", scope: "activemodel.attributes.challenge") %> - <%= t_sdg(@sdg) %>
-
-
-

<%= t(@sdg + ".logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t(@sdg + ".logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-#{@sdg_index}.svg", alt: "Logo ODS #{@sdg_index}", class: "challenge--view" %> -
-
- <% end %> -
- <%= resource_reference(current_participatory_space) %> - <%= render partial: "decidim/shared/share_modal" %> +<%= append_stylesheet_pack_tag "decidim_sdgs" %> +<%= append_stylesheet_pack_tag "decidim_challenges" %> + +<%= render layout: "layouts/decidim/shared/layout_item", locals: { back_path: challenges_path } do %> +
+

+ <%= present(@challenge).title(links: true, html_escape: true) %> +

+
+ +
+ <%= render partial: "decidim/shared/share_modal" %> + +

<%= t("local_description", scope: "activemodel.attributes.challenge") %>

+
+

<%= present(@challenge).local_description %>

-
- <%= link_to :challenges, class: "small hollow" do %> - <%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %> - <%= t("return_to_list", scope: "decidim.challenges.show") %> - <% end %> -
-

<%= present(@challenge).title %>


- -

<%= t("local_description", scope: "activemodel.attributes.challenge") %>

-

<%= present(@challenge).local_description %>

+

<%= t("global_description", scope: "activemodel.attributes.challenge") %>

+
+

<%= present(@challenge).global_description %>

+
-

<%= t("global_description", scope: "activemodel.attributes.challenge") %>

-

<%= present(@challenge).global_description %>

+ <% if present(@challenge).tags.present? %> +

<%= t("tags", scope: "activemodel.attributes.challenge") %>

+

<%= present(@challenge).tags %>

+ <% end %> - <% if present(@challenge).tags.present? %> -

<%= t("tags", scope: "activemodel.attributes.challenge") %>

-

<%= present(@challenge).tags %>

- <% end %> + <% if @challenge.problems.present? %> + <%= render partial: "related_problems", locals: {problems: @challenge.problems} %> + <% end %> - <% if @challenge.problems.present? %> -

<%= t("associated_problems", scope: "decidim.challenges.show") %>

-
- <% @challenge.problems.each do |problem| %> -
-
- <%= link_to resource_locator(problem).path, class: "card__link" do %> -
- <%= translated_attribute problem.title %> -
- <% end %> - <%= truncate_description(problem.description) %> -
-
- <% end %> -
- <% end %> + <% if challenge_associated_solutions(@challenge).present? %> + <%= render partial: "decidim/shared/related_solutions", locals: {solutions: challenge_associated_solutions(@challenge)} %> + <% end %> +
- <% if challenge_associated_solutions(@challenge).present? %> -

<%= t("proposed_solutions", scope: "decidim.challenges.show") %>

-
- <% challenge_associated_solutions(@challenge).each do |solution| %> -
-
- <%= link_to resource_locator(solution).path, class: "card__link" do %> -
- <%= translated_attribute solution.title %> -
- <% end %> - <%= truncate_description(solution.description) %> -
-
- <% end %> -
- <% end %> -
-
-
-
+ <% content_for :aside do %> + <%= render partial: "sidebar_data" %> + <% end %> +<% end %> diff --git a/app/views/decidim/problems/admin/problems/_form.html.erb b/app/views/decidim/problems/admin/problems/_form.html.erb index b9a014a3..234eb383 100644 --- a/app/views/decidim/problems/admin/problems/_form.html.erb +++ b/app/views/decidim/problems/admin/problems/_form.html.erb @@ -1,81 +1,78 @@ -
-
-

<%= current_organization.name %>

-
+
+
+
+
+ <%= form.translated :text_field, :title, autofocus: true, class: "js-hashtags", hashtaggable: true, aria: { label: :title } %> +
-
-
- <%= form.translated :text_field, :title, autofocus: true %> -
+
+ <%= form.translated :editor, :description %> +
-
- <%= form.translated :editor, :description %> -
+
+ <%= form.text_field :tags %> +
-
- <%= form.text_field :tags %> -
+
+ <%= form.text_field :causes %> +
-
- <%= form.text_field :causes %> -
+
+ <%= form.text_field :groups_affected %> +
-
- <%= form.text_field :groups_affected %> -
+
+ <%= scopes_select_field form, :decidim_sectorial_scope_id, root: nil %> +
-
- <%= scopes_picker_field form, :decidim_sectorial_scope_id, root: nil %> -
+
+ <%= scopes_select_field form, :decidim_technological_scope_id, root: nil %> +
-
- <%= scopes_picker_field form, :decidim_technological_scope_id, root: nil %> -
+
+ <%= form.select :state, + @form.select_states_collection, + selected: [I18n.t(@form.try(:state), scope: 'decidim.problems.states'), Decidim::Problems::Problem::states[@form.try(:state)]], + label: t("models.problem.fields.state", scope: "decidim.problems.admin") %> +
-
- <%= form.select :state, - @form.select_states_collection, - selected: [I18n.t(@form.try(:state), scope: 'decidim.problems.states'), Decidim::Problems::Problem::states[@form.try(:state)]], - label: t("models.problem.fields.state", scope: "decidim.problems.admin") %> -
+
+ <%= form.text_field :proposing_entities %> +
-
- <%= form.text_field :proposing_entities %> +
+ <%= form.text_field :collaborating_entities %> +
-
- <%= form.text_field :collaborating_entities %> +
+

<%= t(".challenge") %>

-
- -
-

<%= t(".challenge") %>

-
-
+
-
- <%= form.select :decidim_challenges_challenge_id, - @form.select_challenge_collection, - selected: @form.try(:decidim_challenges_challenge_id) ? [translated_attribute(Decidim::Challenges::Challenge.find(@form.try(:decidim_challenges_challenge_id)).title), @form.try(:decidim_challenges_challenge_id)] : '', - label: t("models.problem.fields.challenge", scope: "decidim.problems.admin"), - include_blank: "" %> +
+ <%= form.select :decidim_challenges_challenge_id, + @form.select_challenge_collection, + selected: @form.try(:decidim_challenges_challenge_id) ? [translated_attribute(Decidim::Challenges::Challenge.find(@form.try(:decidim_challenges_challenge_id)).title), @form.try(:decidim_challenges_challenge_id)] : '', + label: t("models.problem.fields.challenge", scope: "decidim.problems.admin"), + include_blank: "" %> +
-
- -
-

<%= t(".duration") %>

-
+
+

<%= t(".duration") %>

+
-
-
-
- <%= form.date_field :start_date, autocomplete: "off" %> -
+
+
+
+ <%= form.date_field :start_date, autocomplete: "off" %> +
-
- <%= form.date_field :end_date, autocomplete: "off" %> +
+ <%= form.date_field :end_date, autocomplete: "off" %> +
diff --git a/app/views/decidim/problems/admin/problems/edit.html.erb b/app/views/decidim/problems/admin/problems/edit.html.erb index 9dc058d2..217ca067 100644 --- a/app/views/decidim/problems/admin/problems/edit.html.erb +++ b/app/views/decidim/problems/admin/problems/edit.html.erb @@ -1,12 +1,24 @@ -<%= decidim_form_for(@form, html: { class: "form edit_problem problem_form_admin" }) do |f| %> - <%= render partial: "form", object: f %> -
- <%= f.submit t(".update"), class: "button" %> - - <% if problem.published? %> - <%= link_to t("actions.unpublish", scope: "decidim.problems.admin"), problem_publish_path(problem), method: :delete, class: "button muted" %> - <% else %> - <%= link_to t("actions.publish", scope: "decidim.problems.admin"), problem_publish_path(problem), method: :post, class: "button hollow" %> +<% add_decidim_page_title(t(".title")) %> +
+

+ <%= t(".title") %> +

+
+
+
+ <%= decidim_form_for(@form, html: { class: "form-defaults form edit_problem problem_form_admin" }) do |f| %> + <%= render partial: "form", object: f, locals: { title: t(".title") } %> +
+
+ <%= f.submit t(".update"), class: "button button__sm button__secondary" %> + + <% if problem.published? %> + <%= link_to t("actions.unpublish", scope: "decidim.problems.admin"), problem_publish_path(problem), method: :delete, class: "button button__sm button__secondary" %> + <% else %> + <%= link_to t("actions.publish", scope: "decidim.problems.admin"), problem_publish_path(problem), method: :post, class: "button button__sm button__secondary" %> + <% end %> +
+
<% end %>
-<% end %> +
diff --git a/app/views/decidim/problems/admin/problems/index.html.erb b/app/views/decidim/problems/admin/problems/index.html.erb index c1fb46b7..c89a95bd 100644 --- a/app/views/decidim/problems/admin/problems/index.html.erb +++ b/app/views/decidim/problems/admin/problems/index.html.erb @@ -1,88 +1,93 @@ -
-
-

+<% add_decidim_page_title(t(".title")) %> +
+
+

+
+ <%= t(".title") %> + "> +
+
+ <% if allowed_to? :create, :problem %> + <%= link_to t("actions.new_problem", scope: "decidim.problems.admin"), + new_problem_path, + class: "button button__sm button__secondary" %> + <% end %> - <%= t("titles.problems_list", scope: "decidim.problems.admin") %> - - <% if allowed_to? :create, :problem %> - <%= link_to t("actions.new_problem", scope: "decidim.problems.admin"), - new_problem_path, - class: "button tiny button--title" %> - <% end %> - -

+ <%= render partial: "decidim/admin/components/resource_action" %> +
+

-
-
- - + +
+
+ + + + + + + + + + + + + + <% @problems.each do |problem| %> - - - - - - - - - - - - <% @problems.each do |problem| %> - - - - - - - - + + + + + + + - - - <% end %> - -
+ <%= t("models.problem.fields.title", scope: "decidim.problems.admin") %> + + <%= t("models.problem.fields.created_at", scope: "decidim.problems.admin") %> + + <%= t("models.problem.fields.challenge", scope: "decidim.problems.admin") %> + + <%= t("models.problem.fields.state", scope: "decidim.problems.admin") %> + + <%= t("models.problem.fields.start_date", scope: "decidim.problems.admin") %> + + <%= t("models.problem.fields.end_date", scope: "decidim.problems.admin") %> + + <%= t("models.problem.fields.published", scope: "decidim.problems.admin") %> +
- <%= t("models.problem.fields.title", scope: "decidim.problems.admin") %> - - <%= t("models.problem.fields.created_at", scope: "decidim.problems.admin") %> - - <%= t("models.problem.fields.challenge", scope: "decidim.problems.admin") %> - - <%= t("models.problem.fields.state", scope: "decidim.problems.admin") %> - - <%= t("models.problem.fields.start_date", scope: "decidim.problems.admin") %> - - <%= t("models.problem.fields.end_date", scope: "decidim.problems.admin") %> - - <%= t("models.problem.fields.published", scope: "decidim.problems.admin") %> -
- <%= translated_attribute(problem.title) %> - - <%= l(problem.created_at, format: :decidim_short) if problem.created_at %> - - <%= translated_attribute(problem.challenge.title) %> - - <%= I18n.t(problem.state, scope: "decidim.problems.states") %> - - <%= problem.start_date %> - - <%= problem.end_date %> - - <% if problem.published? %> - <%= t("index.published", scope: "decidim.problems") %> - <% else %> - <%= t("index.not_published", scope: "decidim.problems") %> + + <%= translated_attribute(problem.title) %> + + <%= l(problem.created_at, format: :decidim_short) if problem.created_at %> + + <%= translated_attribute(problem.challenge.title) %> + + <%= I18n.t(problem.state, scope: "decidim.problems.states") %> + + <%= problem.start_date %> + + <%= problem.end_date %> + + <% if problem.published? %> + <%= t("index.published", scope: "decidim.problems") %> + <% else %> + <%= t("index.not_published", scope: "decidim.problems") %> + <% end %> + + <% if allowed_to? :edit, :problem %> + <%= icon_link_to "pencil-line", edit_problem_path(problem), t("actions.configure", scope: "decidim.problems.admin"), class: "action-icon--new" %> <% end %> - - <% if allowed_to? :edit, :problem %> - <%= icon_link_to "pencil", edit_problem_path(problem), t("actions.configure", scope: "decidim.problems.admin"), class: "action-icon--new" %> - <% end %> - <%= icon_link_to "eye", resource_locator(problem).path, t("actions.view", scope: "decidim.problems.admin"), class: "action-icon--preview", target: :blank %> - <% if allowed_to? :destroy, :problem, problem: problem %> - <%= icon_link_to "circle-x", problem, t("actions.destroy", scope: "decidim.problems.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.problems.admin", name: translated_attribute(problem.title)) } %> - <% end %> -
- <%= paginate @problems, theme: "decidim" %> -
+ <%= icon_link_to "eye-line", resource_locator(problem).path, t("actions.view", scope: "decidim.problems.admin"), class: "action-icon--preview", target: :blank %> + <% if allowed_to? :destroy, :problem, problem: problem %> + <%= icon_link_to "close-circle-line", problem, t("actions.destroy", scope: "decidim.problems.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.problems.admin", name: translated_attribute(problem.title)) } %> + <% end %> + + + <% end %> + +
+ +<%= decidim_paginate @problems %> diff --git a/app/views/decidim/problems/admin/problems/new.html.erb b/app/views/decidim/problems/admin/problems/new.html.erb index 61235776..3f5d2f9b 100644 --- a/app/views/decidim/problems/admin/problems/new.html.erb +++ b/app/views/decidim/problems/admin/problems/new.html.erb @@ -1,7 +1,18 @@ -<%= decidim_form_for(@form, html: { class: "form new_problem problem_form_admin" }) do |f| %> - <%= render partial: "form", object: f, locals: { title: t(".title") } %> - -
- <%= f.submit t(".create") %> +<% add_decidim_page_title(t(".title")) %> +
+

+ <%= t(".title") %> +

+
+
+
+ <%= decidim_form_for(@form, html: { class: "form-defaults form new_problem problem_form_admin" }) do |f| %> + <%= render partial: "form", object: f, locals: { title: t(".title") } %> +
+
+ <%= f.submit t(".create"), class: "button button__sm button__secondary" %> +
+
+ <% end %>
-<% end %> +
diff --git a/app/views/decidim/problems/problems/_count.html.erb b/app/views/decidim/problems/problems/_count.html.erb deleted file mode 100644 index 0a7bed1f..00000000 --- a/app/views/decidim/problems/problems/_count.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= t(".problems_count", count: problems.count) %> diff --git a/app/views/decidim/problems/problems/_filters.html.erb b/app/views/decidim/problems/problems/_filters.html.erb deleted file mode 100644 index f43d4551..00000000 --- a/app/views/decidim/problems/problems/_filters.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -<%= filter_form_for filter do |form| %> -
- -
- - <%= form.check_boxes_tree :with_any_state, filter_problems_state_values, legend_title: t(".state") %> - - <% if current_participatory_space.has_subscopes? %> - <%= form.check_boxes_tree :with_any_territorial_scope_id, filter_scopes_values, legend_title: t(".territorial_scope") %> - <%= form.check_boxes_tree :with_any_sectorial_scope_id, filter_scopes_values, legend_title: t(".sectorial_scope") %> - <%= form.check_boxes_tree :with_any_technological_scope_id, filter_scopes_values, legend_title: t(".technological_scope") %> - <% end %> - - <% if current_component.categories.any? %> - <%= form.check_boxes_tree :with_any_category, filter_categories_values, legend_title: t(".category") %> - <% end %> - - <% if current_participatory_space.components.published.where(manifest_name: "sdgs").any? %> - <%= sdgs_filter_selector(form) %> - <% end %> - - <%= hidden_field_tag :order, order, id: nil, class: "order_filter" %> -<% end %> diff --git a/app/views/decidim/problems/problems/_filters_small_view.html.erb b/app/views/decidim/problems/problems/_filters_small_view.html.erb deleted file mode 100644 index b009ae0b..00000000 --- a/app/views/decidim/problems/problems/_filters_small_view.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -
- -
- -
-
-

<%= t ".filter_by" %>:

- -
-
- <%= render partial: "filters" %> -
-
diff --git a/app/views/decidim/problems/problems/_problem.html.erb b/app/views/decidim/problems/problems/_problem.html.erb index 88996572..b95461cf 100644 --- a/app/views/decidim/problems/problems/_problem.html.erb +++ b/app/views/decidim/problems/problems/_problem.html.erb @@ -1,3 +1 @@ -
- <%= cell "decidim/problems/problem_m", problem %> -
+<%= card_for problem, highlight: true, size: :g, has_sdgs: has_sdgs? %> diff --git a/app/views/decidim/problems/problems/_problems.html.erb b/app/views/decidim/problems/problems/_problems.html.erb index 95a4b8bb..1f480eaf 100644 --- a/app/views/decidim/problems/problems/_problems.html.erb +++ b/app/views/decidim/problems/problems/_problems.html.erb @@ -1,28 +1,11 @@ -
-
- <%= order_selector available_orders, i18n_scope: "decidim.problems.problems.orders" %> -
+<% if problems.empty? %> + <%= cell("decidim/announcement", params[:filter].present? ? t(".empty_filters") : t(".empty")) %> +<% else %> +

<%= t("decidim.problems.problems.count.problems_count", count: problems.total_count) %>

-
- <%= render partial: "decidim/shared/results_per_page" %> -
-
+ <%= order_selector available_orders, i18n_scope: "decidim.problems.problems.orders" %> -
- <%= render problems %> -
+ <%= render problems, locals: { has_sdgs: has_sdgs? } %> -
-
- <% if problems.empty? %> -
- <% if params[:filter].present? %> -

<%= t(".empty_filters") %>

- <% else %> -

<%= t(".empty") %>

- <% end %> -
- <% end %> -
-
-<%= decidim_paginate problems %> + <%= decidim_paginate problems %> +<% end %> diff --git a/app/views/decidim/problems/problems/_sidebar_data.html.erb b/app/views/decidim/problems/problems/_sidebar_data.html.erb new file mode 100644 index 00000000..45c948b8 --- /dev/null +++ b/app/views/decidim/problems/problems/_sidebar_data.html.erb @@ -0,0 +1,70 @@ +
+
+
+

<%= t("status", scope: "activemodel.attributes.problem") %>

+

<%= t(@problem.state, scope: "decidim.problems.states") %>

+
+ + <% if @challenge_scope.present? %> +
+

<%= t("scope", scope: "activemodel.attributes.problem") %>

+

<%= translated_attribute(@challenge_scope.name) %>

+
+ <% end %> + + <% if @problem.challenge.coordinating_entities.present? %> +
+

<%= t("coordinating_entities", scope: "activemodel.attributes.challenge") %>

+

<%= present(@problem).challenge.coordinating_entities %>

+
+ <% end %> + + <% if @problem.causes.present? %> +
+

<%= t("causes", scope: "activemodel.attributes.problem") %>

+

<%= present(@problem).causes %>

+
+ <% end %> + + <% if @problem.groups_affected.present? %> +
+

<%= t("groups_affected", scope: "activemodel.attributes.problem") %>

+

<%= present(@problem).groups_affected %>

+
+ <% end %> + + <% if @problem.decidim_sectorial_scope_id.present? %> +
+

<%= t("decidim_sectorial_scope_id", scope: "activemodel.attributes.problem") %>

+

<%= translated_attribute current_organization.scopes.find_by(id: @problem.decidim_sectorial_scope_id).name %>

+
+ <% end %> + + <% if @problem.decidim_technological_scope_id.present? %> +
+

<%= t("decidim_sectorial_scope_id", scope: "activemodel.attributes.problem") %>

+

<%= translated_attribute current_organization.scopes.find_by(id: @problem.decidim_technological_scope_id).name %>

+
+ <% end %> +
+ + <% if @problem.challenge.sdg_code %> +
+

<%= t("sdg", scope: "activemodel.attributes.problem") %>

+
+
+

<%= t(@problem.challenge.sdg_code + ".logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t(@problem.challenge.sdg_code + ".logo.line2", scope: "decidim.components.sdgs") %>

+
+ <% sdg_code = (1 + Decidim::Sdgs::Sdg.index_from_code(@problem.challenge.sdg_code.to_sym)).to_s.rjust(2, "0") %> + <%= image_pack_tag "media/images/ods-#{sdg_code}.svg", alt: "Logo ODS #{sdg_code}", class: "problem--view" %> +
+
+ <% end %> +
+ +
+ <%= resource_reference(current_participatory_space) %> + <%= render partial: "decidim/shared/follow_button", class: "text-center", locals: { followable: current_participatory_space, large: false } %> + <%= cell "decidim/share_button", nil %> +
diff --git a/app/views/decidim/problems/problems/index.html.erb b/app/views/decidim/problems/problems/index.html.erb index 0031be94..15769334 100644 --- a/app/views/decidim/problems/problems/index.html.erb +++ b/app/views/decidim/problems/problems/index.html.erb @@ -1,28 +1,28 @@ -<%= stylesheet_pack_tag "decidim_sdgs" %> -<%= stylesheet_pack_tag "decidim_problems" %> +<% add_decidim_page_title(t("name", scope: "decidim.components.problems")) %> -
-
-

- <%= render partial: "count" %> -

-
-
+<%= append_stylesheet_pack_tag "decidim_sdgs" %> +<%= append_stylesheet_pack_tag "decidim_problems" %> -
- <% if !@component_settings.hide_filters %> -
- <%= render partial: "filters_small_view" %> -
- <%= render partial: "filters" %> -
-
-
- <% else %> -
+<% content_for :aside do %> +

<%= component_name %>

+ + <% unless @component_settings.hide_filters %> + <%= render layout: "decidim/shared/filters", locals: { filter_sections:, has_sdgs: has_sdgs?, search_variable: :search_text_cont, skip_to_id: "problems" } do %> + <%= hidden_field_tag :order, order, id: nil, class: "order_filter" %> + <% end %> <% end %> - <%= render partial: "problems" %> -
-
- <%= render partial: "decidim/sdgs/sdgs_filter/modal" %> + <% if has_sdgs? %> + <%= filter_form_for filter do |form| %> + <%= sdgs_filter_selector(form) %> + <% end %> + <% end %> +<% end %> + +<%= render layout: "layouts/decidim/shared/layout_two_col" do %> +
+ <%= render partial: "problems", locals: { has_sdgs: has_sdgs? } %> +
+<% end %> + +<%= render partial: "decidim/sdgs/sdgs_filter/modal" %> diff --git a/app/views/decidim/problems/problems/index.js.erb b/app/views/decidim/problems/problems/index.js.erb index 4b42ede7..798876d5 100644 --- a/app/views/decidim/problems/problems/index.js.erb +++ b/app/views/decidim/problems/problems/index.js.erb @@ -1,10 +1,5 @@ var $problems = $('#problems'); -var $problemsCount = $('#problems-count'); var $orderFilterInput = $('.order_filter'); $problems.html('<%= j(render partial: "problems").strip.html_safe %>'); -$problemsCount.html('<%= j(render partial: "count").strip.html_safe %>'); $orderFilterInput.val('<%= order %>'); - -var $dropdownMenu = $('.dropdown.menu', $problems); -$dropdownMenu.foundation(); diff --git a/app/views/decidim/problems/problems/show.html.erb b/app/views/decidim/problems/problems/show.html.erb index 57180bd1..bf45a634 100644 --- a/app/views/decidim/problems/problems/show.html.erb +++ b/app/views/decidim/problems/problems/show.html.erb @@ -1,134 +1,38 @@ -<%= stylesheet_pack_tag "decidim_sdgs" %> -<%= stylesheet_pack_tag "decidim_problems" %> - -
-
- -
- -
-
- <%= render partial: "decidim/shared/follow_button", - locals: { followable: current_participatory_space, large: false } %> -
-
- -
- -
- <%= t("status", scope: "activemodel.attributes.problem") %> - <%= t(@problem.state, scope: "decidim.problems.states") %> -
- - <% if @challenge_scope.present? %> -
- <%= t("scope", scope: "activemodel.attributes.problem") %> - <%= translated_attribute(@challenge_scope.name) %> -
- <% end %> - - <% if @problem.challenge.coordinating_entities.present? %> -
- <%= t("coordinating_entities", scope: "activemodel.attributes.challenge") %> - <%= present(@problem).challenge.coordinating_entities %> -
- <% end %> - - <% if @problem.challenge.collaborating_entities.present? %> -
- <%= t("collaborating_entities", scope: "activemodel.attributes.problem") %> - <%= present(@problem).collaborating_entities %> -
- <% end %> - - <% if @problem.causes.present? %> -
- <%= t("causes", scope: "activemodel.attributes.problem") %> - <%= present(@problem).causes %> -
- <% end %> - - <% if @problem.groups_affected.present? %> -
- <%= t("groups_affected", scope: "activemodel.attributes.problem") %> - <%= present(@problem).groups_affected %> -
- <% end %> - - <% if @problem.decidim_sectorial_scope_id.present? %> -
- <%= t("decidim_sectorial_scope_id", scope: "activemodel.attributes.problem") %> - <%= translated_attribute current_organization.scopes.find_by(id: @problem.decidim_sectorial_scope_id).name %> -
- <% end %> - - <% if @problem.decidim_technological_scope_id.present? %> -
- <%= t("decidim_technological_scope_id", scope: "activemodel.attributes.problem") %> - <%= translated_attribute current_organization.scopes.find_by(id: @problem.decidim_technological_scope_id).name %> -
- <% end %> - -
- <%= t("sdg", scope: "activemodel.attributes.problem") %> - <% if @problem.challenge.sdg_code %> - <%= t_sdg(@problem.challenge.sdg_code) %>
-
-
-

<%= t(@problem.challenge.sdg_code + ".logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t(@problem.challenge.sdg_code + ".logo.line2", scope: "decidim.components.sdgs") %>

-
- <% sdg_code = (1 + Decidim::Sdgs::Sdg.index_from_code(@problem.challenge.sdg_code.to_sym)).to_s.rjust(2, "0") %> - <%= image_pack_tag "media/images/ods-#{sdg_code}.svg", alt: "Logo ODS #{sdg_code}", class: "problem--view" %> -
- <% end %> -
-
- <%= resource_reference(current_participatory_space) %> - <%= render partial: "decidim/shared/share_modal" %> +<%= append_stylesheet_pack_tag "decidim_sdgs" %> +<%= append_stylesheet_pack_tag "decidim_problems" %> + +<%= render layout: "layouts/decidim/shared/layout_item", locals: { back_path: problems_path } do %> +
+

+ <%= present(@problem).title(links: true, html_escape: true) %> +

+
+ +
+ <%= render partial: "decidim/shared/share_modal" %> + +

+ <%= t("challenge", scope: "activemodel.attributes.problem") %>: + <%= link_to translated_attribute(@problem.challenge.title), Decidim::ResourceLocatorPresenter.new(@problem.challenge).path %> +

+ +

<%= t("description", scope: "activemodel.attributes.problem") %>

+
+

<%= present(@problem).description %>

-
- - <%= link_to :problems, class: "small hollow" do %> - <%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %> - <%= t("return_to_list", scope: "decidim.problems.show") %> - <% end %> -
-

<%= present(@problem).title %>


+ <% if present(@problem).tags.present? %> +

<%= t("tags", scope: "activemodel.attributes.problem") %>

+

<%= present(@problem).tags %>

+ <% end %> -

- <%= t("challenge", scope: "activemodel.attributes.problem") %>: - <%= link_to translated_attribute(@problem.challenge.title), Decidim::ResourceLocatorPresenter.new(@problem.challenge).path %> -

+ <% if @problem.solutions.any? %> + <%= render partial: "decidim/shared/related_solutions", locals: {solutions: @problem.solutions} %> + <% end %> +
-

<%= t("description", scope: "activemodel.attributes.problem") %>

-

<%= present(@problem).description %>

+ <% content_for :aside do %> + <%= render partial: "sidebar_data" %> + <% end %> +<% end %> - <% if present(@problem).tags.present? %> -

<%= t("tags", scope: "activemodel.attributes.problem") %>

-

<%= present(@problem).tags %>

- <% end %> - - <% if @problem.solutions.any? %> -

<%= t("proposed_solutions", scope: "decidim.problems.show") %>

-
- <% @problem.solutions.each do |solution| %> -
-
- <%= link_to resource_locator(solution).path, class: "card__link" do %> -
- <%= translated_attribute solution.title %> -
- <% end %> - <%= raw translated_attribute solution.description %> -
-
- <% end %> -
- <% end %> -
-
-
-
diff --git a/app/views/decidim/sdgs/sdgs/_objectives.html.erb b/app/views/decidim/sdgs/sdgs/_objectives.html.erb new file mode 100644 index 00000000..dbda2f5d --- /dev/null +++ b/app/views/decidim/sdgs/sdgs/_objectives.html.erb @@ -0,0 +1,320 @@ +
+
+

<%= t("no_poverty.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("no_poverty.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

1.1 <%= t("no_poverty.objectives.objective1", scope: "decidim.components.sdgs") %>

+

1.2 <%= t("no_poverty.objectives.objective2", scope: "decidim.components.sdgs") %>

+

1.3 <%= t("no_poverty.objectives.objective3", scope: "decidim.components.sdgs") %>

+

1.4 <%= t("no_poverty.objectives.objective4", scope: "decidim.components.sdgs") %>

+

1.5 <%= t("no_poverty.objectives.objective5", scope: "decidim.components.sdgs") %>

+

1.6 <%= t("no_poverty.objectives.objective6", scope: "decidim.components.sdgs") %>

+

1.7 <%= t("no_poverty.objectives.objective7", scope: "decidim.components.sdgs") %>

+
+
+
+
+

<%= t("zero_hunger.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("zero_hunger.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

2.1 <%= t("zero_hunger.objectives.objective1", scope: "decidim.components.sdgs") %>

+

2.2 <%= t("zero_hunger.objectives.objective2", scope: "decidim.components.sdgs") %>

+

2.3 <%= t("zero_hunger.objectives.objective3", scope: "decidim.components.sdgs") %>

+

2.4 <%= t("zero_hunger.objectives.objective4", scope: "decidim.components.sdgs") %>

+

2.5 <%= t("zero_hunger.objectives.objective5", scope: "decidim.components.sdgs") %>

+

2.a <%= t("zero_hunger.objectives.objective6", scope: "decidim.components.sdgs") %>

+

2.b <%= t("zero_hunger.objectives.objective7", scope: "decidim.components.sdgs") %>

+

2.c <%= t("zero_hunger.objectives.objective8", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("good_health.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("good_health.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

3.1 <%= t("good_health.objectives.objective1", scope: "decidim.components.sdgs") %>

+

3.2 <%= t("good_health.objectives.objective2", scope: "decidim.components.sdgs") %>

+

3.3 <%= t("good_health.objectives.objective3", scope: "decidim.components.sdgs") %>

+

3.4 <%= t("good_health.objectives.objective4", scope: "decidim.components.sdgs") %>

+

3.5 <%= t("good_health.objectives.objective5", scope: "decidim.components.sdgs") %>

+

3.6 <%= t("good_health.objectives.objective6", scope: "decidim.components.sdgs") %>

+

3.7 <%= t("good_health.objectives.objective7", scope: "decidim.components.sdgs") %>

+

3.8 <%= t("good_health.objectives.objective8", scope: "decidim.components.sdgs") %>

+

3.9 <%= t("good_health.objectives.objective9", scope: "decidim.components.sdgs") %>

+

3.a <%= t("good_health.objectives.objective10", scope: "decidim.components.sdgs") %>

+

3.b <%= t("good_health.objectives.objective11", scope: "decidim.components.sdgs") %>

+

3.c <%= t("good_health.objectives.objective12", scope: "decidim.components.sdgs") %>

+

3.d <%= t("good_health.objectives.objective13", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("quality_education.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("quality_education.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

4.1 <%= t("quality_education.objectives.objective1", scope: "decidim.components.sdgs") %>

+

4.2 <%= t("quality_education.objectives.objective2", scope: "decidim.components.sdgs") %>

+

4.3 <%= t("quality_education.objectives.objective3", scope: "decidim.components.sdgs") %>

+

4.4 <%= t("quality_education.objectives.objective4", scope: "decidim.components.sdgs") %>

+

4.5 <%= t("quality_education.objectives.objective5", scope: "decidim.components.sdgs") %>

+

4.6 <%= t("quality_education.objectives.objective6", scope: "decidim.components.sdgs") %>

+

4.7 <%= t("quality_education.objectives.objective7", scope: "decidim.components.sdgs") %>

+

4.a <%= t("quality_education.objectives.objective8", scope: "decidim.components.sdgs") %>

+

4.b <%= t("quality_education.objectives.objective9", scope: "decidim.components.sdgs") %>

+

4.c <%= t("quality_education.objectives.objective10", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("gender_equality.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("gender_equality.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

5.1 <%= t("gender_equality.objectives.objective1", scope: "decidim.components.sdgs") %>

+

5.2 <%= t("gender_equality.objectives.objective2", scope: "decidim.components.sdgs") %>

+

5.3 <%= t("gender_equality.objectives.objective3", scope: "decidim.components.sdgs") %>

+

5.4 <%= t("gender_equality.objectives.objective4", scope: "decidim.components.sdgs") %>

+

5.5 <%= t("gender_equality.objectives.objective5", scope: "decidim.components.sdgs") %>

+

5.6 <%= t("gender_equality.objectives.objective6", scope: "decidim.components.sdgs") %>

+

5.a <%= t("gender_equality.objectives.objective7", scope: "decidim.components.sdgs") %>

+

5.b <%= t("gender_equality.objectives.objective8", scope: "decidim.components.sdgs") %>

+

5.c <%= t("gender_equality.objectives.objective9", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("clean_water.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("clean_water.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

6.1 <%= t("clean_water.objectives.objective1", scope: "decidim.components.sdgs") %>

+

6.2 <%= t("clean_water.objectives.objective2", scope: "decidim.components.sdgs") %>

+

6.3 <%= t("clean_water.objectives.objective3", scope: "decidim.components.sdgs") %>

+

6.4 <%= t("clean_water.objectives.objective4", scope: "decidim.components.sdgs") %>

+

6.5 <%= t("clean_water.objectives.objective5", scope: "decidim.components.sdgs") %>

+

6.6 <%= t("clean_water.objectives.objective6", scope: "decidim.components.sdgs") %>

+

6.a <%= t("clean_water.objectives.objective7", scope: "decidim.components.sdgs") %>

+

6.b <%= t("clean_water.objectives.objective8", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("clean_energy.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("clean_energy.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

7.1 <%= t("clean_energy.objectives.objective1", scope: "decidim.components.sdgs") %>

+

7.2 <%= t("clean_energy.objectives.objective2", scope: "decidim.components.sdgs") %>

+

7.3 <%= t("clean_energy.objectives.objective3", scope: "decidim.components.sdgs") %>

+

7.a <%= t("clean_energy.objectives.objective4", scope: "decidim.components.sdgs") %>

+

7.b <%= t("clean_energy.objectives.objective5", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("decent_work.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("decent_work.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

8.1 <%= t("decent_work.objectives.objective1", scope: "decidim.components.sdgs") %>

+

8.2 <%= t("decent_work.objectives.objective2", scope: "decidim.components.sdgs") %>

+

8.3 <%= t("decent_work.objectives.objective3", scope: "decidim.components.sdgs") %>

+

8.4 <%= t("decent_work.objectives.objective4", scope: "decidim.components.sdgs") %>

+

8.5 <%= t("decent_work.objectives.objective5", scope: "decidim.components.sdgs") %>

+

8.6 <%= t("decent_work.objectives.objective6", scope: "decidim.components.sdgs") %>

+

8.7 <%= t("decent_work.objectives.objective7", scope: "decidim.components.sdgs") %>

+

8.8 <%= t("decent_work.objectives.objective8", scope: "decidim.components.sdgs") %>

+

8.9 <%= t("decent_work.objectives.objective9", scope: "decidim.components.sdgs") %>

+

8.10 <%= t("decent_work.objectives.objective10", scope: "decidim.components.sdgs") %>

+

8.a <%= t("decent_work.objectives.objective11", scope: "decidim.components.sdgs") %>

+

8.b <%= t("decent_work.objectives.objective12", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("iiai.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("iiai.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

9.1 <%= t("iiai.objectives.objective1", scope: "decidim.components.sdgs") %>

+

9.2 <%= t("iiai.objectives.objective2", scope: "decidim.components.sdgs") %>

+

9.3 <%= t("iiai.objectives.objective3", scope: "decidim.components.sdgs") %>

+

9.4 <%= t("iiai.objectives.objective4", scope: "decidim.components.sdgs") %>

+

9.5 <%= t("iiai.objectives.objective5", scope: "decidim.components.sdgs") %>

+

9.a <%= t("iiai.objectives.objective6", scope: "decidim.components.sdgs") %>

+

9.b <%= t("iiai.objectives.objective7", scope: "decidim.components.sdgs") %>

+

9.c <%= t("iiai.objectives.objective8", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("reduced_inequalities.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("reduced_inequalities.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

10.1 <%= t("reduced_inequalities.objectives.objective1", scope: "decidim.components.sdgs") %>

+

10.2 <%= t("reduced_inequalities.objectives.objective2", scope: "decidim.components.sdgs") %>

+

10.3 <%= t("reduced_inequalities.objectives.objective3", scope: "decidim.components.sdgs") %>

+

10.4 <%= t("reduced_inequalities.objectives.objective4", scope: "decidim.components.sdgs") %>

+

10.5 <%= t("reduced_inequalities.objectives.objective5", scope: "decidim.components.sdgs") %>

+

10.6 <%= t("reduced_inequalities.objectives.objective6", scope: "decidim.components.sdgs") %>

+

10.7 <%= t("reduced_inequalities.objectives.objective7", scope: "decidim.components.sdgs") %>

+

10.a <%= t("reduced_inequalities.objectives.objective8", scope: "decidim.components.sdgs") %>

+

10.b <%= t("reduced_inequalities.objectives.objective9", scope: "decidim.components.sdgs") %>

+

10.c <%= t("reduced_inequalities.objectives.objective10", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("sustainable_cities.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("sustainable_cities.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

11.1 <%= t("sustainable_cities.objectives.objective1", scope: "decidim.components.sdgs") %>

+

11.2 <%= t("sustainable_cities.objectives.objective2", scope: "decidim.components.sdgs") %>

+

11.3 <%= t("sustainable_cities.objectives.objective3", scope: "decidim.components.sdgs") %>

+

11.4 <%= t("sustainable_cities.objectives.objective4", scope: "decidim.components.sdgs") %>

+

11.5 <%= t("sustainable_cities.objectives.objective5", scope: "decidim.components.sdgs") %>

+

11.6 <%= t("sustainable_cities.objectives.objective6", scope: "decidim.components.sdgs") %>

+

11.7 <%= t("sustainable_cities.objectives.objective7", scope: "decidim.components.sdgs") %>

+

11.a <%= t("sustainable_cities.objectives.objective8", scope: "decidim.components.sdgs") %>

+

11.b <%= t("sustainable_cities.objectives.objective9", scope: "decidim.components.sdgs") %>

+

11.c <%= t("sustainable_cities.objectives.objective10", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("responsible_consumption.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("responsible_consumption.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

12.1 <%= t("responsible_consumption.objectives.objective1", scope: "decidim.components.sdgs") %>

+

12.2 <%= t("responsible_consumption.objectives.objective2", scope: "decidim.components.sdgs") %>

+

12.3 <%= t("responsible_consumption.objectives.objective3", scope: "decidim.components.sdgs") %>

+

12.4 <%= t("responsible_consumption.objectives.objective4", scope: "decidim.components.sdgs") %>

+

12.5 <%= t("responsible_consumption.objectives.objective5", scope: "decidim.components.sdgs") %>

+

12.6 <%= t("responsible_consumption.objectives.objective6", scope: "decidim.components.sdgs") %>

+

12.7 <%= t("responsible_consumption.objectives.objective7", scope: "decidim.components.sdgs") %>

+

12.8 <%= t("responsible_consumption.objectives.objective8", scope: "decidim.components.sdgs") %>

+

12.a <%= t("responsible_consumption.objectives.objective9", scope: "decidim.components.sdgs") %>

+

12.b <%= t("responsible_consumption.objectives.objective10", scope: "decidim.components.sdgs") %>

+

12.c <%= t("responsible_consumption.objectives.objective11", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("climate_action.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("climate_action.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

13.1 <%= t("climate_action.objectives.objective1", scope: "decidim.components.sdgs") %>

+

13.2 <%= t("climate_action.objectives.objective2", scope: "decidim.components.sdgs") %>

+

13.3 <%= t("climate_action.objectives.objective3", scope: "decidim.components.sdgs") %>

+

13.a <%= t("climate_action.objectives.objective4", scope: "decidim.components.sdgs") %>

+

13.b <%= t("climate_action.objectives.objective5", scope: "decidim.components.sdgs") %>

+

+
+ +
+
+

<%= t("life_below_water.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("life_below_water.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

14.1 <%= t("life_below_water.objectives.objective1", scope: "decidim.components.sdgs") %>

+

14.2 <%= t("life_below_water.objectives.objective2", scope: "decidim.components.sdgs") %>

+

14.3 <%= t("life_below_water.objectives.objective3", scope: "decidim.components.sdgs") %>

+

14.4 <%= t("life_below_water.objectives.objective4", scope: "decidim.components.sdgs") %>

+

14.5 <%= t("life_below_water.objectives.objective5", scope: "decidim.components.sdgs") %>

+

14.6 <%= t("life_below_water.objectives.objective6", scope: "decidim.components.sdgs") %>

+

14.7 <%= t("life_below_water.objectives.objective7", scope: "decidim.components.sdgs") %>

+

14.a <%= t("life_below_water.objectives.objective8", scope: "decidim.components.sdgs") %>

+

14.b <%= t("life_below_water.objectives.objective9", scope: "decidim.components.sdgs") %>

+

14.c <%= t("life_below_water.objectives.objective10", scope: "decidim.components.sdgs") %>

+

+
+ +
+
+

<%= t("life_on_land.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("life_on_land.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

15.1 <%= t("life_on_land.objectives.objective1", scope: "decidim.components.sdgs") %>

+

15.2 <%= t("life_on_land.objectives.objective2", scope: "decidim.components.sdgs") %>

+

15.3 <%= t("life_on_land.objectives.objective3", scope: "decidim.components.sdgs") %>

+

15.4 <%= t("life_on_land.objectives.objective4", scope: "decidim.components.sdgs") %>

+

15.5 <%= t("life_on_land.objectives.objective5", scope: "decidim.components.sdgs") %>

+

15.6 <%= t("life_on_land.objectives.objective6", scope: "decidim.components.sdgs") %>

+

15.7 <%= t("life_on_land.objectives.objective7", scope: "decidim.components.sdgs") %>

+

15.8 <%= t("life_on_land.objectives.objective8", scope: "decidim.components.sdgs") %>

+

15.9 <%= t("life_on_land.objectives.objective9", scope: "decidim.components.sdgs") %>

+

15.a <%= t("life_on_land.objectives.objective10", scope: "decidim.components.sdgs") %>

+

15.b <%= t("life_on_land.objectives.objective11", scope: "decidim.components.sdgs") %>

+

15.c <%= t("life_on_land.objectives.objective12", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("pjsi.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("pjsi.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

16.1 <%= t("pjsi.objectives.objective1", scope: "decidim.components.sdgs") %>

+

16.2 <%= t("pjsi.objectives.objective2", scope: "decidim.components.sdgs") %>

+

16.3 <%= t("pjsi.objectives.objective3", scope: "decidim.components.sdgs") %>

+

16.4 <%= t("pjsi.objectives.objective4", scope: "decidim.components.sdgs") %>

+

16.5 <%= t("pjsi.objectives.objective5", scope: "decidim.components.sdgs") %>

+

16.6 <%= t("pjsi.objectives.objective6", scope: "decidim.components.sdgs") %>

+

16.7 <%= t("pjsi.objectives.objective7", scope: "decidim.components.sdgs") %>

+

16.8 <%= t("pjsi.objectives.objective8", scope: "decidim.components.sdgs") %>

+

16.9 <%= t("pjsi.objectives.objective9", scope: "decidim.components.sdgs") %>

+

16.10 <%= t("pjsi.objectives.objective10", scope: "decidim.components.sdgs") %>

+

16.a <%= t("pjsi.objectives.objective11", scope: "decidim.components.sdgs") %>

+

16.b <%= t("pjsi.objectives.objective12", scope: "decidim.components.sdgs") %>

+
+
+ +
+
+

<%= t("partnership.objectives.title", scope: "decidim.components.sdgs") %>

+

<%= t("partnership.objectives.subtitle", scope: "decidim.components.sdgs") %>

+
+
+

17.1 <%= t("partnership.objectives.objective1", scope: "decidim.components.sdgs") %>

+

17.2 <%= t("partnership.objectives.objective2", scope: "decidim.components.sdgs") %>

+

17.3 <%= t("partnership.objectives.objective3", scope: "decidim.components.sdgs") %>

+

17.4 <%= t("partnership.objectives.objective4", scope: "decidim.components.sdgs") %>

+

17.5 <%= t("partnership.objectives.objective5", scope: "decidim.components.sdgs") %>

+

17.6 <%= t("partnership.objectives.objective6", scope: "decidim.components.sdgs") %>

+

17.7 <%= t("partnership.objectives.objective7", scope: "decidim.components.sdgs") %>

+

17.8 <%= t("partnership.objectives.objective8", scope: "decidim.components.sdgs") %>

+

17.9 <%= t("partnership.objectives.objective9", scope: "decidim.components.sdgs") %>

+

17.10 <%= t("partnership.objectives.objective10", scope: "decidim.components.sdgs") %>

+

17.11 <%= t("partnership.objectives.objective11", scope: "decidim.components.sdgs") %>

+

17.12 <%= t("partnership.objectives.objective12", scope: "decidim.components.sdgs") %>

+

17.13 <%= t("partnership.objectives.objective13", scope: "decidim.components.sdgs") %>

+

17.14 <%= t("partnership.objectives.objective14", scope: "decidim.components.sdgs") %>

+

17.15 <%= t("partnership.objectives.objective15", scope: "decidim.components.sdgs") %>

+

17.16 <%= t("partnership.objectives.objective16", scope: "decidim.components.sdgs") %>

+

17.17 <%= t("partnership.objectives.objective17", scope: "decidim.components.sdgs") %>

+

17.18 <%= t("partnership.objectives.objective18", scope: "decidim.components.sdgs") %>

+

17.19 <%= t("partnership.objectives.objective19", scope: "decidim.components.sdgs") %>

+
+
diff --git a/app/views/decidim/sdgs/sdgs/_ods.html.erb b/app/views/decidim/sdgs/sdgs/_ods.html.erb new file mode 100644 index 00000000..821aeb4f --- /dev/null +++ b/app/views/decidim/sdgs/sdgs/_ods.html.erb @@ -0,0 +1,132 @@ + +
+
+

<%= t("no_poverty.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("no_poverty.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-01.svg", alt: "Logo ODS 01" %> +
+
+
+

<%= t("zero_hunger.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("zero_hunger.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-02.svg", alt: "Logo ODS 02" %> +
+
+
+

<%= t("good_health.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("good_health.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-03.svg", alt: "Logo ODS 03" %> +
+
+
+

<%= t("quality_education.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("quality_education.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-04.svg", alt: "Logo ODS 04" %> +
+
+
+

<%= t("gender_equality.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("gender_equality.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-05.svg", alt: "Logo ODS 05" %> +
+
+
+

<%= t("clean_water.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("clean_water.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-06.svg", alt: "Logo ODS 06" %> +
+
+
+

<%= t("clean_energy.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("clean_energy.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-07.svg", alt: "Logo ODS 07" %> +
+
+
+

<%= t("decent_work.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("decent_work.logo.line2", scope: "decidim.components.sdgs") %>

+

<%= t("decent_work.logo.line3", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-08.svg", alt: "Logo ODS 08" %> +
+
+
+

<%= t("iiai.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("iiai.logo.line2", scope: "decidim.components.sdgs") %>

+

<%= t("iiai.logo.line3", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-09.svg", alt: "Logo ODS 09" %> +
+
+
+

<%= t("reduced_inequalities.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("reduced_inequalities.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-10.svg", alt: "Logo ODS 10" %> +
+
+
+

<%= t("sustainable_cities.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("sustainable_cities.logo.line2", scope: "decidim.components.sdgs") %>

+

<%= t("sustainable_cities.logo.line3", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-11.svg", alt: "Logo ODS 11" %> +
+
+
+

<%= t("responsible_consumption.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("responsible_consumption.logo.line2", scope: "decidim.components.sdgs") %>

+

<%= t("responsible_consumption.logo.line3", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-12.svg", alt: "Logo ODS 12" %> +
+
+
+

<%= t("climate_action.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("climate_action.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-13.svg", alt: "Logo ODS 13" %> +
+
+
+

<%= t("life_below_water.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("life_below_water.logo.line2", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-14.svg", alt: "Logo ODS 14" %> +
+
+
+

<%= t("life_on_land.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("life_on_land.logo.line2", scope: "decidim.components.sdgs") %>

+

<%= t("life_on_land.logo.line3", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-15.svg", alt: "Logo ODS 15" %> +
+
+
+

<%= t("pjsi.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("pjsi.logo.line2", scope: "decidim.components.sdgs") %>

+

<%= t("pjsi.logo.line3", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-16.svg", alt: "Logo ODS 16" %> +
+
+
+

<%= t("partnership.logo.line1", scope: "decidim.components.sdgs") %>

+

<%= t("partnership.logo.line2", scope: "decidim.components.sdgs") %>

+

<%= t("partnership.logo.line3", scope: "decidim.components.sdgs") %>

+
+ <%= image_pack_tag "media/images/ods-17.svg", alt: "Logo ODS 17" %> +
+
+
+ <%= image_pack_tag "media/images/un_emblem_square.png", alt: "Logo United Nations" %> +
+
diff --git a/app/views/decidim/sdgs/sdgs/index.html.erb b/app/views/decidim/sdgs/sdgs/index.html.erb index 025e3f90..53570027 100644 --- a/app/views/decidim/sdgs/sdgs/index.html.erb +++ b/app/views/decidim/sdgs/sdgs/index.html.erb @@ -1,543 +1,64 @@ -<%= stylesheet_pack_tag "decidim_sdgs" %> -
-
-
-

- <%= t("name", scope: "decidim.components.sdgs") %> -

-

<%= t("description", scope: "decidim.components.sdgs") %>

-
-
-
-
- <%= image_pack_tag "media/images/sdg-wheel.png" %> -

<%= t("ods_logo.title", scope: "decidim.components.sdgs") %>

-

<%= t("ods_logo.subtitle", scope: "decidim.components.sdgs") %>

-
-
-
-
-
-
-

- <%= t("subtitle", scope: "decidim.components.sdgs") %> -

-
-
-
-
-
-

<%= t("no_poverty.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("no_poverty.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-01.svg", alt: "Logo ODS 01" %> -
-
-
-
-
-

<%= t("zero_hunger.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("zero_hunger.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-02.svg", alt: "Logo ODS 02" %> -
-
-
-
-
-

<%= t("good_health.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("good_health.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-03.svg", alt: "Logo ODS 03" %> -
-
-
-
-
-

<%= t("quality_education.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("quality_education.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-04.svg", alt: "Logo ODS 04" %> -
-
-
-
-
-

<%= t("gender_equality.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("gender_equality.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-05.svg", alt: "Logo ODS 05" %> -
-
-
-
-
-

<%= t("clean_water.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("clean_water.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-06.svg", alt: "Logo ODS 06" %> -
-
-
-
-
-

<%= t("clean_energy.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("clean_energy.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-07.svg", alt: "Logo ODS 07" %> -
-
-
-
-
-

<%= t("decent_work.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("decent_work.logo.line2", scope: "decidim.components.sdgs") %>

-

<%= t("decent_work.logo.line3", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-08.svg", alt: "Logo ODS 08" %> -
-
-
-
-
-

<%= t("iiai.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("iiai.logo.line2", scope: "decidim.components.sdgs") %>

-

<%= t("iiai.logo.line3", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-09.svg", alt: "Logo ODS 09" %> -
-
-
-
-
-

<%= t("reduced_inequalities.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("reduced_inequalities.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-10.svg", alt: "Logo ODS 10" %> -
-
-
-
-
-

<%= t("sustainable_cities.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("sustainable_cities.logo.line2", scope: "decidim.components.sdgs") %>

-

<%= t("sustainable_cities.logo.line3", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-11.svg", alt: "Logo ODS 11" %> -
-
-
-
-
-

<%= t("responsible_consumption.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("responsible_consumption.logo.line2", scope: "decidim.components.sdgs") %>

-

<%= t("responsible_consumption.logo.line3", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-12.svg", alt: "Logo ODS 12" %> -
-
-
-
-
-

<%= t("climate_action.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("climate_action.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-13.svg", alt: "Logo ODS 13" %> -
-
-
-
-
-

<%= t("life_below_water.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("life_below_water.logo.line2", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-14.svg", alt: "Logo ODS 14" %> -
-
-
-
-
-

<%= t("life_on_land.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("life_on_land.logo.line2", scope: "decidim.components.sdgs") %>

-

<%= t("life_on_land.logo.line3", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-15.svg", alt: "Logo ODS 15" %> -
-
-
-
-
-

<%= t("pjsi.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("pjsi.logo.line2", scope: "decidim.components.sdgs") %>

-

<%= t("pjsi.logo.line3", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-16.svg", alt: "Logo ODS 16" %> -
-
-
-
-
-

<%= t("partnership.logo.line1", scope: "decidim.components.sdgs") %>

-

<%= t("partnership.logo.line2", scope: "decidim.components.sdgs") %>

-

<%= t("partnership.logo.line3", scope: "decidim.components.sdgs") %>

-
- <%= image_pack_tag "media/images/ods-17.svg", alt: "Logo ODS 17" %> -
-
-
-
- <%= image_pack_tag "media/images/un_emblem_square.png", alt: "Logo United Nations" %> -
-
-
-
-
- -
-
-
-

<%= t("no_poverty.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("no_poverty.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

1.1 <%= t("no_poverty.objectives.objective1", scope: "decidim.components.sdgs") %>

-

1.2 <%= t("no_poverty.objectives.objective2", scope: "decidim.components.sdgs") %>

-

1.3 <%= t("no_poverty.objectives.objective3", scope: "decidim.components.sdgs") %>

-

1.4 <%= t("no_poverty.objectives.objective4", scope: "decidim.components.sdgs") %>

-

1.5 <%= t("no_poverty.objectives.objective5", scope: "decidim.components.sdgs") %>

-

1.6 <%= t("no_poverty.objectives.objective6", scope: "decidim.components.sdgs") %>

-

1.7 <%= t("no_poverty.objectives.objective7", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("zero_hunger.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("zero_hunger.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

2.1 <%= t("zero_hunger.objectives.objective1", scope: "decidim.components.sdgs") %>

-

2.2 <%= t("zero_hunger.objectives.objective2", scope: "decidim.components.sdgs") %>

-

2.3 <%= t("zero_hunger.objectives.objective3", scope: "decidim.components.sdgs") %>

-

2.4 <%= t("zero_hunger.objectives.objective4", scope: "decidim.components.sdgs") %>

-

2.5 <%= t("zero_hunger.objectives.objective5", scope: "decidim.components.sdgs") %>

-

2.a <%= t("zero_hunger.objectives.objective6", scope: "decidim.components.sdgs") %>

-

2.b <%= t("zero_hunger.objectives.objective7", scope: "decidim.components.sdgs") %>

-

2.c <%= t("zero_hunger.objectives.objective8", scope: "decidim.components.sdgs") %>

-
-
+<% add_decidim_page_title(t("name", scope: "decidim.components.sdgs")) %> -
-
-

<%= t("good_health.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("good_health.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

3.1 <%= t("good_health.objectives.objective1", scope: "decidim.components.sdgs") %>

-

3.2 <%= t("good_health.objectives.objective2", scope: "decidim.components.sdgs") %>

-

3.3 <%= t("good_health.objectives.objective3", scope: "decidim.components.sdgs") %>

-

3.4 <%= t("good_health.objectives.objective4", scope: "decidim.components.sdgs") %>

-

3.5 <%= t("good_health.objectives.objective5", scope: "decidim.components.sdgs") %>

-

3.6 <%= t("good_health.objectives.objective6", scope: "decidim.components.sdgs") %>

-

3.7 <%= t("good_health.objectives.objective7", scope: "decidim.components.sdgs") %>

-

3.8 <%= t("good_health.objectives.objective8", scope: "decidim.components.sdgs") %>

-

3.9 <%= t("good_health.objectives.objective9", scope: "decidim.components.sdgs") %>

-

3.a <%= t("good_health.objectives.objective10", scope: "decidim.components.sdgs") %>

-

3.b <%= t("good_health.objectives.objective11", scope: "decidim.components.sdgs") %>

-

3.c <%= t("good_health.objectives.objective12", scope: "decidim.components.sdgs") %>

-

3.d <%= t("good_health.objectives.objective13", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("quality_education.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("quality_education.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

4.1 <%= t("quality_education.objectives.objective1", scope: "decidim.components.sdgs") %>

-

4.2 <%= t("quality_education.objectives.objective2", scope: "decidim.components.sdgs") %>

-

4.3 <%= t("quality_education.objectives.objective3", scope: "decidim.components.sdgs") %>

-

4.4 <%= t("quality_education.objectives.objective4", scope: "decidim.components.sdgs") %>

-

4.5 <%= t("quality_education.objectives.objective5", scope: "decidim.components.sdgs") %>

-

4.6 <%= t("quality_education.objectives.objective6", scope: "decidim.components.sdgs") %>

-

4.7 <%= t("quality_education.objectives.objective7", scope: "decidim.components.sdgs") %>

-

4.a <%= t("quality_education.objectives.objective8", scope: "decidim.components.sdgs") %>

-

4.b <%= t("quality_education.objectives.objective9", scope: "decidim.components.sdgs") %>

-

4.c <%= t("quality_education.objectives.objective10", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("gender_equality.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("gender_equality.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

5.1 <%= t("gender_equality.objectives.objective1", scope: "decidim.components.sdgs") %>

-

5.2 <%= t("gender_equality.objectives.objective2", scope: "decidim.components.sdgs") %>

-

5.3 <%= t("gender_equality.objectives.objective3", scope: "decidim.components.sdgs") %>

-

5.4 <%= t("gender_equality.objectives.objective4", scope: "decidim.components.sdgs") %>

-

5.5 <%= t("gender_equality.objectives.objective5", scope: "decidim.components.sdgs") %>

-

5.6 <%= t("gender_equality.objectives.objective6", scope: "decidim.components.sdgs") %>

-

5.a <%= t("gender_equality.objectives.objective7", scope: "decidim.components.sdgs") %>

-

5.b <%= t("gender_equality.objectives.objective8", scope: "decidim.components.sdgs") %>

-

5.c <%= t("gender_equality.objectives.objective9", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("clean_water.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("clean_water.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

6.1 <%= t("clean_water.objectives.objective1", scope: "decidim.components.sdgs") %>

-

6.2 <%= t("clean_water.objectives.objective2", scope: "decidim.components.sdgs") %>

-

6.3 <%= t("clean_water.objectives.objective3", scope: "decidim.components.sdgs") %>

-

6.4 <%= t("clean_water.objectives.objective4", scope: "decidim.components.sdgs") %>

-

6.5 <%= t("clean_water.objectives.objective5", scope: "decidim.components.sdgs") %>

-

6.6 <%= t("clean_water.objectives.objective6", scope: "decidim.components.sdgs") %>

-

6.a <%= t("clean_water.objectives.objective7", scope: "decidim.components.sdgs") %>

-

6.b <%= t("clean_water.objectives.objective8", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("clean_energy.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("clean_energy.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

7.1 <%= t("clean_energy.objectives.objective1", scope: "decidim.components.sdgs") %>

-

7.2 <%= t("clean_energy.objectives.objective2", scope: "decidim.components.sdgs") %>

-

7.3 <%= t("clean_energy.objectives.objective3", scope: "decidim.components.sdgs") %>

-

7.a <%= t("clean_energy.objectives.objective4", scope: "decidim.components.sdgs") %>

-

7.b <%= t("clean_energy.objectives.objective5", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("decent_work.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("decent_work.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

8.1 <%= t("decent_work.objectives.objective1", scope: "decidim.components.sdgs") %>

-

8.2 <%= t("decent_work.objectives.objective2", scope: "decidim.components.sdgs") %>

-

8.3 <%= t("decent_work.objectives.objective3", scope: "decidim.components.sdgs") %>

-

8.4 <%= t("decent_work.objectives.objective4", scope: "decidim.components.sdgs") %>

-

8.5 <%= t("decent_work.objectives.objective5", scope: "decidim.components.sdgs") %>

-

8.6 <%= t("decent_work.objectives.objective6", scope: "decidim.components.sdgs") %>

-

8.7 <%= t("decent_work.objectives.objective7", scope: "decidim.components.sdgs") %>

-

8.8 <%= t("decent_work.objectives.objective8", scope: "decidim.components.sdgs") %>

-

8.9 <%= t("decent_work.objectives.objective9", scope: "decidim.components.sdgs") %>

-

8.10 <%= t("decent_work.objectives.objective10", scope: "decidim.components.sdgs") %>

-

8.a <%= t("decent_work.objectives.objective11", scope: "decidim.components.sdgs") %>

-

8.b <%= t("decent_work.objectives.objective12", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("iiai.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("iiai.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

9.1 <%= t("iiai.objectives.objective1", scope: "decidim.components.sdgs") %>

-

9.2 <%= t("iiai.objectives.objective2", scope: "decidim.components.sdgs") %>

-

9.3 <%= t("iiai.objectives.objective3", scope: "decidim.components.sdgs") %>

-

9.4 <%= t("iiai.objectives.objective4", scope: "decidim.components.sdgs") %>

-

9.5 <%= t("iiai.objectives.objective5", scope: "decidim.components.sdgs") %>

-

9.a <%= t("iiai.objectives.objective6", scope: "decidim.components.sdgs") %>

-

9.b <%= t("iiai.objectives.objective7", scope: "decidim.components.sdgs") %>

-

9.c <%= t("iiai.objectives.objective8", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("reduced_inequalities.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("reduced_inequalities.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

10.1 <%= t("reduced_inequalities.objectives.objective1", scope: "decidim.components.sdgs") %>

-

10.2 <%= t("reduced_inequalities.objectives.objective2", scope: "decidim.components.sdgs") %>

-

10.3 <%= t("reduced_inequalities.objectives.objective3", scope: "decidim.components.sdgs") %>

-

10.4 <%= t("reduced_inequalities.objectives.objective4", scope: "decidim.components.sdgs") %>

-

10.5 <%= t("reduced_inequalities.objectives.objective5", scope: "decidim.components.sdgs") %>

-

10.6 <%= t("reduced_inequalities.objectives.objective6", scope: "decidim.components.sdgs") %>

-

10.7 <%= t("reduced_inequalities.objectives.objective7", scope: "decidim.components.sdgs") %>

-

10.a <%= t("reduced_inequalities.objectives.objective8", scope: "decidim.components.sdgs") %>

-

10.b <%= t("reduced_inequalities.objectives.objective9", scope: "decidim.components.sdgs") %>

-

10.c <%= t("reduced_inequalities.objectives.objective10", scope: "decidim.components.sdgs") %>

-
-
+<%= append_stylesheet_pack_tag "decidim_sdgs" %> -
-
-

<%= t("sustainable_cities.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("sustainable_cities.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

11.1 <%= t("sustainable_cities.objectives.objective1", scope: "decidim.components.sdgs") %>

-

11.2 <%= t("sustainable_cities.objectives.objective2", scope: "decidim.components.sdgs") %>

-

11.3 <%= t("sustainable_cities.objectives.objective3", scope: "decidim.components.sdgs") %>

-

11.4 <%= t("sustainable_cities.objectives.objective4", scope: "decidim.components.sdgs") %>

-

11.5 <%= t("sustainable_cities.objectives.objective5", scope: "decidim.components.sdgs") %>

-

11.6 <%= t("sustainable_cities.objectives.objective6", scope: "decidim.components.sdgs") %>

-

11.7 <%= t("sustainable_cities.objectives.objective7", scope: "decidim.components.sdgs") %>

-

11.a <%= t("sustainable_cities.objectives.objective8", scope: "decidim.components.sdgs") %>

-

11.b <%= t("sustainable_cities.objectives.objective9", scope: "decidim.components.sdgs") %>

-

11.c <%= t("sustainable_cities.objectives.objective10", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("responsible_consumption.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("responsible_consumption.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

12.1 <%= t("responsible_consumption.objectives.objective1", scope: "decidim.components.sdgs") %>

-

12.2 <%= t("responsible_consumption.objectives.objective2", scope: "decidim.components.sdgs") %>

-

12.3 <%= t("responsible_consumption.objectives.objective3", scope: "decidim.components.sdgs") %>

-

12.4 <%= t("responsible_consumption.objectives.objective4", scope: "decidim.components.sdgs") %>

-

12.5 <%= t("responsible_consumption.objectives.objective5", scope: "decidim.components.sdgs") %>

-

12.6 <%= t("responsible_consumption.objectives.objective6", scope: "decidim.components.sdgs") %>

-

12.7 <%= t("responsible_consumption.objectives.objective7", scope: "decidim.components.sdgs") %>

-

12.8 <%= t("responsible_consumption.objectives.objective8", scope: "decidim.components.sdgs") %>

-

12.a <%= t("responsible_consumption.objectives.objective9", scope: "decidim.components.sdgs") %>

-

12.b <%= t("responsible_consumption.objectives.objective10", scope: "decidim.components.sdgs") %>

-

12.c <%= t("responsible_consumption.objectives.objective11", scope: "decidim.components.sdgs") %>

-
-
- -
-
-

<%= t("climate_action.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("climate_action.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

13.1 <%= t("climate_action.objectives.objective1", scope: "decidim.components.sdgs") %>

-

13.2 <%= t("climate_action.objectives.objective2", scope: "decidim.components.sdgs") %>

-

13.3 <%= t("climate_action.objectives.objective3", scope: "decidim.components.sdgs") %>

-

13.a <%= t("climate_action.objectives.objective4", scope: "decidim.components.sdgs") %>

-

13.b <%= t("climate_action.objectives.objective5", scope: "decidim.components.sdgs") %>

-

-
- -
-
-

<%= t("life_below_water.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("life_below_water.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

14.1 <%= t("life_below_water.objectives.objective1", scope: "decidim.components.sdgs") %>

-

14.2 <%= t("life_below_water.objectives.objective2", scope: "decidim.components.sdgs") %>

-

14.3 <%= t("life_below_water.objectives.objective3", scope: "decidim.components.sdgs") %>

-

14.4 <%= t("life_below_water.objectives.objective4", scope: "decidim.components.sdgs") %>

-

14.5 <%= t("life_below_water.objectives.objective5", scope: "decidim.components.sdgs") %>

-

14.6 <%= t("life_below_water.objectives.objective6", scope: "decidim.components.sdgs") %>

-

14.7 <%= t("life_below_water.objectives.objective7", scope: "decidim.components.sdgs") %>

-

14.a <%= t("life_below_water.objectives.objective8", scope: "decidim.components.sdgs") %>

-

14.b <%= t("life_below_water.objectives.objective9", scope: "decidim.components.sdgs") %>

-

14.c <%= t("life_below_water.objectives.objective10", scope: "decidim.components.sdgs") %>

+<%= render layout: "layouts/decidim/shared/layout_center", locals: { columns: 10 } do %> +

+
+
+

<%= t("name", scope: "decidim.components.sdgs") %>

+

<%= t("description", scope: "decidim.components.sdgs") %>

+
+
+ <%= image_pack_tag "media/images/sdg-wheel.png" %> +

<%= t("ods_logo.title", scope: "decidim.components.sdgs") %>

+

<%= t("ods_logo.subtitle", scope: "decidim.components.sdgs") %>

+
-
-
-
-

<%= t("life_on_land.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("life_on_land.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

15.1 <%= t("life_on_land.objectives.objective1", scope: "decidim.components.sdgs") %>

-

15.2 <%= t("life_on_land.objectives.objective2", scope: "decidim.components.sdgs") %>

-

15.3 <%= t("life_on_land.objectives.objective3", scope: "decidim.components.sdgs") %>

-

15.4 <%= t("life_on_land.objectives.objective4", scope: "decidim.components.sdgs") %>

-

15.5 <%= t("life_on_land.objectives.objective5", scope: "decidim.components.sdgs") %>

-

15.6 <%= t("life_on_land.objectives.objective6", scope: "decidim.components.sdgs") %>

-

15.7 <%= t("life_on_land.objectives.objective7", scope: "decidim.components.sdgs") %>

-

15.8 <%= t("life_on_land.objectives.objective8", scope: "decidim.components.sdgs") %>

-

15.9 <%= t("life_on_land.objectives.objective9", scope: "decidim.components.sdgs") %>

-

15.a <%= t("life_on_land.objectives.objective10", scope: "decidim.components.sdgs") %>

-

15.b <%= t("life_on_land.objectives.objective11", scope: "decidim.components.sdgs") %>

-

15.c <%= t("life_on_land.objectives.objective12", scope: "decidim.components.sdgs") %>

+
+
+
+

+

<%= t("subtitle", scope: "decidim.components.sdgs") %>

+ +
+
-
- -
-
-

<%= t("pjsi.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("pjsi.objectives.subtitle", scope: "decidim.components.sdgs") %>

+ +
+ <%= render partial: "ods" %>
-
-

16.1 <%= t("pjsi.objectives.objective1", scope: "decidim.components.sdgs") %>

-

16.2 <%= t("pjsi.objectives.objective2", scope: "decidim.components.sdgs") %>

-

16.3 <%= t("pjsi.objectives.objective3", scope: "decidim.components.sdgs") %>

-

16.4 <%= t("pjsi.objectives.objective4", scope: "decidim.components.sdgs") %>

-

16.5 <%= t("pjsi.objectives.objective5", scope: "decidim.components.sdgs") %>

-

16.6 <%= t("pjsi.objectives.objective6", scope: "decidim.components.sdgs") %>

-

16.7 <%= t("pjsi.objectives.objective7", scope: "decidim.components.sdgs") %>

-

16.8 <%= t("pjsi.objectives.objective8", scope: "decidim.components.sdgs") %>

-

16.9 <%= t("pjsi.objectives.objective9", scope: "decidim.components.sdgs") %>

-

16.10 <%= t("pjsi.objectives.objective10", scope: "decidim.components.sdgs") %>

-

16.a <%= t("pjsi.objectives.objective11", scope: "decidim.components.sdgs") %>

-

16.b <%= t("pjsi.objectives.objective12", scope: "decidim.components.sdgs") %>

+ +
+ <%= render partial: "objectives" %>
-
+ +<% end %> -
-
-

<%= t("partnership.objectives.title", scope: "decidim.components.sdgs") %>

-

<%= t("partnership.objectives.subtitle", scope: "decidim.components.sdgs") %>

-
-
-

17.1 <%= t("partnership.objectives.objective1", scope: "decidim.components.sdgs") %>

-

17.2 <%= t("partnership.objectives.objective2", scope: "decidim.components.sdgs") %>

-

17.3 <%= t("partnership.objectives.objective3", scope: "decidim.components.sdgs") %>

-

17.4 <%= t("partnership.objectives.objective4", scope: "decidim.components.sdgs") %>

-

17.5 <%= t("partnership.objectives.objective5", scope: "decidim.components.sdgs") %>

-

17.6 <%= t("partnership.objectives.objective6", scope: "decidim.components.sdgs") %>

-

17.7 <%= t("partnership.objectives.objective7", scope: "decidim.components.sdgs") %>

-

17.8 <%= t("partnership.objectives.objective8", scope: "decidim.components.sdgs") %>

-

17.9 <%= t("partnership.objectives.objective9", scope: "decidim.components.sdgs") %>

-

17.10 <%= t("partnership.objectives.objective10", scope: "decidim.components.sdgs") %>

-

17.11 <%= t("partnership.objectives.objective11", scope: "decidim.components.sdgs") %>

-

17.12 <%= t("partnership.objectives.objective12", scope: "decidim.components.sdgs") %>

-

17.13 <%= t("partnership.objectives.objective13", scope: "decidim.components.sdgs") %>

-

17.14 <%= t("partnership.objectives.objective14", scope: "decidim.components.sdgs") %>

-

17.15 <%= t("partnership.objectives.objective15", scope: "decidim.components.sdgs") %>

-

17.16 <%= t("partnership.objectives.objective16", scope: "decidim.components.sdgs") %>

-

17.17 <%= t("partnership.objectives.objective17", scope: "decidim.components.sdgs") %>

-

17.18 <%= t("partnership.objectives.objective18", scope: "decidim.components.sdgs") %>

-

17.19 <%= t("partnership.objectives.objective19", scope: "decidim.components.sdgs") %>

-
-
-
diff --git a/app/views/decidim/sdgs/sdgs_filter/_modal.html.erb b/app/views/decidim/sdgs/sdgs_filter/_modal.html.erb index f0de5596..060205bf 100644 --- a/app/views/decidim/sdgs/sdgs_filter/_modal.html.erb +++ b/app/views/decidim/sdgs/sdgs_filter/_modal.html.erb @@ -1,17 +1,20 @@ +<%= append_stylesheet_pack_tag "decidim_sdgs" %> +<%= append_javascript_pack_tag "decidim_sdgs" %> +
-
-

<%= t(".title") %>

- -
-
-
-
+