Events: implement creation of new contests
This commit is contained in:
@@ -10,7 +10,7 @@ class ContestsController < ApplicationController
|
|||||||
def index
|
def index
|
||||||
authorize :contest
|
authorize :contest
|
||||||
|
|
||||||
@contests = current_user.contests.includes([ :contestants, puzzles: [ :image_attachment ] ]).order(created_at: :desc)
|
@contests = current_user.contests.where(event: nil).includes([ :contestants, puzzles: [ :image_attachment ] ]).order(created_at: :desc)
|
||||||
@title = I18n.t("contests.index.title", username: current_user.username)
|
@title = I18n.t("contests.index.title", username: current_user.username)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -125,6 +125,9 @@ class ContestsController < ApplicationController
|
|||||||
authorize :contest
|
authorize :contest
|
||||||
|
|
||||||
@contest = Contest.new
|
@contest = Contest.new
|
||||||
|
if params.key?(:event)
|
||||||
|
@contest.event_id = params[:event]
|
||||||
|
end
|
||||||
@title = I18n.t("contests.new.title")
|
@title = I18n.t("contests.new.title")
|
||||||
@nonav = true
|
@nonav = true
|
||||||
end
|
end
|
||||||
@@ -136,6 +139,18 @@ class ContestsController < ApplicationController
|
|||||||
@contest.lang = @current_user.lang
|
@contest.lang = @current_user.lang
|
||||||
@contest.ranking_mode = "actual"
|
@contest.ranking_mode = "actual"
|
||||||
@contest.user_id = current_user.id
|
@contest.user_id = current_user.id
|
||||||
|
|
||||||
|
# Check if the provided event_id exists and belongs to the current user. If not, remove
|
||||||
|
# the link to the event.
|
||||||
|
begin
|
||||||
|
event = Event.find(@contest.event_id)
|
||||||
|
if current_user != event.user
|
||||||
|
@contest.event_id = nil
|
||||||
|
end
|
||||||
|
rescue
|
||||||
|
@contest.event_id = nil
|
||||||
|
end
|
||||||
|
|
||||||
if @contest.save
|
if @contest.save
|
||||||
redirect_to "/contests/#{@contest.id}/settings/general", notice: t("contests.new.notice")
|
redirect_to "/contests/#{@contest.id}/settings/general", notice: t("contests.new.notice")
|
||||||
else
|
else
|
||||||
@@ -274,7 +289,7 @@ class ContestsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def new_contest_params
|
def new_contest_params
|
||||||
params.expect(contest: [ :name, :duration ])
|
params.expect(contest: [ :name, :duration, :event_id ])
|
||||||
end
|
end
|
||||||
|
|
||||||
def settings_general_params
|
def settings_general_params
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
= form_with model: @contest do |form|
|
= form_with model: @contest do |form|
|
||||||
|
= form.hidden_field :event_id
|
||||||
.row.mb-3
|
.row.mb-3
|
||||||
.col
|
.col
|
||||||
.form-floating
|
.form-floating
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
.row
|
.row
|
||||||
.col
|
.col
|
||||||
h4.mb-3
|
h4.mb-3
|
||||||
= t("contests.index.manage_contests")
|
= t("events.index.manage_contests")
|
||||||
.float-end
|
.float-end
|
||||||
a.btn.btn-primary.mb-4 href=new_contest_path
|
a.btn.btn-primary.mb-4 href=new_contest_path(event: @event.id)
|
||||||
= t("contests.index.new_contest")
|
= t("events.index.new_contest")
|
||||||
|
|
||||||
.row.row-cols-1.row-cols-md-3.g-4
|
.row.row-cols-1.row-cols-md-3.g-4
|
||||||
- @contests.each do |contest|
|
- @contests.each do |contest|
|
||||||
|
|||||||
@@ -293,9 +293,11 @@ en:
|
|||||||
index:
|
index:
|
||||||
contest: contest
|
contest: contest
|
||||||
contests: contests
|
contests: contests
|
||||||
|
manage_contests: Contests in this event
|
||||||
message: New feature! Events offer to groupe multiple contests in one management space. This also offers, if activated, to have a single scoreboard link for all contests of an event.
|
message: New feature! Events offer to groupe multiple contests in one management space. This also offers, if activated, to have a single scoreboard link for all contests of an event.
|
||||||
my_contests_outside_events: My contests not linked to any event
|
my_contests_outside_events: My contests not linked to any event
|
||||||
new: Create a new event
|
new: Create a new event
|
||||||
|
new_contest: Add a contest to this event
|
||||||
subtitle: My events
|
subtitle: My events
|
||||||
title: Welcome %{username}!
|
title: Welcome %{username}!
|
||||||
new:
|
new:
|
||||||
|
|||||||
@@ -264,9 +264,11 @@ fr:
|
|||||||
index:
|
index:
|
||||||
contest: épreuve
|
contest: épreuve
|
||||||
contests: épreuves
|
contests: épreuves
|
||||||
|
manage_contests: Épreuves de cet événement
|
||||||
message: Nouvelle fonctionalité ! Les événements permettent de regrouper plusieurs concours/épreuves en un seul espace de gestion. Cela permet aussi, si souhaité, d'avoir un lien de classement commun à toutes les épreuces d'un même événement.
|
message: Nouvelle fonctionalité ! Les événements permettent de regrouper plusieurs concours/épreuves en un seul espace de gestion. Cela permet aussi, si souhaité, d'avoir un lien de classement commun à toutes les épreuces d'un même événement.
|
||||||
my_contests_outside_events: Mes concours non associés à un événement
|
my_contests_outside_events: Mes concours non associés à un événement
|
||||||
new: Créer un nouvel événement
|
new: Créer un nouvel événement
|
||||||
|
new_contest: Ajouter une épreuve à cet événement
|
||||||
subtitle: Mes événements
|
subtitle: Mes événements
|
||||||
title: Bienvenue %{username} !
|
title: Bienvenue %{username} !
|
||||||
new:
|
new:
|
||||||
|
|||||||
Reference in New Issue
Block a user