From b8674a126f1b51123e19e5aba0a44abb5280ee81 Mon Sep 17 00:00:00 2001 From: sto Date: Wed, 18 Jun 2025 19:09:55 +0200 Subject: [PATCH] Back buttons --- app/controllers/completions_controller.rb | 27 +++++++++++++++++++++++ app/controllers/contestants_controller.rb | 14 ++++++++++++ app/controllers/contests_controller.rb | 3 +++ app/controllers/messages_controller.rb | 3 +++ app/controllers/puzzles_controller.rb | 9 ++++++++ app/views/contestants/_form.html.slim | 2 +- config/locales/en.yml | 6 ++++- config/locales/fr.yml | 6 ++++- 8 files changed, 67 insertions(+), 3 deletions(-) diff --git a/app/controllers/completions_controller.rb b/app/controllers/completions_controller.rb index e1d66fb..d97fd40 100644 --- a/app/controllers/completions_controller.rb +++ b/app/controllers/completions_controller.rb @@ -2,16 +2,27 @@ class CompletionsController < ApplicationController include CompletionsConcern before_action :set_contest + before_action :set_contestant before_action :set_data, only: %i[ create edit new update ] before_action :set_completion, only: %i[ destroy edit update ] def edit authorize @contest + + if @contestant + @action_name = t("helpers.buttons.back_to_contestant") + @action_path = edit_contest_contestant_path(@contest, @contestant) + end end def new authorize @contest + if @contestant + @action_name = t("helpers.buttons.back_to_contestant") + @action_path = edit_contest_contestant_path(@contest, @contestant) + end + @completion = Completion.new if params[:contestant_id] @completion.contestant_id = params[:contestant_id] @@ -27,6 +38,10 @@ class CompletionsController < ApplicationController extend_completions!(@completion.contestant) redirect_to contest_path(@contest) else + if @contestant + @action_name = t("helpers.buttons.back_to_contestant") + @action_path = edit_contest_contestant_path(@contest, @contestant) + end render :new, status: :unprocessable_entity end end @@ -39,6 +54,10 @@ class CompletionsController < ApplicationController extend_completions!(@completion.contestant) redirect_to @contest else + if @contestant + @action_name = t("helpers.buttons.back_to_contestant") + @action_path = edit_contest_contestant_path(@contest, @contestant) + end render :edit, status: :unprocessable_entity end end @@ -60,6 +79,14 @@ class CompletionsController < ApplicationController @contest = Contest.find(params[:contest_id]) end + def set_contestant + if params.key?(:contestant_id) + @contestant = Contestant.find(params[:contestant_id]) + else + @contetant = nil + end + end + def set_data @contestants = @contest.contestants @puzzles = @contest.puzzles diff --git a/app/controllers/contestants_controller.rb b/app/controllers/contestants_controller.rb index 2c2bded..992fc7f 100644 --- a/app/controllers/contestants_controller.rb +++ b/app/controllers/contestants_controller.rb @@ -5,11 +5,16 @@ class ContestantsController < ApplicationController def edit authorize @contest + + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) end def new authorize @contest + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) @contestant = Contestant.new end @@ -21,6 +26,8 @@ class ContestantsController < ApplicationController if @contestant.save redirect_to contest_path(@contest) else + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) render :new, status: :unprocessable_entity end end @@ -31,6 +38,8 @@ class ContestantsController < ApplicationController if @contestant.update(contestant_params) redirect_to @contest else + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) render :edit, status: :unprocessable_entity end end @@ -45,6 +54,9 @@ class ContestantsController < ApplicationController def import authorize @contest + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) + @csv_import = CsvImport.new end @@ -55,6 +67,8 @@ class ContestantsController < ApplicationController if @csv_import.save redirect_to "/contests/#{@contest.id}/import/#{@csv_import.id}" else + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) render :import, status: :unprocessable_entity end end diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb index 7757577..b2f7a1b 100644 --- a/app/controllers/contests_controller.rb +++ b/app/controllers/contests_controller.rb @@ -23,6 +23,9 @@ class ContestsController < ApplicationController def edit authorize @contest + + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) end def new diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 3a4caaf..2901903 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -50,6 +50,9 @@ class MessagesController < ApplicationController def convert authorize @contest + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) + @message = Message.find(params[:message_id]) @completion = Completion.new() @completion.display_time_from_start = @message.display_time diff --git a/app/controllers/puzzles_controller.rb b/app/controllers/puzzles_controller.rb index 36d73f7..6167abd 100644 --- a/app/controllers/puzzles_controller.rb +++ b/app/controllers/puzzles_controller.rb @@ -4,11 +4,16 @@ class PuzzlesController < ApplicationController def edit authorize @contest + + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) end def new authorize @contest + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) @puzzle = Puzzle.new end @@ -20,6 +25,8 @@ class PuzzlesController < ApplicationController if @puzzle.save redirect_to contest_path(@contest) else + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) render :new, status: :unprocessable_entity end end @@ -30,6 +37,8 @@ class PuzzlesController < ApplicationController if @puzzle.update(puzzle_params) redirect_to @contest else + @action_name = t("helpers.buttons.back") + @action_path = contest_path(@contest) render :edit, status: :unprocessable_entity end end diff --git a/app/views/contestants/_form.html.slim b/app/views/contestants/_form.html.slim index 20d1a80..93e4524 100644 --- a/app/views/contestants/_form.html.slim +++ b/app/views/contestants/_form.html.slim @@ -43,7 +43,7 @@ td | #{completion.puzzle.name} - #{completion.puzzle.brand} td - a.btn.btn-sm.btn-secondary.me-2 href=edit_contest_completion_path(@contest, completion, contestant.id) + a.btn.btn-sm.btn-secondary.me-2 href=edit_contest_completion_path(@contest, completion, contestant_id: contestant.id) | Edit = link_to "Delete", contest_completion_path(contest, completion, contestant_id: contestant.id), data: { turbo_method: :delete }, class: "btn btn-sm btn-secondary" diff --git a/config/locales/en.yml b/config/locales/en.yml index 9a8921c..bf80d4c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -117,6 +117,8 @@ en: teams: singular: "team" plural: "teams" + upload_csv: + title: "Import participants" helpers: badges: registration: "registration" @@ -124,6 +126,8 @@ en: buttons: add: "Add" add_completion: "Add completion" + back: "⬅ Back to the contest" + back_to_contestant: "⬅ Back to the participant" confirm: "Confirm" create: "Create" delete: "Delete" @@ -133,7 +137,7 @@ en: field: "Field" messages: convert: - title: "Convert message into completion" + title: "New completion" plural: "messages" singular: "message" nav: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 4d734df..918602b 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -88,6 +88,8 @@ fr: teams: singular: "équipe" plural: "équipes" + upload_csv: + title: "Importer des participant.e.s" helpers: badges: registration: "auto-inscription" @@ -95,6 +97,8 @@ fr: buttons: add: "Ajouter" add_completion: "Ajouter une complétion" + back: "⬅ Revenir au concours" + back_to_contestant: "⬅ Revenir au/à la participant.e" confirm: "Confirmer" create: "Créer" delete: "Supprimer" @@ -104,7 +108,7 @@ fr: field: "Champ" messages: convert: - title: "Conversion d'un message en complétion" + title: "Ajout d'une complétion" plural: "messages" singular: "message" nav: