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

Former-commit-id: b433a81ae7
pull/2/head
jensp 2018-03-08 15:17:22 +00:00
parent 970d2caae8
commit 8d45e76344
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.BaseDeleteForm;
import com.arsdigita.cms.ui.BaseTree; import com.arsdigita.cms.ui.BaseTree;
import com.arsdigita.cms.ui.VisibilityComponent; import com.arsdigita.cms.ui.VisibilityComponent;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.toolbox.ui.ActionGroup; import com.arsdigita.toolbox.ui.ActionGroup;
import com.arsdigita.toolbox.ui.Section; import com.arsdigita.toolbox.ui.Section;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
@ -54,6 +55,7 @@ import org.libreccm.categorization.DomainRepository;
import org.libreccm.cdi.utils.CdiUtil; import org.libreccm.cdi.utils.CdiUtil;
import org.libreccm.core.UnexpectedErrorException; import org.libreccm.core.UnexpectedErrorException;
import org.libreccm.security.PermissionChecker; import org.libreccm.security.PermissionChecker;
import org.librecms.CmsConstants;
import org.librecms.contentsection.ContentSection; import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.privileges.AdminPrivileges; 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"; public static final String CONTEXT_SELECTED = "sel_context";
// private static final String DEFAULT_USE_CONTEXT = "<default>"; // private static final String DEFAULT_USE_CONTEXT = "<default>";
private final Label noCategorySystemsLabel;
private final SingleSelectionModel<String> selectedCategorySystem; private final SingleSelectionModel<String> selectedCategorySystem;
private final SingleSelectionModel<String> selectedCategory; private final SingleSelectionModel<String> selectedCategory;
@ -156,6 +160,10 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
getAddLink(), getAddLink(),
getEditLink(), getEditLink(),
getDeleteLink())); getDeleteLink()));
noCategorySystemsLabel = new Label(new GlobalizedMessage(
"cms.ui.category.no_category_systems_mapped",
CmsConstants.CMS_BUNDLE));
} }
@Override @Override
@ -165,6 +173,49 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
//page.addActionListener(new RootListener()); //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 class DeleteLink extends ActionLink {
private final Label m_alternativeLabel; private final Label m_alternativeLabel;
@ -177,8 +228,8 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
@Override @Override
public void generateXML(final PageState state, final Element parent) { public void generateXML(final PageState state, final Element parent) {
if (!isVisible(state)) { if (isVisible(state)) {
return; super.generateXML(state, parent);
} }
//Category cat = m_category.getCategory(state); //Category cat = m_category.getCategory(state);
@ -188,7 +239,7 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
//if (cat.isRoot() || !cat.getChildren().isEmpty()) { //if (cat.isRoot() || !cat.getChildren().isEmpty()) {
// m_alternativeLabel.generateXML(state, parent); // m_alternativeLabel.generateXML(state, parent);
//} else { //} else {
super.generateXML(state, parent); //
//} //}
} }
@ -228,7 +279,6 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
@Override @Override
public final void process(final FormSectionEvent event) public final void process(final FormSectionEvent event)
throws FormProcessException { throws FormProcessException {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
@ -339,6 +389,12 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final CategoryAdminController controller = cdiUtil final CategoryAdminController controller = cdiUtil
.findBean(CategoryAdminController.class); .findBean(CategoryAdminController.class);
final java.util.List<DomainOwnership> domainOwnerships
= controller
.retrieveDomains(section);
if (domainOwnerships == null || domainOwnerships.isEmpty()) {
val = null;
} else {
final Domain categorySystem = controller final Domain categorySystem = controller
.retrieveDomains(section).get(0).getDomain(); .retrieveDomains(section).get(0).getDomain();
val = Long.toString(categorySystem.getObjectId()); val = Long.toString(categorySystem.getObjectId());
@ -346,6 +402,7 @@ public final class CategoryAdminPane extends BaseAdminPane<String> {
state.setValue(getStateParameter(), val); state.setValue(getStateParameter(), val);
fireStateChanged(state); fireStateChanged(state);
} }
}
return val; return val;
} }

View File

@ -70,7 +70,11 @@ class CategoryTreeModelBuilder extends LockableImpl
final java.util.List<DomainOwnership> ownerships final java.util.List<DomainOwnership> ownerships
= controller = controller
.retrieveDomains(section); .retrieveDomains(section);
if (ownerships == null || ownerships.isEmpty()) {
root = null;
} else {
root = ownerships.get(0).getDomain().getRoot(); root = ownerships.get(0).getDomain().getRoot();
}
} else { } else {
final DomainRepository domainRepo = cdiUtil final DomainRepository domainRepo = cdiUtil
.findBean(DomainRepository.class); .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.edit_asset=
cms.ui.permissions.table.privilege.headers.use_asset=Use assets cms.ui.permissions.table.privilege.headers.use_asset=Use assets
cms.ui.permissions.table.privilege.headers.view_asset=View 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.edit_asset=Assets bearbeiten
cms.ui.permissions.table.privilege.headers.use_asset=Assets verwenden cms.ui.permissions.table.privilege.headers.use_asset=Assets verwenden
cms.ui.permissions.table.privilege.headers.view_asset=Assets ansehen 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.edit_asset=Edit assets
cms.ui.permissions.table.privilege.headers.use_asset=Use assets cms.ui.permissions.table.privilege.headers.use_asset=Use assets
cms.ui.permissions.table.privilege.headers.view_asset=View 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 @Override
public Object getKey() { public Object getKey() {
if (category == null) {
return null;
} else {
return category.getObjectId(); return category.getObjectId();
} }
}
@Override @Override
public Object getElement() { public Object getElement() {

View File

@ -1,6 +1,6 @@
create table CCM_CORE.THEME_DATA_FILES ( create table CCM_CORE.THEME_DATA_FILES (
CREATION_DATE timestamp, CREATION_DATE timestamp,
FILE_DATA blob, FILE_DATA oid,
LAST_MODIFIED timestamp, LAST_MODIFIED timestamp,
FILE_SIZE bigint, FILE_SIZE bigint,
TYPE varchar(255), 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 alter table CCM_CORE.THEME_DATA_FILES
add constraint FK630m2y2p7pp487ofowbefrm89 add constraint FK630m2y2p7pp487ofowbefrm89
foreign key (FILE_ID) foreign key (FILE_ID)