diff --git a/lang/de.slf b/lang/de.slf index f0c49fdb208192816aad7fa465903acfbec8c5c2..8d2abcbcbdbbc1080e0cf5663b2028e857967a93 100644 --- a/lang/de.slf +++ b/lang/de.slf @@ -157,6 +157,9 @@ setting.entry.notifications_responsible_courses_chapter_submitted = "... ein Kap setting.entry.notifications_responsible_courses_changes = "... ein anderer Benutzer Felder (z.B. Titel oder Kommentar) geändert hat" ui.announcement.info_static_not_editable = "Dies ist eine dynamische Ankündigung, welche vom Server kommt und nicht bearbeitet werden kann" +ui.announcement.info_hide_disabled_in_edit_mode = """ + Du kannst aktuell alle Ankündigungen sehen um diese zu bearbeiten, daher kannst du diese Ankündigung nicht verstecken. + """ ui.announcement.create_new = "Neue Ankündigung" ui.object.field_supports_markdown = """ diff --git a/lang/en.slf b/lang/en.slf index d0ddea3e7e74ddf222e95b23d4a99bf8be58f533..a34224db46aab40304876cc1e4189edd4bf4a811 100644 --- a/lang/en.slf +++ b/lang/en.slf @@ -157,6 +157,9 @@ setting.entry.notifications_responsible_courses_chapter_submitted = "... a chapt setting.entry.notifications_responsible_courses_changes = "... another user fields (e.g. title, comment) changed" ui.announcement.info_static_not_editable = "This is a dynamic announcement provided by the server, which can not be edited" +ui.announcement.info_hide_disabled_in_edit_mode = """ + You can currently see all announcements to edit them, and therefore you can't hide this announcement. + """ ui.announcement.create_new = "New announcement" ui.object.field_supports_markdown = """ diff --git a/src/videoag/site/AnnouncementComponent.tsx b/src/videoag/site/AnnouncementComponent.tsx index 48f7300d9a7441f01acd58b1c33be116b9afcd75..af6639233736a3bf960e2f6931f568ae5c944d99 100644 --- a/src/videoag/site/AnnouncementComponent.tsx +++ b/src/videoag/site/AnnouncementComponent.tsx @@ -46,6 +46,7 @@ export default function AnnouncementComponent({ ); const isHome = router.asPath === "/"; + const allowEditing = editMode && isHome; const hideAnnouncement = (announcement: announcement) => setHiddenAnnouncements((oldHidden: string[]) => { @@ -70,7 +71,7 @@ export default function AnnouncementComponent({ return ( <div> - {editMode && ( + {allowEditing && ( <div className=""> <OMCreate object_type="announcement"> <button className="btn btn-secondary mb-3 w-100" type="button"> @@ -85,10 +86,10 @@ export default function AnnouncementComponent({ let alertColor = "alert-info"; if (announcement.type == "warning") alertColor = "alert-warning"; else if (announcement.type == "important") alertColor = "alert-danger"; - + if (announcement.page_visibility == "only_main_page" && !isHome) return null; - if (!forceShowHidden && !editMode && hiddenAnnouncements.includes(hash)) + if (!forceShowHidden && !allowEditing && hiddenAnnouncements.includes(hash)) return null; return ( @@ -97,7 +98,7 @@ export default function AnnouncementComponent({ key={hash + "#" + ind} role="alert" > - {announcement.id ? ( + {announcement.id && allowEditing ? ( <EmbeddedOMFieldComponent object_type="announcement" object_id={announcement.id} @@ -114,7 +115,7 @@ export default function AnnouncementComponent({ )} <div className="flex-grow-1" /> - {editMode && + {allowEditing && (announcement.id ? ( <> <OMEdit @@ -134,13 +135,19 @@ export default function AnnouncementComponent({ )} </TooltipButton> ))} - {!forceShowHidden && !editMode && ( - <button - type="button" - className="btn-close " - aria-label="Close" - onClick={() => hideAnnouncement(announcement)} - /> + {!forceShowHidden && ( + <span + className="d-flex align-items-center" + title={allowEditing ? language.get("ui.announcement.info_hide_disabled_in_edit_mode") : ""} + > + <button + type="button" + className="btn-close ms-1" + aria-label="Close" + disabled={allowEditing} + onClick={() => hideAnnouncement(announcement)} + /> + </span> )} </div> );