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
jensp 2018-03-08 15:17:22 +00:00
parent 8ef7fdd42f
commit b433a81ae7
7 changed files with 89 additions and 41 deletions

View File

@ -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<String> {
public static final String CONTEXT_SELECTED = "sel_context";
// private static final String DEFAULT_USE_CONTEXT = "<default>";
private final Label noCategorySystemsLabel;
private final SingleSelectionModel<String> selectedCategorySystem;
private final SingleSelectionModel<String> selectedCategory;
@ -156,6 +160,10 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
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<String> {
//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<DomainOwnership> 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<DomainOwnership> 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;
@ -177,8 +228,8 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
@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<String> {
//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<String> {
@Override
public final void process(final FormSectionEvent event)
throws FormProcessException {
final PageState state = event.getPageState();
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
@ -339,6 +389,12 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryAdminController controller = cdiUtil
.findBean(CategoryAdminController.class);
final java.util.List<DomainOwnership> 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());
@ -346,6 +402,7 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
state.setValue(getStateParameter(), val);
fireStateChanged(state);
}
}
return val;
}

View File

@ -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<DomainOwnership> ownerships
= controller
.retrieveDomains(section);
if (ownerships == null || ownerships.isEmpty()) {
root = null;
} else {
root = ownerships.get(0).getDomain().getRoot();
}
} else {
final DomainRepository domainRepo = cdiUtil
.findBean(DomainRepository.class);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -130,8 +130,12 @@ public class CategoryTreeModelLite implements TreeModel {
@Override
public Object getKey() {
if (category == null) {
return null;
} else {
return category.getObjectId();
}
}
@Override
public Object getElement() {

View File

@ -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)