diff --git a/ccm-cms/src/main/java/org/librecms/assets/ContactEntryKey.java b/ccm-cms/src/main/java/org/librecms/assets/ContactEntryKey.java index f9113fa6b..307126d06 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/ContactEntryKey.java +++ b/ccm-cms/src/main/java/org/librecms/assets/ContactEntryKey.java @@ -28,6 +28,8 @@ import javax.persistence.AssociationOverride; import javax.persistence.Column; import javax.persistence.Embedded; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; @@ -57,6 +59,7 @@ public class ContactEntryKey @Id @Column(name = "KEY_ID") + @GeneratedValue(strategy = GenerationType.AUTO) private long keyId; @Column(name = "ENTRY_KEY", length = 255) diff --git a/ccm-cms/src/main/java/org/librecms/assets/ContactEntryKeyRepository.java b/ccm-cms/src/main/java/org/librecms/assets/ContactEntryKeyRepository.java index 9bafedbdb..d934e281f 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/ContactEntryKeyRepository.java +++ b/ccm-cms/src/main/java/org/librecms/assets/ContactEntryKeyRepository.java @@ -39,31 +39,26 @@ public class ContactEntryKeyRepository @Override public Class getEntityClass() { - return ContactEntryKey.class; } @Override public String getIdAttributeName() { - return "keyId"; } @Override public Long getIdOfEntity(final ContactEntryKey entity) { - return entity.getKeyId(); } @Override public boolean isNew(final ContactEntryKey entity) { - return entity.getKeyId() == 0; } @Transactional(Transactional.TxType.REQUIRED) public Optional findByEntryKey(final String entryKey) { - try { return Optional.of( getEntityManager() diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationContactEntryKeysController.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationContactEntryKeysController.java index 11e5e8334..c74da27aa 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationContactEntryKeysController.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/ConfigurationContactEntryKeysController.java @@ -320,7 +320,7 @@ public class ConfigurationContactEntryKeysController { } @POST - @Path("/{contactEntryKey}/label/@add/{locale}") + @Path("/{contactEntryKey}/label/@edit/{locale}") @AuthorizationRequired @Transactional(Transactional.TxType.REQUIRED) public String editEntryLabel( @@ -368,7 +368,7 @@ public class ConfigurationContactEntryKeysController { public String removeEntryLabel( @PathParam("sectionIdentifier") final String sectionIdentifierParam, @PathParam("contactEntryKey") final String entryKey, - @FormParam("locale") final String localeParam + @PathParam("locale") final String localeParam ) { final Optional sectionResult = sectionsUi .findContentSection(sectionIdentifierParam); diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/ContentSectionApplication.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/ContentSectionApplication.java index f70485be0..032ed66ec 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/ContentSectionApplication.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/ContentSectionApplication.java @@ -74,6 +74,7 @@ public class ContentSectionApplication extends Application { classes.add(AssetFolderController.class); classes.add(CategoriesController.class); classes.add(ConfigurationController.class); + classes.add(ConfigurationContactEntryKeysController.class); classes.add(ConfigurationDocumentTypesController.class); classes.add(ConfigurationLifecyclesController.class); classes.add(ConfigurationRolesController.class); diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/SelectedContactEntryKeyModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/SelectedContactEntryKeyModel.java index 4586858ba..f558d76d4 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/SelectedContactEntryKeyModel.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/SelectedContactEntryKeyModel.java @@ -66,6 +66,10 @@ public class SelectedContactEntryKeyModel { protected void setUnusedLabelLocales(final List unusedLabelLocales) { this.unusedLabelLocales = new ArrayList<>(unusedLabelLocales); } + + public boolean getHasUnusedLabelLocales() { + return !unusedLabelLocales.isEmpty(); + } public Map getLabels() { return Collections.unmodifiableMap(labels); diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/configuration-tabs.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/configuration-tabs.xhtml index 454c5c624..eb675138c 100644 --- a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/configuration-tabs.xhtml +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/configuration-tabs.xhtml @@ -30,6 +30,12 @@ #{CmsAdminMessages['contentsection.configuration.workflows.title']} + diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/contactentrykey-not-found.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/contactentrykey-not-found.xhtml new file mode 100644 index 000000000..b39d7d84d --- /dev/null +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/contactentrykey-not-found.xhtml @@ -0,0 +1,27 @@ +]> + + + + + + + + + + +
+
+ #{CmsAdminMessages.getMessage('contentsection.configuration.contactentrykey.not_found', [entryKey])} +
+
+
+
+ + + diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/contactentrykey.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/contactentrykey.xhtml new file mode 100644 index 000000000..f109393f7 --- /dev/null +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/contactentrykey.xhtml @@ -0,0 +1,72 @@ +]> + + + + + + + + + + + + + +
+ + + +

#{CmsAdminMessages.getMessage('contentsection.configuration.contactentrykeys.contactentrykey_details.title', [CmsSelectedContactEntryKeyModel.key])}

+ + + +
+
+ +
+ diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/contactentrykeys.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/contactentrykeys.xhtml new file mode 100644 index 000000000..035da1c83 --- /dev/null +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/configuration/contactentrykeys.xhtml @@ -0,0 +1,132 @@ +]> + + + + + + + + + + + + +
+ + + + +

#{CmsAdminMessages['contentsection.configuration.contactentrykeys.title']}

+ + + + + + + +
+
+ +
+ + +
+ + + + + + + + + + + + + + + +
+ #{CmsAdminMessages['contentsection.configuration.contactentrykeys.table.cols.entrykey']} + + #{CmsAdminMessages['contentsection.configuration.contactentrykeys.table.cols.actions']} +
+ + #{entryKey.entryKey} + + + +
+
+
+
+ diff --git a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties index cf846df6f..302a03fa0 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages.properties @@ -796,3 +796,40 @@ contentsection.assets.createstep.breadcrumb=Create {0} asset contentsection.assets.createstep.not_available.message=Unable to create new asset of type {2} in folder {1} of content section{0}. Create step for asset type {2} not available. contentsection.configuration.contactentrykeys.title=Contact Entry Keys contentsection.configuration.contactentrykeys.description=Configure the possible keys for contact data entries. +contentsection.configuration.contactentrykeys.add=Add Contact Entry Key +contentsection.configuration.contactentrykeys.add.dialog.close=Cancel +contentsection.configuration.contactentrykeys.add.dialog.entrykey.help=The internal key. +contentsection.configuration.contactentrykeys.add.dialog.entrykey.label=Entry Key +contentsection.configuration.contactentrykeys.add.dialog.submit=Add +contentsection.configuration.contactentrykeys.table.cols.entrykey=Possible Contact Entry Entries +contentsection.configuration.contactentrykeys.table.cols.actions=Actions +contentsection.configuration.contactentrykeys.delete_button.label=Delete Contact Entry Key +contentsection.configuration.contactentrykeys.delete_dialog.cancel=Cancel +contentsection.configuration.contactentrykeys.delete_dialog.confirm=Delete +contentsection.configuration.contactentrykeys.delete_dialog.title=Remove Contact Entry Key +contentsection.configuration.contactentrykeys.delete_dialog.message=Are you sure to delete the Contact Data Entry Key {1}? +contentsection.configuration.contactentrykeys.contactentrykey_details.title=Details of Contact Data Entry Key {0} +contentsection.configuration.contactentrykeys.contactentrykey_details.label.title=Localized labels +contentsection.configuration.contactentrykeys.contactentrykey_details.label.add.button=Add localized label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.add.cancel=Cancel +contentsection.configuration.contactentrykeys.contactentrykey_details.label.locale.help=The language of the localized label for the contact data entry key. +contentsection.configuration.contactentrykeys.contactentrykey_details.label.locale.label=Locale +contentsection.configuration.contactentrykeys.contactentrykey_details.label.add.submit=Add label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.add.title=Add localized label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.value.help=The localized label for the contact data entry key. +contentsection.configuration.contactentrykeys.contactentrykey_details.label.value.label=Label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.button=Edit +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.cancel=Cancel +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.submit=Save +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.title=Edit localized label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.value.help=The localized label for the contact data entry key. +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.value.label=Label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.button=Remove +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.cancel=Cancel +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.submit=Remove localized label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.text=Are you sure to remove to following localized label: +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.title=Remove localized label +contentsection.configuration.contactentrykey.not_found.title=Contact Data Entry Key not found +contentsection.configuration.contactentrykey.not_found=Contact Data Entry Key {0} not found. +contentsection.configuration.contactentrykeys.add.dialog.title=Add Contact Entry Key +contentsection.configuration.contactentrykeys.breadcrumbs=Contact Entry Keys diff --git a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties index 223b24cd4..995ab264f 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsAdminMessages_de.properties @@ -795,5 +795,42 @@ contentsection.assets.asset_type.not_available.message=Kein Asset Typ {1} f\u00f contentsection.assets.createstep.not_available.title=Kein Formular zum Erstellen verf\u00fcgbar contentsection.assets.createstep.breadcrumb={0} asset anlegen contentsection.assets.createstep.not_available.message=Anlegen eines Assets vom Type {2} in Ordner {1} der Content Section {0} nicht m\u00f6glich. Formular zum Anlegen von Assets des Types {2} nicht verf\u00fcgbar. -contentsection.configuration.contactentrykeys.title=Kontaktdaten-Schl\u00fcssel +contentsection.configuration.contactentrykeys.title=Kontaktdaten-Angaben contentsection.configuration.contactentrykeys.description=Verwalten der m\u00f6glichen Kontaktdaten-Angaben. +contentsection.configuration.contactentrykeys.add=M\u00f6gliche Kontaktdaten-Angabe hinzuf\u00fcgen +contentsection.configuration.contactentrykeys.add.dialog.close=Abbrechen +contentsection.configuration.contactentrykeys.add.dialog.entrykey.help=Der interne Schl\u00fcssel. +contentsection.configuration.contactentrykeys.add.dialog.entrykey.label=Schl\u00fcssel f\u00fcr die Angabe +contentsection.configuration.contactentrykeys.add.dialog.submit=Hinzuf\u00fcgen +contentsection.configuration.contactentrykeys.table.cols.entrykey=M\u00f6gliche Kontaktdaten-Angaben +contentsection.configuration.contactentrykeys.table.cols.actions=Aktionen +contentsection.configuration.contactentrykeys.delete_button.label=Entfernen +contentsection.configuration.contactentrykeys.delete_dialog.cancel=Abbrechen +contentsection.configuration.contactentrykeys.delete_dialog.confirm=L\u00f6schen +contentsection.configuration.contactentrykeys.delete_dialog.title=M\u00f6gliche Kontaktdaten-Angaben entfernen +contentsection.configuration.contactentrykeys.delete_dialog.message=Sind Sie sicher, dass Sie die Kontaktdaten-Angabe {1} l\u00f6schen m\u00f6chten? +contentsection.configuration.contactentrykeys.contactentrykey_details.title=Details der Kontaktdaten-Angabe {0} +contentsection.configuration.contactentrykeys.contactentrykey_details.label.title=Lokalisierte Label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.add.button=Lokalisiertes Label hinzuf\u00fcgen +contentsection.configuration.contactentrykeys.contactentrykey_details.label.add.cancel=Abbrechen +contentsection.configuration.contactentrykeys.contactentrykey_details.label.locale.help=Die Sprache des lokaliserte Label f\u00fcr die Kontaktdaten-Angabe. +contentsection.configuration.contactentrykeys.contactentrykey_details.label.locale.label=Sprache +contentsection.configuration.contactentrykeys.contactentrykey_details.label.add.submit=Label hinzuf\u00fcgen +contentsection.configuration.contactentrykeys.contactentrykey_details.label.add.title=Lokalisertes Label hinzuf\u00fcgen +contentsection.configuration.contactentrykeys.contactentrykey_details.label.value.help=Das lokaliserte Label f\u00fcr die Kontaktdaten-Angabe. +contentsection.configuration.contactentrykeys.contactentrykey_details.label.value.label=Label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.button=Bearbeiten +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.cancel=Abbrechen +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.submit=Speichern +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.title=Lokalisiertes Label bearbeiten +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.value.help=Das lokaliserte Label f\u00fcr die Kontaktdaten-Angabe. +contentsection.configuration.contactentrykeys.contactentrykey_details.label.edit.value.label=Label +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.button=Entfernen +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.cancel=Abbrechen +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.submit=Lokalisiertes Label entfernen +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.text=Sind Sie sicher, dass das folgende lokaliserte Label entfernen wollen: +contentsection.configuration.contactentrykeys.contactentrykey_details.label.remove.title=Lokalisiertes Label entfernen +contentsection.configuration.contactentrykey.not_found.title=Kontaktdaten-Angabe nicht gefunden +contentsection.configuration.contactentrykey.not_found=Kontaktdaten-Angabe {0} nicht gefunden. +contentsection.configuration.contactentrykeys.add.dialog.title=M\u00f6gliche Kontaktdaten-Angabe hinzuf\u00fcgen +contentsection.configuration.contactentrykeys.breadcrumbs=Kontaktdaten-Angaben