diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationExtentedPropertiesStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationExtendedPropertiesStep.java similarity index 54% rename from sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationExtentedPropertiesStep.java rename to sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationExtendedPropertiesStep.java index 9eb8ba5..be2d905 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationExtentedPropertiesStep.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/AbstractPublicationExtendedPropertiesStep.java @@ -1,7 +1,11 @@ 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.contentsection.AssetRepository; import org.librecms.ui.contentsections.ContentSectionNotFoundException; import org.librecms.ui.contentsections.ItemPermissionChecker; import org.librecms.ui.contentsections.documents.AbstractMvcAuthoringStep; @@ -9,18 +13,24 @@ import org.librecms.ui.contentsections.documents.DocumentNotFoundException; import org.librecms.ui.contentsections.documents.DocumentUi; import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; import org.scientificcms.publications.Publication; +import org.scientificcms.publications.PublicationManager; import org.scientificcms.publications.PublicationRepository; +import org.scientificcms.publications.Series; import org.scientificcms.publications.VolumeInSeries; import org.scientificcms.publications.assets.PublicationAsset; +import org.scientificcms.publications.assets.SeriesAsset; import org.scientificcms.publications.contenttypes.PublicationItem; import org.scientificcms.publications.ui.SciPublicationsUiMessageBundle; import java.util.Arrays; import java.util.Locale; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; import javax.inject.Inject; +import javax.mvc.Models; +import javax.servlet.http.HttpServletRequest; import javax.transaction.Transactional; import javax.ws.rs.FormParam; import javax.ws.rs.POST; @@ -33,21 +43,39 @@ import javax.ws.rs.PathParam; * @param Subtype of {@link PublicationAsset}. * @param

Subtype of {@link Publication} */ -public abstract class AbstractPublicationExtentedPropertiesStep, P extends Publication> +public abstract class AbstractPublicationExtendedPropertiesStep, P extends Publication> extends AbstractMvcAuthoringStep { + @Inject + private AssetRepository assetRepo; + + @Inject + private BaseUrl baseUrl; + @Inject private DocumentUi documentUi; @Inject private GlobalizationHelper globalizationHelper; + @Inject + private HttpServletRequest request; + + @Inject + private IdentifierParser identifierParser; + @Inject private ItemPermissionChecker itemPermissionChecker; + @Inject + private Models models; + @Inject private PublicationExtendedPropertiesStepModel propertiesStepModel; + @Inject + private PublicationManager publicationManager; + @Inject private PublicationRepository publicationRepo; @@ -142,6 +170,8 @@ public abstract class AbstractPublicationExtentedPropertiesStep seriesResult; + switch (identifier.getType()) { + case ID: + seriesResult = assetRepo.findById( + Long.parseLong(identifier.getIdentifier()), + SeriesAsset.class + ); + break; + case UUID: + seriesResult = assetRepo.findByUuidAndType( + identifier.getIdentifier(), + SeriesAsset.class + ); + break; + default: + seriesResult = Optional.empty(); + break; + } + + if (seriesResult.isEmpty()) { + return showSeriesNotFound( + sectionIdentifier, + documentPath, + seriesIdentifier + ); + } + + final Series result = seriesResult.get().getSeries(); + publicationManager.addSeries( + result, + getPublication(), + volumeOfSeries + ); + + return buildRedirectPathForStep(); + } else { + return documentUi.showAccessDenied( + getContentSection(), + getDocument(), + getLabel() + ); + } + } + + @Transactional(Transactional.TxType.REQUIRED) + public String editVolumeInSeries( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + @PathParam("volumeInSeriesUuid") + final String volumeInSeriesUuid, + @FormParam("volumeInSeries") + final String volumeInSeriesValue + ) { + try { + init(); + } catch (ContentSectionNotFoundException ex) { + return ex.showErrorMessage(); + } catch (DocumentNotFoundException ex) { + return ex.showErrorMessage(); + } + + if (itemPermissionChecker.canEditItem(getDocument())) { + final Optional volumeInSeriesResult + = getPublication() + .getSeries() + .stream() + .filter( + volume -> Objects.equals( + volume.getUuid(), + volumeInSeriesUuid + ) + ) + .findAny(); + + if (volumeInSeriesResult.isEmpty()) { + return showVolumeInSeriesNotFound( + sectionIdentifier, + documentPath, + volumeInSeriesUuid + ); + } + + final VolumeInSeries volumeInSeries = volumeInSeriesResult.get(); + volumeInSeries.setVolumeOfSeries(volumeInSeriesValue); + + publicationRepo.save(getPublication()); + + return buildRedirectPathForStep(); + } else { + return documentUi.showAccessDenied( + getContentSection(), + getDocument(), + getLabel() + ); + } + } + + @Transactional(Transactional.TxType.REQUIRED) + public String removeVolumeInSeries( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + @PathParam("volumeInSeriesUuid") + final String volumeInSeriesUuid + ) { + try { + init(); + } catch (ContentSectionNotFoundException ex) { + return ex.showErrorMessage(); + } catch (DocumentNotFoundException ex) { + return ex.showErrorMessage(); + } + + if (itemPermissionChecker.canEditItem(getDocument())) { + final Optional volumeInSeriesResult + = getPublication() + .getSeries() + .stream() + .filter( + volume -> Objects.equals( + volume.getUuid(), + volumeInSeriesUuid + ) + ) + .findAny(); + + if (volumeInSeriesResult.isEmpty()) { + return showVolumeInSeriesNotFound( + sectionIdentifier, + documentPath, + volumeInSeriesUuid + ); + } + + final VolumeInSeries volumeInSeries = volumeInSeriesResult.get(); + publicationManager.removeSeries( + volumeInSeries.getSeries(), + getPublication() + ); + + return buildRedirectPathForStep(); + } else { + return documentUi.showAccessDenied( + getContentSection(), + getDocument(), + getLabel() + ); + } + } + protected abstract String getEditStepUrlFragment(); protected abstract String getStepTemplatePath(); @@ -256,4 +462,22 @@ public abstract class AbstractPublicationExtentedPropertiesStep Subtype of {@link PublicationWithPublisher}. */ public abstract class AbstractPublicationWithPublisherExtendedPropertiesStep, P extends PublicationWithPublisher> - extends AbstractPublicationExtentedPropertiesStep { + extends AbstractPublicationExtendedPropertiesStep { @Inject private DocumentUi documentUi; diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/MonographExtendedPropertiesStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/MonographExtendedPropertiesStep.java index 3c8f2ce..9e40cd2 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/MonographExtendedPropertiesStep.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/MonographExtendedPropertiesStep.java @@ -41,6 +41,11 @@ public class MonographExtendedPropertiesStep extends AbstractPublicationWithPubl return Monograph.class; } + @Override + protected String getEditStepUrlFragment() { + return "monograph-extendedproperties"; + } + @Override protected String getStepTemplatePath() { return "org/scientificcms/contenttypes/ui/monograph/edit-extended-properties.xhtml"; @@ -154,4 +159,70 @@ public class MonographExtendedPropertiesStep extends AbstractPublicationWithPubl ); } + @POST + @Path("/series") + @AuthorizationRequired + @Transactional + @Override + public String addSeries( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + @FormParam("seriesIdentifier") + final String seriesIdentifier, + @FormParam("volumeOfSeries") + final String volumeOfSeries + ) { + return super.addSeries( + sectionIdentifier, + documentPath, + seriesIdentifier, + volumeOfSeries + ); + } + + @POST + @Path("/series/{volumeInSeriesUuid}") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String editVolumeInSeries( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + @PathParam("volumeInSeriesUuid") + final String volumeInSeriesUuid, + @FormParam("volumeInSeries") + final String volumeInSeriesValue + ) { + return super.editVolumeInSeries( + sectionIdentifier, + documentPath, + volumeInSeriesUuid, + volumeInSeriesValue + ); + } + + @POST + @Path("/series/{seriesUuid}/remove") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String removeVolumeInSeries( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + @PathParam("volumeInSeriesUuid") + final String volumeInSeriesUuid + ) { + return super.removeVolumeInSeries( + sectionIdentifier, + documentPath, + volumeInSeriesUuid + ); + } + } 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 cc75015..4fb6cf1 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 @@ -230,7 +230,7 @@ public class MonographPropertiesStep extends AbstractPublicationWithPublisherPro @POST @Path("/authors") @AuthorizationRequired - @Transactional + @Transactional(Transactional.TxType.REQUIRED) @Override public String addAuthor( @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) @@ -253,7 +253,7 @@ public class MonographPropertiesStep extends AbstractPublicationWithPublisherPro @POST @Path("/authors/{authorshipUuid}") @AuthorizationRequired - @Transactional + @Transactional(Transactional.TxType.REQUIRED) @Override public String editAuthorship( @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) @@ -276,7 +276,7 @@ public class MonographPropertiesStep extends AbstractPublicationWithPublisherPro @POST @Path("/authors/{authorshipUuid}/remove") @AuthorizationRequired - @Transactional + @Transactional(Transactional.TxType.REQUIRED) @Override public String removeAuthorship( @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationExtendedPropertiesStepModel.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationExtendedPropertiesStepModel.java index fcb79b0..ea3799a 100644 --- a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationExtendedPropertiesStepModel.java +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/PublicationExtendedPropertiesStepModel.java @@ -1,5 +1,7 @@ package org.scientificcms.publications.ui.contenttypes; +import org.scientificcms.publications.assets.SeriesAsset; + import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -17,8 +19,10 @@ import javax.inject.Named; @Named("SciCmsPublicationExtendedPropertiesStepModel") public class PublicationExtendedPropertiesStepModel { + private String baseUrl; + private String editStepUrlFragment; - + private boolean peerReviewed; private Integer yearFirstPublished; @@ -31,6 +35,14 @@ public class PublicationExtendedPropertiesStepModel { private Map languages; + public String getBaseUrl() { + return baseUrl; + } + + protected void setBaseUrl(final String baseUrl) { + this.baseUrl = baseUrl; + } + public boolean isPeerReviewed() { return peerReviewed; } @@ -88,7 +100,9 @@ public class PublicationExtendedPropertiesStepModel { public void setEditStepUrlFragment(final String editStepUrlFragment) { this.editStepUrlFragment = editStepUrlFragment; } - - + + public String getSeriesType() { + return SeriesAsset.class.getName(); + } } diff --git a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-extended-properties.xhtml b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-extended-properties.xhtml index 35c6796..19e61f3 100644 --- a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-extended-properties.xhtml +++ b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-extended-properties.xhtml @@ -11,76 +11,80 @@

#{authoringStepTitle}

-
- -
- +
#{SciPublicationsUiMessageBundle['extendedproperties.peerreviewed.label']}
@@ -95,10 +99,128 @@
#{SciCmsPublicationExtendedPropertiesStepModel.languageOfPublicationDisplayName}
- +
- + +

#{SciPublicationsUiMessageBundle['extendedproeprties.volumeinseries.header']}

+
+
+ +
+
+ + + +
+ + +

#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.none']}

+
+ + + + + + + + + + + + + + + + + + + +
#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.table.title']}#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.table.volumeinseries']}#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.table.actions']}
#{volume.seriesTitle}#{volume.volumeInSeries} + + + + +
+
+
diff --git a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-with-publisher-extented-properties.xhtml b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-with-publisher-extented-properties.xhtml index 7212e34..099d83f 100644 --- a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-with-publisher-extented-properties.xhtml +++ b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-with-publisher-extented-properties.xhtml @@ -7,23 +7,98 @@ xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - - - - - - - - - - - - - - - - + + +
+
#{SciPublicationsUiMessageBundle['extendedproperties.isbn10.label']}
+
#{SciCmsPublicationWithPublisherExtendedPropertiesStep.isbn10}
+
+ +
+
#{SciPublicationsUiMessageBundle['extendedproperties.isbn13.label']}
+
#{SciCmsPublicationWithPublisherExtendedPropertiesStep.isbn13}
+
+ +
+
#{SciPublicationsUiMessageBundle['extendedproperties.volume.label']}
+
#{SciCmsPublicationWithPublisherExtendedPropertiesStep.volume}
+
+ +
+
#{SciPublicationsUiMessageBundle['extendedproperties.numberofvolumes.label']}
+
#{SciCmsPublicationWithPublisherExtendedPropertiesStep.numberOfVolumes}
+
+ +
+
#{SciPublicationsUiMessageBundle['extendedproperties.numberofpages.label']}
+
#{SciCmsPublicationWithPublisherExtendedPropertiesStep.numberOfPages}
+
+ + +
- + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/monograph/edit-extended-properties.xhtml b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/monograph/edit-extended-properties.xhtml index 7f97958..ff72552 100644 --- a/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/monograph/edit-extended-properties.xhtml +++ b/sci-publications/src/main/resources/WEB-INF/views/org/scientificcms/contenttypes/ui/monograph/edit-extended-properties.xhtml @@ -13,7 +13,18 @@ - + + + + + + + + + + + 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 ad338e7..0a989d4 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 @@ -380,3 +380,40 @@ 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 +publication.editstep.extendedproperties.edit=Edit extended properties +publication.editstep.extendedproperties.edit.title=Edit extended properties +publication.editstep.extendedproperties.edit.close=Cancel +extendedproperties.peerreviewed.label=Peer reviewed? +extendedproperties.yearfirstpublished.help=The year in which the first edition of the publication was first published. +extendedproperties.yearfirstpublished.label=Year first published +extendedproperties.languageofpublication.help=The language of the publication. +extendedproperties.languageofpublication.label=Language of the publication +publication.editstep.extendedproperties.edit.submit=Save +extendedproeprties.volumeinseries.header=Published as volume in series +extendedproperties.volumeinseries.add.label=Add volume +extendedproperties.volumeinseries.add.dialog.title=Add volume +extendedproperties.volumeinseries.volumeinseries.help=The label of the volume as which the publication was published as part of the series. +extendedproperties.volumeinseries.none=No volumes +extendedproperties.volumeinseries.table.title=Title of the series +extendedproperties.volumeinseries.table.volumeinseries=Volume +extendedproperties.volumeinseries.table.actions=Actions +extendedproperties.volumeinseries.edit.label=Edit +extendedproperties.volumeinseries.editdialog.title=Edit volume {1} of series {0} +extendedproperties.volumeinseries.editdialog.cancel=Cancel +extendedproperties.volumeinseries.editdialog.submit=Save +extendedproperties.volumeinseries.remove.label=Remove +extendedproperties.volumeinseries.remove.cancel=Cancel +extendedproperties.volumeinseries.remove.confirm=Remove +extendedproperties.volumeinseries.remove.title=Confirm removal of volume {1} of series {0} +extendedproperties.volumeinseries.remove.message=Are you sure to remove volume {0} of series {1}? +extendedproperties.isbn10.label=ISBN-10 +extendedproperties.isbn13.label=ISBN-13 +extendedproperties.volume.label=Volume +extendedproperties.numberofvolumes.label=Number of volumes +extendedproperties.numberofpages.label=Number of pages +extendedproperties.isbn10.help=The ISBN-10 of the publication, if available. +extendedproperties.isbn13.help=The ISBN-13 of the publication. +extendedproeprties.volume.help=The volume of the publication if the publication is part of a multi-volume publication. +extendedproeprties.numberofvolumes.help=Number of volumes of the publication. +extendedproeprties.numberofpages.help=Number of pages +extendedproperties.edition.editdialog.title=Edition 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 6b57a3a..d07a29b 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 @@ -380,3 +380,40 @@ 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 +publication.editstep.extendedproperties.edit=Erweiterte Eigenschaften bearbeiten +publication.editstep.extendedproperties.edit.title=Erweiterte Eigenschaften bearbeiten +publication.editstep.extendedproperties.edit.close=Abbrechen +extendedproperties.peerreviewed.label=Peer reviewed? +extendedproperties.yearfirstpublished.help=Das Jahr, in dem die erste Ausgabe der Publikation erschienen ist. +extendedproperties.yearfirstpublished.label=Ersterscheinungsjahr +extendedproperties.languageofpublication.help=Die Sprache der Publikation. +extendedproperties.languageofpublication.label=Sprache der Publikation +publication.editstep.extendedproperties.edit.submit=Speichern +extendedproeprties.volumeinseries.header=Erschienen als Band der Reihe +extendedproperties.volumeinseries.add.label=Band hinzuf\u00fcgen +extendedproperties.volumeinseries.add.dialog.title=Band hinzuf\u00fcgen +extendedproperties.volumeinseries.volumeinseries.help=Die Bezeichnung des Bandes in dem die Publikation als Teil der Serie ver\u00f6ffentlicht wurde. +extendedproperties.volumeinseries.none=Keine B\u00e4nde. +extendedproperties.volumeinseries.table.title=Titel der Reihe +extendedproperties.volumeinseries.table.volumeinseries=Band +extendedproperties.volumeinseries.table.actions=Aktionen +extendedproperties.volumeinseries.edit.label=Bearbeiten +extendedproperties.volumeinseries.editdialog.title=Band {1} der Reihe {0} bearbeiten +extendedproperties.volumeinseries.editdialog.cancel=Abbrechen +extendedproperties.volumeinseries.editdialog.submit=Speichern +extendedproperties.volumeinseries.remove.label=Entfernen +extendedproperties.volumeinseries.remove.cancel=Abbrechen +extendedproperties.volumeinseries.remove.confirm=Entfernen +extendedproperties.volumeinseries.remove.title=Entfernen des Bandes {1} der Reihe {0} best\u00e4tigen +extendedproperties.volumeinseries.remove.message=Sind Sie sicher, dass sie den Band {1} der Reihe {0} entfernen wollen? +extendedproperties.isbn10.label=ISBN-10 +extendedproperties.isbn13.label=ISBN-13 +extendedproperties.volume.label=Band +extendedproperties.numberofvolumes.label=Anzahl der B\u00e4nde +extendedproperties.numberofpages.label=Anzahl der Seiten +extendedproperties.isbn10.help=Die ISBN-10 der Publikation. +extendedproperties.isbn13.help=Die ISBN-13 der Publikation. +extendedproeprties.volume.help=Der Band der Publikation, falls die Publikation Teil eines mehrb\u00e4ndiges Werkes ist. +extendedproeprties.numberofvolumes.help=Anzahl der B\u00e4nde des Werkes. +extendedproeprties.numberofpages.help=Anzahl der Seiten +extendedproperties.edition.editdialog.title=Ausgabe