diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/SciPublicationsUiMessageBundle.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/SciPublicationsUiMessageBundle.java new file mode 100644 index 0000000..c4e5107 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/SciPublicationsUiMessageBundle.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2021 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.scientificcms.publications.ui; + +import org.libreccm.ui.AbstractMessagesBean; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Named; + +/** + * + * @author Jens Pelzetter + */ +@RequestScoped +@Named("SciPublicationsUiMessageBundle") +public class SciPublicationsUiMessageBundle extends AbstractMessagesBean { + + @Override + public String getMessageBundle() { + return SciPublicationsUiConstants.BUNDLE; + } + +} diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherCreateStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherCreateStep.java index 51ed13c..138e813 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherCreateStep.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherCreateStep.java @@ -18,7 +18,11 @@ */ package org.scientificcms.publications.ui.assets; +import com.arsdigita.kernel.KernelConfig; + +import org.libreccm.configuration.ConfigurationManager; import org.libreccm.l10n.GlobalizationHelper; +import org.libreccm.security.AuthorizationRequired; import org.librecms.ui.contentsections.assets.AbstractMvcAssetCreateStep; import org.scientificcms.publications.Publisher; import org.scientificcms.publications.PublisherRepository; @@ -26,6 +30,7 @@ import org.scientificcms.publications.assets.PublisherAsset; import org.scientificcms.publications.ui.SciPublicationsUiConstants; import java.util.Map; +import java.util.Optional; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; @@ -41,6 +46,17 @@ import javax.transaction.Transactional; public class PublisherCreateStep extends AbstractMvcAssetCreateStep { + private static final String FORM_PARAMS_PUBLISHER_NAME = "publisherName"; + + private static final String FORM_PARAMS_PLACE = "place"; + + private String publisherName; + + private String place; + + @Inject + private ConfigurationManager confManager; + @Inject private GlobalizationHelper globalizationHelper; @@ -76,21 +92,68 @@ public class PublisherCreateStep return PublisherAsset.class; } + public String getPublisherName() { + return publisherName; + } + + public String getPlace() { + return place; + } + + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String createAsset(final Map formParams) { + if (!formParams.containsKey(FORM_PARAMS_PUBLISHER_NAME) + || formParams.get(FORM_PARAMS_PUBLISHER_NAME) == null + || formParams.get(FORM_PARAMS_PUBLISHER_NAME).length == 0) { + addMessage( + "danger", + globalizationHelper + .getLocalizedTextsUtil(getBundle()) + .getText("publisher.createstep.publishername.error.missing") + ); + return showCreateStep(); + } + + formParams.put("title", formParams.get(FORM_PARAMS_PUBLISHER_NAME)); + + final KernelConfig kernelConfig = confManager + .findConfiguration(KernelConfig.class); + formParams.put( + "locale", + new String[]{kernelConfig.getDefaultLocale().toString()} + ); + + return super.createAsset(formParams); + } + @Override @Transactional(Transactional.TxType.REQUIRED) protected String setAssetProperties( final PublisherAsset publisherAsset, final Map formParams ) { + publisherName = Optional + .ofNullable(formParams.get(FORM_PARAMS_PUBLISHER_NAME)) + .filter(value -> value.length > 0) + .map(value -> value[0]) + .orElse(null); + place = Optional + .ofNullable(formParams.get(FORM_PARAMS_PLACE)) + .filter(value -> value.length > 0) + .map(value -> value[0]) + .orElse(null); + final Publisher publisher = new Publisher(); - publisher.setName(formParams.get("name")[0]); + publisher.setName(formParams.get(FORM_PARAMS_PUBLISHER_NAME)[0]); if (formParams.get("place") != null && formParams.get("place").length > 0) { - publisher.setPlace(formParams.get("place")[0]); + publisher.setPlace(formParams.get(FORM_PARAMS_PLACE)[0]); } publisherRepo.save(publisher); - + publisherAsset.setPublisher(publisher); return String.format( diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherEditStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherEditStep.java index 3d0ee01..fa06f55 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherEditStep.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherEditStep.java @@ -18,8 +18,9 @@ */ package org.scientificcms.publications.ui.assets; -import org.libreccm.api.IdentifierParser; -import org.libreccm.l10n.GlobalizationHelper; +import com.arsdigita.kernel.KernelConfig; + +import org.libreccm.configuration.ConfigurationManager; import org.libreccm.security.AuthorizationRequired; import org.librecms.contentsection.AssetRepository; import org.librecms.ui.contentsections.AssetPermissionsChecker; @@ -39,15 +40,12 @@ import org.scientificcms.publications.ui.SciPublicationsUiConstants; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.mvc.Controller; -import javax.mvc.Models; -import javax.servlet.http.HttpServletRequest; 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; -import javax.ws.rs.core.Context; /** * @@ -76,16 +74,8 @@ public class PublisherEditStep extends AbstractMvcAssetEditStep { @Inject private AssetUi assetUi; - private GlobalizationHelper globalizationHelper; - - @Context - private HttpServletRequest request; - @Inject - private IdentifierParser identifierParser; - - @Inject - private Models models; + private ConfigurationManager confManager; @Inject private PublisherRepository publisherRepo; @@ -106,7 +96,7 @@ public class PublisherEditStep extends AbstractMvcAssetEditStep { if (getAsset() instanceof PublisherAsset) { final Publisher publisher = getPublisher(); - editStepModel.setName(publisher.getName()); + editStepModel.setPublisherName(publisher.getName()); editStepModel.setPlace(publisher.getPlace()); } else { throw new AssetNotFoundException( @@ -170,6 +160,8 @@ public class PublisherEditStep extends AbstractMvcAssetEditStep { final String assetPath, @FormParam("name") final String name, + @FormParam("publisherName") + final String publisherName, @FormParam("place") final String place ) { @@ -184,14 +176,19 @@ public class PublisherEditStep extends AbstractMvcAssetEditStep { if (assetPermissionsChecker.canEditAsset(getAsset())) { final PublisherAsset publisherAsset = getPublisherAsset(); final Publisher publisher = getPublisher(); - - publisherAsset.setDisplayName(name); - publisher.setName(name); + + final KernelConfig kernelConfig = confManager.findConfiguration( + KernelConfig.class + ); + publisherAsset + .getTitle() + .putValue(kernelConfig.getDefaultLocale(), publisherName); + publisher.setName(publisherName); publisher.setPlace(place); - + assetRepo.save(publisherAsset); publisherRepo.save(publisher); - + return buildRedirectPathForStep(); } else { return assetUi.showAccessDenied( diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherEditStepModel.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherEditStepModel.java index 0a5cd4e..964c99f 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherEditStepModel.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/PublisherEditStepModel.java @@ -11,16 +11,16 @@ import javax.inject.Named; @Named("SciCmsPublisherEditStepModel") public class PublisherEditStepModel { - private String name; + private String publisherName; private String place; - public String getName() { - return name; + public String getPublisherName() { + return publisherName; } - public void setName(final String name) { - this.name = name; + public void setPublisherName(final String publisherName) { + this.publisherName = publisherName; } public String getPlace() { 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 new file mode 100644 index 0000000..bb43d23 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/assets/SciPublicationsAssetSteps.java @@ -0,0 +1,23 @@ +package org.scientificcms.publications.ui.assets; + +import org.librecms.ui.contentsections.assets.MvcAssetEditSteps; + +import java.util.Set; + +import javax.enterprise.context.ApplicationScoped; + +/** + * + * @author Jens Pelzetter + */ +@ApplicationScoped +public class SciPublicationsAssetSteps implements MvcAssetEditSteps { + + @Override + public Set> getClasses() { + return Set.of( + PublisherEditStep.class + ); + } + +} diff --git a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/publisher/ui/create-publisher.xhtml b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/publisher/ui/create-publisher.xhtml new file mode 100644 index 0000000..bdc657e --- /dev/null +++ b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/publisher/ui/create-publisher.xhtml @@ -0,0 +1,72 @@ +]> + + + + +
+

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

+ + + + + +
+ + + + + + + + + + #{CmsAssetsStepsDefaultMessagesBundle['createform.cancel']} + + + +
+
+ +
+ \ No newline at end of file diff --git a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/publisher/ui/edit-publisher.xhtml b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/publisher/ui/edit-publisher.xhtml new file mode 100644 index 0000000..5b2910e --- /dev/null +++ b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/assets/publisher/ui/edit-publisher.xhtml @@ -0,0 +1,98 @@ +]> + + + + + + + + +

#{SciPublicationsUiMessageBundle['publisher.editstep.properties.header']}

+ + +
+ +
+ +
+
+
+
#{SciPublicationsUiMessageBundle['publisher.editstep.properties.publishername.label']}
+
#{SciCmsPublisherEditStepModel.publisherName}
+
+
+
#{SciPublicationsUiMessageBundle['publisher.editstep.properties.place.label']}
+
#{SciCmsPublisherEditStepModel.place}
+
+
+ +
+ +
+ + 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 7f77a23..f3ba9f9 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 @@ -1,3 +1,21 @@ publisher.label=Publisher publisher.description=A publisher record that holds the information about a publisher. +publisher.createstep.publishername.error.missing=The name of the publisher is missing. +publisher.createform.title=Create a new publisher +publisher.createform.publishername.help=The name of the publisher. +publisher.createform.publishername.label=Publisher name +publisher.createform.place.help=The place of the publisher. +publisher.createform.place.label=Place +publisher.editstep.header=Edit publisher {0} +publisher.editstep.properties.header=Properties +publisher.editstep.properties.edit=Edit properties +publisher.editstep.properties.edit.title=Edit properties +publisher.editstep.properties.edit.close=Cancel +publisher.editstep.properties.edit.publishername.help=The name of the publisher. +publisher.editstep.properties.edit.publishername.label=Publisher name +publisher.editstep.properties.edit.place.help=The place of the publisher. +publisher.editstep.properties.edit.place.label=Place +publisher.editstep.properties.edit.submit=Save +publisher.editstep.properties.publishername.label=Publisher name +publisher.editstep.properties.place.label=Place 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 670c21b..2c92099 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 @@ -1,3 +1,21 @@ publisher.label=Verlag publisher.description=Ein Verlag. +publisher.createstep.publishername.error.missing=Der Name des Verlages wurde nicht angegeben. +publisher.createform.title=Einen neuen Verlag anlegen +publisher.createform.publishername.help=Der Name des Verlages. +publisher.createform.publishername.label=Name des Verlages +publisher.createform.place.help=Der Ort des Verlages. +publisher.createform.place.label=Ort +publisher.editstep.header=Verlag {0} bearbeiten +publisher.editstep.properties.header=Eigenschaften +publisher.editstep.properties.edit=Eigenschaften bearbeiten +publisher.editstep.properties.edit.title=Eigenschaften bearbeiten +publisher.editstep.properties.edit.close=Abbrechen +publisher.editstep.properties.edit.publishername.help=Der Name des Verlages. +publisher.editstep.properties.edit.publishername.label=Name des Verlages +publisher.editstep.properties.edit.place.help=Der Ort des Verlages. +publisher.editstep.properties.edit.place.label=Ort +publisher.editstep.properties.edit.submit=Speichern +publisher.editstep.properties.publishername.label=Name des Verlages +publisher.editstep.properties.place.label=Ort diff --git a/scicms-bundle-devel-wildfly/pom.xml b/scicms-bundle-devel-wildfly/pom.xml index ac6d97a..da4d415 100644 --- a/scicms-bundle-devel-wildfly/pom.xml +++ b/scicms-bundle-devel-wildfly/pom.xml @@ -246,6 +246,14 @@ WEB-INF/ + + org.scientificcms + sci-publications + jar + + WEB-INF/ + +