Form for extended properties of publications
parent
6654577ac0
commit
7a887eeb36
|
|
@ -1,7 +1,11 @@
|
||||||
package org.scientificcms.publications.ui.contenttypes;
|
package org.scientificcms.publications.ui.contenttypes;
|
||||||
|
|
||||||
|
import org.libreccm.api.Identifier;
|
||||||
|
import org.libreccm.api.IdentifierParser;
|
||||||
import org.libreccm.l10n.GlobalizationHelper;
|
import org.libreccm.l10n.GlobalizationHelper;
|
||||||
import org.libreccm.security.AuthorizationRequired;
|
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.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;
|
||||||
|
|
@ -9,18 +13,24 @@ 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.MvcAuthoringSteps;
|
import org.librecms.ui.contentsections.documents.MvcAuthoringSteps;
|
||||||
import org.scientificcms.publications.Publication;
|
import org.scientificcms.publications.Publication;
|
||||||
|
import org.scientificcms.publications.PublicationManager;
|
||||||
import org.scientificcms.publications.PublicationRepository;
|
import org.scientificcms.publications.PublicationRepository;
|
||||||
|
import org.scientificcms.publications.Series;
|
||||||
import org.scientificcms.publications.VolumeInSeries;
|
import org.scientificcms.publications.VolumeInSeries;
|
||||||
import org.scientificcms.publications.assets.PublicationAsset;
|
import org.scientificcms.publications.assets.PublicationAsset;
|
||||||
|
import org.scientificcms.publications.assets.SeriesAsset;
|
||||||
import org.scientificcms.publications.contenttypes.PublicationItem;
|
import org.scientificcms.publications.contenttypes.PublicationItem;
|
||||||
import org.scientificcms.publications.ui.SciPublicationsUiMessageBundle;
|
import org.scientificcms.publications.ui.SciPublicationsUiMessageBundle;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.mvc.Models;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
import javax.ws.rs.FormParam;
|
import javax.ws.rs.FormParam;
|
||||||
import javax.ws.rs.POST;
|
import javax.ws.rs.POST;
|
||||||
|
|
@ -33,21 +43,39 @@ import javax.ws.rs.PathParam;
|
||||||
* @param <T> Subtype of {@link PublicationAsset}.
|
* @param <T> Subtype of {@link PublicationAsset}.
|
||||||
* @param <P> Subtype of {@link Publication}
|
* @param <P> Subtype of {@link Publication}
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractPublicationExtentedPropertiesStep<T extends PublicationItem<P>, P extends Publication>
|
public abstract class AbstractPublicationExtendedPropertiesStep<T extends PublicationItem<P>, P extends Publication>
|
||||||
extends AbstractMvcAuthoringStep {
|
extends AbstractMvcAuthoringStep {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private AssetRepository assetRepo;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private BaseUrl baseUrl;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private DocumentUi documentUi;
|
private DocumentUi documentUi;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private GlobalizationHelper globalizationHelper;
|
private GlobalizationHelper globalizationHelper;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private HttpServletRequest request;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private IdentifierParser identifierParser;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ItemPermissionChecker itemPermissionChecker;
|
private ItemPermissionChecker itemPermissionChecker;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Models models;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private PublicationExtendedPropertiesStepModel propertiesStepModel;
|
private PublicationExtendedPropertiesStepModel propertiesStepModel;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private PublicationManager publicationManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private PublicationRepository publicationRepo;
|
private PublicationRepository publicationRepo;
|
||||||
|
|
||||||
|
|
@ -142,6 +170,8 @@ public abstract class AbstractPublicationExtentedPropertiesStep<T extends Public
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
propertiesStepModel.setEditStepUrlFragment(getEditStepUrlFragment());
|
propertiesStepModel.setEditStepUrlFragment(getEditStepUrlFragment());
|
||||||
|
|
||||||
|
propertiesStepModel.setBaseUrl(baseUrl.getBaseUrl(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
@AuthorizationRequired
|
@AuthorizationRequired
|
||||||
|
|
@ -236,6 +266,182 @@ public abstract class AbstractPublicationExtentedPropertiesStep<T extends Public
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
|
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
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
init();
|
||||||
|
} catch (ContentSectionNotFoundException ex) {
|
||||||
|
return ex.showErrorMessage();
|
||||||
|
} catch (DocumentNotFoundException ex) {
|
||||||
|
return ex.showErrorMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemPermissionChecker.canEditItem(getDocument())) {
|
||||||
|
final Identifier identifier = identifierParser.parseIdentifier(
|
||||||
|
seriesIdentifier
|
||||||
|
);
|
||||||
|
final Optional<SeriesAsset> 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<VolumeInSeries> 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<VolumeInSeries> 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 getEditStepUrlFragment();
|
||||||
|
|
||||||
protected abstract String getStepTemplatePath();
|
protected abstract String getStepTemplatePath();
|
||||||
|
|
@ -256,4 +462,22 @@ public abstract class AbstractPublicationExtentedPropertiesStep<T extends Public
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String showSeriesNotFound(
|
||||||
|
final String sectionIdentifier,
|
||||||
|
final String documentPath,
|
||||||
|
final String seriesIdentifier
|
||||||
|
) {
|
||||||
|
models.put("seriesNotFound", seriesIdentifier);
|
||||||
|
return showStep(sectionIdentifier, documentPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String showVolumeInSeriesNotFound(
|
||||||
|
final String sectionIdentifier,
|
||||||
|
final String documentPath,
|
||||||
|
final String volumeInSeriesIdentifier
|
||||||
|
) {
|
||||||
|
models.put("volumeInSeriesNotFound", volumeInSeriesIdentifier);
|
||||||
|
return showStep(sectionIdentifier, documentPath);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -708,7 +708,6 @@ public abstract class AbstractPublicationPropertiesStep<T extends PublicationIte
|
||||||
);
|
);
|
||||||
|
|
||||||
return buildRedirectPathForStep();
|
return buildRedirectPathForStep();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return documentUi.showAccessDenied(
|
return documentUi.showAccessDenied(
|
||||||
getContentSection(),
|
getContentSection(),
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,6 @@ import java.util.stream.Collectors;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
import javax.ws.rs.FormParam;
|
import javax.ws.rs.FormParam;
|
||||||
import javax.ws.rs.POST;
|
|
||||||
import javax.ws.rs.Path;
|
|
||||||
import javax.ws.rs.PathParam;
|
import javax.ws.rs.PathParam;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -31,7 +29,7 @@ import javax.ws.rs.PathParam;
|
||||||
* @param <P> Subtype of {@link PublicationWithPublisher}.
|
* @param <P> Subtype of {@link PublicationWithPublisher}.
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractPublicationWithPublisherExtendedPropertiesStep<T extends PublicationWithPublisherItem<P>, P extends PublicationWithPublisher>
|
public abstract class AbstractPublicationWithPublisherExtendedPropertiesStep<T extends PublicationWithPublisherItem<P>, P extends PublicationWithPublisher>
|
||||||
extends AbstractPublicationExtentedPropertiesStep<T, P> {
|
extends AbstractPublicationExtendedPropertiesStep<T, P> {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private DocumentUi documentUi;
|
private DocumentUi documentUi;
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,11 @@ public class MonographExtendedPropertiesStep extends AbstractPublicationWithPubl
|
||||||
return Monograph.class;
|
return Monograph.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getEditStepUrlFragment() {
|
||||||
|
return "monograph-extendedproperties";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getStepTemplatePath() {
|
protected String getStepTemplatePath() {
|
||||||
return "org/scientificcms/contenttypes/ui/monograph/edit-extended-properties.xhtml";
|
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
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -230,7 +230,7 @@ public class MonographPropertiesStep extends AbstractPublicationWithPublisherPro
|
||||||
@POST
|
@POST
|
||||||
@Path("/authors")
|
@Path("/authors")
|
||||||
@AuthorizationRequired
|
@AuthorizationRequired
|
||||||
@Transactional
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
@Override
|
@Override
|
||||||
public String addAuthor(
|
public String addAuthor(
|
||||||
@PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM)
|
@PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM)
|
||||||
|
|
@ -253,7 +253,7 @@ public class MonographPropertiesStep extends AbstractPublicationWithPublisherPro
|
||||||
@POST
|
@POST
|
||||||
@Path("/authors/{authorshipUuid}")
|
@Path("/authors/{authorshipUuid}")
|
||||||
@AuthorizationRequired
|
@AuthorizationRequired
|
||||||
@Transactional
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
@Override
|
@Override
|
||||||
public String editAuthorship(
|
public String editAuthorship(
|
||||||
@PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM)
|
@PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM)
|
||||||
|
|
@ -276,7 +276,7 @@ public class MonographPropertiesStep extends AbstractPublicationWithPublisherPro
|
||||||
@POST
|
@POST
|
||||||
@Path("/authors/{authorshipUuid}/remove")
|
@Path("/authors/{authorshipUuid}/remove")
|
||||||
@AuthorizationRequired
|
@AuthorizationRequired
|
||||||
@Transactional
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
@Override
|
@Override
|
||||||
public String removeAuthorship(
|
public String removeAuthorship(
|
||||||
@PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM)
|
@PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package org.scientificcms.publications.ui.contenttypes;
|
package org.scientificcms.publications.ui.contenttypes;
|
||||||
|
|
||||||
|
import org.scientificcms.publications.assets.SeriesAsset;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
@ -17,6 +19,8 @@ import javax.inject.Named;
|
||||||
@Named("SciCmsPublicationExtendedPropertiesStepModel")
|
@Named("SciCmsPublicationExtendedPropertiesStepModel")
|
||||||
public class PublicationExtendedPropertiesStepModel {
|
public class PublicationExtendedPropertiesStepModel {
|
||||||
|
|
||||||
|
private String baseUrl;
|
||||||
|
|
||||||
private String editStepUrlFragment;
|
private String editStepUrlFragment;
|
||||||
|
|
||||||
private boolean peerReviewed;
|
private boolean peerReviewed;
|
||||||
|
|
@ -31,6 +35,14 @@ public class PublicationExtendedPropertiesStepModel {
|
||||||
|
|
||||||
private Map<String, String> languages;
|
private Map<String, String> languages;
|
||||||
|
|
||||||
|
public String getBaseUrl() {
|
||||||
|
return baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setBaseUrl(final String baseUrl) {
|
||||||
|
this.baseUrl = baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isPeerReviewed() {
|
public boolean isPeerReviewed() {
|
||||||
return peerReviewed;
|
return peerReviewed;
|
||||||
}
|
}
|
||||||
|
|
@ -89,6 +101,8 @@ public class PublicationExtendedPropertiesStepModel {
|
||||||
this.editStepUrlFragment = editStepUrlFragment;
|
this.editStepUrlFragment = editStepUrlFragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSeriesType() {
|
||||||
|
return SeriesAsset.class.getName();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
<h2>#{authoringStepTitle}</h2>
|
<h2>#{authoringStepTitle}</h2>
|
||||||
|
|
||||||
|
<c:if test="#{CmsSelectedDocumentModel.canEdit}">
|
||||||
<div class="text-right">
|
<div class="text-right">
|
||||||
<button class="btn btn-primary"
|
<button class="btn btn-primary"
|
||||||
data-toggle="modal"
|
data-toggle="modal"
|
||||||
|
|
@ -66,12 +67,14 @@
|
||||||
options="#{SciCmsPublicationExtendedPropertiesStepModel.languages}"
|
options="#{SciCmsPublicationExtendedPropertiesStepModel.languages}"
|
||||||
selectedOptions="#{List.of(SciCmsPublicationExtendedPropertiesStepModel.languageOfPublication)}"
|
selectedOptions="#{List.of(SciCmsPublicationExtendedPropertiesStepModel.languageOfPublication)}"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<ui:insert name="publicationExtendedPropertiesFormElements" />
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button class="btn btn-warning"
|
<button class="btn btn-warning"
|
||||||
data-dismiss="modal"
|
data-dismiss="modal"
|
||||||
type="button">
|
type="button">
|
||||||
#{SciPublicationsUiMessageBundle['publication.editstep.extededproperties.edit.close']}
|
#{SciPublicationsUiMessageBundle['publication.editstep.extendedproperties.edit.close']}
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-success"
|
<button class="btn btn-success"
|
||||||
type="submit">
|
type="submit">
|
||||||
|
|
@ -81,6 +84,7 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</c:if>
|
||||||
<dl>
|
<dl>
|
||||||
<div>
|
<div>
|
||||||
<dt>#{SciPublicationsUiMessageBundle['extendedproperties.peerreviewed.label']}</dt>
|
<dt>#{SciPublicationsUiMessageBundle['extendedproperties.peerreviewed.label']}</dt>
|
||||||
|
|
@ -95,10 +99,128 @@
|
||||||
<dd>#{SciCmsPublicationExtendedPropertiesStepModel.languageOfPublicationDisplayName}</dd>
|
<dd>#{SciCmsPublicationExtendedPropertiesStepModel.languageOfPublicationDisplayName}</dd>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ui:insert name="publicationExtendedProperties" />
|
<ui:insert name="publicationExtendedPropertiesList" />
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<!-- series: asset -->
|
<c:if test="#{CmsSelectedDocumentModel.canEdit}">
|
||||||
|
<h3>#{SciPublicationsUiMessageBundle['extendedproeprties.volumeinseries.header']}</h3>
|
||||||
|
<div class="mb-2">
|
||||||
|
<div class="text-right">
|
||||||
|
<librecms:assetPickerButton
|
||||||
|
assetPickerId="series-picker"
|
||||||
|
buttonIcon="plus-circle"
|
||||||
|
buttonText="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.add.label']}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<librecms:assetPicker
|
||||||
|
actionUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@#{SciCmsPublicationExtendedPropertiesStepModel.editStepUrlFragment}/series"
|
||||||
|
assetType="#{SciCmsPublicationExtendedPropertiesStepModel.seriesType}"
|
||||||
|
assetPickerId="series-picker"
|
||||||
|
baseUrl="#{SciCmsPublicationExtendedPropertiesStepModel.baseUrl}"
|
||||||
|
contentSection="#{ContentSectionModel.sectionName}"
|
||||||
|
dialogTitle="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.add.dialog.title']}"
|
||||||
|
formParamName="seriesIdentifier"
|
||||||
|
>
|
||||||
|
<bootstrap:formGroupText
|
||||||
|
help="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.volumeinseries.help']}"
|
||||||
|
inputId="volume-in-series"
|
||||||
|
label="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.volumeinseries.label']}"
|
||||||
|
name="volumeInSeries"
|
||||||
|
/>
|
||||||
|
</librecms:assetPicker>
|
||||||
|
</c:if>
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="#{SciCmsPublicationExtendedPropertiesStepModel.volumeInSeries.isEmpty()}">
|
||||||
|
<p>#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.none']}</p>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
<table id="series-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.table.title']}</th>
|
||||||
|
<th>#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.table.volumeinseries']}</th>
|
||||||
|
<th colspan="2">#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.table.actions']}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<c:forEach items="#{SciCmsPublicationExtendedPropertiesStepModel.volumeInSeries}"
|
||||||
|
var="volume">
|
||||||
|
<tr id="#{volume.volumeInSeriesUuid}">
|
||||||
|
<td>#{volume.seriesTitle}</td>
|
||||||
|
<td>#{volume.volumeInSeries}</td>
|
||||||
|
<td>
|
||||||
|
<button class="btn btn-secondary"
|
||||||
|
data-toggle="modal"
|
||||||
|
data-target="#volumeinseries-edit-#{volume.volumeInSeriesUuid}"
|
||||||
|
type="button">
|
||||||
|
<bootstrap:svgIcon icon="pen" />
|
||||||
|
<span class="sr-only">
|
||||||
|
#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.edit.label']}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
<div aria-hidden="true"
|
||||||
|
aria-labelledby="volumeinseries-edit-#{volume.volumeInSeriesUuid}-title"
|
||||||
|
class="modal fade"
|
||||||
|
id="volumeinseries-edit-#{volume.volumeInSeriesUuid}"
|
||||||
|
tabindex="-1">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@#{SciCmsPublicationExtendedPropertiesStepModel.editStepUrlFragment}/series/#{volume.volumeInSeriesUuid}"
|
||||||
|
class="modal-content"
|
||||||
|
method="post">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h4 class="modal-title"
|
||||||
|
id="volumeinseries-edit-#{volume.volumeInSeriesUuid}-title">
|
||||||
|
#{SciPublicationsUiMessageBundle.getMessage('extendedproperties.volumeinseries.editdialog.title', [volume.seriesTitle, volume.volumeInSeries])}
|
||||||
|
</h4>
|
||||||
|
<button aria-label="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.editdialog.cancel']}"
|
||||||
|
class="close"
|
||||||
|
data-dismiss="modal"
|
||||||
|
type="button">
|
||||||
|
<bootstrap:svgIcon icon="x" />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<bootstrap:formGroupText
|
||||||
|
help="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.volumeinseries.help']}"
|
||||||
|
inputId="#{volume.volumeInSeriesUuid}-volumeinseries"
|
||||||
|
label="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.volumeinseries.label']}"
|
||||||
|
name="volumeInSeries"
|
||||||
|
value="#{volume.volumeInSeries}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="btn btn-warning"
|
||||||
|
data-dismiss="modal"
|
||||||
|
type="button">
|
||||||
|
#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.editdialog.cancel']}
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-success"
|
||||||
|
type="submit">
|
||||||
|
#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.editdialog.submit']}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<libreccm:deleteDialog
|
||||||
|
actionTarget="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@#{SciCmsPublicationExtendedPropertiesStepModel.editStepUrlFragment}/#{volume.volumeInSeriesUuid}/remove"
|
||||||
|
buttonText="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.remove.label']}"
|
||||||
|
cancelLabel="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.remove.cancel']}"
|
||||||
|
confirmLabel="#{SciPublicationsUiMessageBundle['extendedproperties.volumeinseries.remove.confirm']}"
|
||||||
|
dialogId="remove-volumeinseries-#{volume.volumeInSeriesUuid}"
|
||||||
|
dialogTitle="#{SciPublicationsUiMessageBundle.getMessage('extendedproperties.volumeinseries.remove.title', [volume.seriesTitle, volume.volumeInSeries])}"
|
||||||
|
message="#{SciPublicationsUiMessageBundle.getMessage('extendedproperties.volumeinseries.remove.message', [volume.seriesTitle, volume.volumeInSeries])}"
|
||||||
|
/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
|
||||||
<ui:insert name="publicationExtendedPropertyWidgets"/>
|
<ui:insert name="publicationExtendedPropertyWidgets"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,22 +7,97 @@
|
||||||
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
||||||
<ui:composition template="/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-extended-properties.xhtml">
|
<ui:composition template="/WEB-INF/views/org/scientificcms/contenttypes/ui/edit-publication-extended-properties.xhtml">
|
||||||
|
|
||||||
<ui:define name="publicationExtendedProperties">
|
<ui:define name="publicationExtendedPropertiesList">
|
||||||
|
|
||||||
<!-- isbn10: String -->
|
<div>
|
||||||
|
<dt>#{SciPublicationsUiMessageBundle['extendedproperties.isbn10.label']}</dt>
|
||||||
|
<dd>#{SciCmsPublicationWithPublisherExtendedPropertiesStep.isbn10}</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- isbn13: String -->
|
<div>
|
||||||
|
<dt>#{SciPublicationsUiMessageBundle['extendedproperties.isbn13.label']}</dt>
|
||||||
|
<dd>#{SciCmsPublicationWithPublisherExtendedPropertiesStep.isbn13}</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- volume: int -->
|
<div>
|
||||||
|
<dt>#{SciPublicationsUiMessageBundle['extendedproperties.volume.label']}</dt>
|
||||||
|
<dd>#{SciCmsPublicationWithPublisherExtendedPropertiesStep.volume}</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- numberOfVolumes: int -->
|
<div>
|
||||||
|
<dt>#{SciPublicationsUiMessageBundle['extendedproperties.numberofvolumes.label']}</dt>
|
||||||
|
<dd>#{SciCmsPublicationWithPublisherExtendedPropertiesStep.numberOfVolumes}</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- numberOfPages: int -->
|
<div>
|
||||||
|
<dt>#{SciPublicationsUiMessageBundle['extendedproperties.numberofpages.label']}</dt>
|
||||||
|
<dd>#{SciCmsPublicationWithPublisherExtendedPropertiesStep.numberOfPages}</dd>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- edition: LocalizedString -->
|
<ui:insert name="publicationWithPublisherExtendedPropertiesList"/>
|
||||||
|
|
||||||
<ui:insert name="publicationWithPublisherExtendedProperties"/>
|
</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="publicationExtendedPropertiesFormElements">
|
||||||
|
|
||||||
|
<bootstrap:formGroupText
|
||||||
|
help="#{SciPublicationsUiMessageBundle['extendedproperties.isbn10.help']}"
|
||||||
|
inputId="isbn10"
|
||||||
|
label="#{SciPublicationsUiMessageBundle['extendedproperties.isbn10.label']}"
|
||||||
|
name="isbn10"
|
||||||
|
value="#{SciCmsPublicationWithPublisherExtendedPropertiesStep.isbn10}"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<bootstrap:formGroupText
|
||||||
|
help="#{SciPublicationsUiMessageBundle['extendedproperties.isbn13.help']}"
|
||||||
|
inputId="isbn13"
|
||||||
|
label="#{SciPublicationsUiMessageBundle['extendedproperties.isbn13.label']}"
|
||||||
|
name="isbn13"
|
||||||
|
value="#{SciCmsPublicationWithPublisherExtendedPropertiesStep.isbn13}"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<bootstrap:formGroupNumber
|
||||||
|
help="#{SciPublicationsUiMessageBundle['extendedproeprties.volume.help']}"
|
||||||
|
inputId="volume"
|
||||||
|
label="#{SciPublicationsUiMessageBundle['extendedproeprties.volume.label']}"
|
||||||
|
name="volume"
|
||||||
|
value="#{SciCmsPublicationWithPublisherExtendedPropertiesStep.volume}"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<bootstrap:formGroupNumber
|
||||||
|
help="#{SciPublicationsUiMessageBundle['extendedproeprties.numberofvolumes.help']}"
|
||||||
|
inputId="number-of-volumes"
|
||||||
|
label="#{SciPublicationsUiMessageBundle['extendedproeprties.numberofvolumes.label']}"
|
||||||
|
name="numberOfVolumes"
|
||||||
|
value="#{SciCmsPublicationWithPublisherExtendedPropertiesStep.numberOfVolumes}"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<bootstrap:formGroupNumber
|
||||||
|
help="#{SciPublicationsUiMessageBundle['extendedproeprties.numberofpages.help']}"
|
||||||
|
inputId="number-of-pages"
|
||||||
|
label="#{SciPublicationsUiMessageBundle['extendedproeprties.numberofpages.label']}"
|
||||||
|
name="numberOfPages"
|
||||||
|
value="#{SciCmsPublicationWithPublisherExtendedPropertiesStep.numberOfPages}"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<ui:insert name="publicationWithPublisherExtendedPropertiesFormElements"/>
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="publicationExtendedPropertyWidgets">
|
||||||
|
|
||||||
|
<libreccm:localizedStringEditor
|
||||||
|
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@#{SciCmsPublicationExtendedPropertiesStepModel.editStepUrlFragment}/edition/@add"
|
||||||
|
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@#{SciCmsPublicationExtendedPropertiesStepModel.editStepUrlFragment}/edition/@edit"
|
||||||
|
editorId="edition-editor"
|
||||||
|
hasUnusedLocales="#{SciCmsPublicationWithPublisherExtendedPropertiesStep.unusedEditionLocales.isEmpty()}"
|
||||||
|
objectIdentifier="#{CmsSelectedDocumentModel.itemPath}"
|
||||||
|
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@#{SciCmsPublicationExtendedPropertiesStepModel.editStepUrlFragment}/edition/@remove"
|
||||||
|
title="#{SciPublicationsUiMessageBundle['extendedproperties.edition.editdialog.title']}"
|
||||||
|
unusedLocales="#{SciCmsPublicationWithPublisherExtendedPropertiesStep.unusedEditionLocales}"
|
||||||
|
values="#{SciCmsPublicationWithPublisherExtendedPropertiesStep.editionValues}"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<ui:insert name="publicationWithPublisherExtendedPropertyWidgets" />
|
||||||
</ui:define>
|
</ui:define>
|
||||||
|
|
||||||
</ui:composition>
|
</ui:composition>
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,18 @@
|
||||||
<ui:param name="authoringStepTitle"
|
<ui:param name="authoringStepTitle"
|
||||||
value="#{SciPublicationsUiMessageBundle.getMessage('monograph.extendedproperties.header', [SciCmsPublicationPropertiesStepModel.name])}" />
|
value="#{SciPublicationsUiMessageBundle.getMessage('monograph.extendedproperties.header', [SciCmsPublicationPropertiesStepModel.name])}" />
|
||||||
|
|
||||||
<ui:define name="publicationWithPublisherExtendedProperties">
|
<ui:param name="editStepUrlFragement"
|
||||||
|
value="monograph-extendedproperties" />
|
||||||
|
|
||||||
|
<ui:define name="publicationWithPublisherExtendedPropertiesList">
|
||||||
|
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="publicationWithPublisherExtendedPropertiesFormElements">
|
||||||
|
|
||||||
|
</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="publicationWithPublisherExtendedPropertiesWidgets">
|
||||||
|
|
||||||
</ui:define>
|
</ui:define>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -380,3 +380,40 @@ editsteps.misc.header_edit=Edit miscellaneous information
|
||||||
basicproperties.authors.none=No authors assigned yet.
|
basicproperties.authors.none=No authors assigned yet.
|
||||||
publicationwithpublisher.publisher.none=No publisher assigned yet.
|
publicationwithpublisher.publisher.none=No publisher assigned yet.
|
||||||
basicproperties.authors.remove.confirm=Remove
|
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
|
||||||
|
|
|
||||||
|
|
@ -380,3 +380,40 @@ editsteps.misc.header_edit=Weitere Informationen bearbeiten
|
||||||
basicproperties.authors.none=Es wurden noch keine Autoren eingetragen.
|
basicproperties.authors.none=Es wurden noch keine Autoren eingetragen.
|
||||||
publicationwithpublisher.publisher.none=Es wurde noch kein Verlag zugewiesen.
|
publicationwithpublisher.publisher.none=Es wurde noch kein Verlag zugewiesen.
|
||||||
basicproperties.authors.remove.confirm=Entfernen
|
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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue