diff --git a/ccm-cms/package-lock.json b/ccm-cms/package-lock.json index 9e0e437aa..67801e01a 100644 --- a/ccm-cms/package-lock.json +++ b/ccm-cms/package-lock.json @@ -3645,9 +3645,9 @@ "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" }, "bootstrap-icons": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.4.1.tgz", - "integrity": "sha512-EcATaAGsRgyy4NtnwXlNzkgWttpb6PqcXCoLtZZKdZtAYJU/WYqoQFxuGFKAppOlf7NmKpvGtSsC/921H7LIjg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.5.0.tgz", + "integrity": "sha512-44feMc7DE1Ccpsas/1wioN8ewFJNquvi5FewA06wLnqct7CwMdGDVy41ieHaacogzDqLfG8nADIvMNp9e4bfbA==" }, "brace-expansion": { "version": "1.1.11", diff --git a/ccm-cms/package.json b/ccm-cms/package.json index 7a968ecef..ed23c4031 100644 --- a/ccm-cms/package.json +++ b/ccm-cms/package.json @@ -23,7 +23,7 @@ "@tiptap/core": "^2.0.0-beta.46", "@tiptap/starter-kit": "^2.0.0-beta.43", "bootstrap": "^4.6.0", - "bootstrap-icons": "^1.4.1", + "bootstrap-icons": "^1.5.0", "jquery": "^3.6.0", "popper.js": "^1.16.1", "sortablejs": "^1.14.0" diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/CmsMvcAuthoringSteps.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/CmsMvcAuthoringSteps.java index 0cde3b3b9..bc32f285b 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/CmsMvcAuthoringSteps.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/CmsMvcAuthoringSteps.java @@ -18,6 +18,8 @@ */ package org.librecms.ui.contentsections.documents; +import org.librecms.ui.contentsections.documents.relatedinfo.RelatedInfoStep; +import org.librecms.ui.contentsections.documents.relatedinfo.RelatedInfoStepService; import org.librecms.ui.contenttypes.MvcArticlePropertiesStep; import org.librecms.ui.contenttypes.MvcArticleTextBodyStep; import org.librecms.ui.contenttypes.MvcArticleTextBodyStepResources; @@ -51,6 +53,7 @@ public class CmsMvcAuthoringSteps implements MvcAuthoringSteps { public Set> getResourceClasses() { final Set> classes = new HashSet<>(); classes.add(MvcArticleTextBodyStepResources.class); + classes.add(RelatedInfoStepService.class); return classes; } diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/AttachmentListDetailsModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/AttachmentListDetailsModel.java similarity index 98% rename from ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/AttachmentListDetailsModel.java rename to ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/AttachmentListDetailsModel.java index bcb10e892..0eea84eac 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/AttachmentListDetailsModel.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/AttachmentListDetailsModel.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.librecms.ui.contentsections.documents; +package org.librecms.ui.contentsections.documents.relatedinfo; import org.libreccm.l10n.GlobalizationHelper; import org.libreccm.l10n.LocalizedString; diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/AttachmentListDto.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/AttachmentListDto.java similarity index 96% rename from ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/AttachmentListDto.java rename to ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/AttachmentListDto.java index 0fc2f16db..74c94480a 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/AttachmentListDto.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/AttachmentListDto.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.librecms.ui.contentsections.documents; +package org.librecms.ui.contentsections.documents.relatedinfo; import org.libreccm.l10n.GlobalizationHelper; import org.librecms.contentsection.AttachmentList; @@ -26,6 +26,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.librecms.ui.contentsections.documents.ItemAttachmentDto; + /** * A data transfer object used by the template for the listing of the * {@link AttachmentList}s of a {@link ContentItem}. diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/InternalLinkDetailsModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/InternalLinkDetailsModel.java similarity index 98% rename from ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/InternalLinkDetailsModel.java rename to ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/InternalLinkDetailsModel.java index b478960f3..d12d4af9f 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/InternalLinkDetailsModel.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/InternalLinkDetailsModel.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.librecms.ui.contentsections.documents; +package org.librecms.ui.contentsections.documents.relatedinfo; import org.libreccm.l10n.GlobalizationHelper; import org.libreccm.l10n.LocalizedString; diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/MovedAttachment.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/MovedAttachment.java new file mode 100644 index 000000000..cc0f83cf8 --- /dev/null +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/MovedAttachment.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2021 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.librecms.ui.contentsections.documents.relatedinfo; + +/** + * + * @author Jens Pelzetter + */ +public class MovedAttachment { + + private String attachmentUuid; + + private String fromListUuid; + + private String toListUuid; + + public String getAttachmentUuid() { + return attachmentUuid; + } + + public void setAttachmentUuid(final String attachmentUuid) { + this.attachmentUuid = attachmentUuid; + } + + public String getFromListUuid() { + return fromListUuid; + } + + public void setFromListUuid(final String fromListUuid) { + this.fromListUuid = fromListUuid; + } + + public String getToListUuid() { + return toListUuid; + } + + public void setToListUuid(final String toListUuid) { + this.toListUuid = toListUuid; + } + +} diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStep.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStep.java similarity index 99% rename from ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStep.java rename to ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStep.java index d8eb9a5ab..a91206718 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStep.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStep.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.librecms.ui.contentsections.documents; +package org.librecms.ui.contentsections.documents.relatedinfo; import org.librecms.ui.contentsections.ContentSectionNotFoundException; import org.libreccm.api.Identifier; @@ -88,6 +88,14 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; +import org.librecms.ui.contentsections.documents.AbstractMvcAuthoringStep; +import org.librecms.ui.contentsections.documents.DefaultAuthoringStepConstants; +import org.librecms.ui.contentsections.documents.DocumentNotFoundException; +import org.librecms.ui.contentsections.documents.DocumentUi; +import org.librecms.ui.contentsections.documents.ItemAttachmentDto; +import org.librecms.ui.contentsections.documents.MvcAuthoringStepDef; +import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; + /** * Authoring step for managing the {@link AttachmentList} and * {@link ItemAttachment}s assigned to a {@link ContentItem}. @@ -675,9 +683,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep { globalizationHelper.getNegotiatedLocale(), description ); listRepo.save(list); - return buildRedirectPathForStep( - String.format("/attachmentlists/%s", list.getName()) - ); + return buildRedirectPathForStep(); } else { return documentUi.showAccessDenied( getContentSection(), diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStepAttachmentOrder.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepAttachmentOrder.java similarity index 79% rename from ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStepAttachmentOrder.java rename to ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepAttachmentOrder.java index c4f3a1eed..9e723dd39 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStepAttachmentOrder.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepAttachmentOrder.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.librecms.ui.contentsections.documents; +package org.librecms.ui.contentsections.documents.relatedinfo; import java.util.ArrayList; import java.util.Collections; @@ -35,6 +35,8 @@ public class RelatedInfoStepAttachmentOrder { private Map> attachmentsOrder; + private List movedAttachments; + public List getAttachmentListsOrder() { return Collections.unmodifiableList(attachmentListsOrder); } @@ -61,13 +63,23 @@ public class RelatedInfoStepAttachmentOrder { ); } + public List getMovedAttachments() { + return Collections.unmodifiableList(movedAttachments); + } + + public void setMovedAttachments(final List movedAttachments) { + this.movedAttachments = new ArrayList<>(movedAttachments); + } + @Override public String toString() { return String.format( "attachmentListsOrder = %s, " - + "attachmentsOrder = %s", + + "attachmentsOrder = %s, " + + "movedAttachments = %s", Objects.toString(attachmentListsOrder), - Objects.toString(attachmentsOrder) + Objects.toString(attachmentsOrder), + Objects.toString(movedAttachments) ); } diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStepModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepModel.java similarity index 96% rename from ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStepModel.java rename to ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepModel.java index b0f48e0f3..b369a7a4e 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStepModel.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepModel.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.librecms.ui.contentsections.documents; +package org.librecms.ui.contentsections.documents.relatedinfo; import java.util.ArrayList; import java.util.Collections; diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStepService.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepService.java similarity index 87% rename from ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStepService.java rename to ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepService.java index 684dd5c85..f1c6975f2 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/RelatedInfoStepService.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepService.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.librecms.ui.contentsections.documents; +package org.librecms.ui.contentsections.documents.relatedinfo; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -24,14 +24,16 @@ import org.librecms.contentsection.AttachmentListRepository; import org.librecms.contentsection.ContentItemRepository; import org.librecms.contentsection.ItemAttachmentManager; import org.librecms.ui.contentsections.ContentSectionsUi; -import org.w3c.dom.events.Event; - -import java.util.Objects; +import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; +import javax.transaction.Transactional; +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; +import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; /** @@ -39,7 +41,7 @@ import javax.ws.rs.core.Response; * @author Jens Pelzetter */ @RequestScoped -@Path(MvcAuthoringSteps.PATH_PREFIX + "relatedinfo") +@Path(MvcAuthoringSteps.PATH_PREFIX + "relatedinfo-service") public class RelatedInfoStepService { private static final Logger LOGGER = LogManager.getLogger( @@ -58,6 +60,10 @@ public class RelatedInfoStepService { @Inject private ContentSectionsUi sectionsUi; + @POST + @Path("/save-order") + @Consumes(MediaType.APPLICATION_JSON) + @Transactional(Transactional.TxType.REQUIRED) public Response saveOrder( @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) final String sectionIdentifier, diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/relatedinfo.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/relatedinfo.xhtml index ae0970c14..0be32fa53 100644 --- a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/relatedinfo.xhtml +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/documents/relatedinfo.xhtml @@ -2,11 +2,20 @@ + +
-
+ -
    +
    + +
    +
    +
      -
    • - #{list.name} - - +
    • +
      +
      #{list.name}
      +
      + + + + + + +
      +
      +
        + +
      • +
        #{attachment.name}
        +
        + + + + +
        +
      • +
        +
    + + + + + +
    + +
    diff --git a/ccm-cms/src/main/resources/org/librecms/ui/DefaultAuthoringStepsBundle.properties b/ccm-cms/src/main/resources/org/librecms/ui/DefaultAuthoringStepsBundle.properties index 74303c71b..d511fdbe8 100644 --- a/ccm-cms/src/main/resources/org/librecms/ui/DefaultAuthoringStepsBundle.properties +++ b/ccm-cms/src/main/resources/org/librecms/ui/DefaultAuthoringStepsBundle.properties @@ -96,3 +96,27 @@ assetpicker.column.type=Typ assetpicker.column.action=Action person.createform.title=Create new Person relatedinfo.attachmentlists.sort.button.label=Sort attachment lists +relatedinfo.sortattachments.errors.general=Unexpected error. Failed to sort related information. +relatedinfo.sortattachments.errors.save=Failed to save order. +relatedinfo.attachmentlists.add.button.label=Add new attachment list +relatedinfo.attachmentlists.add.dialog.title=Add new attachment list +relatedinfo.attachmentlists.add.dialog.close=Cancel +relatedinfo.attachmentlists.add.dialog.name.help=The name of the new attachment list. Only used internally. +relatedinfo.attachmentlists.add.dialog.name.label=Name +relatedinfo.attachmentlists.add.dialog.title.help=The title of the attachment list. +relatedinfo.attachmentlists.add.dialog.title.label=Title +relatedinfo.attachmentlists.add.dialog.description.help=A short description of the attachments in the list. +relatedinfo.attachmentlists.add.dialog.description.label=Description +relatedinfo.attachmentlists.add.dialog.add_list=Add list +relatedinfo.attachmentlists.order.save=Save order +relatedinfo.attachmentlists.move.button=Move attachment list +relatedinfo.attachmentlists.info.button=Info +relatedinfo.attachmentlists.edit.button=Edit attachment list +relatedinfo.attachmentlists.delete.button=Remove attachment list +relatedinfo.attachments.move.button=Move attachment +relatedinfo.attachments.info.button=Info +relatedinfo.attachments.edit.button=Edit attachment +relatedinfo.attachments.delete.button=Remove attachment +relatedinfo.attachmentlists.attachment.add.label=Add attachment +relatedinfo.attachmentlists.internal_link.add.label=Add internal link +relatedinfo.attachmentlists.link.add.label=Add link diff --git a/ccm-cms/src/main/resources/org/librecms/ui/DefaultAuthoringStepsBundle_de.properties b/ccm-cms/src/main/resources/org/librecms/ui/DefaultAuthoringStepsBundle_de.properties index 1e65f52bf..25195d14e 100644 --- a/ccm-cms/src/main/resources/org/librecms/ui/DefaultAuthoringStepsBundle_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/ui/DefaultAuthoringStepsBundle_de.properties @@ -96,3 +96,27 @@ assetpicker.column.type=Typ assetpicker.column.action=Aktion person.createform.title=Neue Person erstellen relatedinfo.attachmentlists.sort.button.label=Anhanglisten sortieren +relatedinfo.sortattachments.errors.general=Unerwarteter Fehler. Sortieren der weiterf\u00fchrenden informationen nicht m\u00f6glich. +relatedinfo.sortattachments.errors.save=Speichern der Sortierung fehlgeschlagen. +relatedinfo.attachmentlists.add.button.label=Neue Anhangliste hinzuf\u00fcgen +relatedinfo.attachmentlists.add.dialog.title=Neue Anhangliste hinzuf\u00fcgen +relatedinfo.attachmentlists.add.dialog.close=Abbrechen +relatedinfo.attachmentlists.add.dialog.name.help=Der Name der neuen Anhangliste. Wird nur intern genutzt. +relatedinfo.attachmentlists.add.dialog.name.label=Name +relatedinfo.attachmentlists.add.dialog.title.help=The title of the attachment list. +relatedinfo.attachmentlists.add.dialog.title.label=Titel +relatedinfo.attachmentlists.add.dialog.description.help=Eine kurze Beschreibung der Anh\u00e4nge in der Liste. +relatedinfo.attachmentlists.add.dialog.description.label=Beschreibung +relatedinfo.attachmentlists.add.dialog.add_list=Liste hinzuf\u00fcgen +relatedinfo.attachmentlists.order.save=Sortierung speichern +relatedinfo.attachmentlists.move.button=Anhangliste verschieben +relatedinfo.attachmentlists.info.button=Info +relatedinfo.attachmentlists.edit.button=Anhangliste bearbeiten +relatedinfo.attachmentlists.delete.button=Anhangliste entfernen +relatedinfo.attachments.move.button=Anhang verschieben +relatedinfo.attachments.info.button=Info +relatedinfo.attachments.edit.button=Anhang bearbeiten +relatedinfo.attachments.delete.button=Anhang entfernen +relatedinfo.attachmentlists.attachment.add.label=Anhang hinzuf\u00fcgen +relatedinfo.attachmentlists.internal_link.add.label=Internen Link hinzuf\u00fcgen +relatedinfo.attachmentlists.link.add.label=Link hinzuf\u00fcgen diff --git a/ccm-cms/src/main/typescript/content-sections/cms-attachment-lists.ts b/ccm-cms/src/main/typescript/content-sections/cms-attachment-lists.ts index 2c93be649..b779036df 100644 --- a/ccm-cms/src/main/typescript/content-sections/cms-attachment-lists.ts +++ b/ccm-cms/src/main/typescript/content-sections/cms-attachment-lists.ts @@ -62,7 +62,8 @@ function initAttachments(attachments: HTMLElement): Sortable { const listUuid = attachments.getAttribute("data-list-uuid"); if (listUuid === null) { - throw Error("attachments with data-list-uuid attribute found."); + showGeneralError(); + throw Error("attachments without data-list-uuid attribute found."); } attachmentsSortables[listUuid] = sortable; @@ -90,12 +91,14 @@ function moveAttachment(event: SortableEvent) { const fromListUuid = event.from.getAttribute("data-list-uuid"); if (!fromListUuid) { + showGeneralError(); throw Error( "An attachment was moved, but the list from which the attachment was removed has no data-id attribute." ); } const toListUuid = event.to.getAttribute("data-list-uuid"); if (!toListUuid) { + showGeneralError(); throw Error( "An attachment was moved, but the list to which the attachment was removed has no data-id attribute." ); @@ -104,6 +107,7 @@ function moveAttachment(event: SortableEvent) { if (fromListUuid !== toListUuid) { const attachmentUuid = event.item.getAttribute("data-id"); if (!attachmentUuid) { + showGeneralError(); throw Error( "An attachment was moved, but the attachment was removed has no dat-id attribute." ); @@ -133,12 +137,68 @@ function saveOrder() { } console.dir(attachmentOrder); + const cmsAttachments = document.querySelector(".cms-attachment-lists"); + if (!cmsAttachments) { + showGeneralError(); + throw Error("cms-attachment-lists container not found."); + } + const baseUrl = cmsAttachments.getAttribute("data-baseUrl"); + if (!baseUrl) { + showGeneralError(); + throw Error( + "data-baseUrl attribute on cms-attachment-lists container is missing or empty." + ); + } + const headers = new Headers(); + headers.append("Content-Type", "application/json"); + fetch(baseUrl, { + credentials: "include", + body: JSON.stringify(attachmentOrder), + headers, + method: "POST" + }) + .then(response => { + if (response.ok) { + const saveOrderButtons = + document.querySelectorAll("save-order-button"); + for (let i = 0; i < saveOrderButtons.length; i++) { + const saveOrderButton: HTMLButtonElement = saveOrderButtons[ + i + ] as HTMLButtonElement; + saveOrderButton.disabled = true; + } + } else { + throw Error( + `Failed to save attachments order. Response status: ${response.status}, statusText: ${response.statusText}` + ); + } + }) + .catch(error => { + showSaveError(); + throw new Error(`Failed to save attachments order: ${error}`); + }); +} - const saveOrderButtons = document.querySelectorAll("save-order-button"); - for (let i = 0; i < saveOrderButtons.length; i++) { - const saveOrderButton: HTMLButtonElement = saveOrderButtons[ - i - ] as HTMLButtonElement; - saveOrderButton.disabled = true; +function showGeneralError(): void { + const alertTemplate = document.querySelector( + "#cms-sort-attachments-error-general" + ) as HTMLTemplateElement; + const alert = alertTemplate.content.cloneNode(true) as Element; + + const container = document.querySelector("#messages"); + if (container) { + container.appendChild(alert); + } +} + +function showSaveError(): void { + const alertTemplate = document.querySelector( + "#cms-sort-attachments-error-save" + ) as HTMLTemplateElement; + const alert = alertTemplate.content.cloneNode(true) as Element; + + const container = document.querySelector("#messages"); + if (container) { + container.appendChild(alert); } } diff --git a/ccm-core/package-lock.json b/ccm-core/package-lock.json index 140618336..6ae663970 100644 --- a/ccm-core/package-lock.json +++ b/ccm-core/package-lock.json @@ -1572,9 +1572,9 @@ "integrity": "sha512-vlGn0bcySYl/iV+BGA544JkkZP5LB3jsmkeKLFQakCOwCM3AOk7VkldBz4jrzSe+Z0Ezn99NVXa1o45cQY4R6A==" }, "bootstrap-icons": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.0.0.tgz", - "integrity": "sha512-PaQm3VtSqbUnWuyqGmFJG5iF9UMieDuk8raPOmKOtKeyWyiVshgLoKa+9EWGolGU/nvyBLEBWhZoQqhu9ccNBg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.5.0.tgz", + "integrity": "sha512-44feMc7DE1Ccpsas/1wioN8ewFJNquvi5FewA06wLnqct7CwMdGDVy41ieHaacogzDqLfG8nADIvMNp9e4bfbA==" }, "brace-expansion": { "version": "1.1.11", diff --git a/ccm-core/package.json b/ccm-core/package.json index 7f8459185..543dd8a4f 100644 --- a/ccm-core/package.json +++ b/ccm-core/package.json @@ -18,7 +18,7 @@ }, "dependencies": { "bootstrap": "^4.5.2", - "bootstrap-icons": "^1.0.0", + "bootstrap-icons": "^1.5.0", "jquery": "^3.5.1", "popper.js": "^1.16.1" } diff --git a/ccm-core/src/main/resources/assets/bootstrap/bootstrap-icons.svg b/ccm-core/src/main/resources/assets/bootstrap/bootstrap-icons.svg index f7731a14b..7e2d6429d 100644 --- a/ccm-core/src/main/resources/assets/bootstrap/bootstrap-icons.svg +++ b/ccm-core/src/main/resources/assets/bootstrap/bootstrap-icons.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file