Edit attachment list properties

pull/10/head
Jens Pelzetter 2021-07-19 21:40:54 +02:00
parent 1e552ba569
commit 69511fe5e7
7 changed files with 622 additions and 397 deletions

View File

@ -326,6 +326,7 @@ public abstract class AbstractMvcAuthoringStep implements MvcAuthoringStep {
); );
final String docPath = Optional final String docPath = Optional
.ofNullable(documentPath) .ofNullable(documentPath)
.map(path -> path.substring(1))
.orElseThrow( .orElseThrow(
() -> new WebApplicationException( () -> new WebApplicationException(
String.format( String.format(

View File

@ -22,7 +22,9 @@ import org.libreccm.l10n.GlobalizationHelper;
import org.libreccm.l10n.LocalizedString; import org.libreccm.l10n.LocalizedString;
import org.librecms.contentsection.AttachmentList; import org.librecms.contentsection.AttachmentList;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
@ -55,6 +57,8 @@ public class AttachmentListDetailsModel {
@Inject @Inject
private GlobalizationHelper globalizationHelper; private GlobalizationHelper globalizationHelper;
private boolean canEdit;
/** /**
* UUID of the {@link AttachmentList} shown. * UUID of the {@link AttachmentList} shown.
*/ */
@ -100,82 +104,59 @@ public class AttachmentListDetailsModel {
return uuid; return uuid;
} }
public void setUuid(final String uuid) {
this.uuid = uuid;
}
public String getName() { public String getName() {
return name; return name;
} }
public void setName(final String name) {
this.name = name;
}
public Map<String, String> getTitles() { public Map<String, String> getTitles() {
return Collections.unmodifiableMap(titles); return Collections.unmodifiableMap(titles);
} }
public void setTitles(final Map<String, String> titles) {
this.titles = new HashMap<>(titles);
}
public Map<String, String> getDescriptions() { public Map<String, String> getDescriptions() {
return Collections.unmodifiableMap(descriptions); return Collections.unmodifiableMap(descriptions);
} }
public void setDescriptions(final Map<String, String> descriptions) {
this.descriptions = new HashMap<>(descriptions);
}
public List<String> getUnusedTitleLocales() { public List<String> getUnusedTitleLocales() {
return Collections.unmodifiableList(unusedTitleLocales); return Collections.unmodifiableList(unusedTitleLocales);
} }
public void setUnusedTitleLocales(final List<String> unusedTitleLocales) {
this.unusedTitleLocales = new ArrayList<>(unusedTitleLocales);
}
public List<String> getUnusedDescriptionLocales() { public List<String> getUnusedDescriptionLocales() {
return Collections.unmodifiableList(unusedDescriptionLocales); return Collections.unmodifiableList(unusedDescriptionLocales);
} }
/** public void setUnusedDescriptionLocales(
* Used by final List<String> unusedDescriptionLocales
* {@link RelatedInfoStep#showAttachmentListDetails(java.lang.String)} to ) {
* provide the {@link AttachmentList} to show. This method takes care of this.unusedDescriptionLocales
* process the relevant properties the {@link AttachmentList} to display for = new ArrayList<>(unusedDescriptionLocales);
* the view. The result of the processing is stored in the properties of }
* this model.
*
* @param list The {@link AttachmentList} to show in the details view.
*/
protected void setAttachmentList(final AttachmentList list) {
Objects.requireNonNull(list);
uuid = list.getUuid();
name = list.getName();
titles = list
.getTitle()
.getValues()
.entrySet()
.stream()
.collect(
Collectors.toMap(
entry -> entry.getKey().toString(),
entry -> entry.getValue()
)
);
descriptions = list
.getDescription()
.getValues()
.entrySet()
.stream()
.collect(
Collectors.toMap(
entry -> entry.getKey().toString(),
entry -> entry.getValue()
)
);
final Set<Locale> titleLocales = list public boolean getCanEdit() {
.getTitle() return canEdit;
.getAvailableLocales(); }
unusedTitleLocales = globalizationHelper
.getAvailableLocales()
.stream()
.filter(locale -> !titleLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList());
final Set<Locale> descriptionLocales = list public void setCanEdit(final boolean canEdit) {
.getDescription() this.canEdit = canEdit;
.getAvailableLocales();
unusedDescriptionLocales = globalizationHelper
.getAvailableLocales()
.stream()
.filter(locale -> !descriptionLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList());
} }
} }

View File

@ -57,6 +57,7 @@ import org.librecms.ui.contentsections.DocumentFolderRowModel;
import org.librecms.ui.contentsections.DocumentFolderTree; import org.librecms.ui.contentsections.DocumentFolderTree;
import org.librecms.ui.contentsections.DocumentFolderTreeNode; import org.librecms.ui.contentsections.DocumentFolderTreeNode;
import org.librecms.ui.contentsections.DocumentPermissions; import org.librecms.ui.contentsections.DocumentPermissions;
import org.librecms.ui.contentsections.ItemPermissionChecker;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
@ -72,7 +73,6 @@ import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named;
import javax.mvc.Controller; import javax.mvc.Controller;
import javax.mvc.Models; import javax.mvc.Models;
import javax.transaction.Transactional; import javax.transaction.Transactional;
@ -96,6 +96,8 @@ import org.librecms.ui.contentsections.documents.ItemAttachmentDto;
import org.librecms.ui.contentsections.documents.MvcAuthoringStepDef; import org.librecms.ui.contentsections.documents.MvcAuthoringStepDef;
import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; import org.librecms.ui.contentsections.documents.MvcAuthoringSteps;
import java.util.Set;
/** /**
* Authoring step for managing the {@link AttachmentList} and * Authoring step for managing the {@link AttachmentList} and
* {@link ItemAttachment}s assigned to a {@link ContentItem}. * {@link ItemAttachment}s assigned to a {@link ContentItem}.
@ -246,6 +248,9 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
@Inject @Inject
private ItemAttachmentManager attachmentManager; private ItemAttachmentManager attachmentManager;
@Inject
private ItemPermissionChecker itemPermissionChecker;
/** /**
* Used to provide data for the views without a named bean. * Used to provide data for the views without a named bean.
*/ */
@ -731,8 +736,64 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
return showAttachmentListNotFound(listIdentifierParam); return showAttachmentListNotFound(listIdentifierParam);
} }
listDetailsModel.setAttachmentList(listResult.get()); final AttachmentList list = listResult.get();
listDetailsModel.setUuid(list.getUuid());
listDetailsModel.setName(list.getName());
listDetailsModel.setTitles(
list
.getTitle()
.getValues()
.entrySet()
.stream()
.collect(
Collectors.toMap(
entry -> entry.getKey().toString(),
entry -> entry.getValue()
)
)
);
listDetailsModel.setDescriptions(
list
.getDescription()
.getValues()
.entrySet()
.stream()
.collect(
Collectors.toMap(
entry -> entry.getKey().toString(),
entry -> entry.getValue()
)
)
);
final Set<Locale> titleLocales = list
.getTitle()
.getAvailableLocales();
listDetailsModel.setUnusedTitleLocales(globalizationHelper
.getAvailableLocales()
.stream()
.filter(locale -> !titleLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
final Set<Locale> descriptionLocales = list
.getDescription()
.getAvailableLocales();
listDetailsModel.setUnusedDescriptionLocales(
globalizationHelper
.getAvailableLocales()
.stream()
.filter(locale -> !descriptionLocales.contains(locale))
.map(Locale::toString)
.collect(Collectors.toList())
);
listDetailsModel.setCanEdit(
itemPermissionChecker.canEditItem(getDocument())
);
return "org/librecms/ui/contentsection/documents/relatedinfo-attachmentlist-details.xhtml"; return "org/librecms/ui/contentsection/documents/relatedinfo-attachmentlist-details.xhtml";
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -789,7 +850,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
listRepo.save(list); listRepo.save(list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -906,7 +967,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
listRepo.save(list); listRepo.save(list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -966,7 +1027,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
listRepo.save(list); listRepo.save(list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1024,7 +1085,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
listRepo.save(list); listRepo.save(list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1084,7 +1145,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
listRepo.save(list); listRepo.save(list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1145,7 +1206,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
listRepo.save(list); listRepo.save(list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1203,7 +1264,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
listRepo.save(list); listRepo.save(list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1397,7 +1458,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
attachmentManager.attachAsset(relatedLink, list); attachmentManager.attachAsset(relatedLink, list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1561,7 +1622,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
assetRepo.save(link); assetRepo.save(link);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1644,7 +1705,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
assetRepo.save(link); assetRepo.save(link);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1727,7 +1788,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
assetRepo.save(link); assetRepo.save(link);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1808,7 +1869,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
assetRepo.save(link); assetRepo.save(link);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1886,7 +1947,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
} }
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1940,7 +2001,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
listManager.moveUp(list); listManager.moveUp(list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -1993,7 +2054,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
listManager.moveDown(list); listManager.moveDown(list);
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -2061,7 +2122,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
} }
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
@ -2129,7 +2190,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
} }
return buildRedirectPathForStep( return buildRedirectPathForStep(
String.format("/attachmentlists/%s", list.getName()) String.format("/attachmentlists/%s/@details", list.getName())
); );
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(

View File

@ -4,22 +4,29 @@
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:libreccm="http://xmlns.jcp.org/jsf/composite/components/libreccm" xmlns:libreccm="http://xmlns.jcp.org/jsf/composite/components/libreccm"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:composition template="/WEB-INF/views/org/librecms/ui/contentsection/documents/document.xhtml"> <ui:composition template="/WEB-INF/views/org/librecms/ui/contentsection/documents/authoringstep.xhtml">
<ui:param name="activePage" value="document" /> <!-- <ui:param name="activePage" value="document" />
<ui:param name="title" value="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.attachmentlist.details.title']}" /> <ui:param name="title" value="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.attachmentlist.details.title']}" />
<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">
#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.attachmentlist.details.title']} #{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.attachmentlist.details.title']}
</li> </li>
</ui:define> </ui:define>-->
<ui:define name="authoringStep"> <ui:define name="authoringStep">
<h3> <div class="d-flex mb-3">
#{CmsDefaultStepsMessageBundle.getMessage('relatedinfo.attachmentlist.details.title', [CmsAttachmentListDetailsModel.name])} <a class="btn btn-secondary mr-3"
</h3> href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo">
<bootstrap:svgIcon icon="arrow-left-circle" />
<span>#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.attachmentlist.back']}</span>
</a>
<h3>
#{CmsDefaultStepsMessageBundle.getMessage('relatedinfo.attachmentlist.details.title', [CmsAttachmentListDetailsModel.name])}
</h3>
</div>
<p> <p>
<span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.name.label']}: </span> <span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.name.label']}: </span>
@ -28,7 +35,8 @@
data-toggle="modal" data-toggle="modal"
data-target="#name-edit-dialog" data-target="#name-edit-dialog"
type="button"> type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.name.edit']}</span>
</button> </button>
</p> </p>
<div aria-hidden="true" <div aria-hidden="true"
@ -37,7 +45,7 @@
class="modal fade" class="modal fade"
tabindex="-1"> tabindex="-1">
<div class="modal-dialog"> <div class="modal-dialog">
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/@update" <form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsAttachmentListDetailsModel.name}/@update"
class="modal-content" class="modal-content"
method="post"> method="post">
<div class="modal-header"> <div class="modal-header">
@ -57,46 +65,88 @@
inputId="name" inputId="name"
label="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.name_edit_dialog.name.label']}" label="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.name_edit_dialog.name.label']}"
name="listName" name="listName"
pattern="[A-Za-z0-9\-_]" pattern="[A-Za-z0-9\-_]*"
required="true" /> required="true"
value="#{CmsAttachmentListDetailsModel.name}" />
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button class="btn btn-warning" <button class="btn btn-warning"
data-dismiss="modal" data-dismiss="modal"
type="button"> type="button">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.name_edit_dialog.close']}" #{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.name_edit_dialog.close']}
</button> </button>
<button class="btn btn-success" <button class="btn btn-success"
type="submit"> type="submit">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.name_edit_dialog.save']}" #{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.name_edit_dialog.save']}
</button> </button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
<libreccm:localizedStringEditor addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/title/@add" <libreccm:localizedStringEditor
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/title/@edit" addButtonLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.add_button.label']}"
editorId="list-title-editor" addDialogCancelLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.add.cancel']}"
hasUnusedLocales="#{!CmsAttachmentListDetailsModel.unusedDescriptionLocales.isEmpty()}" addDialogLocaleSelectHelp="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.add.locale.help']}"
objectIdentifier="#{CmsAttachmentListDetailsModel.name}" addDialogLocaleSelectLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.add.locale.label']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/title/@remove" addDialogSubmitLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.add.submit']}"
title="CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title_editor.title']}" addDialogTitle="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.add.title']}"
unusedLocales="#{CmsAttachmentListDetailsModel.unusedDescriptionLocales}" addDialogValueHelp="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.add.value.help']}"
values="#{CmsAttachmentListDetailsModel.titles}" addDialogValueLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.add.value.label']}"
/> addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsAttachmentListDetailsModel.name}/title/@add"
editButtonLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.edit_button.label']}"
editDialogCancelLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.edit.cancel']}"
editDialogSubmitLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.edit.submit']}"
editDialogTitle="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.edit.title']}"
editDialogValueHelp="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.edit.value.help']}"
editDialogValueLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.edit.value.label']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsAttachmentListDetailsModel.name}/title/@edit"
editorId="list-title-editor"
hasUnusedLocales="#{!CmsAttachmentListDetailsModel.unusedTitleLocales.isEmpty()}"
objectIdentifier="#{CmsAttachmentListDetailsModel.name}"
readOnly="#{!CmsAttachmentListDetailsModel.canEdit}"
removeButtonLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.remove_button.label']}"
removeDialogCancelLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.remove.cancel']}"
removeDialogSubmitLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.remove.submit']}"
removeDialogText="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.remove.text']}"
removeDialogTitle="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsAttachmentListDetailsModel.name}/title/@remove"
title="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.title_editor.title']}"
unusedLocales="#{CmsAttachmentListDetailsModel.unusedTitleLocales}"
values="#{CmsAttachmentListDetailsModel.titles}"
/>
<libreccm:localizedStringEditor addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/description/@add" <libreccm:localizedStringEditor
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/description/@edit" addButtonLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.add_button.label']}"
editorId="list-description-editor" addDialogCancelLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.add.cancel']}"
hasUnusedLocales="#{!CmsAttachmentListDetailsModel.unusedD.isEmpty()}" addDialogLocaleSelectHelp="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.add.locale.help']}"
objectIdentifier="#{CmsAttachmentListDetailsModel.name}" addDialogLocaleSelectLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.add.locale.label']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{list.name}/description/@remove" addDialogSubmitLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.add.submit']}"
title="CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description_editor.title']}" addDialogTitle="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.add.title']}"
unusedLocales="#{CmsAttachmentListDetailsModel.unusedTitleLocales}" addDialogValueHelp="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.add.value.help']}"
useTextarea="true" addDialogValueLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.add.value.label']}"
values="#{CmsAttachmentListDetailsModel.descriptions}" addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsAttachmentListDetailsModel.name}/description/@add"
/> editButtonLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.edit_button.label']}"
editDialogCancelLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.edit.cancel']}"
editDialogSubmitLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.edit.submit']}"
editDialogTitle="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.edit.title']}"
editDialogValueHelp="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.edit.value.help']}"
editDialogValueLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.edit.value.label']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsAttachmentListDetailsModel.name}/description/@edit"
editorId="list-description-editor"
hasUnusedLocales="#{!CmsAttachmentListDetailsModel.unusedDescriptionLocales.isEmpty()}"
objectIdentifier="#{CmsAttachmentListDetailsModel.name}"
removeButtonLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.remove_button.label']}"
removeDialogCancelLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.remove.cancel']}"
removeDialogSubmitLabel="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.remove.submit']}"
removeDialogText="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.remove.text']}"
removeDialogTitle="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description.remove.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsAttachmentListDetailsModel.name}/description/@remove"
title="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlist.details.description_editor.title']}"
unusedLocales="#{CmsAttachmentListDetailsModel.unusedDescriptionLocales}"
useTextarea="true"
values="#{CmsAttachmentListDetailsModel.descriptions}"
/>
</ui:define> </ui:define>

View File

@ -82,270 +82,270 @@
</div> </div>
</div> </div>
<!-- <div> <!-- <div>
<button class="btn btn-secondary save-order-button" <button class="btn btn-secondary save-order-button"
disabled="disabled" 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"> type="button">
<bootstrap:svgIcon icon="arrows-move" /> <bootstrap:svgIcon icon="save" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.move.button']}"</span> <span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.order.save']}</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> </button>
</div> </div>
</div> <div id="messages"></div>
<ul class="cms-attachments mt-3 list-group" <ul class="cms-attachment-lists list-group mt-3"
data-list-uuid="34aba2e6-a9b2-4b82-9889-c7ea591b6faf"> data-baseUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo-service/save-order">
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between" <li class="cms-attachment-list mb-3 list-group-item list-group-item-primary"
data-id="a871c22b-f533-49eb-be3e-3600f4e83180"> data-id="34aba2e6-a9b2-4b82-9889-c7ea591b6faf">
<div class="cms-attachment-label">Attachment 1a</div> <div class="d-flex justify-content-between">
<div class="cms-attachment-buttons"> <div class="cms-attachment-list-name">List 1</div>
<button class="btn btn-secondary cms-sort-handle" <div class="cms-attachmentlist-buttons">
type="button"> <button class="btn btn-secondary cms-sort-handle"
<bootstrap:svgIcon icon="arrows-move" /> type="button">
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span> <bootstrap:svgIcon icon="arrows-move" />
</button> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.move.button']}"</span>
<button class="btn btn-secondary" </button>
type="button"> <button class="btn btn-secondary"
<bootstrap:svgIcon icon="info-circle" /> type="button">
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span> <bootstrap:svgIcon icon="info-circle" />
</button> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.info.button']}"</span>
<button class="btn btn-secondary" </button>
type="button"> <button class="btn btn-secondary"
<bootstrap:svgIcon icon="pen" /> type="button">
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span> <bootstrap:svgIcon icon="pen" />
</button> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.edit.button']}"</span>
<button class="btn btn-danger" </button>
type="button"> <button class="btn btn-danger"
<bootstrap:svgIcon icon="pen" /> type="button">
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span> <bootstrap:svgIcon icon="pen" />
</button> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.delete.button']}"</span>
</div> </button>
</li> </div>
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between" </div>
data-id="6ab14e1e-dc9a-4a39-9514-9bea68bcd357"> <ul class="cms-attachments mt-3 list-group"
<div class="cms-attachment-label">Attachment 1b</div> data-list-uuid="34aba2e6-a9b2-4b82-9889-c7ea591b6faf">
<div class="cms-attachment-buttons"> <li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
<button class="btn btn-secondary cms-sort-handle" data-id="a871c22b-f533-49eb-be3e-3600f4e83180">
type="button"> <div class="cms-attachment-label">Attachment 1a</div>
<bootstrap:svgIcon icon="arrows-move" /> <div class="cms-attachment-buttons">
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span> <button class="btn btn-secondary cms-sort-handle"
</button> type="button">
<button class="btn btn-secondary" <bootstrap:svgIcon icon="arrows-move" />
type="button"> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
<bootstrap:svgIcon icon="info-circle" /> </button>
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span> <button class="btn btn-secondary"
</button> type="button">
<button class="btn btn-secondary" <bootstrap:svgIcon icon="info-circle" />
type="button"> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
<bootstrap:svgIcon icon="pen" /> </button>
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span> <button class="btn btn-secondary"
</button> type="button">
<button class="btn btn-danger" <bootstrap:svgIcon icon="pen" />
type="button"> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
<bootstrap:svgIcon icon="pen" /> </button>
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span> <button class="btn btn-danger"
</button> type="button">
</div> <bootstrap:svgIcon icon="pen" />
</li> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between" </button>
data-id="f3a1d656-fb4e-4ba8-9f5c-e605700e7c5f"> </div>
<div class="cms-attachment-label">Attachment 1c</div> </li>
<div class="cms-attachment-buttons"> <li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
<button class="btn btn-secondary cms-sort-handle" data-id="6ab14e1e-dc9a-4a39-9514-9bea68bcd357">
type="button"> <div class="cms-attachment-label">Attachment 1b</div>
<bootstrap:svgIcon icon="arrows-move" /> <div class="cms-attachment-buttons">
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span> <button class="btn btn-secondary cms-sort-handle"
</button> type="button">
<button class="btn btn-secondary" <bootstrap:svgIcon icon="arrows-move" />
type="button"> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.move.button']}"</span>
<bootstrap:svgIcon icon="info-circle" /> </button>
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span> <button class="btn btn-secondary"
</button> type="button">
<button class="btn btn-secondary" <bootstrap:svgIcon icon="info-circle" />
type="button"> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
<bootstrap:svgIcon icon="pen" /> </button>
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span> <button class="btn btn-secondary"
</button> type="button">
<button class="btn btn-danger" <bootstrap:svgIcon icon="pen" />
type="button"> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
<bootstrap:svgIcon icon="pen" /> </button>
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span> <button class="btn btn-danger"
</button> type="button">
</div> <bootstrap:svgIcon icon="pen" />
</li> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
</ul> </button>
</li> </div>
<li class="cms-attachment-list mb-3 list-group-item list-group-item-primary" </li>
data-id="b962a838-e25e-4987-8058-6205692d2d92"> <li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
<div class="d-flex justify-content-between"> data-id="f3a1d656-fb4e-4ba8-9f5c-e605700e7c5f">
<div class="cms-attachment-list-name">List 2</div> <div class="cms-attachment-label">Attachment 1c</div>
<div class="cms-attachmentlist-buttons"> <div class="cms-attachment-buttons">
<button class="btn btn-secondary cms-sort-handle" <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"> type="button">
<bootstrap:svgIcon icon="arrows-move" /> <bootstrap:svgIcon icon="save" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.move.button']}"</span> <span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.order.save']}</span>
</button> </button>
<button class="btn btn-secondary" </div>-->
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"
@ -371,15 +371,55 @@
<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"
data-toggle="modal"
data-target="#attachment-list-#{list.name}-info"
type="button"> type="button">
<bootstrap:svgIcon icon="info-circle" /> <bootstrap:svgIcon icon="info-circle" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.info.button']}"</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.info.button']}"</span>
</button> </button>
<button class="btn btn-primary" <div aria-hidden="true"
type="button"> aria-labelledby="attachmentlist-#{list.name}-info-title"
class="modal fade"
id="attachment-list-#{list.name}-info"
tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title"
id="attachmentlist-#{list.name}-info-title">
#{CmsDefaultStepsMessageBundle.getMessage('relatedinfo.attachmentlists.info.dialog.title', [list.name])}
</h3>
<button
aria-label="#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.info.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<dl>
<dt>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.info.dialog.title.label']}</dt>
<dd>#{list.title}</dd>
<dt>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.info.dialog.description.label']}</dt>
<dd>#{list.description}</dd>
</dl>
</div>
<div class="modal-footer">
<button class="btn btn-secondary"
data-dismiss="modal"
type="button">
#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.info.dialog.close']}
</button>
</div>
</div>
</div>
</div>
<a class="btn btn-primary"
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>
</button> </a>
<button class="btn btn-primary" <button class="btn btn-primary"
data-target="#attachmentlist-#{list.name}-add-attachment-dialog" data-target="#attachmentlist-#{list.name}-add-attachment-dialog"
data-toggle="modal" data-toggle="modal"
@ -395,9 +435,9 @@
<span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.link.add.label']}</span> <span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.link.add.label']}</span>
</button> </button>
<button class="btn btn-danger" <button class="btn btn-danger"
type="button"> type="button">
<bootstrap:svgIcon icon="x-circle" /> <bootstrap:svgIcon icon="x-circle" />
<span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.remove.label']}</span> <span>#{CmsDefaultStepsMessageBundle['relatedinfo.attachmentlists.attachment.remove.label']}</span>
</button> </button>
</div> </div>
</div> </div>
@ -410,25 +450,25 @@
<div class="cms-attachment-label">#{attachment.name}</div> <div class="cms-attachment-label">#{attachment.name}</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"
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"
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>
<button class="btn btn-primary" <button class="btn btn-primary"
type="button"> type="button">
<bootstrap:svgIcon icon="pen" /> <bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
</button> </button>
<button class="btn btn-danger" <button class="btn btn-danger"
type="button"> type="button">
<bootstrap:svgIcon icon="pen" /> <bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span> <span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.delete.button']}"</span>
</button> </button>
</div> </div>
</li> </li>
</c:forEach> </c:forEach>

View File

@ -120,3 +120,49 @@ relatedinfo.attachments.delete.button=Remove attachment
relatedinfo.attachmentlists.attachment.add.label=Add attachment relatedinfo.attachmentlists.attachment.add.label=Add attachment
relatedinfo.attachmentlists.internal_link.add.label=Add internal link relatedinfo.attachmentlists.internal_link.add.label=Add internal link
relatedinfo.attachmentlists.link.add.label=Add link relatedinfo.attachmentlists.link.add.label=Add link
contentsection.documents.relatedinfo.attachmentlist.back=Back
relatedinfo.attachmentlist.details.title_editor.title=Title of attachment list
relatedinfo.attachmentlist.details.description_editor.title=Description of the attachment list
relatedinfo.attachmentlist.details.name.edit=Edit name of attachment list
relatedinfo.attachmentlist.details.title.add_button.label=Add localized title
relatedinfo.attachmentlist.details.title.add.cancel=Cancel
relatedinfo.attachmentlist.details.title.add.locale.help=The locale of the title value.
relatedinfo.attachmentlist.details.title.add.locale.label=Locale
relatedinfo.attachmentlist.details.title.add.submit=Add title
relatedinfo.attachmentlist.details.title.add.title=Add localized title
relatedinfo.attachmentlist.details.title.add.value.help=The localized title.
relatedinfo.attachmentlist.details.title.edit_button.label=Edit title
relatedinfo.attachmentlist.details.title.edit.cancel=Cancel
relatedinfo.attachmentlist.details.title.edit.submit=Save
relatedinfo.attachmentlist.details.title.edit.title=Edit localized title
relatedinfo.attachmentlist.details.title.edit.value.help=The loccalized title.
relatedinfo.attachmentlist.details.title.edit.value.label=Title
relatedinfo.attachmentlist.details.title.remove_button.label=Remove
relatedinfo.attachmentlist.details.title.remove.cancel=Cancel
relatedinfo.attachmentlist.details.title.remove.submit=Remove
relatedinfo.attachmentlist.details.title.remove.text=Are you sure to remove the following localized title:
relatedinfo.attachmentlist.details.title.remove.title=Confirm removal of localized title
relatedinfo.attachmentlist.details.description.add_button.label=Add localized description
relatedinfo.attachmentlist.details.description.add.cancel=Cancel
relatedinfo.attachmentlist.details.description.add.locale.help=The locale of the description.
relatedinfo.attachmentlist.details.description.add.locale.label=Locale
relatedinfo.attachmentlist.details.description.add.submit=Add description
relatedinfo.attachmentlist.details.description.add.title=Add localized description
relatedinfo.attachmentlist.details.description.add.value.help=The localized description.
relatedinfo.attachmentlist.details.description.add.value.label=Description
relatedinfo.attachmentlist.details.description.edit.cancel=Cancel
relatedinfo.attachmentlist.details.description.edit.submit=Save
relatedinfo.attachmentlist.details.description.edit.title=Edit localized description
relatedinfo.attachmentlist.details.description.edit_button.label=Add localized description
relatedinfo.attachmentlist.details.description.edit.value.help=The localized description.
relatedinfo.attachmentlist.details.description.edit.value.label=Description
relatedinfo.attachmentlist.details.description.remove_button.label=Remove
relatedinfo.attachmentlist.details.description.remove.cancel=Cancel
relatedinfo.attachmentlist.details.description.remove.submit=Remove
relatedinfo.attachmentlist.details.description.remove.text=Are you sure to remove the following localized description:
relatedinfo.attachmentlist.details.description.remove.title=Confirm removal of localized description
relatedinfo.attachmentlist.details.title.add.value.label=Title
relatedinfo.attachmentlists.info.dialog.title=Attachment List {0} Info
relatedinfo.attachmentlists.info.dialog.title.label=Title
relatedinfo.attachmentlists.info.dialog.description.label=Description
relatedinfo.attachmentlists.info.dialog.close=Close

View File

@ -120,3 +120,49 @@ relatedinfo.attachments.delete.button=Anhang entfernen
relatedinfo.attachmentlists.attachment.add.label=Anhang hinzuf\u00fcgen relatedinfo.attachmentlists.attachment.add.label=Anhang hinzuf\u00fcgen
relatedinfo.attachmentlists.internal_link.add.label=Internen Link hinzuf\u00fcgen relatedinfo.attachmentlists.internal_link.add.label=Internen Link hinzuf\u00fcgen
relatedinfo.attachmentlists.link.add.label=Link hinzuf\u00fcgen relatedinfo.attachmentlists.link.add.label=Link hinzuf\u00fcgen
contentsection.documents.relatedinfo.attachmentlist.back=Zur\u00fcck
relatedinfo.attachmentlist.details.title_editor.title=Titel der Anhangliste
relatedinfo.attachmentlist.details.description_editor.title=Beschreibung der Anhangliste
relatedinfo.attachmentlist.details.name.edit=Name der Anhangliste bearbeiten
relatedinfo.attachmentlist.details.title.add_button.label=Lokalisierten Titel hinzuf\u00fcgen
relatedinfo.attachmentlist.details.title.add.cancel=Abbrechen
relatedinfo.attachmentlist.details.title.add.locale.help=Die Sprache des Titels.
relatedinfo.attachmentlist.details.title.add.locale.label=Sprache
relatedinfo.attachmentlist.details.title.add.submit=Titel hinzuf\u00fcgen
relatedinfo.attachmentlist.details.title.add.title=Lokalisierten Titel hinzuf\u00fcgen
relatedinfo.attachmentlist.details.title.add.value.help=Der lokalisierte Titel.
relatedinfo.attachmentlist.details.title.edit_button.label=Titel bearbeiten
relatedinfo.attachmentlist.details.title.edit.cancel=Abbrechen
relatedinfo.attachmentlist.details.title.edit.submit=Speichern
relatedinfo.attachmentlist.details.title.edit.title=Lokalisierten Titel bearbeiten
relatedinfo.attachmentlist.details.title.edit.value.help=Der lokalisierte Titel.
relatedinfo.attachmentlist.details.title.edit.value.label=Titel
relatedinfo.attachmentlist.details.title.remove_button.label=Entfernen
relatedinfo.attachmentlist.details.title.remove.cancel=Abbrechen
relatedinfo.attachmentlist.details.title.remove.submit=Entfernen
relatedinfo.attachmentlist.details.title.remove.text=Sind Sie sicher, dass Sie den folgenden lokalisierten Titel entfernen wollen:
relatedinfo.attachmentlist.details.title.remove.title=Entfernen eines lokalisierten Titels best\u00e4tigen
relatedinfo.attachmentlist.details.description.add_button.label=Lokalisierte Beschreibung hinzuf\u00fcgen
relatedinfo.attachmentlist.details.description.add.cancel=Abbrechen
relatedinfo.attachmentlist.details.description.add.locale.help=Die Sprache der Beschreibung.
relatedinfo.attachmentlist.details.description.add.locale.label=Sprache
relatedinfo.attachmentlist.details.description.add.submit=Beschreibung hinzuf\u00fcgen
relatedinfo.attachmentlist.details.description.add.title=Lokalisierte Beschreibung hinzuf\u00fcgen
relatedinfo.attachmentlist.details.description.add.value.help=Die lokalisierte Beschreibung.
relatedinfo.attachmentlist.details.description.add.value.label=Beschreibung
relatedinfo.attachmentlist.details.description.edit.cancel=Abbrechen
relatedinfo.attachmentlist.details.description.edit.submit=Speichern
relatedinfo.attachmentlist.details.description.edit.title=Lokalisierte Beschreibung bearbeiten
relatedinfo.attachmentlist.details.description.edit_button.label=Lokaliserte Beschreibung hinzuf\u00fcgen
relatedinfo.attachmentlist.details.description.edit.value.help=Die lokalisierte Beschreibung.
relatedinfo.attachmentlist.details.description.edit.value.label=Beschreibung
relatedinfo.attachmentlist.details.description.remove_button.label=Entfernen
relatedinfo.attachmentlist.details.description.remove.cancel=Abbrechen
relatedinfo.attachmentlist.details.description.remove.submit=Entfernen
relatedinfo.attachmentlist.details.description.remove.text=Sind Sie sicher, dass Sie die folgende lokalisierte Beschreibung entfernen wollen:
relatedinfo.attachmentlist.details.description.remove.title=Entfernen einer lokalisierten Beschreibung best\u00e4tigen
relatedinfo.attachmentlist.details.title.add.value.label=Titel
relatedinfo.attachmentlists.info.dialog.title=Anhangliste {0} Info
relatedinfo.attachmentlists.info.dialog.title.label=Titel
relatedinfo.attachmentlists.info.dialog.description.label=Beschreibung
relatedinfo.attachmentlists.info.dialog.close=Schlie\u00dfen