Bugfixes for create and edit steps of person asset.

pull/10/head
Jens Pelzetter 2021-06-01 21:14:40 +02:00
parent 07af86a955
commit b46634f5ec
9 changed files with 230 additions and 194 deletions

View File

@ -18,6 +18,7 @@
*/ */
package org.librecms.ui.contentsections.assets; package org.librecms.ui.contentsections.assets;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@ -34,6 +35,7 @@ public class CmsAssetEditSteps implements MvcAssetEditSteps {
classes.add(BookmarkEditStep.class); classes.add(BookmarkEditStep.class);
classes.add(FileAssetEditStep.class); classes.add(FileAssetEditStep.class);
classes.add(LegalMetadataEditStep.class); classes.add(LegalMetadataEditStep.class);
classes.add(PersonEditStep.class);
classes.add(PostalAddressEditStep.class); classes.add(PostalAddressEditStep.class);
classes.add(SideNoteEditStep.class); classes.add(SideNoteEditStep.class);

View File

@ -27,8 +27,10 @@ import org.librecms.contentsection.AssetRepository;
import org.librecms.ui.contentsections.AssetPermissionsChecker; import org.librecms.ui.contentsections.AssetPermissionsChecker;
import org.librecms.ui.contentsections.ContentSectionNotFoundException; import org.librecms.ui.contentsections.ContentSectionNotFoundException;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle; import java.time.format.FormatStyle;
import java.util.Optional;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.inject.Inject; import javax.inject.Inject;
@ -92,10 +94,17 @@ public class PersonEditStep extends AbstractContactableEntityEditStep {
if (getAsset() instanceof Person) { if (getAsset() instanceof Person) {
editStepModel.setBirthdate( editStepModel.setBirthdate(
Optional
.ofNullable(getPerson().getBirthdate())
.map(
birthdate -> birthdate.format(
DateTimeFormatter DateTimeFormatter
.ofLocalizedDate(FormatStyle.SHORT) .ofLocalizedDate(FormatStyle.SHORT)
.withLocale(globalizationHelper.getNegotiatedLocale()) .withLocale(
.format(getPerson().getBirthdate()) globalizationHelper.getNegotiatedLocale()
)
.withZone(ZoneId.systemDefault())))
.orElse("")
); );
editStepModel.setPersonNames(getPerson().getPersonNames()); editStepModel.setPersonNames(getPerson().getPersonNames());
} else { } else {

View File

@ -40,10 +40,10 @@
</cc:interface> </cc:interface>
<cc:implementation> <cc:implementation>
<div class="ccm-cms-asset-picker" <!-- <div class="ccm-cms-asset-picker"
data-assettype="#{cc.attrs.assetType}" data-assettype="#{cc.attrs.assetType}"
data-contentsection="#{cc.attrs.contentSection}"> data-contentsection="#{cc.attrs.contentSection}">-->
<div aria-hidden="true" <!-- <div aria-hidden="true"
aria-labelledby="#{cc.attrs.assetPickerId}-dialog-title" aria-labelledby="#{cc.attrs.assetPickerId}-dialog-title"
class="modal fade" class="modal fade"
id="#{cc.attrs.assetPickerId}-dialog" id="#{cc.attrs.assetPickerId}-dialog"
@ -136,8 +136,8 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>-->
</div> <!--</div>-->
</cc:implementation> </cc:implementation>

View File

@ -70,6 +70,7 @@
</form> </form>
</div> </div>
</div> </div>
<table> <table>
<thead> <thead>
<tr> <tr>
@ -210,15 +211,15 @@
/> />
<c:choose> <c:choose>
<c:when test="#{CmsContactableEditStepModel.postalAddress == null}"> <c:when test="#{CmsContactableEditStepModel.postalAddress == null}">
<div class="text-right"> <!-- <div class="text-right">
<librecms:assetPickerButton <librecms:assetPickerButton
assetPickerId="postaladdress-picker" assetPickerId="postaladdress-picker"
/> />
</div> </div>
<p>#{CmsAssetsStepsDefaultMessagesBundle['contactable.postaladdress.none']}</p> <p>#{CmsAssetsStepsDefaultMessagesBundle['contactable.postaladdress.none']}</p>-->
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<div class="text-right"> <!-- <div class="text-right">
<librecms:assetPickerButton <librecms:assetPickerButton
assetPickerId="postaladdress-picker" assetPickerId="postaladdress-picker"
/> />
@ -295,7 +296,7 @@
<dd>#{CmsContactableEditStepModel.postalAddressCountry}) (#{CmsContactableEditStepModel.postalAddress.isoCountryCode})</dd> <dd>#{CmsContactableEditStepModel.postalAddressCountry}) (#{CmsContactableEditStepModel.postalAddress.isoCountryCode})</dd>
</div> </div>
</dl> </dl>-->
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>

View File

@ -10,14 +10,14 @@
<div class="container"> <div class="container">
<h1>#{CmsAssetsStepsDefaultMessagesBundle["person.createform.title"]}</h1> <h1>#{CmsAssetsStepsDefaultMessagesBundle["person.createform.title"]}</h1>
<c:forEach items="#{CmsBookmarkCreateStep.messages.entrySet()}" <c:forEach items="#{CmsPersonCreateStep.messages.entrySet()}"
var="message"> var="message">
<div class="alert alert-#{message.key}" role="alert"> <div class="alert alert-#{message.key}" role="alert">
#{message.value} #{message.value}
</div> </div>
</c:forEach> </c:forEach>
<form action="#{mvc.basePath}/#{CmsPersonCreateStep.contentSectionLabel}/assets/#{CmsPersonCreateStep.folderPath}@create/#{CmsPersonCreateStep.assetType}" <form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assets/#{CmsPersonCreateStep.folderPath}@create/#{CmsPersonCreateStep.assetType}"
method="post"> method="post">
<bootstrap:formGroupText <bootstrap:formGroupText
help="#{CmsAssetsStepsDefaultMessagesBundle['createform.name.help']}" help="#{CmsAssetsStepsDefaultMessagesBundle['createform.name.help']}"
@ -26,7 +26,7 @@
name="name" name="name"
pattern="^([a-zA-Z0-9_-]*)$" pattern="^([a-zA-Z0-9_-]*)$"
required="true" required="true"
value="#{CmsBookmarkCreateStep.name}" value="#{CmsPersonCreateStep.name}"
/> />
<bootstrap:formGroupSelect <bootstrap:formGroupSelect
@ -34,9 +34,9 @@
inputId="locale" inputId="locale"
label="#{CmsAssetsStepsDefaultMessagesBundle['createform.initial_locale.label']}" label="#{CmsAssetsStepsDefaultMessagesBundle['createform.initial_locale.label']}"
name="locale" name="locale"
options="#{CmsBookmarkCreateStep.availableLocales}" options="#{CmsPersonCreateStep.availableLocales}"
required="true" required="true"
selectedOptions="#{[CmsBookmarkCreateStep.initialLocale]}" selectedOptions="#{[CmsPersonCreateStep.initialLocale]}"
/> />
<bootstrap:formGroupText <bootstrap:formGroupText
@ -48,7 +48,7 @@
/> />
<a class="btn btn-warning" <a class="btn btn-warning"
href="#{mvc.basePath}/#{CmsBookmarkCreateStep.contentSectionLabel}/assetfolders/#{CmsBookmarkCreateStep.folderPath}"> href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assetfolders/#{CmPersonCreateStep.folderPath}">
#{CmsAssetsStepsDefaultMessagesBundle['createform.cancel']} #{CmsAssetsStepsDefaultMessagesBundle['createform.cancel']}
</a> </a>
<button class="btn btn-success" <button class="btn btn-success"

View File

@ -85,13 +85,20 @@
</form> </form>
</div> </div>
</div> </div>
<c:choose>
<c:when test="#{CmsPersonEditStepModel.personNames.isEmpty()}">
<p>
#{CmsAssetStepsDefaultStepsMessageBundle['person.personnames.none']}
</p>
</c:when>
<c:otherwise>
<table> <table>
<thead> <thead>
<tr> <tr>
<th>#{CmsAssetsStepsDefaultMessagesBundle['person.personnames.col.prefix']}</th> <th>#{CmsAssetsStepsDefaultMessagesBundle['person.personname.prefix.label']}</th>
<th>#{CmsAssetsStepsDefaultMessagesBundle['person.personnames.col.surname']}</th> <th>#{CmsAssetsStepsDefaultMessagesBundle['person.personname.surname.label']}</th>
<th>#{CmsAssetsStepsDefaultMessagesBundle['person.personnames.col.givenname']}</th> <th>#{CmsAssetsStepsDefaultMessagesBundle['person.personname.givenname.label']}</th>
<th>#{CmsAssetsStepsDefaultMessagesBundle['person.personnames.col.suffix']}</th> <th>#{CmsAssetsStepsDefaultMessagesBundle['person.personname.suffix.label']}</th>
<th>#{CmsAssetsStepsDefaultMessagesBundle['person.personnames.col.actions']}</th> <th>#{CmsAssetsStepsDefaultMessagesBundle['person.personnames.col.actions']}</th>
</tr> </tr>
</thead> </thead>
@ -210,19 +217,19 @@
</p> </p>
<dl> <dl>
<div> <div>
<dt>person.personname.prefix.label</dt> <dt>#{CmsAssetsStepsDefaultMessagesBundle['person.personname.prefix.label']}</dt>
<dd>#{personName.prefix}</dd> <dd>#{personName.prefix}</dd>
</div> </div>
<div> <div>
<dt>person.personname.surname.label</dt> <dt>#{CmsAssetsStepsDefaultMessagesBundle['person.personname.surname.label']}</dt>
<dd>#{personName.surname}</dd> <dd>#{personName.surname}</dd>
</div> </div>
<div> <div>
<dt>person.personname.givename.label</dt> <dt>#{CmsAssetsStepsDefaultMessagesBundle['person.personname.givename.label']}</dt>
<dd>#{personName.givenName}</dd> <dd>#{personName.givenName}</dd>
</div> </div>
<div> <div>
<dt>person.personname.suffix.label</dt> <dt>#{CmsAssetsStepsDefaultMessagesBundle['person.personname.suffix.label']}</dt>
<dd>#{personName.suffix}</dd> <dd>#{personName.suffix}</dd>
</div> </div>
</dl> </dl>
@ -246,6 +253,8 @@
</c:forEach> </c:forEach>
</tbody> </tbody>
</table> </table>
</c:otherwise>
</c:choose>
<ui:include src="../edit-contactable.xhtml"> <ui:include src="../edit-contactable.xhtml">
<ui:param name="actionBaseUrl" <ui:param name="actionBaseUrl"

View File

@ -263,3 +263,8 @@ person.personname.remove.dialog.title=Remove Person Name
person.personname.remove.dialog.close=Cancel person.personname.remove.dialog.close=Cancel
person.personname.remove.dialog.message=Are you sure to remove the following person name: {0} {1} {2} {3}? person.personname.remove.dialog.message=Are you sure to remove the following person name: {0} {1} {2} {3}?
person.personname.remove.dialog.submit=Remove name person.personname.remove.dialog.submit=Remove name
person.label=Person
person.description=Contact information of a person
person.createform.title=Create new Person
person.personnames.col.actions=Actions
person.personnames.none=No person names yet.

View File

@ -263,3 +263,8 @@ person.personname.remove.dialog.title=Namen entfernen
person.personname.remove.dialog.close=Abbrechen person.personname.remove.dialog.close=Abbrechen
person.personname.remove.dialog.message=Sind Sie sicher, dass Sie den folgenden Namen entfernen wollen: {0} {1} {2} {3}? person.personname.remove.dialog.message=Sind Sie sicher, dass Sie den folgenden Namen entfernen wollen: {0} {1} {2} {3}?
person.personname.remove.dialog.submit=Namen entfernen person.personname.remove.dialog.submit=Namen entfernen
person.label=Person
person.description=Kontaktinformationen einer Person
person.createform.title=Neue Person anlegen
person.personnames.col.actions=Aktionen
person.personnames.none=Noch keine Personennamen vorhanden.

View File

@ -64,7 +64,6 @@ import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
/** /**
* Tests for the {@link AssetRepository}. * Tests for the {@link AssetRepository}.
* *
@ -277,19 +276,25 @@ public class AssetRepositoryIT {
"datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml") "datasets/org/librecms/contentsection/AssetRepositoryTest/data.xml")
public void findAssetByUuidAndType() { public void findAssetByUuidAndType() {
final Optional<Asset> asset = shiro final Optional<? extends Asset> asset = shiro
.getSystemUser() .getSystemUser()
.execute(() -> { .execute(
() -> {
return assetRepo return assetRepo
.findByUuidAndType("4635589f-b87a-46d9-979e-6af14af063e5", .findByUuidAndType(
Image.class); "4635589f-b87a-46d9-979e-6af14af063e5",
Image.class
);
}); });
final Optional<Asset> none = shiro final Optional<? extends Asset> none = shiro
.getSystemUser() .getSystemUser()
.execute(() -> { .execute(
() -> {
return assetRepo return assetRepo
.findByUuidAndType("4635589f-b87a-46d9-979e-6af14af063e5", .findByUuidAndType(
FileAsset.class); "4635589f-b87a-46d9-979e-6af14af063e5",
FileAsset.class
);
}); });
assertThat(asset.isPresent(), is(true)); assertThat(asset.isPresent(), is(true));