From b883480bff87108535e4a35c251da740d08f9db3 Mon Sep 17 00:00:00 2001 From: Daniel Karbach Date: Mon, 12 Jan 2026 11:08:53 +0100 Subject: [PATCH] allow editing of synced episodes --- resources/js/components/episodes/Form/index.jsx | 11 ++++++++++- resources/js/helpers/permissions.js | 2 +- resources/js/i18n/de.js | 1 + resources/js/i18n/en.js | 1 + 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/resources/js/components/episodes/Form/index.jsx b/resources/js/components/episodes/Form/index.jsx index 9db2c2d..9da9464 100644 --- a/resources/js/components/episodes/Form/index.jsx +++ b/resources/js/components/episodes/Form/index.jsx @@ -1,7 +1,7 @@ import { withFormik } from 'formik'; import PropTypes from 'prop-types'; import React from 'react'; -import { Button, Col, Form, Modal, Row } from 'react-bootstrap'; +import { Alert, Button, Col, Form, Modal, Row } from 'react-bootstrap'; import { useTranslation } from 'react-i18next'; import EpisodePart from './EpisodePart'; @@ -18,6 +18,7 @@ const arrayWithout = (arr, index) => { }; const EpisodeForm = ({ + episode, errors, handleBlur, handleChange, @@ -49,6 +50,11 @@ const EpisodeForm = ({ + {episode?.ext_id ? + + {t('episodes.extSyncWarning')} + + : null} episode && channel && episode.channels && episode.channels.find(c => c.id === channel.id); export const mayEditEpisode = (user, episode) => - user && episode && !episode.ext_id && user.event_crews && + user && episode && user.event_crews && user.event_crews.find(c => c.role === 'admin' && c.event_id === episode.event_id); export const mayRestreamEpisodes = user => isAnyChannelAdmin(user); diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js index ba00b05..88aaac4 100644 --- a/resources/js/i18n/de.js +++ b/resources/js/i18n/de.js @@ -245,6 +245,7 @@ export default { estimate: 'Geschätzte Laufzeit', estimatePreview: '{{ estimate }} Std.', estimatePreviewWithEnd: '{{ estimate }} Std. (endet {{ end, LL LT }} Uhr)', + extSyncWarning: 'Achtung: Diese Episopde wird mit einer externen Datenquelle synchronisiert und Änderungen können überschrieben werden!', missingStreams: 'Fehlende Runner-Streams', players: { name_override: 'Abweichender Name', diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js index 5adc102..f5b18de 100644 --- a/resources/js/i18n/en.js +++ b/resources/js/i18n/en.js @@ -245,6 +245,7 @@ export default { estimate: 'Estimated runtime', estimatePreview: '{{ estimate }}h', estimatePreviewWithEnd: '{{ estimate }}h (ends {{ end, LL LT }})', + extSyncWarning: 'Warning: This episode is synchronized to an external data source. Changes may be overwritten!', missingStreams: 'Missing runner streams', players: { name_override: 'Name override', -- 2.47.3