Integrate shared scoreboard links in contests
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled

This commit is contained in:
sto
2026-07-30 16:10:56 +02:00
parent 949f2de4b6
commit c221563618
5 changed files with 19 additions and 7 deletions

View File

@@ -169,7 +169,7 @@ class ContestsController < ApplicationController
end end
def scoreboard def scoreboard
if active_page("/public/event") if active_page("/public/event/") == "active"
@event = Event.find_by(slug: params[:id]) @event = Event.find_by(slug: params[:id])
unless @event && @event.shared_scoreboard && !@event.contests.where(public: true).empty? unless @event && @event.shared_scoreboard && !@event.contests.where(public: true).empty?
skip_authorization skip_authorization

View File

@@ -2,6 +2,8 @@
.col .col
h4.mb-3 h4.mb-3
= t("contests.index.manage_contests") = t("contests.index.manage_contests")
a.ms-3.btn.btn-primary href="/events"
= t("events.show.back_to_events")
.float-end .float-end
a.btn.btn-primary.mb-4 href=new_contest_path a.btn.btn-primary.mb-4 href=new_contest_path
= t("contests.index.new_contest") = t("contests.index.new_contest")
@@ -9,7 +11,7 @@
.alert.alert-primary role="alert" .alert.alert-primary role="alert"
= t("contests.index.message") = t("contests.index.message")
.row.row-cols-1.row-cols-md-3.g-4 .mt-3.row.row-cols-1.row-cols-md-3.g-4
- @contests.each do |contest| - @contests.each do |contest|
.col .col
css: css:

View File

@@ -91,12 +91,20 @@ html
startAutoRefresh(200); startAutoRefresh(200);
- elsif active_page("/contests") == "active" - elsif active_page("/contests") == "active"
= @contest.name = @contest.name
- if @contest.public - if @contest.event && @contest.event.shared_scoreboard
a.ms-4.btn.btn-success href="/public/#{@contest.slug}" style="margin-top: -6px;" - if @contest.public
= t("contests.show.open_public_scoreboard") a.ms-4.btn.btn-success href="/public/event/#{@contest.event.slug}?contest_id=#{@contest.id}" style="margin-top: -6px;"
= t("events.show.open_shared_scoreboard")
- else
a.ms-4.btn.btn-success.disabled style="margin-top: -6px;"
= t("contests.show.shared_scoreboard_disabled")
- else - else
a.ms-4.btn.btn-success.disabled style="margin-top: -6px;" - if @contest.public
= t("contests.show.public_scoreboard_disabled") a.ms-4.btn.btn-success href="/public/#{@contest.slug}" style="margin-top: -6px;"
= t("contests.show.open_public_scoreboard")
- else
a.ms-4.btn.btn-success.disabled style="margin-top: -6px;"
= t("contests.show.public_scoreboard_disabled")
- else - else
= @contest.name = @contest.name
- else - else

View File

@@ -247,6 +247,7 @@ en:
open_public_scoreboard: Open public scoreboard open_public_scoreboard: Open public scoreboard
offline_form_disabled: The offline form is disabled offline_form_disabled: The offline form is disabled
public_scoreboard_disabled: The public scoreboard is disabled public_scoreboard_disabled: The public scoreboard is disabled
shared_scoreboard_disabled: The public scoreboard is disabled for this contest
url_copied: URL copied to the clipboard url_copied: URL copied to the clipboard
stopwatch: stopwatch:
info: This stopwatch is used for display in the public scoreboard, when allowed in the settings info: This stopwatch is used for display in the public scoreboard, when allowed in the settings

View File

@@ -218,6 +218,7 @@ fr:
open_public_scoreboard: Ouvrir le classement public open_public_scoreboard: Ouvrir le classement public
offline_form_disabled: Le formulaire hors-ligne n'est pas activé offline_form_disabled: Le formulaire hors-ligne n'est pas activé
public_scoreboard_disabled: Le classement public n'est pas activé public_scoreboard_disabled: Le classement public n'est pas activé
shared_scoreboard_disabled: Le classement public n'est pas activé pour cette épreuve
url_copied: LURL a été copiée dans le presse-papier url_copied: LURL a été copiée dans le presse-papier
stopwatch: stopwatch:
info: Ce chronomètre est utilisé pour être affiché dans le classement public, quand autorisé dans les paramètres info: Ce chronomètre est utilisé pour être affiché dans le classement public, quand autorisé dans les paramètres