diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationPropertiesStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationPropertiesStep.java index 5e1aebf..6a22535 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationPropertiesStep.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationPropertiesStep.java @@ -3,7 +3,6 @@ package org.scientificcms.publications.ui.contenttypes; import org.libreccm.api.Identifier; import org.libreccm.api.IdentifierParser; import org.libreccm.l10n.GlobalizationHelper; -import org.libreccm.security.AuthorizationRequired; import org.libreccm.ui.BaseUrl; import org.librecms.assets.Person; import org.librecms.assets.PersonRepository; @@ -36,9 +35,6 @@ import javax.servlet.http.HttpServletRequest; import javax.transaction.Transactional; import javax.ws.rs.DefaultValue; 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; /** diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationWithPublisherPropertiesStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationWithPublisherPropertiesStep.java index 01e224a..cef3081 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationWithPublisherPropertiesStep.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationWithPublisherPropertiesStep.java @@ -2,7 +2,6 @@ package org.scientificcms.publications.ui.contenttypes; import org.libreccm.api.Identifier; import org.libreccm.api.IdentifierParser; -import org.libreccm.security.AuthorizationRequired; import org.librecms.contentsection.Asset; import org.librecms.contentsection.AssetRepository; import org.librecms.ui.contentsections.ContentSectionNotFoundException; @@ -22,8 +21,6 @@ import javax.inject.Inject; import javax.mvc.Models; import javax.transaction.Transactional; import javax.ws.rs.FormParam; -import javax.ws.rs.POST; -import javax.ws.rs.Path; import javax.ws.rs.PathParam; /** diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/MonographPropertiesStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/MonographPropertiesStep.java index 6ba9db9..cc75015 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/MonographPropertiesStep.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/MonographPropertiesStep.java @@ -7,7 +7,6 @@ import org.librecms.ui.contentsections.documents.DocumentNotFoundException; import org.librecms.ui.contentsections.documents.DocumentUi; import org.librecms.ui.contentsections.documents.MvcAuthoringStepDef; import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; -import org.librecms.ui.contenttypes.event.EventStepsConstants; import org.scientificcms.publications.Monograph; import org.scientificcms.publications.contenttypes.MonographItem; import org.scientificcms.publications.ui.SciPublicationsUiConstants; diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationAuthoringSteps.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationAuthoringSteps.java index 8b6d10c..afd59a6 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationAuthoringSteps.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationAuthoringSteps.java @@ -26,6 +26,7 @@ public class PublicationAuthoringSteps implements MvcAuthoringSteps { @Override public Set> getResourceClasses() { return Set.of( + PublicationItemAuthors.class, PublicationAbstractStepResources.class, PublicationMiscStepResources.class ); diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationItemAuthors.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationItemAuthors.java new file mode 100644 index 0000000..e519fdc --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationItemAuthors.java @@ -0,0 +1,108 @@ +package org.scientificcms.publications.ui.contenttypes; + +import org.librecms.contentsection.ContentItem; +import org.librecms.contentsection.ContentItemRepository; +import org.librecms.contentsection.ContentSection; +import org.librecms.ui.contentsections.ContentSectionsUi; +import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; +import org.scientificcms.publications.Authorship; +import org.scientificcms.publications.Publication; +import org.scientificcms.publications.PublicationRepository; +import org.scientificcms.publications.contenttypes.PublicationItem; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import javax.transaction.Transactional; +import javax.ws.rs.Consumes; +import javax.ws.rs.NotFoundException; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +/** + * + * @author Jens Pelzetter + */ +@RequestScoped +@Path(MvcAuthoringSteps.PATH_PREFIX + "publication-authors") +public class PublicationItemAuthors { + + @Inject + private ContentItemRepository itemRepo; + + @Inject + private ContentSectionsUi sectionsUi; + + @Inject + private PublicationRepository publicationRepo; + + @POST + @Path("/save-order") + @Consumes(MediaType.APPLICATION_JSON) + @Transactional(Transactional.TxType.REQUIRED) + public Response saveOrder( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + final List order + ) { + final ContentSection section = sectionsUi + .findContentSection(sectionIdentifier) + .orElseThrow( + () -> new NotFoundException( + String.format( + "ContentSection %s not found.", + sectionIdentifier + ) + ) + ); + + final ContentItem item = itemRepo + .findByPath(section, documentPath) + .orElseThrow( + () -> new NotFoundException( + String.format( + "ContentItem %s not found.", + documentPath + ) + ) + ); + + if (!(item instanceof PublicationItem)) { + throw new NotFoundException( + String.format( + "ContentItem %s is not a publication item.", + documentPath + ) + ); + } + + final Map orderMap = new HashMap<>(); + for (int i = 0; i < order.size(); i++) { + orderMap.put(Long.parseLong(order.get(i)), (long) i); + } + + final PublicationItem publicationItem = (PublicationItem) item; + final Publication publication = publicationItem.getPublication(); + + for(final Authorship authorship : publication.getAuthorships()) { + authorship.setAuthorOrder( + orderMap.get( + authorship.getAuthorshipId() + ) + ); + } + + publicationRepo.save(publication); + + return Response.ok().build(); + } + +} diff --git a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-with-publisher.xhtml b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-with-publisher.xhtml index ab32053..5be33d3 100644 --- a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-with-publisher.xhtml +++ b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-with-publisher.xhtml @@ -30,27 +30,34 @@ formParamName="publisherIdentifier" /> -

- - - #{SciCmsPublicationWithPublisherPropertiesStepModel.publisherName}, #{SciCmsPublicationWithPublisherPropertiesStepModel.publisherPlace} - - - #{SciCmsPublicationWithPublisherPropertiesStepModel.publisherName} - - - - - -

+ + +

#{SciPublicationsUiMessageBundle['publicationwithpublisher.publisher.none']}

+
+ +

+ + + #{SciCmsPublicationWithPublisherPropertiesStepModel.publisherName}, #{SciCmsPublicationWithPublisherPropertiesStepModel.publisherPlace} + + + #{SciCmsPublicationWithPublisherPropertiesStepModel.publisherName} + + + + + +

+
+
diff --git a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication.xhtml b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication.xhtml index 953ce08..f7535d5 100644 --- a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication.xhtml +++ b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication.xhtml @@ -176,7 +176,7 @@ name="yearOfPublication" value="#{SciCmsPublicationPropertiesStepModel.yearOfPublication}" /> - + - - - - - - - - - - - - - - - + + + + +
#{SciPublicationsUiMessageBundle['basicproperties.authors.table.name']} - #{SciPublicationsUiMessageBundle['basicproperties.authors.table.editor']} - - #{SciPublicationsUiMessageBundle['basicproperties.authors.table.actions']} -
- - #{author.authorName} - - - - #{SciPublicationsUiMessageBundle['basicproperties.authors.table.editor.yes']} - - - #{SciPublicationsUiMessageBundle['basicproperties.authors.table.editor.no']} - - - - - + +
+ + 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 58f9427..ad338e7 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 @@ -377,3 +377,6 @@ editsteps.misc.step_back=Back editsteps.misc.header_view=Miscellaneous information editsteps.misc.edit=Edit editsteps.misc.header_edit=Edit miscellaneous information +basicproperties.authors.none=No authors assigned yet. +publicationwithpublisher.publisher.none=No publisher assigned yet. +basicproperties.authors.remove.confirm=Remove 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 791eb40..6b57a3a 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 @@ -335,7 +335,7 @@ basicproperties.authors.table.name=Name basicproperties.authors.table.editor=Herausgeber:in basicproperties.authors.table.actions=Aktionen basicproperties.authors.move=Verschieben -basicproperties.authors.table.editor.yes=No +basicproperties.authors.table.editor.yes=Ja basicproperties.authors.table.editor.no=Nein basicproperties.authors.edit.label=Autorenschaft bearbeiten basicproperties.authors.editdialog.title=Autorenschaft von {0} bearbeiten @@ -377,3 +377,6 @@ editsteps.misc.step_back=Zur\u00fcck editsteps.misc.header_view=Weitere Informationen editsteps.misc.edit=Bearbeiten editsteps.misc.header_edit=Weitere Informationen bearbeiten +basicproperties.authors.none=Es wurden noch keine Autoren eingetragen. +publicationwithpublisher.publisher.none=Es wurde noch kein Verlag zugewiesen. +basicproperties.authors.remove.confirm=Entfernen diff --git a/sci-publications/webpack.config.js b/sci-publications/webpack.config.js index 4f0ad8b..1f4bff7 100644 --- a/sci-publications/webpack.config.js +++ b/sci-publications/webpack.config.js @@ -7,7 +7,7 @@ module.exports = { entry: { "collectedvolume-asset-authors": "./src/main/typescript/collectedvolume-asset-authors.ts", "proceedings-asset-authors": "./src/main/typescript/proceedings-asset-authors", - "publications-authors.ts": "./src/main/typescript/publication-authors.ts" + "publication-authors": "./src/main/typescript/publication-authors.ts" }, output: { filename: "[name].js",