From 7bc7551413488c4c37ae5bbb65b0c2841bcbc735 Mon Sep 17 00:00:00 2001 From: jensp Date: Fri, 27 May 2016 18:00:44 +0000 Subject: [PATCH] CCM NG: - Updated dependency for Apache Shiro to 1.2.5 (bugfix release of Shiro) - More work on the application UI - Description of an application type is now localised (using the same approach as for the configuration classes) git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4120 8810af33-2d31-482b-a856-94f89814c4df --- .../AbstractApplicationTypeInstancesPane.java | 101 ++++++++++++++++++ .../AbstractApplicationTypePane.java | 42 +++++--- .../ApplicationTypePropertySheetModel.java | 77 ++++++++++--- ...licationTypePropertySheetModelBuilder.java | 67 ++++++++++++ ...gacyApplicationInfoPropertySheetModel.java | 2 +- .../tree/LegacyApplicationTypeTreeNode.java | 2 +- .../CategoryPropertySheetModelBuilder.java | 3 +- .../main/java/org/libreccm/core/CcmCore.java | 4 +- .../org/libreccm/web/ApplicationManager.java | 35 ++++++ .../org/libreccm/web/ApplicationType.java | 46 +++++--- .../ui/admin/AdminResources.properties | 1 + .../ui/admin/AdminResources_de.properties | 1 + .../ui/admin/AdminResources_en.properties | 1 + .../ui/admin/AdminResources_fr.properties | 1 + .../ui/login/LoginResources.properties | 1 + .../ui/login/LoginResources_de.properties | 1 + .../ui/login/LoginResources_en.properties | 1 + .../ui/login/LoginResources_fr.properties | 1 + .../after-add-subcategory.yml | 2 +- .../after-create-multiple-categories.yml | 2 +- pom.xml | 4 +- 21 files changed, 342 insertions(+), 53 deletions(-) create mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java create mode 100644 ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java new file mode 100644 index 000000000..9b7d1f483 --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2016 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package com.arsdigita.ui.admin.applications; + +import com.arsdigita.bebop.BoxPanel; +import com.arsdigita.bebop.Form; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.ParameterSingleSelectionModel; +import com.arsdigita.bebop.Table; +import com.arsdigita.bebop.table.TableColumn; +import com.arsdigita.bebop.table.TableColumnModel; +import com.arsdigita.globalization.GlobalizedMessage; + +import static com.arsdigita.ui.admin.AdminUiConstants.*; + +/** + * + * @author Jens Pelzetter + */ +public abstract class AbstractApplicationTypeInstancesPane extends BoxPanel { + + private final ParameterSingleSelectionModel selectedAppType; + + private final Form instanceForm; + + public AbstractApplicationTypeInstancesPane( + final ParameterSingleSelectionModel selectedAppType) { + + super(BoxPanel.VERTICAL); + + this.selectedAppType = selectedAppType; + + instanceForm = createInstanceForm(); + add(instanceForm); + + } + + protected abstract Form createInstanceForm(); + + @Override + public void register(final Page page) { + + page.setVisibleDefault(instanceForm, false); + } + + private class InstanceTable extends Table { + + private static final int COL_TITLE = 0; + private static final int COL_URL = 1; + private static final int COL_EDIT = 2; + + private final AbstractApplicationTypeInstancesPane instancesPane; + private final ParameterSingleSelectionModel selectedAppType; + + public InstanceTable( + final AbstractApplicationTypeInstancesPane instancesPane, + final ParameterSingleSelectionModel selectedAppType) { + super(); + + this.instancesPane = instancesPane; + this.selectedAppType = selectedAppType; + + final TableColumnModel columnModel = getColumnModel(); + columnModel.add(new TableColumn( + COL_TITLE, + new Label(new GlobalizedMessage( + "ui.admin.applications.instances.col_title", + ADMIN_BUNDLE)))); + columnModel.add(new TableColumn( + COL_URL, + new Label(new GlobalizedMessage( + "ui.admin.applications.instances.col_url", + ADMIN_BUNDLE)))); + columnModel.add(new TableColumn( + COL_EDIT, + new Label(new GlobalizedMessage( + "ui.admin.applications.instances.col_edit", + ADMIN_BUNDLE)))); + + } + + } + +} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java index ee55ee3c5..60be6ac14 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java @@ -22,6 +22,7 @@ import com.arsdigita.bebop.ActionLink; import com.arsdigita.bebop.BoxPanel; import com.arsdigita.bebop.Page; import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.ParameterSingleSelectionModel; import com.arsdigita.bebop.PropertySheet; import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.globalization.GlobalizedMessage; @@ -33,13 +34,19 @@ import static com.arsdigita.ui.admin.AdminUiConstants.*; * @author Jens Pelzetter */ public abstract class AbstractApplicationTypePane extends BoxPanel { - + + private final ParameterSingleSelectionModel selectedAppType; + private final SimpleContainer pane; private final PropertySheet propertySheet; - - public AbstractApplicationTypePane() { + + public AbstractApplicationTypePane( + final ParameterSingleSelectionModel selectedAppType) { + super(BoxPanel.VERTICAL); - + + this.selectedAppType = selectedAppType; + final BoxPanel links = new BoxPanel(BoxPanel.HORIZONTAL); final ActionLink paneLink = new ActionLink(getPaneLabel()); paneLink.addActionListener(e -> { @@ -48,42 +55,43 @@ public abstract class AbstractApplicationTypePane extends BoxPanel { }); links.add(paneLink); final ActionLink propertySheetLink = new ActionLink( - new GlobalizedMessage( - "ui.admin.appliations.type_pane.info_sheet", - ADMIN_BUNDLE)); + new GlobalizedMessage( + "ui.admin.appliations.type_pane.info_sheet", + ADMIN_BUNDLE)); propertySheetLink.addActionListener(e -> { final PageState state = e.getPageState(); showPropertySheet(state); }); links.add(propertySheetLink); add(links); - + pane = createPane(); add(pane); - - + + propertySheet = new PropertySheet( + new ApplicationTypePropertySheetModelBuilder(selectedAppType)); } - + protected abstract SimpleContainer createPane(); - + protected abstract GlobalizedMessage getPaneLabel(); - + @Override public void register(final Page page) { super.register(page); - + page.setVisibleDefault(pane, true); page.setVisibleDefault(propertySheet, false); } - + protected void showPane(final PageState state) { pane.setVisible(state, true); propertySheet.setVisible(state, false); } - + protected void showPropertySheet(final PageState state) { pane.setVisible(state, false); propertySheet.setVisible(state, false); } - + } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java index c602fe7bb..338633ccb 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java @@ -20,8 +20,16 @@ package com.arsdigita.ui.admin.applications; import com.arsdigita.bebop.PropertySheetModel; import com.arsdigita.globalization.GlobalizedMessage; + +import com.fasterxml.jackson.databind.deser.CreatorProperty; +import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.web.ApplicationType; +import java.util.Arrays; +import java.util.Iterator; + +import static com.arsdigita.ui.admin.AdminUiConstants.*; + /** * * @author Jens Pelzetter @@ -29,44 +37,87 @@ import org.libreccm.web.ApplicationType; public class ApplicationTypePropertySheetModel implements PropertySheetModel { private static enum AppTypeProperty { - TITLE, + NAME, DESC, APP_CLASS, + CREATOR, SINGLETON, SERVLET_CLASS, SERVLET_PATH, } - + private final ApplicationType applicationType; + private final Iterator propertyIterator; private AppTypeProperty currentProperty; - + public ApplicationTypePropertySheetModel( - final ApplicationType applicationType) { - + final ApplicationType applicationType) { + this.applicationType = applicationType; - + propertyIterator = Arrays.asList(AppTypeProperty.values()).iterator(); } - + @Override public boolean nextRow() { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + if (applicationType == null) { + return false; + } + + if (propertyIterator.hasNext()) { + currentProperty = propertyIterator.next(); + return true; + } else { + return false; + } } @Override public String getLabel() { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + return currentProperty.toString(); + } + + private GlobalizedMessage generateGlobalizedLabel( + final AppTypeProperty property) { + + final String key = String.join( + "", + "ui.admin.applications.type.property_sheet.", + property.toString().toLowerCase()); + + return new GlobalizedMessage(key, ADMIN_BUNDLE); } @Override public GlobalizedMessage getGlobalizedLabel() { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + return generateGlobalizedLabel(currentProperty); } @Override public String getValue() { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + switch(currentProperty) { + case NAME: + return applicationType.name(); + case DESC: + return getAppTypeDesc(); + case APP_CLASS: + return applicationType.applicationClass().getName(); + case CREATOR: + return applicationType.creator().getName(); + case SINGLETON: + return Boolean.toString(applicationType.singleton()); + case SERVLET_CLASS: + return applicationType.servlet().getName(); + case SERVLET_PATH: + return applicationType.servletPath(); + default: + return ""; + } } - - + private String getAppTypeDesc() { + final org.libreccm.web.ApplicationManager appManager = CdiUtil.createCdiUtil().findBean( + org.libreccm.web.ApplicationManager.class); + + return appManager.getApplicationTypeDescription(applicationType); + } } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java new file mode 100644 index 000000000..1b94de47a --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2016 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package com.arsdigita.ui.admin.applications; + +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.ParameterSingleSelectionModel; +import com.arsdigita.bebop.PropertySheet; +import com.arsdigita.bebop.PropertySheetModel; +import com.arsdigita.bebop.PropertySheetModelBuilder; +import com.arsdigita.util.LockableImpl; + +import org.libreccm.cdi.utils.CdiUtil; +import org.libreccm.web.ApplicationType; + +/** + * + * @author Jens Pelzetter + */ +public class ApplicationTypePropertySheetModelBuilder + extends LockableImpl + implements PropertySheetModelBuilder { + + private final ParameterSingleSelectionModel selectedAppType; + + public ApplicationTypePropertySheetModelBuilder( + final ParameterSingleSelectionModel selectedAppType) { + + this.selectedAppType = selectedAppType; + + } + + @Override + public PropertySheetModel makeModel(final PropertySheet sheet, + final PageState state) { + final String selectedAppTypeStr = selectedAppType.getSelectedKey(state); + final ApplicationType applicationType; + + if (selectedAppTypeStr == null || selectedAppTypeStr.isEmpty()) { + applicationType = null; + } else { + final org.libreccm.web.ApplicationManager appManager = CdiUtil + .createCdiUtil().findBean( + org.libreccm.web.ApplicationManager.class); + applicationType = appManager.getApplicationTypes().get( + selectedAppTypeStr); + } + + return new ApplicationTypePropertySheetModel(applicationType); + } + +} diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java index 1f7ad3ceb..d894bf1cb 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java @@ -134,7 +134,7 @@ public class LegacyApplicationInfoPropertySheetModel implements PropertySheetMod .localize(); } case APP_DESC: - return applicationType.description(); + return applicationType.descKey(); case SINGLETON_PATH: final String path; final ApplicationRepository appRepo = CdiUtil.createCdiUtil() diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java index f529233d9..eb33c53c3 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java @@ -43,7 +43,7 @@ public class LegacyApplicationTypeTreeNode implements TreeNode { name = applicationType.name(); objectType = applicationType.name(); singleton = applicationType.singleton(); - description = applicationType.description(); + description = applicationType.descKey(); } public String getName() { diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java index fc6cb3030..649664c4a 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java @@ -24,7 +24,6 @@ import com.arsdigita.bebop.PropertySheet; import com.arsdigita.bebop.PropertySheetModel; import com.arsdigita.bebop.PropertySheetModelBuilder; import com.arsdigita.util.LockableImpl; -import org.apache.logging.log4j.util.Strings; import org.libreccm.categorization.Category; import org.libreccm.categorization.CategoryRepository; import org.libreccm.cdi.utils.CdiUtil; @@ -52,7 +51,7 @@ public class CategoryPropertySheetModelBuilder final String categoryIdStr = selectedCategoryId.getSelectedKey(state); final Category selectedCategory; - if (Strings.isBlank(categoryIdStr)) { + if (categoryIdStr == null || categoryIdStr.isEmpty()) { selectedCategory = null; } else { final CategoryRepository categoryRepository = CdiUtil. diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java index 5cdf949bf..1c50513b3 100644 --- a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java +++ b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java @@ -43,12 +43,12 @@ import org.libreccm.web.ApplicationType; */ @Module(applicationTypes = { @ApplicationType(name = LoginConstants.LOGIN_APP_TYPE, - description = "Login Application", + descBundle = "com.arsdigita.ui.login.LoginResources", singleton = true, creator = LoginApplicationCreator.class, servlet = LoginServlet.class), @ApplicationType(name = AdminUiConstants.ADMIN_APP_TYPE, - description = "Site-wide admin application", + descBundle = "com.arsdigita.ui.admin.AdminResources", singleton = true, creator = AdminApplicationCreator.class, servlet = AdminServlet.class)}, diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java index 299453279..e2c0d9464 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationManager.java @@ -18,6 +18,10 @@ */ package org.libreccm.web; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.util.Strings; +import org.libreccm.l10n.GlobalizationHelper; import org.libreccm.modules.CcmModule; import org.libreccm.modules.Module; @@ -25,6 +29,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.MissingResourceException; +import java.util.ResourceBundle; import java.util.ServiceLoader; import javax.annotation.PostConstruct; @@ -42,9 +48,15 @@ import javax.servlet.http.HttpServlet; @ApplicationScoped public class ApplicationManager { + private static final Logger LOGGER = LogManager.getLogger( + ApplicationManager.class); + @Inject private EntityManager entityManager; + @Inject + private GlobalizationHelper globalizationHelper; + private Map applicationTypes = new HashMap<>(); @PostConstruct @@ -138,4 +150,27 @@ public class ApplicationManager { } } + public String getApplicationTypeDescription( + final ApplicationType applicationType) { + + final String descBundle; + if (Strings.isBlank(applicationType.descBundle())) { + descBundle = String.join("", applicationType.name(), "Description"); + } else { + descBundle = applicationType.descBundle(); + } + + final ResourceBundle bundle; + try { + bundle = ResourceBundle.getBundle( + descBundle, globalizationHelper.getNegotiatedLocale()); + } catch (MissingResourceException ex) { + LOGGER.warn("Failed to find resource bundle '{}'.", ex); + + return ""; + } + + return bundle.getString(applicationType.descKey()); + } + } diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java index e98c88588..e8a19a4fe 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java @@ -18,8 +18,10 @@ */ package org.libreccm.web; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; + import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -39,15 +41,29 @@ public @interface ApplicationType { String name(); /** - * A description of the application type. + * (Optional) Fully qualified name of a resource bundle containing a + * localised descKey of the application type. If not provided the + * {@link ApplicationManager} will use the default value which is the name + * of the descKey provided by {@link #name()} concatenated with + * {@code Description}. For example for an application with the name + * {@code org.example.ExampleApp} the default descKey bundle is + * {@code org.example.ExampleAppDescription}. * * @return */ - String description(); + String descBundle() default ""; + + /** + * The (optional) key for the description of the application in its resource + * bundle. Defaults to {@code application_title} + * + * @return + */ + String descKey() default "application_title"; /** * The application type class. Default is {@link CcmApplication}. Most - * application types will no need to extend these class and can leave the + * application types will no need to extend these class and can leave the * default has it is. * * @return @@ -56,34 +72,38 @@ public @interface ApplicationType { /** * Is the application type a singleton application? - * - * @return + * + * @return */ boolean singleton() default false; /** * Path to the primary Servlet of the application type. If the servlet class * is provided and is annotated with the {@link WebServlet} annotation the - * path can be determined from the annotation. - * - * @return + * path can be determined from the annotation. + * + * @return */ String servletPath() default ""; /** * The primary servlet class of the application type. - * - * @return + * + * @return */ Class servlet() default HttpServlet.class; /** - * The implementation of the {@link ApplicationCreator} interface for the + * The implementation of the {@link ApplicationCreator} interface for the * application type which is used to create the objects representing the * application instances. - * - * @return + * + * @return */ Class creator(); + + //Class appTypePane default com.arsdigita.ui.admin.applications.DefaultApplicationTypePane.class; + + } diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties index b56dcccb8..0e3a12968 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties @@ -526,3 +526,4 @@ ui.admin.categories.category.name.enabled=Enabled? ui.admin.categories.category.name.visible=Visible? ui.admin.categories.category.name.abstract=Abstract? ui.admin.appliations.type_pane.info_sheet=About +application_title=Administration diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties index 9d433f461..ecb2629bc 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties @@ -529,3 +529,4 @@ ui.admin.categories.category.name.enabled=Aktiviert? ui.admin.categories.category.name.visible=Sichtbar? ui.admin.categories.category.name.abstract=Abstrakt? ui.admin.appliations.type_pane.info_sheet=\u00dcber +application_title=Administration diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties index 676270c84..bfe3297c2 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties @@ -522,3 +522,4 @@ ui.admin.categories.category.name.enabled=Enabled? ui.admin.categories.category.name.visible=Visible? ui.admin.categories.category.name.abstract=Abstract? ui.admin.appliations.type_pane.info_sheet=About +application_title=Administration diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties index 2091ee0bb..1f9aa601b 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties @@ -513,3 +513,4 @@ ui.admin.categories.category.name.enabled=Enabled? ui.admin.categories.category.name.visible=Visible? ui.admin.categories.category.name.abstract=Abstract? ui.admin.appliations.type_pane.info_sheet=About +application_title=Administration diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources.properties b/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources.properties index 7c312edf3..ec6a39638 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources.properties @@ -116,3 +116,4 @@ login.form.new_user.error.familyname.too_long=The family name can't be longer th login.form.new_user.error.email.is_blank=The Email address can't be empty. login.form.new_user.error.email.too_long=The Email address can't be longer than 256 characters. login.form.new_user.error.password.is_blank=The password can't be blank. +application_title=Login diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_de.properties b/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_de.properties index 98ae1f698..0322d1f99 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_de.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_de.properties @@ -116,3 +116,4 @@ login.form.new_user.error.familyname.too_long=The family name can't be longer th login.form.new_user.error.email.is_blank=The Email address can't be empty. login.form.new_user.error.email.too_long=The Email address can't be longer than 256 characters. login.form.new_user.error.password.is_blank=The password can't be blank. +application_title=Login diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_en.properties b/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_en.properties index 8fe3516d5..6fd52e220 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_en.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_en.properties @@ -116,3 +116,4 @@ login.form.new_user.error.familyname.too_long=Der Familienname darf nicht l\u00e login.form.new_user.error.email.is_blank=Die E-Mail-Adresse darf nicht leer sein. login.form.new_user.error.email.too_long=Die E-Mail-Adresse darf nicht l\u00e4nger als 256 Zeichen sein. login.form.new_user.error.password.is_blank=Das Passwort darf nicht leer sein. +application_title=Anmeldung diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_fr.properties b/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_fr.properties index c78c5dbf6..7d5e1ad07 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_fr.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/login/LoginResources_fr.properties @@ -116,3 +116,4 @@ login.form.new_user.error.familyname.too_long=The family name can't be longer th login.form.new_user.error.email.is_blank=The Email address can't be empty. login.form.new_user.error.email.too_long=The Email address can't be longer than 256 characters. login.form.new_user.error.password.is_blank=The password can't be blank. +application_title=Login diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/categorization/CategoryManagerTest/after-add-subcategory.yml b/ccm-core/src/test/resources/datasets/org/libreccm/categorization/CategoryManagerTest/after-add-subcategory.yml index 36beea2c3..e9c3554af 100644 --- a/ccm-core/src/test/resources/datasets/org/libreccm/categorization/CategoryManagerTest/after-add-subcategory.yml +++ b/ccm-core/src/test/resources/datasets/org/libreccm/categorization/CategoryManagerTest/after-add-subcategory.yml @@ -55,7 +55,7 @@ ccm_core.categories: enabled: true visible: true abstract_category: false - category_order: 1 + category_order: 2 ccm_core.category_domains: - object_id: -1000 diff --git a/ccm-core/src/test/resources/datasets/org/libreccm/categorization/CategoryManagerTest/after-create-multiple-categories.yml b/ccm-core/src/test/resources/datasets/org/libreccm/categorization/CategoryManagerTest/after-create-multiple-categories.yml index 1deb3c631..b7d6305a5 100644 --- a/ccm-core/src/test/resources/datasets/org/libreccm/categorization/CategoryManagerTest/after-create-multiple-categories.yml +++ b/ccm-core/src/test/resources/datasets/org/libreccm/categorization/CategoryManagerTest/after-create-multiple-categories.yml @@ -64,7 +64,7 @@ ccm_core.categories: enabled: true visible: true abstract_category: false - category_order: 1 + category_order: 2 - object_id: 2 unique_id: example name: example diff --git a/pom.xml b/pom.xml index c6bbaa026..fc2e3becb 100644 --- a/pom.xml +++ b/pom.xml @@ -272,12 +272,12 @@ org.apache.shiro shiro-core - 1.2.4 + 1.2.5 org.apache.shiro shiro-web - 1.2.4 + 1.2.5