Adds more implementations for the category part of the cms frontend
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4627 8810af33-2d31-482b-a856-94f89814c4df
parent
96b150582c
commit
0bf76b01e2
|
|
@ -39,30 +39,39 @@ import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
import com.arsdigita.bebop.util.GlobalizationUtil;
|
import com.arsdigita.bebop.util.GlobalizationUtil;
|
||||||
import com.arsdigita.cms.ui.BaseItemPane;
|
import com.arsdigita.cms.ui.BaseItemPane;
|
||||||
import com.arsdigita.cms.ui.CMSForm;
|
import com.arsdigita.cms.ui.CMSForm;
|
||||||
|
import com.arsdigita.cms.ui.ContentItemPage;
|
||||||
import com.arsdigita.cms.ui.VisibilityComponent;
|
import com.arsdigita.cms.ui.VisibilityComponent;
|
||||||
|
import com.arsdigita.cms.ui.templates.CategoryTemplates;
|
||||||
|
import com.arsdigita.kernel.KernelConfig;
|
||||||
import com.arsdigita.kernel.ui.ACSObjectSelectionModel;
|
import com.arsdigita.kernel.ui.ACSObjectSelectionModel;
|
||||||
import com.arsdigita.toolbox.ui.ActionGroup;
|
import com.arsdigita.toolbox.ui.ActionGroup;
|
||||||
|
import com.arsdigita.toolbox.ui.Property;
|
||||||
import com.arsdigita.toolbox.ui.PropertyList;
|
import com.arsdigita.toolbox.ui.PropertyList;
|
||||||
import com.arsdigita.toolbox.ui.Section;
|
import com.arsdigita.toolbox.ui.Section;
|
||||||
import com.arsdigita.util.Assert;
|
import com.arsdigita.util.Assert;
|
||||||
import com.arsdigita.web.Web;
|
import com.arsdigita.web.Web;
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
|
|
||||||
|
import java.awt.image.Kernel;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.libreccm.categorization.Category;
|
import org.libreccm.categorization.Category;
|
||||||
import org.libreccm.categorization.CategoryManager;
|
import org.libreccm.categorization.CategoryManager;
|
||||||
import org.libreccm.categorization.CategoryRepository;
|
import org.libreccm.categorization.CategoryRepository;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
|
import org.libreccm.configuration.ConfigurationManager;
|
||||||
|
import org.libreccm.core.CcmObject;
|
||||||
import org.libreccm.security.Permission;
|
import org.libreccm.security.Permission;
|
||||||
import org.libreccm.security.PermissionChecker;
|
import org.libreccm.security.PermissionChecker;
|
||||||
import org.libreccm.security.User;
|
import org.libreccm.security.User;
|
||||||
import org.librecms.contentsection.ContentItem;
|
import org.librecms.contentsection.ContentItem;
|
||||||
|
import org.librecms.contentsection.ContentItemManager;
|
||||||
import org.librecms.contentsection.privileges.AdminPrivileges;
|
import org.librecms.contentsection.privileges.AdminPrivileges;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -70,11 +79,12 @@ import org.librecms.contentsection.privileges.AdminPrivileges;
|
||||||
*
|
*
|
||||||
* @author Justin Ross <jross@redhat.com>
|
* @author Justin Ross <jross@redhat.com>
|
||||||
* @author Sören Bernstein <quasi@quasiweb.de>
|
* @author Sören Bernstein <quasi@quasiweb.de>
|
||||||
* @version $Id: CategoryItemPane.java 1967 2009-08-29 21:05:51Z pboy $
|
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
||||||
*/
|
*/
|
||||||
class CategoryItemPane extends BaseItemPane {
|
class CategoryItemPane extends BaseItemPane {
|
||||||
|
|
||||||
private static final Logger s_log = Logger.getLogger(CategoryItemPane.class);
|
private static final Logger LOGGER = LogManager.getLogger(
|
||||||
|
CategoryItemPane.class);
|
||||||
private final SingleSelectionModel m_model;
|
private final SingleSelectionModel m_model;
|
||||||
private final CategoryRequestLocal m_category;
|
private final CategoryRequestLocal m_category;
|
||||||
private final SimpleContainer m_detailPane;
|
private final SimpleContainer m_detailPane;
|
||||||
|
|
@ -119,8 +129,8 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
|
|
||||||
//Move link
|
//Move link
|
||||||
final ActionLink moveLink = new MoveLink(new Label(gz("cms.ui.category.move")));
|
final ActionLink moveLink = new MoveLink(new Label(gz("cms.ui.category.move")));
|
||||||
final Form moveForm = new CategoryMoveForm(m_category, contextModel);
|
//final Form moveForm = new CategoryMoveForm(m_category, contextModel);
|
||||||
add(moveForm);
|
//add(moveForm);
|
||||||
|
|
||||||
ViewItemLink viewIndexLink = new ViewItemLink(new Label(gz(
|
ViewItemLink viewIndexLink = new ViewItemLink(new Label(gz(
|
||||||
"cms.ui.category.view_index_item")), "");
|
"cms.ui.category.view_index_item")), "");
|
||||||
|
|
@ -138,27 +148,32 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
|
|
||||||
// Quasimodo: BEGIN
|
// Quasimodo: BEGIN
|
||||||
// Localizations
|
// Localizations
|
||||||
/*
|
|
||||||
ActionLink addCategoryLocalizationLink = new ActionLink(new Label(gz( TODO
|
ActionLink addCategoryLocalizationLink = new ActionLink(new Label(gz(
|
||||||
"cms.ui.category.localization_add"))) {
|
"cms.ui.category.localization_add"))) {
|
||||||
@Override
|
@Override
|
||||||
public boolean isVisible(PageState state) {
|
public boolean isVisible(PageState state) {
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final ConfigurationManager manager = cdiUtil.findBean(
|
||||||
|
ConfigurationManager.class);
|
||||||
|
final KernelConfig config = manager.findConfiguration(
|
||||||
|
KernelConfig.class);
|
||||||
|
final PermissionChecker permissionChecker =
|
||||||
|
cdiUtil.findBean(PermissionChecker.class);
|
||||||
// Only show addLanguage button, if there are langauges to add
|
// Only show addLanguage button, if there are langauges to add
|
||||||
int countSupportedLanguages = (Kernel.getConfig()).getSupportedLanguagesTokenizer()
|
int countSupportedLanguages = config.getSupportedLanguages().size();
|
||||||
.countTokens();
|
final Category category = m_category.getCategory(state);
|
||||||
long countLanguages =
|
if (permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES,
|
||||||
m_category.getCategory(state)
|
category)) {
|
||||||
.getCategoryLocalizationCollection().size();
|
if (category.getTitle().getAvailableLocales().size() < countSupportedLanguages
|
||||||
|
|| category.getDescription().getAvailableLocales().size() < countSupportedLanguages) {
|
||||||
if (m_category.getCategory(state).canEdit()
|
|
||||||
&& countLanguages < countSupportedLanguages) {
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
};*/
|
};
|
||||||
/*
|
/*
|
||||||
CategoryLocalizationAddForm addCategoryLocalizationForm =
|
CategoryLocalizationAddForm addCategoryLocalizationForm =
|
||||||
new CategoryLocalizationAddForm(m_category);
|
new CategoryLocalizationAddForm(m_category);
|
||||||
|
|
@ -191,8 +206,8 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
connect(indexLink, indexForm);
|
connect(indexLink, indexForm);
|
||||||
connect(indexForm);
|
connect(indexForm);
|
||||||
|
|
||||||
connect(moveLink, moveForm);
|
//connect(moveLink, moveForm);
|
||||||
connect(moveForm);
|
//connect(moveForm);
|
||||||
|
|
||||||
connect(orderItemsLink, orderItemsForm);
|
connect(orderItemsLink, orderItemsForm);
|
||||||
connect(orderItemsForm);
|
connect(orderItemsForm);
|
||||||
|
|
@ -315,7 +330,7 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
// Quasimodo: BEGIN
|
// Quasimodo: BEGIN
|
||||||
// CategoryLocalizationSection
|
// CategoryLocalizationSection
|
||||||
private class CategoryLocalizationSection extends Section {
|
private class CategoryLocalizationSection extends Section {
|
||||||
|
|
@ -349,7 +364,7 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
page.addComponentStateParam(m_editCategoryLocalizationForm, m_catLocaleParam);
|
page.addComponentStateParam(m_editCategoryLocalizationForm, m_catLocaleParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
}*/
|
}
|
||||||
|
|
||||||
private class SubcategorySection extends Section {
|
private class SubcategorySection extends Section {
|
||||||
|
|
||||||
|
|
@ -379,7 +394,7 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean isVisible(final PageState state) {
|
public final boolean isVisible(final PageState state) {
|
||||||
return m_category.getCategory(state).getParent().isPresent();
|
return m_category.getCategory(state).getParentCategory().isVisible();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -392,7 +407,7 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
final ActionGroup group = new ActionGroup();
|
final ActionGroup group = new ActionGroup();
|
||||||
setBody(group);
|
setBody(group);
|
||||||
|
|
||||||
//group.setSubject(new CategoryTemplates(m_category)); TODO
|
group.setSubject(new CategoryTemplates(m_category));
|
||||||
// XXX secvis
|
// XXX secvis
|
||||||
//group.addAction(link);
|
//group.addAction(link);
|
||||||
}
|
}
|
||||||
|
|
@ -406,117 +421,117 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class);
|
final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class);
|
||||||
Category cat = m_category.getCategory(ps);
|
Category cat = m_category.getCategory(ps);
|
||||||
return cat.getParent().isPresent() && permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES);
|
return cat.getParentCategory() != null && permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES);
|
||||||
}
|
}
|
||||||
|
|
||||||
PermissionsSection() {
|
PermissionsSection() {
|
||||||
setHeading(new Label(gz("cms.ui.permissions")));
|
setHeading(new Label(gz("cms.ui.permissions")));
|
||||||
/*
|
|
||||||
final ActionGroup group = new ActionGroup();
|
final ActionGroup group = new ActionGroup();
|
||||||
setBody(group);
|
setBody(group);
|
||||||
|
|
||||||
PrivilegeDescriptor[] privs = new PrivilegeDescriptor[]{
|
// PrivilegeDescriptor[] privs = new PrivilegeDescriptor[]{
|
||||||
PrivilegeDescriptor.EDIT,
|
// PrivilegeDescriptor.EDIT,
|
||||||
Category.MAP_DESCRIPTOR,
|
// Category.MAP_DESCRIPTOR,
|
||||||
PrivilegeDescriptor.DELETE,
|
// PrivilegeDescriptor.DELETE,
|
||||||
PrivilegeDescriptor.ADMIN
|
// PrivilegeDescriptor.ADMIN
|
||||||
};
|
// };
|
||||||
|
//
|
||||||
HashMap privMap = new HashMap();
|
// HashMap privMap = new HashMap();
|
||||||
privMap.put("edit", "Edit");
|
// privMap.put("edit", "Edit");
|
||||||
privMap.put("delete", "Delete");
|
// privMap.put("delete", "Delete");
|
||||||
privMap.put(Category.MAP_DESCRIPTOR.getName(), "Categorize Items");
|
// privMap.put(Category.MAP_DESCRIPTOR.getName(), "Categorize Items");
|
||||||
privMap.put("admin", "Admin");
|
// privMap.put("admin", "Admin");
|
||||||
|
//
|
||||||
final CMSPermissionsPane permPane = new CMSPermissionsPane(privs, privMap,
|
// final CMSPermissionsPane permPane = new CMSPermissionsPane(privs, privMap,
|
||||||
new ACSObjectSelectionModel(
|
// new ACSObjectSelectionModel(
|
||||||
m_model)) {
|
// m_model)) {
|
||||||
@Override
|
// @Override
|
||||||
public void showAdmin(PageState ps) {
|
// public void showAdmin(PageState ps) {
|
||||||
Assert.exists(m_model.getSelectedKey(ps));
|
// Assert.exists(m_model.getSelectedKey(ps));
|
||||||
|
//
|
||||||
super.showAdmin(ps);
|
// super.showAdmin(ps);
|
||||||
getAdminListingPanel().setVisible(ps, false);
|
// getAdminListingPanel().setVisible(ps, false);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
};
|
// };
|
||||||
|
//
|
||||||
final ActionLink restoreDefault = new ActionLink(new Label(gz(
|
// final ActionLink restoreDefault = new ActionLink(new Label(gz(
|
||||||
"cms.ui.restore_default_permissions"))) {
|
// "cms.ui.restore_default_permissions"))) {
|
||||||
@Override
|
// @Override
|
||||||
public boolean isVisible(PageState ps) {
|
// public boolean isVisible(PageState ps) {
|
||||||
Category cat = m_category.getCategory(ps);
|
// Category cat = m_category.getCategory(ps);
|
||||||
return PermissionService.getContext(cat) == null;
|
// return PermissionService.getContext(cat) == null;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
};
|
// };
|
||||||
|
//
|
||||||
final ActionLink useCustom = new ActionLink(new Label(gz(
|
// final ActionLink useCustom = new ActionLink(new Label(gz(
|
||||||
"cms.ui.use_custom_permissions"))) {
|
// "cms.ui.use_custom_permissions"))) {
|
||||||
@Override
|
// @Override
|
||||||
public boolean isVisible(PageState ps) {
|
// public boolean isVisible(PageState ps) {
|
||||||
Category cat = m_category.getCategory(ps);
|
// Category cat = m_category.getCategory(ps);
|
||||||
return PermissionService.getContext(cat) != null;
|
// return PermissionService.getContext(cat) != null;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
};
|
// };
|
||||||
|
//
|
||||||
ActionListener al = new ActionListener() {
|
// ActionListener al = new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent event) {
|
// public void actionPerformed(ActionEvent event) {
|
||||||
PageState state = event.getPageState();
|
// PageState state = event.getPageState();
|
||||||
// if this is the root then we cannot revert to anything
|
// // if this is the root then we cannot revert to anything
|
||||||
// since there is not a parent
|
// // since there is not a parent
|
||||||
Category cat = m_category.getCategory(state);
|
// Category cat = m_category.getCategory(state);
|
||||||
if (!cat.canAdmin()) {
|
// if (!cat.canAdmin()) {
|
||||||
throw new com.arsdigita.cms.dispatcher.AccessDeniedException();
|
// throw new com.arsdigita.cms.dispatcher.AccessDeniedException();
|
||||||
}
|
// }
|
||||||
DataObject context = PermissionService.getContext(cat);
|
// DataObject context = PermissionService.getContext(cat);
|
||||||
if (context != null) {
|
// if (context != null) {
|
||||||
PermissionService.clonePermissions(cat);
|
// PermissionService.clonePermissions(cat);
|
||||||
} else {
|
// } else {
|
||||||
ACSObject parent;
|
// ACSObject parent;
|
||||||
try {
|
// try {
|
||||||
parent = cat.getDefaultParentCategory();
|
// parent = cat.getDefaultParentCategory();
|
||||||
} catch (CategoryNotFoundException ce) {
|
// } catch (CategoryNotFoundException ce) {
|
||||||
throw new IllegalStateException(
|
// throw new IllegalStateException(
|
||||||
"link shouldn't exist for root categories");
|
// "link shouldn't exist for root categories");
|
||||||
}
|
// }
|
||||||
PermissionService.setContext(cat, parent);
|
// PermissionService.setContext(cat, parent);
|
||||||
|
//
|
||||||
// revoke all direct permissions so category will only
|
// // revoke all direct permissions so category will only
|
||||||
// have inherited permissions
|
// // have inherited permissions
|
||||||
ObjectPermissionCollection perms =
|
// ObjectPermissionCollection perms =
|
||||||
PermissionService.getDirectGrantedPermissions(
|
// PermissionService.getDirectGrantedPermissions(
|
||||||
cat.getOID());
|
// cat.getOID());
|
||||||
while (perms.next()) {
|
// while (perms.next()) {
|
||||||
PermissionService.revokePermission(
|
// PermissionService.revokePermission(
|
||||||
new PermissionDescriptor(
|
// new PermissionDescriptor(
|
||||||
perms.getPrivilege(), cat.getOID(),
|
// perms.getPrivilege(), cat.getOID(),
|
||||||
perms.getGranteeOID()));
|
// perms.getGranteeOID()));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
permPane.reset(state);
|
// permPane.reset(state);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
restoreDefault.addActionListener(al);
|
// restoreDefault.addActionListener(al);
|
||||||
useCustom.addActionListener(al);
|
// useCustom.addActionListener(al);
|
||||||
|
//
|
||||||
SimpleContainer links = new SimpleContainer();
|
// SimpleContainer links = new SimpleContainer();
|
||||||
links.add(restoreDefault);
|
// links.add(restoreDefault);
|
||||||
links.add(useCustom);
|
// links.add(useCustom);
|
||||||
|
//
|
||||||
group.setSubject(permPane);
|
// group.setSubject(permPane);
|
||||||
group.addAction(links);
|
// group.addAction(links);
|
||||||
|
//
|
||||||
m_model.addChangeListener(new ChangeListener() {
|
// m_model.addChangeListener(new ChangeListener() {
|
||||||
public void stateChanged(ChangeEvent e) {
|
// public void stateChanged(ChangeEvent e) {
|
||||||
PageState ps = e.getPageState();
|
// PageState ps = e.getPageState();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
});
|
// });
|
||||||
*/
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -588,17 +603,19 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
final CategoryManager manager = cdiUtil.findBean(CategoryManager.class);
|
final CategoryManager manager = cdiUtil.findBean(CategoryManager.class);
|
||||||
final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class);
|
final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class);
|
||||||
|
final ContentItemManager contentItemManager =
|
||||||
|
cdiUtil.findBean(ContentItemManager.class);
|
||||||
|
|
||||||
|
Optional<CcmObject> indexItem = manager.getIndexObject(m_category.getCategory(state));
|
||||||
boolean canEdit = false;
|
|
||||||
Optional<ContentItem> indexItem = manager.getIndexObject(m_category.getCategory(state);
|
|
||||||
if (!indexItem.isPresent()) {
|
if (!indexItem.isPresent()) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
if (!permissionChecker.isPermitted("", indexItem.get())) {
|
if (!permissionChecker.isPermitted("", indexItem.get())) {
|
||||||
return "";
|
return "";
|
||||||
} else {
|
} else {
|
||||||
BigDecimal draftID = indexItem.getDraftVersion().getID();
|
Long draftID = contentItemManager
|
||||||
|
.getDraftVersion((ContentItem) indexItem.get(), ContentItem.class)
|
||||||
|
.getObjectId();
|
||||||
return "item.jsp?item_id=" + draftID + "&set_tab="
|
return "item.jsp?item_id=" + draftID + "&set_tab="
|
||||||
+ ContentItemPage.AUTHORING_TAB;
|
+ ContentItemPage.AUTHORING_TAB;
|
||||||
}
|
}
|
||||||
|
|
@ -614,14 +631,21 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean isVisible(PageState state) {
|
public boolean isVisible(PageState state) {
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final CategoryManager manager = cdiUtil.findBean(CategoryManager.class);
|
||||||
|
final ContentItemManager contentItemManager =
|
||||||
|
cdiUtil.findBean(ContentItemManager.class);
|
||||||
|
final PermissionChecker permissionChecker =
|
||||||
|
cdiUtil.findBean(PermissionChecker.class);
|
||||||
if (!super.isVisible(state)) {
|
if (!super.isVisible(state)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ACSObject indexItem = m_category.getCategory(state).getDirectIndexObject();
|
Optional<CcmObject> indexItem = manager.getIndexObject(m_category.getCategory(state));
|
||||||
if (indexItem == null) {
|
if (!indexItem.isPresent()) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return isItemEditable((ContentItem) indexItem, state);
|
return permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES, indexItem.get());
|
||||||
|
//return isItemEditable((ContentItem) indexItem, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -642,7 +666,7 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
}
|
}
|
||||||
|
|
||||||
final Category category = m_category.getCategory(state);
|
final Category category = m_category.getCategory(state);
|
||||||
if (!category.getParent().isPresent()) {
|
if (category.getParentCategory() == null) {
|
||||||
alternativeLabel.generateXML(state, parent);
|
alternativeLabel.generateXML(state, parent);
|
||||||
} else {
|
} else {
|
||||||
super.generateXML(state, parent);
|
super.generateXML(state, parent);
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package com.arsdigita.cms.ui.category;
|
|
||||||
|
|
||||||
import com.arsdigita.bebop.list.ListModel;
|
|
||||||
import com.arsdigita.categorization.Category;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A {@link ListModel} that iterates over categories via an iterator
|
|
||||||
* @version $Id: CategoryIteratorListModel.java 2090 2010-04-17 08:04:14Z pboy $
|
|
||||||
*/
|
|
||||||
public class CategoryIteratorListModel implements ListModel {
|
|
||||||
|
|
||||||
private Iterator m_iter;
|
|
||||||
private Category m_cat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Construct a new <code>CategoryIteratorListModel</code>
|
|
||||||
*
|
|
||||||
* @param iter an {@link Iterator} over all the categories
|
|
||||||
* which this model will supply
|
|
||||||
*/
|
|
||||||
public CategoryIteratorListModel(Iterator iter) {
|
|
||||||
m_iter = iter;
|
|
||||||
m_cat = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean next() {
|
|
||||||
if(m_iter.hasNext()) {
|
|
||||||
m_cat = (Category)m_iter.next();
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getElement() {
|
|
||||||
return m_cat.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKey() {
|
|
||||||
return m_cat.getID().toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -31,12 +31,18 @@ import com.arsdigita.bebop.table.TableColumn;
|
||||||
import com.arsdigita.bebop.table.TableColumnModel;
|
import com.arsdigita.bebop.table.TableColumnModel;
|
||||||
import com.arsdigita.bebop.table.TableModel;
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
import com.arsdigita.bebop.table.TableModelBuilder;
|
import com.arsdigita.bebop.table.TableModelBuilder;
|
||||||
import com.arsdigita.categorization.Category;
|
import com.arsdigita.bebop.util.GlobalizationUtil;
|
||||||
import com.arsdigita.categorization.CategoryLocalization;
|
|
||||||
import com.arsdigita.categorization.CategoryLocalizationCollection;
|
|
||||||
import com.arsdigita.cms.util.GlobalizationUtil;
|
|
||||||
import com.arsdigita.util.LockableImpl;
|
import com.arsdigita.util.LockableImpl;
|
||||||
|
import org.libreccm.categorization.Category;
|
||||||
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
|
import org.libreccm.l10n.LocalizedString;
|
||||||
|
import org.libreccm.security.PermissionChecker;
|
||||||
|
import org.librecms.contentsection.privileges.AdminPrivileges;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -46,6 +52,7 @@ import java.util.Locale;
|
||||||
* order to present forms for managing the multi-language categories.
|
* order to present forms for managing the multi-language categories.
|
||||||
*
|
*
|
||||||
* @author Sören Bernstein <quasi@quasiweb.de>
|
* @author Sören Bernstein <quasi@quasiweb.de>
|
||||||
|
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
||||||
*/
|
*/
|
||||||
public class CategoryLocalizationTable extends Table implements TableActionListener {
|
public class CategoryLocalizationTable extends Table implements TableActionListener {
|
||||||
|
|
||||||
|
|
@ -103,7 +110,7 @@ public class CategoryLocalizationTable extends Table implements TableActionListe
|
||||||
public TableModel makeModel(Table table, PageState state) {
|
public TableModel makeModel(Table table, PageState state) {
|
||||||
final Category category = m_category.getCategory(state);
|
final Category category = m_category.getCategory(state);
|
||||||
|
|
||||||
if (category != null && category.hasLocalizations()) {
|
if (category != null) {
|
||||||
return new CategoryLocalizationTableModel(table, state, category);
|
return new CategoryLocalizationTableModel(table, state, category);
|
||||||
} else {
|
} else {
|
||||||
return Table.EMPTY_MODEL;
|
return Table.EMPTY_MODEL;
|
||||||
|
|
@ -119,12 +126,14 @@ public class CategoryLocalizationTable extends Table implements TableActionListe
|
||||||
|
|
||||||
final private int MAX_DESC_LENGTH = 25;
|
final private int MAX_DESC_LENGTH = 25;
|
||||||
private Table m_table;
|
private Table m_table;
|
||||||
private CategoryLocalizationCollection m_categoryLocalizations;
|
private ArrayList<LocalizedString> localizedStringCollection;
|
||||||
private CategoryLocalization m_categoryLocalization;
|
private LocalizedString m_categoryLocalization;
|
||||||
|
|
||||||
private CategoryLocalizationTableModel(Table t, PageState ps, Category category) {
|
private CategoryLocalizationTableModel(Table t, PageState ps, Category category) {
|
||||||
m_table = t;
|
m_table = t;
|
||||||
m_categoryLocalizations = new CategoryLocalizationCollection(category);
|
localizedStringCollection = new ArrayList<>();
|
||||||
|
localizedStringCollection.add(category.getTitle());
|
||||||
|
localizedStringCollection.add(category.getDescription());
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getColumnCount() {
|
public int getColumnCount() {
|
||||||
|
|
@ -138,16 +147,16 @@ public class CategoryLocalizationTable extends Table implements TableActionListe
|
||||||
* into m_categoryLocalization class variable.
|
* into m_categoryLocalization class variable.
|
||||||
*/
|
*/
|
||||||
public boolean nextRow() {
|
public boolean nextRow() {
|
||||||
|
|
||||||
if (m_categoryLocalizations != null && m_categoryLocalizations.next()) {
|
|
||||||
m_categoryLocalization = m_categoryLocalizations.getCategoryLocalization();
|
|
||||||
return true;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
// if (m_categoryLocalizations != null && m_categoryLocalizations.next()) {
|
||||||
}
|
// m_categoryLocalization = m_categoryLocalizations.getCategoryLocalization();
|
||||||
|
// return true;
|
||||||
|
//
|
||||||
|
// } else {
|
||||||
|
//
|
||||||
|
// return false;
|
||||||
|
//
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -156,25 +165,26 @@ public class CategoryLocalizationTable extends Table implements TableActionListe
|
||||||
* @see com.arsdigita.bebop.table.TableModel#getElementAt(int)
|
* @see com.arsdigita.bebop.table.TableModel#getElementAt(int)
|
||||||
*/
|
*/
|
||||||
public Object getElementAt(int columnIndex) {
|
public Object getElementAt(int columnIndex) {
|
||||||
switch (columnIndex) {
|
|
||||||
case 0:
|
|
||||||
Locale clLocale = new Locale(m_categoryLocalization.getLocale());
|
|
||||||
return clLocale.getDisplayLanguage(/*Locale*/);
|
|
||||||
case 1:
|
|
||||||
return m_categoryLocalization.getName();
|
|
||||||
case 2:
|
|
||||||
String desc = m_categoryLocalization.getDescription();
|
|
||||||
if (desc != null && desc.length() > MAX_DESC_LENGTH) {
|
|
||||||
desc = desc.substring(MAX_DESC_LENGTH - 3).concat("...");
|
|
||||||
}
|
|
||||||
return desc;
|
|
||||||
case 3:
|
|
||||||
return m_categoryLocalization.getURL();
|
|
||||||
case 4:
|
|
||||||
return GlobalizationUtil.globalize("cms.ui.delete").localize();
|
|
||||||
default:
|
|
||||||
return null;
|
return null;
|
||||||
}
|
// switch (columnIndex) {
|
||||||
|
// case 0:
|
||||||
|
// Locale clLocale = new Locale(m_categoryLocalization.getLocale());
|
||||||
|
// return clLocale.getDisplayLanguage(/*Locale*/);
|
||||||
|
// case 1:
|
||||||
|
// return m_categoryLocalization.getName();
|
||||||
|
// case 2:
|
||||||
|
// String desc = m_categoryLocalization.getDescription();
|
||||||
|
// if (desc != null && desc.length() > MAX_DESC_LENGTH) {
|
||||||
|
// desc = desc.substring(MAX_DESC_LENGTH - 3).concat("...");
|
||||||
|
// }
|
||||||
|
// return desc;
|
||||||
|
// case 3:
|
||||||
|
// return m_categoryLocalization.getURL();
|
||||||
|
// case 4:
|
||||||
|
// return GlobalizationUtil.globalize("cms.ui.delete").localize();
|
||||||
|
// default:
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -182,7 +192,8 @@ public class CategoryLocalizationTable extends Table implements TableActionListe
|
||||||
* @see com.arsdigita.bebop.table.TableModel#getKeyAt(int)
|
* @see com.arsdigita.bebop.table.TableModel#getKeyAt(int)
|
||||||
*/
|
*/
|
||||||
public Object getKeyAt(int columnIndex) {
|
public Object getKeyAt(int columnIndex) {
|
||||||
return m_categoryLocalization.getID();
|
return null;
|
||||||
|
// return m_categoryLocalization.getID();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -191,12 +202,13 @@ public class CategoryLocalizationTable extends Table implements TableActionListe
|
||||||
public Component getComponent(Table table, PageState state, Object value,
|
public Component getComponent(Table table, PageState state, Object value,
|
||||||
boolean isSelected, final Object key,
|
boolean isSelected, final Object key,
|
||||||
int row, int column) {
|
int row, int column) {
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class);
|
||||||
|
|
||||||
|
if (permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES, m_category.getCategory(state))) {
|
||||||
if (m_category.getCategory(state).canEdit()) {
|
|
||||||
return new ControlLink(value.toString());
|
return new ControlLink(value.toString());
|
||||||
} else {
|
} else {
|
||||||
return new Label(value.toString());
|
return new Label(GlobalizationUtil.globalize(value.toString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -206,11 +218,13 @@ public class CategoryLocalizationTable extends Table implements TableActionListe
|
||||||
public Component getComponent(Table table, PageState state, Object value,
|
public Component getComponent(Table table, PageState state, Object value,
|
||||||
boolean isSelected, Object key,
|
boolean isSelected, Object key,
|
||||||
int row, int column) {
|
int row, int column) {
|
||||||
|
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
|
||||||
|
final PermissionChecker permissionChecker = cdiUtil.findBean(PermissionChecker.class);
|
||||||
|
|
||||||
if (m_category.getCategory(state).canDelete()) {
|
if (permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_CATEGORIES, m_category.getCategory(state))) {
|
||||||
ControlLink link = new ControlLink(value.toString());
|
ControlLink link = new ControlLink(value.toString());
|
||||||
link.setConfirmation((String) GlobalizationUtil.globalize(
|
link.setConfirmation(GlobalizationUtil.globalize(
|
||||||
"cms.ui.category.localization_confirm_delete").localize());
|
"cms.ui.category.localization_confirm_delete"));
|
||||||
return link;
|
return link;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -227,25 +241,25 @@ public class CategoryLocalizationTable extends Table implements TableActionListe
|
||||||
|
|
||||||
PageState state = evt.getPageState();
|
PageState state = evt.getPageState();
|
||||||
|
|
||||||
// Get selected CategoryLocalization
|
// // Get selected CategoryLocalization
|
||||||
CategoryLocalization categoryLocalization =
|
// CategoryLocalization categoryLocalization =
|
||||||
new CategoryLocalization(new BigDecimal(evt.getRowKey().toString()));
|
// new CategoryLocalization(new BigDecimal(evt.getRowKey().toString()));
|
||||||
|
//
|
||||||
// Get Category
|
// // Get Category
|
||||||
Category category = m_category.getCategory(state);
|
// Category category = m_category.getCategory(state);
|
||||||
|
//
|
||||||
// Get selected column
|
// // Get selected column
|
||||||
TableColumn col = getColumnModel().get(evt.getColumn().intValue());
|
// TableColumn col = getColumnModel().get(evt.getColumn().intValue());
|
||||||
|
//
|
||||||
// Edit
|
// // Edit
|
||||||
if (col.getHeaderKey().toString().equals(TABLE_COL_LANG)) {
|
// if (col.getHeaderKey().toString().equals(TABLE_COL_LANG)) {
|
||||||
m_catLocale.setSelectedKey(state, categoryLocalization.getLocale());
|
// m_catLocale.setSelectedKey(state, categoryLocalization.getLocale());
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// Delete
|
// // Delete
|
||||||
if (col.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
|
// if (col.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
|
||||||
category.delLanguage(categoryLocalization.getLocale());
|
// category.delLanguage(categoryLocalization.getLocale());
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -23,7 +23,7 @@ import com.arsdigita.bebop.RequestLocal;
|
||||||
|
|
||||||
import org.libreccm.categorization.Category;
|
import org.libreccm.categorization.Category;
|
||||||
|
|
||||||
class CategoryRequestLocal extends RequestLocal {
|
public class CategoryRequestLocal extends RequestLocal {
|
||||||
|
|
||||||
public final Category getCategory(final PageState state) {
|
public final Category getCategory(final PageState state) {
|
||||||
return (Category) get(state);
|
return (Category) get(state);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,370 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2003-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.arsdigita.cms.ui.templates;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.*;
|
||||||
|
import com.arsdigita.bebop.event.ActionEvent;
|
||||||
|
import com.arsdigita.bebop.event.ActionListener;
|
||||||
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
|
import com.arsdigita.bebop.event.PrintEvent;
|
||||||
|
import com.arsdigita.bebop.event.PrintListener;
|
||||||
|
import com.arsdigita.bebop.event.TableActionAdapter;
|
||||||
|
import com.arsdigita.bebop.event.TableActionEvent;
|
||||||
|
import com.arsdigita.bebop.form.Hidden;
|
||||||
|
import com.arsdigita.bebop.form.Option;
|
||||||
|
import com.arsdigita.bebop.form.SingleSelect;
|
||||||
|
import com.arsdigita.bebop.form.Submit;
|
||||||
|
import com.arsdigita.bebop.parameters.BigDecimalParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
import com.arsdigita.bebop.table.TableCellRenderer;
|
||||||
|
import com.arsdigita.bebop.table.TableColumn;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.cms.ui.CMSContainer;
|
||||||
|
import com.arsdigita.cms.ui.FormSecurityListener;
|
||||||
|
import com.arsdigita.cms.ui.category.CategoryComponentAccess;
|
||||||
|
import com.arsdigita.cms.ui.category.CategoryRequestLocal;
|
||||||
|
import com.arsdigita.kernel.ui.ACSObjectSelectionModel;
|
||||||
|
import com.arsdigita.util.Assert;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
|
||||||
|
import java.util.TooManyListenersException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This component will eventually contain the full templates UI
|
||||||
|
* for content items. It is just a placeholder for now.
|
||||||
|
*
|
||||||
|
* @author Stanislav Freidin (sfreidin@arsdigita.com)
|
||||||
|
* @author <a href="mailto:yannick.buelter@yabue.de">Yannick Bülter</a>
|
||||||
|
*/
|
||||||
|
public class CategoryTemplates extends CMSContainer {
|
||||||
|
private CategoryRequestLocal m_category;
|
||||||
|
private ACSObjectSelectionModel m_types;
|
||||||
|
private SingleSelectionModel m_contexts;
|
||||||
|
|
||||||
|
private CMSContainer m_display;
|
||||||
|
private CMSContainer m_assign;
|
||||||
|
|
||||||
|
public static final String ASSIGN_TEMPLATE = "assignTemplate";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO: Needs to be implemented and will then finally
|
||||||
|
* Construct a new CategoryTemplates component
|
||||||
|
*
|
||||||
|
* @param category the <code>CategoryRequestLocal</code> that will supply the
|
||||||
|
* current content item
|
||||||
|
*/
|
||||||
|
public CategoryTemplates(CategoryRequestLocal category) {
|
||||||
|
super();
|
||||||
|
m_category = category;
|
||||||
|
add(new Text("Placeholder"));
|
||||||
|
//
|
||||||
|
// m_types = new ACSObjectSelectionModel(new BigDecimalParameter("t"));
|
||||||
|
// m_contexts = new ParameterSingleSelectionModel(new StringParameter("c"));
|
||||||
|
//
|
||||||
|
// AssignForm form = new AssignForm("assign",
|
||||||
|
// m_types,
|
||||||
|
// m_contexts);
|
||||||
|
// form.addSubmissionListener
|
||||||
|
// (new FormSecurityListener(SecurityManager.CATEGORY_ADMIN));
|
||||||
|
//
|
||||||
|
// form.addProcessListener(new FormProcessListener() {
|
||||||
|
// public void process(FormSectionEvent e)
|
||||||
|
// throws FormProcessException {
|
||||||
|
//
|
||||||
|
// PageState state = e.getPageState();
|
||||||
|
//
|
||||||
|
// m_display.setVisible(state, false);
|
||||||
|
// m_assign.setVisible(state, true);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// CategoryTemplatesListingImpl l = new CategoryTemplatesListingImpl(category);
|
||||||
|
// SegmentedPanel st = new SegmentedPanel();
|
||||||
|
// st.addSegment(new Label("Assigned Templates"), l);
|
||||||
|
//
|
||||||
|
// m_display = new CMSContainer();
|
||||||
|
// m_display.add(form);
|
||||||
|
// m_display.add(st);
|
||||||
|
// add(m_display);
|
||||||
|
//
|
||||||
|
// SegmentedPanel sa = new SegmentedPanel();
|
||||||
|
// Label assignLabel = new Label("dummy");
|
||||||
|
// assignLabel.addPrintListener(new PrintListener() {
|
||||||
|
// public void prepare(PrintEvent e) {
|
||||||
|
// PageState s = e.getPageState();
|
||||||
|
// Label targetLabel = (Label)e.getTarget();
|
||||||
|
// Category category = m_category.getCategory(s);
|
||||||
|
// Assert.exists(category, "category");
|
||||||
|
// targetLabel.setLabel("Assign a template to " + category.getName());
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// sa.addSegment(assignLabel,
|
||||||
|
// new AvailableTemplatesListing(m_category,
|
||||||
|
// m_types,
|
||||||
|
// m_contexts));
|
||||||
|
//
|
||||||
|
// ActionLink returnLink = new ActionLink("Return to template listing");
|
||||||
|
// returnLink.setClassAttr("actionLink");
|
||||||
|
// returnLink.addActionListener(new ActionListener() {
|
||||||
|
// public void actionPerformed(ActionEvent e) {
|
||||||
|
// PageState s = e.getPageState();
|
||||||
|
// m_display.setVisible(s, true);
|
||||||
|
// m_assign.setVisible(s, false);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// m_assign = new CMSContainer();
|
||||||
|
// m_assign.add(sa);
|
||||||
|
// m_assign.add(returnLink);
|
||||||
|
// add(m_assign);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register(Page p) {
|
||||||
|
super.register(p);
|
||||||
|
|
||||||
|
p.setVisibleDefault(m_assign, false);
|
||||||
|
p.addComponentStateParam(this, m_types.getStateParameter());
|
||||||
|
p.addComponentStateParam(this, m_contexts.getStateParameter());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays a list of templates which are currently assigned to
|
||||||
|
* the current item
|
||||||
|
*/
|
||||||
|
// protected class CategoryTemplatesListingImpl extends CategoryTemplatesListing {
|
||||||
|
//
|
||||||
|
// private CategoryComponentAccess m_access;
|
||||||
|
//
|
||||||
|
// public CategoryTemplatesListingImpl(CategoryRequestLocal category) {
|
||||||
|
// super(category);
|
||||||
|
// m_access = new CategoryComponentAccess(null, category);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public void assignLinkClicked(PageState s,
|
||||||
|
// Category category,
|
||||||
|
// String useContext) {
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public void register(Page p) {
|
||||||
|
// super.register(p);
|
||||||
|
//
|
||||||
|
// // Hide action columns if user has no access
|
||||||
|
//
|
||||||
|
// p.addActionListener(new ActionListener() {
|
||||||
|
// public void actionPerformed(ActionEvent e) {
|
||||||
|
// final PageState state = e.getPageState();
|
||||||
|
//
|
||||||
|
// if (state.isVisibleOnPage(CategoryTemplates.this)
|
||||||
|
// && !m_access.canAccess
|
||||||
|
// (state,
|
||||||
|
// CMS.getContext().getSecurityManager())) {
|
||||||
|
// getRemoveColumn().setVisible(state, false);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Displays a list of templates for the given content item in the
|
||||||
|
// * given context, along with a link to select a template
|
||||||
|
// */
|
||||||
|
// protected class AvailableTemplatesListing extends TemplatesListing {
|
||||||
|
// TableColumn m_assignCol;
|
||||||
|
// ACSObjectSelectionModel m_type;
|
||||||
|
// CategoryRequestLocal m_category;
|
||||||
|
// SingleSelectionModel m_context;
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Construct a new AvailableTemplatesListing
|
||||||
|
// *
|
||||||
|
// * @param contextModel the SingleSelectionModel that will define the
|
||||||
|
// * current use context
|
||||||
|
// */
|
||||||
|
// public AvailableTemplatesListing(CategoryRequestLocal category,
|
||||||
|
// ACSObjectSelectionModel type,
|
||||||
|
// SingleSelectionModel context) {
|
||||||
|
// m_type = type;
|
||||||
|
// m_category = category;
|
||||||
|
// m_context = context;
|
||||||
|
//
|
||||||
|
// // Add the "assign" column and corresponding action listener
|
||||||
|
// m_assignCol = addColumn("Assign",
|
||||||
|
// TemplateCollection.TEMPLATE, false,
|
||||||
|
// new AssignCellRenderer());
|
||||||
|
//
|
||||||
|
// addTableActionListener(new TableActionAdapter() {
|
||||||
|
// @Override
|
||||||
|
// public void cellSelected(TableActionEvent e) {
|
||||||
|
// PageState s = e.getPageState();
|
||||||
|
// TemplatesListing l = (TemplatesListing)e.getSource();
|
||||||
|
// int i = e.getColumn().intValue();
|
||||||
|
// TableColumn c = l.getColumnModel().get(i);
|
||||||
|
//
|
||||||
|
// // Safe to check pointer equality since the column is
|
||||||
|
// // created statically
|
||||||
|
// if(c == m_assignCol) {
|
||||||
|
// SectionTemplateMapping m =
|
||||||
|
// (SectionTemplateMapping)getMappingModel()
|
||||||
|
// .getSelectedObject(s);
|
||||||
|
// assignTemplate(s, m.getTemplate());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Get all the templates for the given type in the current section
|
||||||
|
// */
|
||||||
|
// protected TemplateCollection getTemplateCollection(PageState s) {
|
||||||
|
// ContentSection sec = ContentSectionServlet.getContentSection(s.getRequest());
|
||||||
|
// Assert.exists(sec, "content section");
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// ContentItem item = m_category.getSelectedItem(s);
|
||||||
|
// Assert.exists(item, "item");
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
// ContentType type = getContentType(s);
|
||||||
|
//
|
||||||
|
// TemplateCollection c = TemplateManagerFactory
|
||||||
|
// .getInstance().getTemplates(sec, type);
|
||||||
|
// /*
|
||||||
|
// c.addEqualsFilter(TemplateCollection.USE_CONTEXT,
|
||||||
|
// TemplateManager.PUBLIC_CONTEXT);
|
||||||
|
// */
|
||||||
|
// return c;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Get the currently selected use context
|
||||||
|
// */
|
||||||
|
// protected ContentType getContentType(PageState s) {
|
||||||
|
// ContentType type = (ContentType)m_type.getSelectedObject(s);
|
||||||
|
// Assert.exists(type, "content type");
|
||||||
|
// return type;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Assign a template to the current item
|
||||||
|
// */
|
||||||
|
// public void assignTemplate(PageState s, Template t) {
|
||||||
|
// Category category = m_category.getCategory(s);
|
||||||
|
// ContentType type = (ContentType)m_type.getSelectedObject(s);
|
||||||
|
// String useContext = (String)m_context.getSelectedKey(s);
|
||||||
|
// CategoryTemplateMapping map =
|
||||||
|
// CategoryTemplateMapping.getMapping(category, type, t,
|
||||||
|
// useContext);
|
||||||
|
// if(map == null) {
|
||||||
|
// map = new CategoryTemplateMapping();
|
||||||
|
// map.setCategory(category);
|
||||||
|
// map.setContentType(type);
|
||||||
|
// map.setUseContext(useContext);
|
||||||
|
// map.setTemplate(t);
|
||||||
|
// }
|
||||||
|
// map.setContentSection(ContentSectionServlet
|
||||||
|
// .getContentSection(s.getRequest()));
|
||||||
|
// map.save();
|
||||||
|
//
|
||||||
|
// m_display.setVisible(s, true);
|
||||||
|
// m_assign.setVisible(s, false);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Render the "assign" link
|
||||||
|
// */
|
||||||
|
// protected class AssignCellRenderer implements TableCellRenderer {
|
||||||
|
//
|
||||||
|
// private ControlLink m_link;
|
||||||
|
//
|
||||||
|
// public AssignCellRenderer() {
|
||||||
|
// m_link = new ControlLink("Assign this template");
|
||||||
|
// m_link.setClassAttr("assignTemplateLink");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public Component getComponent(Table table, PageState state,
|
||||||
|
// Object value,
|
||||||
|
// boolean isSelected, Object key,
|
||||||
|
// int row, int column) {
|
||||||
|
// return m_link;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// *
|
||||||
|
// */
|
||||||
|
// private class AssignForm extends Form {
|
||||||
|
//
|
||||||
|
// SingleSelect m_type;
|
||||||
|
// //SingleSelect m_context;
|
||||||
|
// Hidden m_context;
|
||||||
|
//
|
||||||
|
// public AssignForm(String name,
|
||||||
|
// final ACSObjectSelectionModel type,
|
||||||
|
// final SingleSelectionModel context) {
|
||||||
|
//
|
||||||
|
// super(name, new GridPanel(3));
|
||||||
|
//
|
||||||
|
// add(new Label("Content type:"));
|
||||||
|
// //add(new Label("Use context:"));
|
||||||
|
// //add(new Label(""));
|
||||||
|
//
|
||||||
|
// m_type = new SingleSelect(type.getStateParameter());
|
||||||
|
// try {
|
||||||
|
// m_type.addPrintListener(new PrintListener() {
|
||||||
|
// @Override
|
||||||
|
// public void prepare(PrintEvent event) {
|
||||||
|
// PageState state = event.getPageState();
|
||||||
|
// ContentSection section = ContentSectionServlet
|
||||||
|
// .getContentSection(state
|
||||||
|
// .getRequest());
|
||||||
|
//
|
||||||
|
// SingleSelect target = (SingleSelect)event.getTarget();
|
||||||
|
// target.clearOptions();
|
||||||
|
//
|
||||||
|
// ContentTypeCollection types = section.getContentTypes();
|
||||||
|
// types.addOrder(ContentType.LABEL);
|
||||||
|
//
|
||||||
|
// while (types.next()) {
|
||||||
|
// ContentType type = types.getContentType();
|
||||||
|
// target.addOption(new Option(type.getID().toString(),
|
||||||
|
// type.getName()));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// } catch (TooManyListenersException ex) {
|
||||||
|
// throw new UncheckedWrapperException("This can never happen", ex);
|
||||||
|
// }
|
||||||
|
// add(m_type);
|
||||||
|
//
|
||||||
|
// // XXX no need for selecting template contexts currently
|
||||||
|
// m_context = new Hidden(context.getStateParameter());
|
||||||
|
// m_context.setDefaultValue(TemplateManager.PUBLIC_CONTEXT);
|
||||||
|
//
|
||||||
|
// add(m_context);
|
||||||
|
//
|
||||||
|
// add(new Submit("Assign template"));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,132 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.arsdigita.bebop;
|
||||||
|
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.list.ListModel;
|
||||||
|
import com.arsdigita.bebop.list.ListModelBuilder;
|
||||||
|
import com.arsdigita.bebop.table.DefaultTableCellRenderer;
|
||||||
|
import com.arsdigita.bebop.table.DefaultTableColumnModel;
|
||||||
|
import com.arsdigita.bebop.table.TableColumn;
|
||||||
|
import com.arsdigita.bebop.table.TableColumnModel;
|
||||||
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
|
import com.arsdigita.bebop.table.TableModelBuilder;
|
||||||
|
import com.arsdigita.util.LockableImpl;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays a {@link ListModel} as a grid (that is, a {@link Table})
|
||||||
|
* of given width.
|
||||||
|
*
|
||||||
|
* @version $Id: Grid.java 287 2005-02-22 00:29:02Z sskracic $
|
||||||
|
*/
|
||||||
|
public class Grid extends Table {
|
||||||
|
|
||||||
|
private int m_cols;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new <code>Grid</code>.
|
||||||
|
* <p>
|
||||||
|
*
|
||||||
|
* @param builder the {@link ListModelBuilder} that provides
|
||||||
|
* the grid with data
|
||||||
|
*
|
||||||
|
* @param numCols the number of columns in the grid
|
||||||
|
*/
|
||||||
|
public Grid(ListModelBuilder builder, int numCols) {
|
||||||
|
super(new GridModelBuilder(builder, numCols), new DefaultTableColumnModel());
|
||||||
|
m_cols = numCols;
|
||||||
|
|
||||||
|
setHeader(null);
|
||||||
|
|
||||||
|
TableColumnModel cols = getColumnModel();
|
||||||
|
for(int i=0; i<numCols; i++) {
|
||||||
|
cols.add(new TableColumn(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
setClassAttr("grid");
|
||||||
|
setWidth("100%");
|
||||||
|
// Ignore null values
|
||||||
|
setDefaultCellRenderer(new DefaultTableCellRenderer(true) {
|
||||||
|
@Override
|
||||||
|
public Component getComponent(Table table, PageState state, Object value,
|
||||||
|
boolean isSelected, Object key,
|
||||||
|
int row, int column) {
|
||||||
|
if(value == null)
|
||||||
|
return new Label(" ", false);
|
||||||
|
else
|
||||||
|
return super.getComponent(table, state, value, isSelected, key, row, column);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param builder the {@link ListModelBuilder} that provides
|
||||||
|
* the grid with data
|
||||||
|
*/
|
||||||
|
public void setModelBuilder(ListModelBuilder builder) {
|
||||||
|
super.setModelBuilder(new GridModelBuilder(builder, getColumnCount()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the number of columns in the grid.
|
||||||
|
*/
|
||||||
|
public int getColumnCount() {
|
||||||
|
return m_cols;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a ListModel to a TableModel
|
||||||
|
*/
|
||||||
|
private static class GridModelBuilder extends LockableImpl
|
||||||
|
implements TableModelBuilder {
|
||||||
|
|
||||||
|
private ListModelBuilder m_builder;
|
||||||
|
private int m_cols;
|
||||||
|
|
||||||
|
public GridModelBuilder(ListModelBuilder builder, int cols) {
|
||||||
|
super();
|
||||||
|
m_builder = builder;
|
||||||
|
m_cols = cols;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TableModel makeModel(Table t, PageState s) {
|
||||||
|
//XXX FIXME: The creation of a new List() below is a
|
||||||
|
//Hack to compile all...remove and fix.
|
||||||
|
//This is because makeModel requires a List arg.
|
||||||
|
//Should add a List setter function to Grid class, and
|
||||||
|
//initialize to null, then pass in null below if necessary...
|
||||||
|
//Christian: I will let your review team ponder this
|
||||||
|
//proposed change, and if approved, please assign the
|
||||||
|
//ticket to me! -jbp
|
||||||
|
List l = new List();
|
||||||
|
ListModel m = m_builder.makeModel(l,s);
|
||||||
|
return new GridTableModel(m, m_cols);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void lock() {
|
||||||
|
m_builder.lock();
|
||||||
|
super.lock();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,104 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.arsdigita.bebop;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
|
import com.arsdigita.bebop.list.ListModel;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a linear ListModel to a grid of items.
|
||||||
|
* For example, <code>A B C D E F G</code> becomes:
|
||||||
|
*
|
||||||
|
* <code><pre>
|
||||||
|
* A D G
|
||||||
|
* B E .
|
||||||
|
* C F .
|
||||||
|
* </pre></code>
|
||||||
|
*
|
||||||
|
* The extraneous cells in the table are filled
|
||||||
|
* with <code>GridTableModel.PLACEHOLDER</code>.
|
||||||
|
*
|
||||||
|
* @version $Id: GridTableModel.java 287 2005-02-22 00:29:02Z sskracic $
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GridTableModel implements TableModel {
|
||||||
|
|
||||||
|
private ListModel m_items;
|
||||||
|
private int m_colHeight, m_cols, m_size, m_index;
|
||||||
|
private Object[] m_elements;
|
||||||
|
private Object[] m_keys;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new <code>GridTableModel</code>.
|
||||||
|
* @param items a {@link ListModel} that represents the
|
||||||
|
* items
|
||||||
|
* @param cols the number of columns in the grid
|
||||||
|
*/
|
||||||
|
public GridTableModel(ListModel items, int cols) {
|
||||||
|
m_items = items;
|
||||||
|
m_cols = cols;
|
||||||
|
|
||||||
|
// Load the items into memory
|
||||||
|
ArrayList elements = new ArrayList(), keys = new ArrayList();
|
||||||
|
for(m_size=0; m_items.next(); m_size++) {
|
||||||
|
elements.add(m_items.getElement());
|
||||||
|
keys.add(m_items.getKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
m_elements = elements.toArray();
|
||||||
|
m_keys = keys.toArray();
|
||||||
|
|
||||||
|
// Round up
|
||||||
|
m_colHeight = m_size / m_cols;
|
||||||
|
if(m_colHeight * m_cols < m_size) ++m_colHeight;
|
||||||
|
|
||||||
|
m_index = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getColumnCount() {
|
||||||
|
return m_cols;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean nextRow() {
|
||||||
|
if(m_index >= m_colHeight - 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
++m_index;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Object safeGet(Object[] a, int columnIndex) {
|
||||||
|
int i = m_index + m_colHeight*columnIndex;
|
||||||
|
|
||||||
|
if(i >= a.length)
|
||||||
|
return null;
|
||||||
|
else
|
||||||
|
return a[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getElementAt(int columnIndex) {
|
||||||
|
return safeGet(m_elements, columnIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getKeyAt(int columnIndex) {
|
||||||
|
return safeGet(m_keys, columnIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,107 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.libreccm.categorization;
|
||||||
|
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.tree.TreeModel;
|
||||||
|
import com.arsdigita.bebop.tree.TreeNode;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements the {@link com.arsdigita.bebop.tree.TreeModel} interface for
|
||||||
|
* categories.
|
||||||
|
*
|
||||||
|
* @author Daniel Berrange
|
||||||
|
* @version $Revision: #17 $ $DateTime: 2004/08/16 18:10:38 $
|
||||||
|
*/
|
||||||
|
public class CategoryTreeModelLite implements TreeModel {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LogManager.getLogger(
|
||||||
|
CategoryTreeModelLite.class);
|
||||||
|
// String m_order = null;
|
||||||
|
final Category category;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes with the passed in the root Category.
|
||||||
|
*
|
||||||
|
* @param root the root category for this TreeModel
|
||||||
|
*/
|
||||||
|
// public CategoryTreeModelLite(Category root) {
|
||||||
|
// this(root, null);
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes with the passed in the root Category.
|
||||||
|
*
|
||||||
|
* @param root the root category for this TreeModel
|
||||||
|
*/
|
||||||
|
public CategoryTreeModelLite(Category root) {
|
||||||
|
// super(root.getUniqueId(),
|
||||||
|
// "com.arsdigita.categorization.getRootCategory",
|
||||||
|
// "com.arsdigita.categorization.getSubCategories");
|
||||||
|
// m_order = order;
|
||||||
|
category = root;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// protected DataQueryTreeIterator getDataQueryTreeIterator(DataQueryTreeNode node,
|
||||||
|
// String getSubCategories) {
|
||||||
|
// return new CategoryTreeIterator(node, getSubCategories, m_order);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TreeNode getRoot(PageState data) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasChildren(TreeNode n, PageState data) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterator<TreeNode> getChildren(TreeNode n, PageState data) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// private static class CategoryTreeIterator extends DataQueryTreeIterator {
|
||||||
|
//
|
||||||
|
// public CategoryTreeIterator(DataQueryTreeNode node, String getSubCategories, String order) {
|
||||||
|
// super(node, getSubCategories);
|
||||||
|
// if (order != null) {
|
||||||
|
// addOrder(order);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public Object next() {
|
||||||
|
// DataQueryTreeNode node = (DataQueryTreeNode) super.next();
|
||||||
|
//
|
||||||
|
// // m_nodes.getLink
|
||||||
|
// node.setValue(Category.IS_ABSTRACT,
|
||||||
|
// (Boolean) m_nodes.get(Category.IS_ABSTRACT));
|
||||||
|
// return node;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue