Bugfixes for the edit steps of the multipart article

pull/10/head
Jens Pelzetter 2021-12-23 21:21:21 +01:00
parent 6b48c5deec
commit 568a9fa6bc
7 changed files with 232 additions and 121 deletions

View File

@ -18,6 +18,8 @@
*/ */
package org.librecms.ui.contenttypes.mpa; package org.librecms.ui.contenttypes.mpa;
import org.librecms.ui.contentsections.documents.CmsEditorLocaleVariantRow;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -38,6 +40,8 @@ public class MpaSectionModel {
private String articleTitle; private String articleTitle;
private long sectionId; private long sectionId;
private String sectionTitle;
private boolean pageBreak; private boolean pageBreak;
@ -49,7 +53,7 @@ public class MpaSectionModel {
private List<String> unusedTitleLocales; private List<String> unusedTitleLocales;
private Map<String, String> textValues; private List<CmsEditorLocaleVariantRow> textValues;
private Map<String, String> truncatedTextValues; private Map<String, String> truncatedTextValues;
@ -70,6 +74,14 @@ public class MpaSectionModel {
protected void setSectionId(final long sectionId) { protected void setSectionId(final long sectionId) {
this.sectionId = sectionId; this.sectionId = sectionId;
} }
public String getSectionTitle() {
return sectionTitle;
}
protected void setSectionTitle(final String sectionTitle) {
this.sectionTitle = sectionTitle;
}
public boolean isPageBreak() { public boolean isPageBreak() {
return pageBreak; return pageBreak;
@ -115,12 +127,12 @@ public class MpaSectionModel {
return !unusedTitleLocales.isEmpty(); return !unusedTitleLocales.isEmpty();
} }
public Map<String, String> getTextValues() { public List<CmsEditorLocaleVariantRow> getTextValues() {
return Collections.unmodifiableMap(textValues); return Collections.unmodifiableList(textValues);
} }
protected void setTextValues(final Map<String, String> textValues) { protected void setTextValues(final List<CmsEditorLocaleVariantRow> textValues) {
this.textValues = new HashMap<>(textValues); this.textValues = new ArrayList<>(textValues);
} }
public Map<String, String> getTruncatedTextValues() { public Map<String, String> getTruncatedTextValues() {

View File

@ -27,6 +27,7 @@ import org.librecms.contenttypes.MultiPartArticleSectionRepository;
import org.librecms.ui.contentsections.ContentSectionNotFoundException; import org.librecms.ui.contentsections.ContentSectionNotFoundException;
import org.librecms.ui.contentsections.ItemPermissionChecker; import org.librecms.ui.contentsections.ItemPermissionChecker;
import org.librecms.ui.contentsections.documents.AbstractMvcAuthoringStep; import org.librecms.ui.contentsections.documents.AbstractMvcAuthoringStep;
import org.librecms.ui.contentsections.documents.CmsEditorLocaleVariantRow;
import org.librecms.ui.contentsections.documents.DocumentNotFoundException; import org.librecms.ui.contentsections.documents.DocumentNotFoundException;
import org.librecms.ui.contentsections.documents.DocumentUi; import org.librecms.ui.contentsections.documents.DocumentUi;
import org.librecms.ui.contentsections.documents.MvcAuthoringStepDef; import org.librecms.ui.contentsections.documents.MvcAuthoringStepDef;
@ -38,6 +39,7 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.StringTokenizer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
@ -91,6 +93,7 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
@Inject @Inject
private MpaSectionsStepModel mpaSectionsStepModel; private MpaSectionsStepModel mpaSectionsStepModel;
@Inject @Inject
private MpaSectionModel mpaSectionModel; private MpaSectionModel mpaSectionModel;
@ -338,7 +341,9 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
section.getTitle().putValue(locale, value); section.getTitle().putValue(locale, value);
sectionRepo.save(section); sectionRepo.save(section);
return buildRedirectPathForStep(); return String.format(
"%s/%d", buildRedirectPathForStep(), section.getSectionId()
);
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
getContentSection(), getContentSection(),
@ -349,7 +354,7 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
} }
@POST @POST
@Path("/{sectionId}/title/@remove") @Path("/{sectionId}/title/@remove/{locale}")
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
public String removeTitleValue( public String removeTitleValue(
@PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM)
@ -358,7 +363,7 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
final String documentPath, final String documentPath,
@PathParam("sectionId") @PathParam("sectionId")
final String sectionIdParam, final String sectionIdParam,
@FormParam("locale") @PathParam("locale")
final String localeParam final String localeParam
) { ) {
try { try {
@ -385,7 +390,9 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
section.getTitle().removeValue(locale); section.getTitle().removeValue(locale);
sectionRepo.save(section); sectionRepo.save(section);
return buildRedirectPathForStep(); return String.format(
"%s/%d", buildRedirectPathForStep(), section.getSectionId()
);
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
getContentSection(), getContentSection(),
@ -440,7 +447,9 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
section.getText().putValue(locale, value); section.getText().putValue(locale, value);
sectionRepo.save(section); sectionRepo.save(section);
return buildRedirectPathForStep(); return String.format(
"%s/%d", buildRedirectPathForStep(), section.getSectionId()
);
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
getContentSection(), getContentSection(),
@ -512,7 +521,9 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
section.getText().putValue(locale, value); section.getText().putValue(locale, value);
sectionRepo.save(section); sectionRepo.save(section);
return buildRedirectPathForStep(); return String.format(
"%s/%d", buildRedirectPathForStep(), section.getSectionId()
);
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
getContentSection(), getContentSection(),
@ -559,7 +570,9 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
section.getText().removeValue(locale); section.getText().removeValue(locale);
sectionRepo.save(section); sectionRepo.save(section);
return buildRedirectPathForStep(); return String.format(
"%s/%d", buildRedirectPathForStep(), section.getSectionId()
);
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
getContentSection(), getContentSection(),
@ -601,10 +614,12 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
} }
final MultiPartArticleSection section = result.get(); final MultiPartArticleSection section = result.get();
section.setPageBreak(Boolean.parseBoolean(pageBreakParam)); section.setPageBreak(pageBreakParam != null);
sectionRepo.save(section); sectionRepo.save(section);
return buildRedirectPathForStep(); return String.format(
"%s/%d", buildRedirectPathForStep(), section.getSectionId()
);
} else { } else {
return documentUi.showAccessDenied( return documentUi.showAccessDenied(
getContentSection(), getContentSection(),
@ -718,18 +733,19 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
mpaSectionModel.setPageBreak(section.isPageBreak()); mpaSectionModel.setPageBreak(section.isPageBreak());
mpaSectionModel.setRank(section.getRank()); mpaSectionModel.setRank(section.getRank());
mpaSectionModel.setSectionId(section.getSectionId()); mpaSectionModel.setSectionId(section.getSectionId());
mpaSectionModel.setSectionTitle(
globalizationHelper.getValueFromLocalizedString(
section.getTitle()
)
);
mpaSectionModel.setTextValues( mpaSectionModel.setTextValues(
section section
.getText() .getText()
.getValues() .getValues()
.entrySet() .entrySet()
.stream() .stream()
.collect( .map(this::buildVariantRow)
Collectors.toMap( .collect(Collectors.toList())
entry -> entry.getKey().toString(),
Map.Entry::getValue
)
)
); );
mpaSectionModel.setTitleValues( mpaSectionModel.setTitleValues(
section section
@ -805,4 +821,14 @@ public class MvcMpaSectionsStep extends AbstractMvcAuthoringStep {
return showStep(sectionIdentifier, documentPath); return showStep(sectionIdentifier, documentPath);
} }
private CmsEditorLocaleVariantRow buildVariantRow(
final Map.Entry<Locale, String> variant
) {
final CmsEditorLocaleVariantRow row = new CmsEditorLocaleVariantRow();
row.setLocale(variant.getKey().toString());
row.setWordCount(new StringTokenizer(variant.getValue()).countTokens());
return row;
}
} }

View File

@ -16,11 +16,11 @@
</a> </a>
<h2>#{CmsMpaMessageBundle.getMessage('sectionstep.textstep.header.edit',[CmsMpaSectionStep.articleTitle, CmsMpaSectionStep.titleValues.get(CmsMpaSectionStep.selectedLocale) , CmsMpaSectionStep.selectedLocale])}</h2> <h2>#{CmsMpaMessageBundle.getMessage('sectionstep.textstep.header.edit',[CmsMpaSectionStep.articleTitle, CmsMpaSectionStep.titleValues.get(CmsMpaSectionStep.selectedLocale) , CmsMpaSectionStep.selectedLocale])}</h2>
<c:if test="#{CmsArticleTextBodyStep.canEdit}"> <c:if test="#{CmsMpaSectionsStep.canEdit}">
<librecms:cmsEditor <librecms:cmsEditor
backUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}" backUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}"
baseUrl="#{mvc.basePath}" baseUrl="#{mvc.basePath}"
canEdit="#{CmsMpaSectionStep.canEdit}" canEdit="#{CmsMpaSectionsStep.canEdit}"
contentSection="#{ContentSectionModel.sectionName}" contentSection="#{ContentSectionModel.sectionName}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/edit" editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/edit"
editorId="cms-mpa-section-text-editor" editorId="cms-mpa-section-text-editor"

View File

@ -9,101 +9,132 @@
<ui:define name="authoringStep"> <ui:define name="authoringStep">
<div class="d-flex"> <div class="d-flex">
<a class="btn btn-secondary btn-sm mr-2"
href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections">
<bootstrap:svgIcon icon="caret-left-fill" />
<span class="sr-only">#{CmsMpaMessageBundle['sectionstep.back']}</span>
</a>
<h2>#{CmsMpaMessageBundle.getMessage('sectionstep.header', CmsMpaSectionStep.articleTitle, CmsMpaSectionStep.titleValues.get(CmsMpaSectionStep.selectedLocale))}</h2>
<libreccm:localizedStringEditor
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/title/@add"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/title/@edit"
editorId="section-title-editor"
hasUnusedLocales="#{CmsMpaSectionStep.hasUnusedTitleLocales}"
objectIdentifier="#{CmsMpaSectionStep.sectionId}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/title/@remove"
title="#{CmsMpaMessageBundle['sectionstep.title.label']}"
unusedLocales="#{CmsMpaSectionStep.unusedTitleLocales}"
values="#{CmsMpaSectionStep.titleValues}"
/>
<h3>#{CmsMpaMessageBundle['sectionsection.pagebreak.title']}</h3>
<div> <div>
<c:choose> <a class="btn btn-secondary btn-sm mr-2"
<c:when test="#{CmsMpaSectionStep.pageBreak}"> href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections">
#{CmsMpaMessageBundle['sectionsection.pagebreak.yes']} <bootstrap:svgIcon icon="caret-left-fill" />
</c:when> <span class="sr-only">#{CmsMpaMessageBundle['sectionstep.back']}</span>
<c:otherwise> </a>
#{CmsMpaMessageBundle['sectionsection.pagebreak.no']}
</c:otherwise>
</c:choose>
<button class="btn btn-secondary"
data-target="#pagebreak-edit-dialog"
data-toggle="modal"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsMpaMessageBundle['pageBreak.edit.label']}</span>
</button>
</div> </div>
<div aria-describedby="pagebreak-edit-dialog-title" <h2>#{CmsMpaMessageBundle['sectionstep.header']}</h2>
aria-hidden="true"
class="modal-fade"
id="page-edit-dialog"
tabindex="-1">
<div class="modal-dialog">
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/pagebreak"
class="modal-content"
method="post">
<div class="modal-header">
<h4 class="modal-title"
id="page-edit-dialog-title">#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.title']}
</h4>
<button aria-label="#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<bootstrap:formCheck
inputId="mpa-section-pagebreak"
label="#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.pagebreak.label']}"
name="pagebreak"
/>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.close']}
</button>
<button class="btn btn-success"
type="submit">
#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.submit']}
</button>
</div>
</form>
</div>
</div>
<librecms:cmsEditorVariants
addButtonLabel="#{CmsMpaMessageBundle['sectionstep.text.editor.add_variant']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['sectionsstep.text.editor.add.locale.help']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@add"
canEdit="#{CmsSelectedDocumentModel.canEdit}"
editorPageUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@edit"
hasUnusedLocales="#{!CmsMpaSectionStep.hasUnusedTextLocales}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@remove"
sourceEditorPageUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@edit-source"
title="#{CmsMpaMessageBundle['text.editor.header']}"
unusedLocales="#{CmsMpaSectionStep.unusedTextLocales}"
variants="#{CmsMpaSectionStep.textValues}"
viewPageUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@view"
/>
</div> </div>
<dl>
<dt>#{CmsMpaMessageBundle['sectionstep.current_article']}</dt>
<dd>#{CmsMpaSectionStep.articleTitle}</dd>
<dt>#{CmsMpaMessageBundle['sectionstep.current_section']}</dt>
<dd>#{CmsMpaSectionStep.sectionTitle}</dd>
</dl>
<libreccm:localizedStringEditor
addButtonLabel="#{CmsMpaMessageBundle['sectionstep.title.add.label']}"
addDialogCancelLabel="#{CmsMpaMessageBundle['sectionstep.title.add.cancel']}"
addDialogLocaleSelectHelp="#{CmsMpaMessageBundle['sectionstep.title.add.locale.help']}"
addDialogLocaleSelectLabel="#{CmsMpaMessageBundle['sectionstep.title.add.locale.label']}"
addDialogSubmitLabel="#{CmsMpaMessageBundle['sectionstep.title.add.submit']}"
addDialogTitle="#{CmsMpaMessageBundle['sectionstep.title.add.dialog_title']}"
addDialogValueHelp="#{CmsMpaMessageBundle['sectionstep.title.add.value.help']}"
addDialogValueLabel="#{CmsMpaMessageBundle['sectionstep.title.add.value.label']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/title/@add"
editButtonLabel="#{CmsMpaMessageBundle['sectionstep.title.edit.label']}"
editDialogCancelLabel="#{CmsMpaMessageBundle['sectionstep.title.edit.dialog.cancel']}"
editDialogSubmitLabel="#{CmsMpaMessageBundle['sectionstep.title.edit.dialog.submit']}"
editDialogTitle="#{CmsMpaMessageBundle['sectionstep.title.edit.dialog.title']}"
editDialogValueHelp="#{CmsMpaMessageBundle['sectionstep.title.edit.dialog.value.help']}"
editDialogValueLabel="#{CmsMpaMessageBundle['sectionstep.title.edit.dialog.value.label']}"
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/title/@edit"
editorId="section-title-editor"
emptyText="#{CmsMpaMessageBundle['sectionstep.title.empty']}"
hasUnusedLocales="#{CmsMpaSectionStep.hasUnusedTitleLocales}"
objectIdentifier="#{CmsMpaSectionStep.sectionId}"
removeButtonLabel="#{CmsMpaMessageBundle['sectionstep.title.edit.remove.label']}"
removeDialogCancelLabel="#{CmsMpaMessageBundle['sectionstep.title.edit.remove.dialog.cancel']}"
removeDialogSubmitLabel="#{CmsMpaMessageBundle['sectionstep.title.edit.remove.dialog.submit']}"
removeDialogText="#{CmsMpaMessageBundle['sectionstep.title.edit.remove.dialog.text']}"
removeDialogTitle="#{CmsMpaMessageBundle['sectionstep.title.edit.remove.dialog.title']}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/title/@remove"
title="#{CmsMpaMessageBundle['sectionstep.title.label']}"
unusedLocales="#{CmsMpaSectionStep.unusedTitleLocales}"
values="#{CmsMpaSectionStep.titleValues}"
/>
<h3>#{CmsMpaMessageBundle['sectionsection.pagebreak.title']}</h3>
<div>
<c:choose>
<c:when test="#{CmsMpaSectionStep.pageBreak}">
#{CmsMpaMessageBundle['sectionsection.pagebreak.yes']}
</c:when>
<c:otherwise>
#{CmsMpaMessageBundle['sectionsection.pagebreak.no']}
</c:otherwise>
</c:choose>
<button class="btn btn-secondary"
data-target="#pagebreak-edit-dialog"
data-toggle="modal"
type="button">
<bootstrap:svgIcon icon="pen" />
<span class="sr-only">#{CmsMpaMessageBundle['pageBreak.edit.label']}</span>
</button>
</div>
<div aria-describedby="pagebreak-edit-dialog-title"
aria-hidden="true"
class="modal fade"
id="pagebreak-edit-dialog"
tabindex="-1">
<div class="modal-dialog">
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/pagebreak"
class="modal-content"
method="post">
<div class="modal-header">
<h4 class="modal-title"
id="page-edit-dialog-title">#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.title']}
</h4>
<button aria-label="#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.close']}"
class="close"
data-dismiss="modal"
type="button">
<bootstrap:svgIcon icon="x" />
</button>
</div>
<div class="modal-body">
<bootstrap:formCheck
inputId="mpa-section-pagebreak"
label="#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.pagebreak.label']}"
name="pagebreak"
/>
</div>
<div class="modal-footer">
<button class="btn btn-warning"
data-dismiss="modal"
type="button">
#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.close']}
</button>
<button class="btn btn-success"
type="submit">
#{CmsMpaMessageBundle['sectionstep.pagebreak.edit.dialog.submit']}
</button>
</div>
</form>
</div>
</div>
<librecms:cmsEditorVariants
addButtonLabel="#{CmsMpaMessageBundle['sectionstep.text.editor.add_variant']}"
addDialogLocaleSelectHelp="#{CmsAdminMessages['sectionsstep.text.editor.add.locale.help']}"
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@add"
canEdit="#{CmsSelectedDocumentModel.canEdit}"
editorPageUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@edit"
hasUnusedLocales="#{!CmsMpaSectionStep.hasUnusedTextLocales}"
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@remove"
sourceEditorPageUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@edit-source"
title="#{CmsMpaMessageBundle['text.editor.header']}"
unusedLocales="#{CmsMpaSectionStep.unusedTextLocales}"
variants="#{CmsMpaSectionStep.textValues}"
viewPageUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{CmsMpaSectionStep.sectionId}/text/@view"
/>
</ui:define> </ui:define>
</ui:composition>
</html> </html>

View File

@ -117,7 +117,7 @@
</p> </p>
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<table class="table"> <table class="table mt-3">
<thead> <thead>
<tr> <tr>
<th>#{CmsMpaMessageBundle['sectionsstep.sections.section.title']}</th> <th>#{CmsMpaMessageBundle['sectionsstep.sections.section.title']}</th>
@ -143,10 +143,6 @@
iconClass="text-success" /> iconClass="text-success" />
<span class="sr-only">#{CmsMpaMessageBundle['sectionsstep.sections.section.pagebreak.yes']}</span> <span class="sr-only">#{CmsMpaMessageBundle['sectionsstep.sections.section.pagebreak.yes']}</span>
</c:when> </c:when>
<c:otherwise>
<span class="sr-only">#{CmsMpaMessageBundle['sectionsstep.sections.section.pagebreak.no']}</span>
<bootstrap:svgIcon icon="check" />
</c:otherwise>
</c:choose> </c:choose>
</td> </td>
<td> <td>
@ -160,12 +156,14 @@
<c:if test="#{CmsMpaSectionsStep.canEdit}"> <c:if test="#{CmsMpaSectionsStep.canEdit}">
<libreccm:deleteDialog <libreccm:deleteDialog
actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{section.sectionId}/@remove" actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@mpa-sections/#{section.sectionId}/@remove"
buttonLabelClass="sr-only"
buttonText="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.label']}" buttonText="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.label']}"
cancelLabel="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.dialog.cancel']}" cancelLabel="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.dialog.cancel']}"
confirmLabel="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.dialog.confirm']}" confirmLabel="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.dialog.confirm']}"
dialogId="remove-section-dialog-#{section.sectionId}" dialogId="remove-section-dialog-#{section.sectionId}"
dialogTitle="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.dialog.title']}" dialogTitle="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.dialog.title']}"
message="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.dialog.message']}" message="#{CmsMpaMessageBundle['sectionsstep.sections.section.remove.dialog.message']}"
/> />
</c:if> </c:if>
</td> </td>

View File

@ -97,7 +97,7 @@ sectionsstep.sections.section.remove.dialog.confirm=Remove section
sectionsstep.sections.section.remove.dialog.title=Confirm removal of section sectionsstep.sections.section.remove.dialog.title=Confirm removal of section
sectionsstep.sections.section.remove.dialog.message=Are you sure to remove the following section? sectionsstep.sections.section.remove.dialog.message=Are you sure to remove the following section?
sectionstep.back=Back sectionstep.back=Back
sectionstep.header=Edit section {1} of multipart article {0} sectionstep.header=Edit section of a multipart article
sectionstep.title.label=Title sectionstep.title.label=Title
sectionsection.pagebreak.title=Page break after section? sectionsection.pagebreak.title=Page break after section?
sectionsection.pagebreak.yes=Yes sectionsection.pagebreak.yes=Yes
@ -116,3 +116,25 @@ authoringsteps.sections.label=Sections
sectionsstep.sections.empty=This multipart article has no sections yet. sectionsstep.sections.empty=This multipart article has no sections yet.
sectionsstep.error.initial_locale_missing=Initial locale is missing. sectionsstep.error.initial_locale_missing=Initial locale is missing.
sectionsstep.error.title_missing=Title for the new section is missing. sectionsstep.error.title_missing=Title for the new section is missing.
sectionstep.current_article=Selection multipart article
sectionstep.current_section=Selected section
sectionstep.title.add.label=Add localized title
sectionstep.title.add.cancel=Cancel
sectionstep.title.add.locale.help=The locale of the new localized title.
sectionstep.title.add.locale.label=Locale
sectionstep.title.add.submit=Add localized title
sectionstep.title.add.dialog_title=Add localized title
sectionstep.title.add.value.help=The localized title.
sectionstep.title.add.value.label=Title
sectionstep.title.edit.label=Edit
sectionstep.title.edit.dialog.cancel=Cancel
sectionstep.title.edit.dialog.submit=Save
sectionstep.title.edit.dialog.title=Edit localized title
sectionstep.title.edit.dialog.value.help=The localized title.
sectionstep.title.edit.dialog.value.label=Title
sectionstep.title.empty=No localized title yet.
sectionstep.title.edit.remove.label=Remove
sectionstep.title.edit.remove.dialog.cancel=Cancel
sectionstep.title.edit.remove.dialog.submit=Remove localized title
sectionstep.title.edit.remove.dialog.text=Are you sure to remove to this localized title?
sectionstep.title.edit.remove.dialog.title=Remove localized title

View File

@ -97,7 +97,7 @@ sectionsstep.sections.section.remove.dialog.confirm=Abschnitt entfernen
sectionsstep.sections.section.remove.dialog.title=Entfernen des Abschnitts best\u00e4tigen sectionsstep.sections.section.remove.dialog.title=Entfernen des Abschnitts best\u00e4tigen
sectionsstep.sections.section.remove.dialog.message=Sind Sie sicher, dass Sie den folgenden Abschnitt entfernen wollen? sectionsstep.sections.section.remove.dialog.message=Sind Sie sicher, dass Sie den folgenden Abschnitt entfernen wollen?
sectionstep.back=Zur\u00fcck sectionstep.back=Zur\u00fcck
sectionstep.header=Abschnitt {1} des mehrteiligen Artikels {0} bearbeiten sectionstep.header=Einen Abschnitt eines mehrteiligen Artikels bearbeiten
sectionstep.title.label=Titel sectionstep.title.label=Titel
sectionsection.pagebreak.title=Seitenumbruch nach Abschnitt? sectionsection.pagebreak.title=Seitenumbruch nach Abschnitt?
sectionsection.pagebreak.yes=Ja sectionsection.pagebreak.yes=Ja
@ -116,3 +116,25 @@ authoringsteps.sections.label=Abschnitte
sectionsstep.sections.empty=Diese mehrteilige Artikel hat noch keine Abschnitte. sectionsstep.sections.empty=Diese mehrteilige Artikel hat noch keine Abschnitte.
sectionsstep.error.initial_locale_missing=Es wurde keine initiale Sprache f\u00fcr den neuen Abschnitt angegeben. sectionsstep.error.initial_locale_missing=Es wurde keine initiale Sprache f\u00fcr den neuen Abschnitt angegeben.
sectionsstep.error.title_missing=Der Titel f\u00fcr den neuen Abschnitt wurde nicht angegeben. sectionsstep.error.title_missing=Der Titel f\u00fcr den neuen Abschnitt wurde nicht angegeben.
sectionstep.current_article=Ausgew\u00e4hlter mehrteiliger Artikel
sectionstep.current_section=Ausgew\u00e4hlter Abschnitt
sectionstep.title.add.label=Lokalisierten Titel hinzuf\u00fcgen
sectionstep.title.add.cancel=Abbrechen
sectionstep.title.add.locale.help=Die Sprache des neuen lokalisierten Titels.
sectionstep.title.add.locale.label=Sprache
sectionstep.title.add.submit=Lokalisierten Titel hinzuf\u00fcgen
sectionstep.title.add.dialog_title=Lokalisierten Titel hinzuf\u00fcgen
sectionstep.title.add.value.help=Der lokalisierte Titel
sectionstep.title.add.value.label=Titel
sectionstep.title.edit.label=Bearbeiten
sectionstep.title.edit.dialog.cancel=Abbrechen
sectionstep.title.edit.dialog.submit=Speichern
sectionstep.title.edit.dialog.title=Lokalisierten Titel bearbeiten
sectionstep.title.edit.dialog.value.help=Der lokalisierte Titel.
sectionstep.title.edit.dialog.value.label=Titel
sectionstep.title.empty=Es wurden noch keine lokalisierten Titel hinzugef\u00fcgt.
sectionstep.title.edit.remove.label=Entfernen
sectionstep.title.edit.remove.dialog.cancel=Abbrechen
sectionstep.title.edit.remove.dialog.submit=Lokalisierten Titel entfernen
sectionstep.title.edit.remove.dialog.text=Sind Sie sicher, dass Sie diesen lokaliserten Titel entfernen wollen?
sectionstep.title.edit.remove.dialog.title=Lokalisierten Titel entfernen