Bugfixes for editing publications
parent
30a01f2df3
commit
8aef004c17
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ public class PublicationAuthoringSteps implements MvcAuthoringSteps {
|
|||
@Override
|
||||
public Set<Class<?>> getResourceClasses() {
|
||||
return Set.of(
|
||||
PublicationItemAuthors.class,
|
||||
PublicationAbstractStepResources.class,
|
||||
PublicationMiscStepResources.class
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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 <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@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<String> 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<Long, Long> 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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -30,6 +30,11 @@
|
|||
formParamName="publisherIdentifier"
|
||||
/>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="#{SciCmsPublicationWithPublisherPropertiesStepModel.publisherName == null}">
|
||||
<p>#{SciPublicationsUiMessageBundle['publicationwithpublisher.publisher.none']}</p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p>
|
||||
<c:choose>
|
||||
<c:when test="#{SciCmsPublicationWithPublisherPropertiesStepModel.publisherPlace != null}">
|
||||
|
|
@ -51,6 +56,8 @@
|
|||
/>
|
||||
</c:if>
|
||||
</p>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<ui:insert name="publicationWithPublisherProperties" />
|
||||
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<librecms:assetPicker
|
||||
actionUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/#{SciCmsPublicationPropertiesStepModel.editStepUrlFragment}/authors"
|
||||
actionUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@#{SciCmsPublicationPropertiesStepModel.editStepUrlFragment}/authors"
|
||||
assetType="#{SciCmsCollectedVolumeAssetEditStepModel.authorType}"
|
||||
assetPickerId="authors-picker"
|
||||
baseUrl="#{SciCmsPublicationPropertiesStepModel.baseUrl}"
|
||||
|
|
@ -261,6 +261,11 @@
|
|||
name="editor"
|
||||
/>
|
||||
</librecms:assetPicker>
|
||||
<c:choose>
|
||||
<c:when test="#{SciCmsPublicationPropertiesStepModel.authors.isEmpty()}">
|
||||
<p>#{SciPublicationsUiMessageBundle['basicproperties.authors.none']}</p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<button class="btn btn-secondary authors-save-order-button"
|
||||
disabled="disabled"
|
||||
type="button">
|
||||
|
|
@ -276,7 +281,7 @@
|
|||
<span>#{SciPublicationsUiMessageBundle['authors.order.save']}</span>
|
||||
</button>
|
||||
<table id="authors-table"
|
||||
data-saveUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@#{SciCmsPublicationPropertiesStepModel.editStepUrlFragment}-authors/save-order">
|
||||
data-saveUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@publication-authors/save-order">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#{SciPublicationsUiMessageBundle['basicproperties.authors.table.name']}</th>
|
||||
|
|
@ -382,6 +387,8 @@
|
|||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:if>
|
||||
|
||||
<ui:insert name="publicationProperties" />
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue