From fdcda6b3fd39a926b73c36de0c714b062d985921 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Fri, 27 May 2022 13:42:53 +0200 Subject: [PATCH] UI for creating and editing series --- .../scientificcms/publications/Series.java | 5 - .../publications/assets/SeriesAsset.java | 7 + .../ui/assets/JournalAssetEditStep.java | 34 +- .../ui/assets/SciPublicationsAssetSteps.java | 3 +- .../ui/assets/SeriesAssetCreateStep.java | 106 +++++ .../ui/assets/SeriesAssetEditStep.java | 368 ++++++++++++++++++ .../ui/assets/SeriesAssetEditStepModel.java | 60 +++ .../assets/series/ui/create-series.xhtml | 72 ++++ .../assets/series/ui/edit-series.xhtml | 56 +++ .../ui/SciPublicationsBundle.properties | 26 ++ .../ui/SciPublicationsBundle_de.properties | 26 ++ 11 files changed, 740 insertions(+), 23 deletions(-) create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetCreateStep.java create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetEditStep.java create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetEditStepModel.java create mode 100644 sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/series/ui/create-series.xhtml create mode 100644 sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/series/ui/edit-series.xhtml diff --git a/sci-publications/src/main/java/org/scientificcms/publications/Series.java b/sci-publications/src/main/java/org/scientificcms/publications/Series.java index c27ef53..c7da6bf 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/Series.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/Series.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package org.scientificcms.publications; import org.hibernate.envers.Audited; diff --git a/sci-publications/src/main/java/org/scientificcms/publications/assets/SeriesAsset.java b/sci-publications/src/main/java/org/scientificcms/publications/assets/SeriesAsset.java index 4147d1c..1e28235 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/assets/SeriesAsset.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/assets/SeriesAsset.java @@ -8,8 +8,11 @@ package org.scientificcms.publications.assets; import org.hibernate.envers.Audited; import org.librecms.assets.AssetType; import org.librecms.contentsection.Asset; +import org.librecms.ui.contentsections.assets.MvcAssetEditKit; import org.scientificcms.publications.SciPublicationsConstants; import org.scientificcms.publications.Series; +import org.scientificcms.publications.ui.assets.SeriesAssetCreateStep; +import org.scientificcms.publications.ui.assets.SeriesAssetEditStep; import java.util.Objects; @@ -34,6 +37,10 @@ import static org.scientificcms.publications.SciPublicationsConstants.*; descriptionBundle = SciPublicationsConstants.BUNDLE, descriptionKey = "journal.description" ) +@MvcAssetEditKit( + createStep = SeriesAssetCreateStep.class, + editStep = SeriesAssetEditStep.class +) public class SeriesAsset extends Asset { private static final long serialVersionUID = 1L; diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/JournalAssetEditStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/JournalAssetEditStep.java index 452beb4..d8186f9 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/JournalAssetEditStep.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/JournalAssetEditStep.java @@ -46,7 +46,7 @@ import javax.ws.rs.PathParam; @Controller @MvcAssetEditStepDef( bundle = SciPublicationsUiConstants.BUNDLE, - descriptionKey = "joural.editstep.description", + descriptionKey = "journal.editstep.description", labelKey = "journal.editstep.label", supportedAssetType = JournalAsset.class ) @@ -247,7 +247,7 @@ public class JournalAssetEditStep extends AbstractMvcAssetEditStep { messageBundle.get("asset.edit.denied")); } } - + @POST @Path("/description/add") @AuthorizationRequired @@ -257,12 +257,12 @@ public class JournalAssetEditStep extends AbstractMvcAssetEditStep { final String sectionIdentifier, @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) final String assetPath, - @FormParam("locale") + @FormParam("locale") final String localeParam, @FormParam("value") final String value ) { - try { + try { init(); } catch (ContentSectionNotFoundException ex) { return ex.showErrorMessage(); @@ -274,29 +274,29 @@ public class JournalAssetEditStep extends AbstractMvcAssetEditStep { final Locale locale = new Locale(localeParam); getJournal().getDescription().putValue(locale, value); journalRepo.save(getJournal()); - + return buildRedirectPathForStep(); - }else { + } else { return assetUi.showAccessDenied( getContentSection(), getAsset(), messageBundle.get("asset.edit.denied")); } } - + @POST @Path("/description/edit/{locale}") - @AuthorizationRequired + @AuthorizationRequired @Transactional(Transactional.TxType.REQUIRED) public String editDescriptionValue( - @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) + @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) final String sectionIdentifier, @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) final String assetPath, @PathParam("locale") final String localeParam, @FormParam("value") final String value ) { - try { + try { init(); } catch (ContentSectionNotFoundException ex) { return ex.showErrorMessage(); @@ -308,9 +308,9 @@ public class JournalAssetEditStep extends AbstractMvcAssetEditStep { final Locale locale = new Locale(localeParam); getJournal().getDescription().putValue(locale, value); journalRepo.save(getJournal()); - + return buildRedirectPathForStep(); - }else { + } else { return assetUi.showAccessDenied( getContentSection(), getAsset(), @@ -320,10 +320,10 @@ public class JournalAssetEditStep extends AbstractMvcAssetEditStep { @POST @Path("/description/remove/{locale}") - @AuthorizationRequired + @AuthorizationRequired @Transactional(Transactional.TxType.REQUIRED) public String removeDescriptionValue( - @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) + @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) final String sectionIdentifier, @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) final String assetPath, @@ -341,16 +341,16 @@ public class JournalAssetEditStep extends AbstractMvcAssetEditStep { final Locale locale = new Locale(localeParam); getJournal().getDescription().removeValue(locale); journalRepo.save(getJournal()); - + return buildRedirectPathForStep(); } else { - return assetUi.showAccessDenied( + return assetUi.showAccessDenied( getContentSection(), getAsset(), messageBundle.get("asset.edit.denied")); } } - + private CmsEditorLocaleVariantRow buildVariantRow( final Map.Entry entry ) { diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SciPublicationsAssetSteps.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SciPublicationsAssetSteps.java index 2250d98..5368dfd 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SciPublicationsAssetSteps.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SciPublicationsAssetSteps.java @@ -17,7 +17,8 @@ public class SciPublicationsAssetSteps implements MvcAssetEditSteps { public Set> getClasses() { return Set.of( JournalAssetEditStep.class, - PublisherAssetEditStep.class + PublisherAssetEditStep.class, + SeriesAssetEditStep.class ); } diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetCreateStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetCreateStep.java new file mode 100644 index 0000000..ca2a0b8 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetCreateStep.java @@ -0,0 +1,106 @@ +package org.scientificcms.publications.ui.assets; + +import org.libreccm.l10n.GlobalizationHelper; +import org.librecms.ui.contentsections.assets.AbstractMvcAssetCreateStep; +import org.scientificcms.publications.Series; +import org.scientificcms.publications.SeriesRepository; +import org.scientificcms.publications.assets.SeriesAsset; +import org.scientificcms.publications.ui.SciPublicationsUiConstants; + +import java.util.Locale; +import java.util.Map; +import java.util.Optional; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.inject.Named; +import javax.transaction.Transactional; + +/** + * + * @author Jens Pelzetter + */ +@RequestScoped +@Named("SciCmsSeriesAssetCreateStep") +public class SeriesAssetCreateStep + extends AbstractMvcAssetCreateStep { + + private static final String FORM_PARAMS_DESCRIPTION = "description"; + + private String seriesDescription; + + @Inject + private GlobalizationHelper globalizationHelper; + + @Inject + private SeriesRepository seriesRepo; + + @Override + public String showCreateStep() { + return "org/scientificcms/assets/series/ui/create-series.xhtml"; + } + + @Override + public String getLabel() { + return globalizationHelper + .getLocalizedTextsUtil(getBundle()) + .getText("series.label"); + } + + @Override + public String getDescription() { + return globalizationHelper + .getLocalizedTextsUtil(getBundle()) + .getText("series.description"); + } + + @Override + public String getBundle() { + return SciPublicationsUiConstants.BUNDLE; + } + + @Override + protected Class getAssetClass() { + return SeriesAsset.class; + } + + public String getSeriesDescription() { + return seriesDescription; + } + + @Override + @Transactional(Transactional.TxType.REQUIRED) + protected String setAssetProperties( + final SeriesAsset seriesAsset, + final Map formParams + ) { + final Series series = new Series(); + final Locale locale = new Locale(getInitialLocale()); + series.getTitle().putValue( + locale, + seriesAsset.getTitle().getValue(locale) + ); + + seriesDescription = Optional + .ofNullable(formParams.get(FORM_PARAMS_DESCRIPTION)) + .filter(value -> value.length > 0) + .map(value -> value[0]) + .orElse(null); + + if (seriesDescription != null) { + series.getDescription().putValue(locale, seriesDescription); + } + + seriesRepo.save(series); + + seriesAsset.setSeries(series); + + return String.format( + "redirect:/%s/assets/%s/%s/@series-edit", + getContentSectionLabel(), + getFolderPath(), + getName() + ); + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetEditStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetEditStep.java new file mode 100644 index 0000000..475dacc --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetEditStep.java @@ -0,0 +1,368 @@ +package org.scientificcms.publications.ui.assets; + +import org.libreccm.l10n.GlobalizationHelper; +import org.libreccm.security.AuthorizationRequired; +import org.librecms.contentsection.AssetRepository; +import org.librecms.ui.contentsections.AssetPermissionsChecker; +import org.librecms.ui.contentsections.ContentSectionNotFoundException; +import org.librecms.ui.contentsections.assets.AbstractMvcAssetEditStep; +import org.librecms.ui.contentsections.assets.AssetNotFoundException; +import org.librecms.ui.contentsections.assets.AssetStepsDefaultMessagesBundle; +import org.librecms.ui.contentsections.assets.AssetUi; +import org.librecms.ui.contentsections.assets.MvcAssetEditStep; +import org.librecms.ui.contentsections.assets.MvcAssetEditStepDef; +import org.librecms.ui.contentsections.assets.MvcAssetEditSteps; +import org.librecms.ui.contentsections.documents.CmsEditorLocaleVariantRow; +import org.scientificcms.publications.Series; +import org.scientificcms.publications.SeriesRepository; +import org.scientificcms.publications.assets.SeriesAsset; +import org.scientificcms.publications.ui.SciPublicationsUiConstants; + +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.stream.Collectors; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.mvc.Controller; +import javax.transaction.Transactional; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; + +/** + * + * @author Jens Pelzetter + */ +@RequestScoped +@Path(MvcAssetEditSteps.PATH_PREFIX + "series-edit") +@Controller +@MvcAssetEditStepDef( + bundle = SciPublicationsUiConstants.BUNDLE, + descriptionKey = "series.editstep.description", + labelKey = "series.editstep.label", + supportedAssetType = SeriesAsset.class +) +public class SeriesAssetEditStep extends AbstractMvcAssetEditStep { + + @Inject + private AssetPermissionsChecker assetPermissionsChecker; + + @Inject + private AssetStepsDefaultMessagesBundle messageBundle; + + @Inject + private AssetRepository assetRepo; + + @Inject + private AssetUi assetUi; + + @Inject + private GlobalizationHelper globalizationHelper; + + @Inject + private SeriesRepository seriesRepo; + + @Inject + private SeriesAssetEditStepModel editStepModel; + + @Override + public Class getStepClass() { + return SeriesAssetEditStep.class; + } + + @Override + @Transactional(Transactional.TxType.REQUIRED) + protected void init() throws ContentSectionNotFoundException, + AssetNotFoundException { + super.init(); + + if (getAsset() instanceof SeriesAsset) { + final Series series = getSeries(); + + editStepModel.setDescriptionValues( + series + .getDescription() + .getValues() + .entrySet() + .stream() + .collect( + Collectors.toMap( + entry -> entry.getKey().toString(), + entry -> entry.getValue() + ) + ) + ); + + final Set descriptionLocales = series + .getDescription() + .getAvailableLocales(); + editStepModel.setUnusedDescriptionLocales( + globalizationHelper + .getAvailableLocales() + .stream() + .filter(locale -> !descriptionLocales.contains(locale)) + .map(Locale::toString) + .collect(Collectors.toList()) + ); + + editStepModel.setDescriptionVariants( + series + .getDescription() + .getValues() + .entrySet() + .stream() + .map(this::buildVariantRow) + .collect(Collectors.toList()) + ); + } else { + throw new AssetNotFoundException( + assetUi.showAssetNotFound( + getContentSection(), getAssetPath() + ), + String.format( + "No SeriesAsset for path %s found in section %s.", + getAssetPath(), + getContentSection().getLabel() + ) + ); + } + } + + protected SeriesAsset getSeriesAsset() { + return (SeriesAsset) getAsset(); + } + + protected Series getSeries() { + return getSeriesAsset().getSeries(); + } + + @GET + @Path("/") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String showStep( + @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) + final String assetPath + ) { + try { + init(); + } catch (ContentSectionNotFoundException ex) { + return ex.showErrorMessage(); + } catch (AssetNotFoundException ex) { + return ex.showErrorMessage(); + } + + if (assetPermissionsChecker.canEditAsset(getAsset())) { + return "org/scientificcms/assets/series/ui/edit-series.xhtml"; + } else { + return assetUi.showAccessDenied( + getContentSection(), + getAsset(), + messageBundle.get("asset.edit.denied")); + } + } + + @POST + @Path("/title/@add") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String addTitle( + @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) + final String assetPath, + @FormParam("locale") final String localeParam, + @FormParam("value") final String value + ) { + final String redirect = super.addTitle( + sectionIdentifier, + assetPath, + localeParam, + value + ); + + final Locale locale = new Locale(localeParam); + final Series series = getSeries(); + series.getTitle().putValue(locale, value); + seriesRepo.save(series); + + return redirect; + } + + @POST + @Path("/title/@edit/{locale}") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String editTitle( + @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) + final String assetPath, + @PathParam("locale") final String localeParam, + @FormParam("value") final String value + ) { + final String redirect = super.editTitle( + sectionIdentifier, + assetPath, + localeParam, + value + ); + + final Locale locale = new Locale(localeParam); + final Series series = getSeries(); + series.getTitle().putValue(locale, value); + seriesRepo.save(series); + + return redirect; + } + + @POST + @Path("/title/@remove/{locale}") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + public String removeTitle( + @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) + final String assetPath, + @PathParam("locale") final String localeParam + ) { + final String redirect = super.removeTitle( + sectionIdentifier, + assetPath, + localeParam + ); + + final Locale locale = new Locale(localeParam); + final Series series = getSeries(); + series.getTitle().removeValue(locale); + seriesRepo.save(series); + return redirect; + } + + @POST + @Path("/description/add") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + public String addDescriptionValue( + @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) + final String assetPath, + @FormParam("locale") + final String localeParam, + @FormParam("value") + final String value + ) { + try { + init(); + } catch (ContentSectionNotFoundException ex) { + return ex.showErrorMessage(); + } catch (AssetNotFoundException ex) { + return ex.showErrorMessage(); + } + + if (assetPermissionsChecker.canEditAsset(getAsset())) { + final Locale locale = new Locale(localeParam); + getSeries().getDescription().putValue(locale, value); + seriesRepo.save(getSeries()); + + return buildRedirectPathForStep(); + } else { + return assetUi.showAccessDenied( + getContentSection(), + getAsset(), + messageBundle.get("asset.edit.denied")); + } + } + + @POST + @Path("/description/edit/{locale}") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + public String editDescriptionValue( + @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) + final String assetPath, + @PathParam("locale") final String localeParam, + @FormParam("value") final String value + ) { + try { + init(); + } catch (ContentSectionNotFoundException ex) { + return ex.showErrorMessage(); + } catch (AssetNotFoundException ex) { + return ex.showErrorMessage(); + } + + if (assetPermissionsChecker.canEditAsset(getAsset())) { + final Locale locale = new Locale(localeParam); + getSeries().getDescription().putValue(locale, value); + seriesRepo.save(getSeries()); + + return buildRedirectPathForStep(); + } else { + return assetUi.showAccessDenied( + getContentSection(), + getAsset(), + messageBundle.get("asset.edit.denied")); + } + } + + @POST + @Path("/description/remove/{locale}") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + public String removeDescriptionValue( + @PathParam(MvcAssetEditSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAssetEditSteps.ASSET_PATH_PATH_PARAM_NAME) + final String assetPath, + @PathParam("locale") final String localeParam + ) { + try { + init(); + } catch (ContentSectionNotFoundException ex) { + return ex.showErrorMessage(); + } catch (AssetNotFoundException ex) { + return ex.showErrorMessage(); + } + + if (assetPermissionsChecker.canEditAsset(getAsset())) { + final Locale locale = new Locale(localeParam); + getSeries().getDescription().removeValue(locale); + seriesRepo.save(getSeries()); + return buildRedirectPathForStep(); + } else { + return assetUi.showAccessDenied( + getContentSection(), + getAsset(), + messageBundle.get("asset.edit.denied")); + } + } + + private CmsEditorLocaleVariantRow buildVariantRow( + final Map.Entry entry + ) { + final CmsEditorLocaleVariantRow variant + = new CmsEditorLocaleVariantRow(); + variant.setLocale(entry.getKey().toString()); + variant.setWordCount( + new StringTokenizer(entry.getValue()).countTokens() + ); + + return variant; + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetEditStepModel.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetEditStepModel.java new file mode 100644 index 0000000..b8f6327 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SeriesAssetEditStepModel.java @@ -0,0 +1,60 @@ +package org.scientificcms.publications.ui.assets; + +import org.librecms.ui.contentsections.documents.CmsEditorLocaleVariantRow; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Named; + +/** + * + * @author Jens Pelzetter + */ +@RequestScoped +@Named("SciCmsSeriesAssetEditStepModel") +public class SeriesAssetEditStepModel { + + private Map descriptionValues; + + private List descriptionVariants; + + private List unusedDescriptionLocales; + + public Map getDescriptionValues() { + return Collections.unmodifiableMap(descriptionValues); + } + + public void setDescriptionValues( + final Map descriptionValues + ) { + this.descriptionValues = new HashMap<>(descriptionValues); + } + + public List getDescriptionVariants() { + return Collections.unmodifiableList(descriptionVariants); + } + + public void setDescriptionVariants( + final List variants + ) { + this.descriptionVariants = new ArrayList<>(variants); + } + + public List getUnusedDescriptionLocales() { + return Collections.unmodifiableList(unusedDescriptionLocales); + } + + public void setUnusedDescriptionLocales( + final List unusedDescriptionLocales + ) { + this.unusedDescriptionLocales = new ArrayList<>( + unusedDescriptionLocales + ); + } + +} diff --git a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/series/ui/create-series.xhtml b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/series/ui/create-series.xhtml new file mode 100644 index 0000000..ba2ffad --- /dev/null +++ b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/series/ui/create-series.xhtml @@ -0,0 +1,72 @@ +]> + + + + +
+

#{SciPublicationsUiMessageBundle['series.createform.title']}

+ + + + + +
+ + + + + + + + + + #{CmsAssetsStepsDefaultMessagesBundle['createform.cancel']} + + + +
+
+ +
+ diff --git a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/series/ui/edit-series.xhtml b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/series/ui/edit-series.xhtml new file mode 100644 index 0000000..aa456c6 --- /dev/null +++ b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/series/ui/edit-series.xhtml @@ -0,0 +1,56 @@ +]> + + + + + + + + + + + + + + + diff --git a/sci-publications/src/main/resources/org/scientificcms/publications/ui/SciPublicationsBundle.properties b/sci-publications/src/main/resources/org/scientificcms/publications/ui/SciPublicationsBundle.properties index b0c0b3b..5723bc4 100644 --- a/sci-publications/src/main/resources/org/scientificcms/publications/ui/SciPublicationsBundle.properties +++ b/sci-publications/src/main/resources/org/scientificcms/publications/ui/SciPublicationsBundle.properties @@ -61,3 +61,29 @@ journal.editstep.description.remove.title=Remove localized description journal.editstep.description.title=Description of the journal journal.label=Journal journal.description=Creates a new journal +series.createform.title=Create a new series +series.createform.description.help=A description of the series. +series.createform.description.label=Description +series.editstep.header=Edit series {0} +series.editstep.description.add.label=Add localized description +series.editstep.description.add.cancel=Cancel +series.editstep.description.add.value.help=A description of the series. +series.editstep.description.add.locale.help=The language of the localized description. +series.editstep.description.locale.label=Locale +series.editstep.description.add.submit.label=Add +series.editstep.description.add.title=Add localized description +series.editstep.description.add.value.label=Description +series.editstep.description.edit.label=Edit +series.editstep.description.edit.cancel=Cancel +series.editstep.description.edit.submit=Save +series.editstep.description.edit.title=Edit localized description +series.editstep.description.edit.value.help=A description of the series. +series.editstep.description.edit.value.label=Description +series.editstep.description.remove.label=Remove +series.editstep.description.remove.cancel=Cancel +series.editstep.description.remove.submit=Remove +series.editstep.description.remove.text=Are you sure to remove the following localized description: +series.editstep.description.remove.title=Confirm removal of localized description +series.editstep.description.title=Description +series.label=Series +series.description=Create a new series (of publications) diff --git a/sci-publications/src/main/resources/org/scientificcms/publications/ui/SciPublicationsBundle_de.properties b/sci-publications/src/main/resources/org/scientificcms/publications/ui/SciPublicationsBundle_de.properties index b21c25e..e2b4d65 100644 --- a/sci-publications/src/main/resources/org/scientificcms/publications/ui/SciPublicationsBundle_de.properties +++ b/sci-publications/src/main/resources/org/scientificcms/publications/ui/SciPublicationsBundle_de.properties @@ -61,3 +61,29 @@ journal.editstep.description.remove.title=Lokalisierte Beschreibung entfernen journal.editstep.description.title=Beschreibung der Zeitschrift journal.label=Zeitschrift journal.description=Neue Zeitschrift anlegen +series.createform.title=Neue Reihe anlegen +series.createform.description.help=Eine Beschreibung der Reihe. +series.createform.description.label=Beschreibung +series.editstep.header=Reihe {0} bearbeiten +series.editstep.description.add.label=Lokalisierte Beschreibung hinzuf\u00fcgen +series.editstep.description.add.cancel=Abbrechen +series.editstep.description.add.value.help=Eine Beschreibung der Reihe. +series.editstep.description.add.locale.help=Die Sprache der lokalisierten Beschreibung. +series.editstep.description.locale.label=Sprache +series.editstep.description.add.submit.label=Hinzuf\u00fcgen +series.editstep.description.add.title=Lokalisierte Beschreibung hinzuf\u00fcgen +series.editstep.description.add.value.label=Beschreibung +series.editstep.description.edit.label=Bearbeiten +series.editstep.description.edit.cancel=Abbrechen +series.editstep.description.edit.submit=Speichern +series.editstep.description.edit.title=Lokalisierte Beschreibung bearbeiten +series.editstep.description.edit.value.help=Eine Beschreibung der Reihe. +series.editstep.description.edit.value.label=Beschreibung +series.editstep.description.remove.label=Entfernen +series.editstep.description.remove.cancel=Abbrechen +series.editstep.description.remove.submit=Entfernen +series.editstep.description.remove.text=Sind Sie sicher, dass die die folgenden lokalisierte Beschreibung entfernen wollen: +series.editstep.description.remove.title=Entfernen einer lokaliserten Beschreibung best\u00e4tigen +series.editstep.description.title=Beschreibung +series.label=Reihe +series.description=Eine neue (Publikations-) Reihe anlegen