Several small things for the related info step.

pull/10/head
Jens Pelzetter 2021-07-28 21:19:02 +02:00
parent 9a9e5dc767
commit d58fa954b9
8 changed files with 131 additions and 508 deletions

View File

@ -86,7 +86,7 @@ public class BinaryAsset extends Asset implements Serializable {
@Column(name = "ASSET_DATA") @Column(name = "ASSET_DATA")
@Lob @Lob
@Basic(fetch = FetchType.LAZY) @Basic(fetch = FetchType.LAZY)
// @NotAudited @NotAudited // Workaround until bug in Hibernate is resolved: https://hibernate.atlassian.net/browse/HHH-14725
private Blob data; private Blob data;
@Column(name = "DATA_SIZE") @Column(name = "DATA_SIZE")

View File

@ -45,10 +45,15 @@ public class ItemAttachmentDto {
private long sortKey; private long sortKey;
/** /**
* The type of the asset of the attachment. * The name of the asset type.
*/ */
private String assetType; private String assetType;
/**
* Label for the type of the asset of the attachment.
*/
private String assetTypeLabel;
/** /**
* The UUID of the attachment asset. * The UUID of the attachment asset.
*/ */
@ -91,12 +96,12 @@ public class ItemAttachmentDto {
this.sortKey = sortKey; this.sortKey = sortKey;
} }
public String getAssetType() { public String getAssetTypeLabel() {
return assetType; return assetTypeLabel;
} }
public void setAssetType(final String assetType) { public void setAssetTypeLabel(final String assetTypeLabel) {
this.assetType = assetType; this.assetTypeLabel = assetTypeLabel;
} }
public String getTitle() { public String getTitle() {
@ -123,4 +128,12 @@ public class ItemAttachmentDto {
this.assetUuid = assetUuid; this.assetUuid = assetUuid;
} }
public String getAssetType() {
return assetType;
}
public void setAssetType(final String assetType) {
this.assetType = assetType;
}
} }

View File

@ -27,7 +27,6 @@ import org.libreccm.security.PermissionChecker;
import org.libreccm.ui.BaseUrl; import org.libreccm.ui.BaseUrl;
import org.librecms.assets.AssetTypesManager; import org.librecms.assets.AssetTypesManager;
import org.librecms.assets.Bookmark; import org.librecms.assets.Bookmark;
import org.librecms.assets.FileAsset;
import org.librecms.assets.RelatedLink; import org.librecms.assets.RelatedLink;
import org.librecms.contentsection.Asset; import org.librecms.contentsection.Asset;
import org.librecms.contentsection.AssetManager; import org.librecms.contentsection.AssetManager;
@ -138,9 +137,6 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
@Inject @Inject
private AttachmentListRepository listRepo; private AttachmentListRepository listRepo;
@Inject
private BaseUrl baseUrl;
@Inject @Inject
private DocumentUi documentUi; private DocumentUi documentUi;
@ -895,7 +891,8 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
* @param documentPath * @param documentPath
* @param listIdentifierParam The identifier of the list to which the * @param listIdentifierParam The identifier of the list to which the
* attachment is added. * attachment is added.
* @param assetUuid The asset to use for the attachment. * @param assetIdentifier The identifier of the asset to use for the
* attachment.
* *
* @return A redirect to the list of attachment lists and attachments. * @return A redirect to the list of attachment lists and attachments.
*/ */
@ -909,8 +906,8 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
final String documentPath, final String documentPath,
@PathParam("attachmentListIdentifier") @PathParam("attachmentListIdentifier")
final String listIdentifierParam, final String listIdentifierParam,
@FormParam("assetUuid") @FormParam("assetIdentifier")
final String assetUuid final String assetIdentifierParam
) { ) {
try { try {
init(); init();
@ -931,11 +928,35 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
} }
final AttachmentList list = listResult.get(); final AttachmentList list = listResult.get();
final Optional<Asset> assetResult = assetRepo.findByUuid(assetUuid); final Optional<Asset> assetResult;
final Identifier assetIdentifier = identifierParser.parseIdentifier(
assetIdentifierParam
);
switch (assetIdentifier.getType()) {
case ID:
assetResult = assetRepo.findById(
Long.parseLong(
assetIdentifier.getIdentifier()
)
);
break;
case UUID:
assetResult = assetRepo.findByUuid(
assetIdentifier.getIdentifier()
);
break;
default:
assetResult = assetRepo.findByPath(
getContentSection(),
assetIdentifier.getIdentifier()
);
break;
}
if (!assetResult.isPresent()) { if (!assetResult.isPresent()) {
models models
.put("section", getContentSection().getLabel()); .put("section", getContentSection().getLabel());
models.put("assetUuid", assetUuid); models.put("assetUuid", assetIdentifierParam);
return "org/librecms/ui/contentsection/documents/asset-not-found.xhtml"; return "org/librecms/ui/contentsection/documents/asset-not-found.xhtml";
} }
@ -2148,6 +2169,14 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
) { ) {
final ItemAttachmentDto dto = new ItemAttachmentDto(); final ItemAttachmentDto dto = new ItemAttachmentDto();
dto.setAssetType( dto.setAssetType(
Optional
.ofNullable(itemAttachment.getAsset())
.map(Asset::getClass)
.map(clazz -> assetTypesManager.getAssetTypeInfo(clazz))
.map(info -> info.getAssetClass().getName())
.orElse("")
);
dto.setAssetTypeLabel(
Optional Optional
.ofNullable(itemAttachment.getAsset()) .ofNullable(itemAttachment.getAsset())
.map(Asset::getClass) .map(Asset::getClass)

View File

@ -19,6 +19,7 @@
package org.librecms.ui.contentsections.documents.relatedinfo; package org.librecms.ui.contentsections.documents.relatedinfo;
import org.librecms.assets.FileAsset; import org.librecms.assets.FileAsset;
import org.librecms.assets.RelatedLink;
import org.librecms.contentsection.AttachmentList; import org.librecms.contentsection.AttachmentList;
import java.util.ArrayList; import java.util.ArrayList;
@ -87,4 +88,8 @@ public class RelatedInfoStepModel {
this.sectionName = sectionName; this.sectionName = sectionName;
} }
public String getRelatedLinkType() {
return RelatedLink.class.getName();
}
} }

View File

@ -12,7 +12,7 @@
<ui:define name="breadcrumb"> <ui:define name="breadcrumb">
<ui:include src="document-breadcrumbs.xhtml" /> <ui:include src="document-breadcrumbs.xhtml" />
<li aria-current="page" class="breadcrumb-item"> <li aria-current="page" class="breadcrumb-item">
#{CmsAdminMessages['contentsection.document.relatedinfo.breadcrumb']} #{CmsDefaultStepsMessageBundle['contentsection.document.relatedinfo.breadcrumb']}
</li> </li>
</ui:define> </ui:define>

View File

@ -1,6 +1,7 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]> <!DOCTYPE html [<!ENTITY times '&#215;'>]>
<html xmlns="http://www.w3.org/1999/xhtml" <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap" xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap"
xmlns:libreccm="http://xmlns.jcp.org/jsf/composite/components/libreccm"
xmlns:librecms="http://xmlns.jcp.org/jsf/composite/components/librecms" xmlns:librecms="http://xmlns.jcp.org/jsf/composite/components/librecms"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
@ -83,271 +84,6 @@
</div> </div>
</div> </div>
<!-- <div>
<button class="btn btn-secondary save-order-button"
disabled="disabled"
type="button">
<bootstrap:svgIcon icon="save" />
<span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.order.save']}</span>
</button>
</div>
<div id="messages"></div>
<ul class="cms-attachment-lists list-group mt-3"
data-baseUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo-service/save-order">
<li class="cms-attachment-list mb-3 list-group-item list-group-item-primary"
data-id="34aba2e6-a9b2-4b82-9889-c7ea591b6faf">
<div class="d-flex justify-content-between">
<div class="cms-attachment-list-name">List 1</div>
<div class="cms-attachmentlist-buttons">
<button class="btn btn-secondary cms-sort-handle"
type="button">
<bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.move.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.info.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.edit.button']}"</span>
</button>
<button class="btn btn-danger"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.delete.button']}"</span>
</button>
</div>
</div>
<ul class="cms-attachments mt-3 list-group"
data-list-uuid="34aba2e6-a9b2-4b82-9889-c7ea591b6faf">
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
data-id="a871c22b-f533-49eb-be3e-3600f4e83180">
<div class="cms-attachment-label">Attachment 1a</div>
<div class="cms-attachment-buttons">
<button class="btn btn-secondary cms-sort-handle"
type="button">
<bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
</button>
<button class="btn btn-danger"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
</button>
</div>
</li>
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
data-id="6ab14e1e-dc9a-4a39-9514-9bea68bcd357">
<div class="cms-attachment-label">Attachment 1b</div>
<div class="cms-attachment-buttons">
<button class="btn btn-secondary cms-sort-handle"
type="button">
<bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
</button>
<button class="btn btn-danger"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
</button>
</div>
</li>
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
data-id="f3a1d656-fb4e-4ba8-9f5c-e605700e7c5f">
<div class="cms-attachment-label">Attachment 1c</div>
<div class="cms-attachment-buttons">
<button class="btn btn-secondary cms-sort-handle"
type="button">
<bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
</button>
<button class="btn btn-danger"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
</button>
</div>
</li>
</ul>
</li>
<li class="cms-attachment-list mb-3 list-group-item list-group-item-primary"
data-id="b962a838-e25e-4987-8058-6205692d2d92">
<div class="d-flex justify-content-between">
<div class="cms-attachment-list-name">List 2</div>
<div class="cms-attachmentlist-buttons">
<button class="btn btn-secondary cms-sort-handle"
type="button">
<bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.move.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.info.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.edit.button']}"</span>
</button>
<button class="btn btn-danger"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.delete.button']}"</span>
</button>
</div>
</div>
<ul class="cms-attachments mt-3 list-group"
data-list-uuid="b962a838-e25e-4987-8058-6205692d2d92">
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
data-id="296495bd-fbf6-4956-a047-5fa3400df367">
<div class="cms-attachment-label">Attachment 2a</div>
<div class="cms-attachment-buttons">
<button class="btn btn-secondary cms-sort-handle"
type="button">
<bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
</button>
<button class="btn btn-danger"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
</button>
</div>
</li>
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
data-id="89d89ffd-a322-43a2-81b9-d127503bf52b">
<div class="cms-attachment-label">Attachment 2b</div>
<div class="cms-attachment-buttons">
<button class="btn btn-secondary cms-sort-handle"
type="button">
<bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
</button>
<button class="btn btn-danger"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
</button>
</div>
</li>
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
data-id="f85193f2-38fc-4f34-b6fa-4ed6f4e30f69">
<div class="cms-attachment-label">Attachment 2c</div>
<div class="cms-attachment-buttons">
<button class="btn btn-secondary cms-sort-handle"
type="button">
<bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
</button>
<button class="btn btn-danger"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
</button>
</div>
</li>
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
data-id="a063c64d-3da6-4948-837c-137bf3511579">
<div class="cms-attachment-label">Attachment 2d</div>
<div class="cms-attachment-buttons">
<button class="btn btn-secondary cms-sort-handle"
type="button">
<bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
</button>
<button class="btn btn-secondary"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
</button>
<button class="btn btn-danger"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
</button>
</div>
</li>
</ul>
</li>
</ul>
<div>
<button class="btn btn-secondary save-order-button"
disabled="disabled"
type="button">
<bootstrap:svgIcon icon="save" />
<span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.order.save']}</span>
</button>
</div>-->
<div> <div>
<button class="btn btn-secondary save-order-button" <button class="btn btn-secondary save-order-button"
disabled="disabled" disabled="disabled"
@ -365,13 +101,13 @@
data-id="#{list.uuid}"> data-id="#{list.uuid}">
<div class="d-flex justify-content-between"> <div class="d-flex justify-content-between">
<div>#{list.name}</div> <div>#{list.name}</div>
<div class="cms-attachmentlist-buttons"> <div class="cms-attachmentlist-buttons d-flex">
<button class="btn btn-secondary cms-sort-handle" <button class="btn btn-secondary cms-sort-handle mr-2"
type="button"> type="button">
<bootstrap:svgIcon icon="arrows-move" /> <bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.move.button']}"</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.move.button']}"</span>
</button> </button>
<button class="btn btn-secondary" <button class="btn btn-secondary mx-2"
data-toggle="modal" data-toggle="modal"
data-target="#attachment-list-#{list.name}-info" data-target="#attachment-list-#{list.name}-info"
type="button"> type="button">
@ -416,42 +152,46 @@
</div> </div>
</div> </div>
</div> </div>
<a class="btn btn-primary" <a class="btn btn-primary mx-2"
href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/@details"> href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/@details">
<bootstrap:svgIcon icon="pen" /> <bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.edit.button']}"</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.edit.button']}"</span>
</a> </a>
<librecms:assetPickerButton <librecms:assetPickerButton
assetPickerId="attach-file-picker" assetPickerId="attach-file-picker-#{list.uuid}"
buttonIcon="file-earmark-plus" buttonIcon="file-earmark-plus"
buttonText="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.add.label']}" buttonText="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.add.label']}"
/> />
<librecms:assetPicker <a class="btn btn-primary mx-2"
actionUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/attachments/@create"
assetType="#{CmsRelatedInfoStep.fileAssetType}"
assetPickerId="attach-file-picker"
baseUrl="#{CmsRelatedInfoStep.fileAssetPickerBaseUrl}"
contentSection="#{CmsRelatedInfoStep.sectionName}"
formParamName="assetUuid"
/>
<!-- <button class="btn btn-primary"
data-target="#attachmentlist-#{list.name}-add-attachment-dialog"
data-toggle="modal"
type="button">
<bootstrap:svgIcon icon="file-earmark-plus" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.add.label']}</span>
</button>-->
<a class="btn btn-primary"
href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/links/@create" href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/links/@create"
type="button"> type="button">
<bootstrap:svgIcon icon="bookmark-plus" /> <bootstrap:svgIcon icon="bookmark-plus" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.link.add.label']}</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.link.add.label']}</span>
</a> </a>
<button class="btn btn-danger" <libreccm:deleteDialog
actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/@remove"
buttonLabelClass="sr-only"
buttonText="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.remove.label']}"
buttonTextClass="ml-2"
cancelLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.remove.cancel']}"
confirmLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.remove.confirm']}"
dialogId="attachmentlist-delete-#{list.uuid}"
dialogTitle="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.remove.title']}"
message="#{CmsDefaultStepsMessageBundle.getMessage('relatedinfo.attachmentlists.remove.message', [list.name])}"
/>
<!-- <button class="btn btn-danger"
type="button"> type="button">
<bootstrap:svgIcon icon="x-circle" /> <bootstrap:svgIcon icon="x-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.remove.label']}</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.remove.label']}</span>
</button> </button>-->
<librecms:assetPicker
actionUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/attachments/@create"
assetType="#{CmsRelatedInfoStep.fileAssetType}"
assetPickerId="attach-file-picker-#{list.uuid}"
baseUrl="#{CmsRelatedInfoStep.fileAssetPickerBaseUrl}"
contentSection="#{CmsRelatedInfoStep.sectionName}"
formParamName="assetIdentifier"
/>
</div> </div>
</div> </div>
<ul class="cms-attachments mt-3 list-group" <ul class="cms-attachments mt-3 list-group"
@ -460,25 +200,40 @@
var="attachment"> var="attachment">
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between" <li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
data-id="#{attachment.uuid}"> data-id="#{attachment.uuid}">
<div class="cms-attachment-label">#{attachment.title}</div> <div>
<c:choose>
<c:when test="#{attachment.assetType.equals(CmsRelatedInfoStep.relatedLinkType)}">
<bootstrap:svgIcon icon="bookmark" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.attachment.type.link']}</span>
</c:when>
<c:when test="#{attachment.assetType.equals(CmsRelatedInfoStep.fileAssetType)}">
<bootstrap:svgIcon icon="file-earmark" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.attachment.type.file']}</span>
</c:when>
</c:choose>
<span class="cms-attachment-label">#{attachment.title}</span>
</div>
<div class="cms-attachment-buttons"> <div class="cms-attachment-buttons">
<button class="btn btn-secondary cms-sort-handle" <button class="btn btn-secondary cms-sort-handle mr-2"
type="button"> type="button">
<bootstrap:svgIcon icon="arrows-move" /> <bootstrap:svgIcon icon="arrows-move" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
</button> </button>
<button class="btn btn-secondary" <button class="btn btn-secondary mx-2"
type="button"> type="button">
<bootstrap:svgIcon icon="info-circle" /> <bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
</button> </button>
<a class="btn btn-primary" <c:if test="#{attachment.assetType.equals(CmsRelatedInfoStep.relatedLinkType)}">
href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/links/#{attachment.assetUuid}/@details" <a class="btn btn-primary mx-2"
type="button"> href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/links/#{attachment.assetUuid}/@details"
<bootstrap:svgIcon icon="pen" /> type="button">
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span> <bootstrap:svgIcon icon="pen" />
</a> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
<button class="btn btn-danger" </a>
</c:if>
<button class="btn btn-danger ml-2"
type="button"> type="button">
<bootstrap:svgIcon icon="x-circle" /> <bootstrap:svgIcon icon="x-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
@ -490,200 +245,7 @@
</li> </li>
</c:forEach> </c:forEach>
</ul> </ul>
<!-- <div aria-hidden="true"
aria-labelledby="attachmentlist-#{list.name}-add-attachment-dialog-title"
class="modal fade"
id="attachmentlist-#{list.name}-add-attachment-dialog"
tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title"
id="attachmentlist-#{list.name}-add-attachment-dialog-title">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.add.dialog.title']}
</h3>
<button aria-label="#{CmsDefaultStepsMessageBundle['relatedinfo.attachment.add.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x-circle" />
</button>
</div>
<div class="modal-body">
<div class="alert alert-info" role="alert">
Not implemented yet
Requires JavaScript to search for assets
</div>
</div>
</div>
</div>
</div>-->
<!-- <div aria-hidden="true"
aria-labelledby="attachmentlist-#{list.name}-add-internallink-dialog-title"
class="modal fade"
id="attachmentlist-#{list.name}-add-internallink-dialog"
tabindex="-1">
<div class="modal-dialog">
<form class="modal-content">
<div class="modal-header">
<h3 class="modal-title">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.internallink.add.dialog.title']}
</h3>
<button aria-label="#{CmsDefaultStepsMessageBundle['relatedinfo.internallink.add.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x-circle" />
</button>
</div>
<div class="modal-body">
<div class="alert alert-info" role="alert">
Not implemented yet, requires JavaScript for good user experience.
</div>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsDefaultStepsMessageBundle['relatedinfo.internallink.add.dialog.close']}
</button>
<button class="btn btn-success">
#{CmsDefaultStepsMessageBundle['relatedinfo.internallink.add.dialog.save']}
</button>
</div>
</form>
</div>
</div>-->
<!-- <span>#{list.name}</span>
<button class="btn btn-info"
data-target="#attachmentlist-#{list.name}-info"
data-toggle="modal"
type="button">
<bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.info_button.label']}"
</span>
</button>
<div aria-hidden="true"
aria-labelledby="attachment-list-#{list.name}-info-title"
class="modal fade"
id="attachmentlist-#{list.name}-info"
tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h3 class="model-title"
id="attachment-list-#{list.name}-info-title">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.info_dialog.title']}"
</h3>
<button aria-label="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.info_dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x-circle" />
</button>
</div>
<div class="modal-body">
#{list.description}
</div>
<div class="modal-footer">
<button class="btn btn-secondary"
data-dismiss="modal"
type="button">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.info_dialog.close']}
</button>
</div>
</div>
</div>
</div>
<a class="btn btn-primary"
href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/@details">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.edit.label']}
</span>
</a>
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/@moveDown"
method="post">
<button class="btn btn-secondary"
type="submit">
<bootstrap:svgIcon icon="caret-down-fill" />
<span class="sr-only">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.move_down.label']}
</span>
</button>
</form>
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/@moveUp"
method="post">
<button class="btn btn-secondary"
type="submit">
<bootstrap:svgIcon icon="caret-up-fill" />
<span class="sr-only">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.move_up.label']}
</span>
</button>
</form>
<libreccm:deleteDialog
actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/@remove"
buttonText="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.remove.label']}"
cancelLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.remove.cancel']}"
confirmLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.remove.confirm']}"
dialogId="attachmentlist-#{list.name}-remove-dialog"
dialogTitle="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.remove.title']}"
message="#{CmsDefaultStepsMessageBundle.getMessage('relatedinfo.attachmentlists.row.remove.message', [list.name])}"
/>
</div>
<ul>
<c:forEach items="#{list.attachments}"
var="attachment">
<li class="d-flex">
<span>#{attachment.title}</span>
<c:if test="#{attachment.internalLink}">
<a class="btn btn-secondary"
href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/internal-links/#{attachment.uuid}/@details">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.internal_link.edit.label']}
</span>
</a>
</c:if>
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo//attachments/#{attachment.uuid}/@moveDown"
method="post">
<button class="btn btn-secondary"
type="submit">
<bootstrap:svgIcon icon="caret-down-fill" />
<span class="sr-only">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.row.attachment.move_down.label']}
</span>
</button>
</form>
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/attachments/#{attachment.uuid}/@moveUp"
method="post">
<button class="btn btn-secondary"
type="submit">
<bootstrap:svgIcon icon="caret-up-fill" />
<span class="sr-only">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.row.move_up.label']}
</span>
</button>
</form>
<libreccm:deleteDialog
actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/attachments/#{attachment.uuid}/@remove"
buttonText="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.remove.label']}"
cancelLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.remove.cancel']}"
confirmLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.remove.confirm']}"
dialogId="remove-attachment-#{attachment.uuid}"
dialogTitle="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.remove.title']}"
message="#{CmsDefaultStepsMessageBundle.getMessage('relatedinfo.attachmentlists.attachment.remove.message', [attachment.title])}"
/>
</li>
</c:forEach>
</ul>
</li>
</c:forEach>
</ul>-->
<div> <div>
<button class="btn btn-secondary save-order-button" <button class="btn btn-secondary save-order-button"
disabled="disabled" disabled="disabled"

View File

@ -221,3 +221,10 @@ relatedinfo.link.details.target.bookmark_name=Bookmark
relatedinfo.target_bookmark.not_found.title=Bookmark not found relatedinfo.target_bookmark.not_found.title=Bookmark not found
relatedinfo.target_bookmark.not_found.message=The bookmark {0} selected as target was not found. relatedinfo.target_bookmark.not_found.message=The bookmark {0} selected as target was not found.
contentsection.document.relatedlinfo.breadcrumb=Related Information contentsection.document.relatedlinfo.breadcrumb=Related Information
relatedinfo.attachments.attachment.type.link=Related link
relatedinfo.attachments.attachment.type.file=Attached file
relatedinfo.attachmentlists.remove.label=Remove attachment list
relatedinfo.attachmentlists.remove.cancel=Cancel
relatedinfo.attachmentlists.remove.confirm=Remove
relatedinfo.attachmentlists.remove.title=Confirm attachment list removal
relatedinfo.attachmentlists.remove.message=Are you sure to remove the attachmentlist {0} and all attachments in the list?

View File

@ -221,3 +221,10 @@ relatedinfo.link.details.target.bookmark_name=Lesezeichen
relatedinfo.target_bookmark.not_found.title=Lesezeichen nicht gefunden relatedinfo.target_bookmark.not_found.title=Lesezeichen nicht gefunden
relatedinfo.target_bookmark.not_found.message=Das als Ziel ausgew\u00e4hlte Lesezeichen {0} ist nicht verf\u00fcgbar. relatedinfo.target_bookmark.not_found.message=Das als Ziel ausgew\u00e4hlte Lesezeichen {0} ist nicht verf\u00fcgbar.
contentsection.document.relatedlinfo.breadcrumb=Weiterf\u00fchrende Information contentsection.document.relatedlinfo.breadcrumb=Weiterf\u00fchrende Information
relatedinfo.attachments.attachment.type.link=Weiterf\u00fchrender Link
relatedinfo.attachments.attachment.type.file=Angeh\u00e4ngte Datei
relatedinfo.attachmentlists.remove.label=Anhangliste entfernen
relatedinfo.attachmentlists.remove.cancel=Abbrechen
relatedinfo.attachmentlists.remove.confirm=Entfernen
relatedinfo.attachmentlists.remove.title=Entfernen der Anhangliste best\u00e4tigen
relatedinfo.attachmentlists.remove.message=Sind Sie sicher, dass die die Anhangliste {0} und alle Anh\u00e4nge in dieser Liste entfernen wollen?