From 4ea04b6244a490e5cda2426bd680597d85ce45f1 Mon Sep 17 00:00:00 2001 From: jensp Date: Thu, 8 Mar 2018 15:17:22 +0000 Subject: [PATCH] CCM NG: Content Section Kategorien Tab nicht aufrufbar wenn kein Kategoriensystem gemappt ist (#2799) behoben git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5336 8810af33-2d31-482b-a856-94f89814c4df --- .../cms/ui/category/CategoryAdminPane.java | 89 +++++++++++++++---- .../ui/category/CategoryTreeModelBuilder.java | 8 +- .../org/librecms/CmsResources.properties | 1 + .../org/librecms/CmsResources_de.properties | 1 + .../org/librecms/CmsResources_fr.properties | 1 + .../categorization/CategoryTreeModelLite.java | 8 +- .../pgsql/V7_0_0_19__add_theme_files.sql | 22 +---- 7 files changed, 89 insertions(+), 41 deletions(-) diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java index 4d992daa2..aa77f47a4 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryAdminPane.java @@ -39,6 +39,7 @@ import com.arsdigita.cms.ui.BaseAdminPane; import com.arsdigita.cms.ui.BaseDeleteForm; import com.arsdigita.cms.ui.BaseTree; import com.arsdigita.cms.ui.VisibilityComponent; +import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.toolbox.ui.ActionGroup; import com.arsdigita.toolbox.ui.Section; import com.arsdigita.xml.Element; @@ -54,6 +55,7 @@ import org.libreccm.categorization.DomainRepository; import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.core.UnexpectedErrorException; import org.libreccm.security.PermissionChecker; +import org.librecms.CmsConstants; import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.privileges.AdminPrivileges; @@ -72,6 +74,8 @@ public final class CategoryAdminPane extends BaseAdminPane { public static final String CONTEXT_SELECTED = "sel_context"; // private static final String DEFAULT_USE_CONTEXT = ""; + private final Label noCategorySystemsLabel; + private final SingleSelectionModel selectedCategorySystem; private final SingleSelectionModel selectedCategory; @@ -156,6 +160,10 @@ public final class CategoryAdminPane extends BaseAdminPane { getAddLink(), getEditLink(), getDeleteLink())); + + noCategorySystemsLabel = new Label(new GlobalizedMessage( + "cms.ui.category.no_category_systems_mapped", + CmsConstants.CMS_BUNDLE)); } @Override @@ -165,6 +173,49 @@ public final class CategoryAdminPane extends BaseAdminPane { //page.addActionListener(new RootListener()); } + @Override + public void generateXML(final PageState state, final Element parent) { + + if (isVisible(state)) { + + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final ContentSection section = CMS.getContext().getContentSection(); + final CategoryAdminController controller = cdiUtil + .findBean(CategoryAdminController.class); + final java.util.List ownerships + = controller + .retrieveDomains(section); + if (ownerships == null || ownerships.isEmpty()) { + final Element panelElem = parent + .newChildElement("bebop:layoutPanel", + BEBOP_XML_NS); + final Element bodyElem = panelElem.newChildElement("bebop:body", + BEBOP_XML_NS); + noCategorySystemsLabel.generateXML(state, bodyElem); + } else { + noCategorySystemsLabel.setVisible(state, false); + super.generateXML(state, parent); + } + } + } + +// @Override +// public boolean isVisible(final PageState state) { +// +// final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); +// final ContentSection section = CMS.getContext().getContentSection(); +// final CategoryAdminController controller = cdiUtil +// .findBean(CategoryAdminController.class); +// final java.util.List ownerships +// = controller +// .retrieveDomains(section); +// +// if (ownerships == null || ownerships.isEmpty()) { +// return false; +// } else { +// return super.isVisible(state); +// } +// } private final class DeleteLink extends ActionLink { private final Label m_alternativeLabel; @@ -176,9 +227,9 @@ public final class CategoryAdminPane extends BaseAdminPane { @Override public void generateXML(final PageState state, final Element parent) { - - if (!isVisible(state)) { - return; + + if (isVisible(state)) { + super.generateXML(state, parent); } //Category cat = m_category.getCategory(state); @@ -188,7 +239,7 @@ public final class CategoryAdminPane extends BaseAdminPane { //if (cat.isRoot() || !cat.getChildren().isEmpty()) { // m_alternativeLabel.generateXML(state, parent); //} else { - super.generateXML(state, parent); +// //} } @@ -228,7 +279,6 @@ public final class CategoryAdminPane extends BaseAdminPane { @Override public final void process(final FormSectionEvent event) - throws FormProcessException { final PageState state = event.getPageState(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); @@ -272,7 +322,7 @@ public final class CategoryAdminPane extends BaseAdminPane { @Override protected final Object initialValue(final PageState state) { - + final String selectedCatetoryIdStr = selectedCategory .getSelectedKey(state); final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); @@ -318,7 +368,7 @@ public final class CategoryAdminPane extends BaseAdminPane { // } // // } - private class UseContextSelectionModel + private class UseContextSelectionModel extends ParameterSingleSelectionModel { public UseContextSelectionModel(final ParameterModel parameterModel) { @@ -334,17 +384,24 @@ public final class CategoryAdminPane extends BaseAdminPane { || val.matches("\\s*")) { final ContentSection section = CMS - .getContext() - .getContentSection(); + .getContext() + .getContentSection(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CategoryAdminController controller = cdiUtil - .findBean(CategoryAdminController.class); - final Domain categorySystem = controller - .retrieveDomains(section).get(0).getDomain(); - val = Long.toString(categorySystem.getObjectId()); - - state.setValue(getStateParameter(), val); - fireStateChanged(state); + .findBean(CategoryAdminController.class); + final java.util.List domainOwnerships + = controller + .retrieveDomains(section); + if (domainOwnerships == null || domainOwnerships.isEmpty()) { + val = null; + } else { + final Domain categorySystem = controller + .retrieveDomains(section).get(0).getDomain(); + val = Long.toString(categorySystem.getObjectId()); + + state.setValue(getStateParameter(), val); + fireStateChanged(state); + } } return val; } diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java index cdece894e..5175a25cb 100755 --- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java +++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/category/CategoryTreeModelBuilder.java @@ -64,13 +64,17 @@ class CategoryTreeModelBuilder extends LockableImpl final Category root; if (selectedCategorySystem.getSelectedKey(state) == null) { - final ContentSection section =CMS.getContext().getContentSection(); + final ContentSection section = CMS.getContext().getContentSection(); final CategoryAdminController controller = cdiUtil .findBean(CategoryAdminController.class); final java.util.List ownerships = controller .retrieveDomains(section); - root = ownerships.get(0).getDomain().getRoot(); + if (ownerships == null || ownerships.isEmpty()) { + root = null; + } else { + root = ownerships.get(0).getDomain().getRoot(); + } } else { final DomainRepository domainRepo = cdiUtil .findBean(DomainRepository.class); diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties index 3e3891186..a32f3d829 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources.properties @@ -527,3 +527,4 @@ cms.ui.permissions.table.privilege.headers.delete_assets=Delete assets cms.ui.permissions.table.privilege.headers.edit_asset= cms.ui.permissions.table.privilege.headers.use_asset=Use assets cms.ui.permissions.table.privilege.headers.view_asset=View assets +cms.ui.category.no_category_systems_mapped=No category systems have been assigned to this Content Section diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties index 3569c3ab2..4c0f4ca0d 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_de.properties @@ -524,3 +524,4 @@ cms.ui.permissions.table.privilege.headers.delete_assets=Assets l\u00f6schen cms.ui.permissions.table.privilege.headers.edit_asset=Assets bearbeiten cms.ui.permissions.table.privilege.headers.use_asset=Assets verwenden cms.ui.permissions.table.privilege.headers.view_asset=Assets ansehen +cms.ui.category.no_category_systems_mapped=Dieser Content Section wurden keine Kategoriensysteme zugeordnet diff --git a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties index 36963154e..6adbaaa14 100644 --- a/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties +++ b/ccm-cms/src/main/resources/org/librecms/CmsResources_fr.properties @@ -486,3 +486,4 @@ cms.ui.permissions.table.privilege.headers.delete_assets=Delete assets cms.ui.permissions.table.privilege.headers.edit_asset=Edit assets cms.ui.permissions.table.privilege.headers.use_asset=Use assets cms.ui.permissions.table.privilege.headers.view_asset=View assets +cms.ui.category.no_category_systems_mapped=No category systems have been assigned to this Content Section diff --git a/ccm-core/src/main/java/org/libreccm/categorization/CategoryTreeModelLite.java b/ccm-core/src/main/java/org/libreccm/categorization/CategoryTreeModelLite.java index 314d2918a..a9da4fbaf 100755 --- a/ccm-core/src/main/java/org/libreccm/categorization/CategoryTreeModelLite.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/CategoryTreeModelLite.java @@ -119,7 +119,7 @@ public class CategoryTreeModelLite implements TreeModel { private TreeNode buildTreeNode(final Category category) { return new CategoryTreeNode(category); } - + private class CategoryTreeNode implements TreeNode { private final Category category; @@ -130,7 +130,11 @@ public class CategoryTreeModelLite implements TreeModel { @Override public Object getKey() { - return category.getObjectId(); + if (category == null) { + return null; + } else { + return category.getObjectId(); + } } @Override diff --git a/ccm-core/src/main/resources/db/migrations/org/libreccm/ccm_core/pgsql/V7_0_0_19__add_theme_files.sql b/ccm-core/src/main/resources/db/migrations/org/libreccm/ccm_core/pgsql/V7_0_0_19__add_theme_files.sql index 6af188aa7..8eabdf3c1 100644 --- a/ccm-core/src/main/resources/db/migrations/org/libreccm/ccm_core/pgsql/V7_0_0_19__add_theme_files.sql +++ b/ccm-core/src/main/resources/db/migrations/org/libreccm/ccm_core/pgsql/V7_0_0_19__add_theme_files.sql @@ -1,6 +1,6 @@ create table CCM_CORE.THEME_DATA_FILES ( CREATION_DATE timestamp, - FILE_DATA blob, + FILE_DATA oid, LAST_MODIFIED timestamp, FILE_SIZE bigint, TYPE varchar(255), @@ -33,26 +33,6 @@ ); - alter table CCM_CORE.THEME_DATA_FILES - add constraint FK630m2y2p7pp487ofowbefrm89 - foreign key (FILE_ID) - references CCM_CORE.THEME_FILES; - - alter table CCM_CORE.theme_directories - add constraint FKrmgyslvw22j87n4cxau5jvsou - foreign key (FILE_ID) - references CCM_CORE.THEME_FILES; - - alter table CCM_CORE.THEME_FILES - add constraint FKfsycb4bt8d0wye7r3n06ekfeu - foreign key (PARENT_DIRECTORY_ID) - references CCM_CORE.theme_directories; - - alter table CCM_CORE.THEMES - add constraint FKlat55c5l3fxbykkibrmv7qi4x - foreign key (ROOT_DIRECTORY_ID) - references CCM_CORE.theme_directories; - alter table CCM_CORE.THEME_DATA_FILES add constraint FK630m2y2p7pp487ofowbefrm89 foreign key (FILE_ID)