diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentSectionPage.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentSectionPage.java
index df3d9b518..c5a2875cf 100755
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentSectionPage.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/ContentSectionPage.java
@@ -36,12 +36,10 @@ import org.librecms.contentsection.ContentSection;
import com.arsdigita.cms.dispatcher.CMSPage;
import com.arsdigita.cms.ui.category.CategoryAdminPane;
-//ToDo NG import com.arsdigita.cms.ui.category.CategoryAdminPane;
import com.arsdigita.cms.ui.cse.ContentSoonExpiredPane;
import com.arsdigita.cms.ui.folder.FolderAdminPane;
import com.arsdigita.cms.ui.lifecycle.LifecycleAdminPane;
import com.arsdigita.cms.ui.role.RoleAdminPane;
-import com.arsdigita.cms.ui.type.ContentTypeAdminPane;
import com.arsdigita.cms.ui.workflow.WorkflowAdminPane;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.toolbox.ui.LayoutPanel;
@@ -77,59 +75,73 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
* expansion from content item page.
*/
public static final String SET_FOLDER = "set_folder";
+
/**
* The URL parameter that can be passed in in order to set the current
* template (for setting the content type)
*/
public static final String SET_TEMPLATE = "set_template";
+
/**
* The URL parameter that can be passed in in order to set the current tab.
* This is a KLUDGE right now because the TabbedDialog's current tab is
* selected with a local state parameter.
*/
public static final String SET_TAB = "set_tab";
+
/**
* Index of the search tab
*/
public static final int SEARCH_TAB = 0;
+
/**
* Index of the browse tab
*/
public static final int BROWSE_TAB = 1;
+
/**
* Index of the roles tab
*/
public static final int ROLES_TAB = 2;
+
/**
* Index of the workflows tab
*/
public static final int WORKFLOW_TAB = 3;
+
/**
* Index of the lifecycles tab
*/
public static final int LIFECYCLES_TAB = 4;
+
/**
* Index of the categories tab
*/
public static final int CATEGORIES_TAB = 5;
+
/**
* Index of the content types tab
*/
public static final int CONTENTTYPES_TAB = 6;
+
public static final int USER_ADMIN_TAB = 7;
private TabbedPane m_tabbedPane;
+
private FolderAdminPane m_folderPane;
+
private BrowsePane m_browsePane;
+
private ItemSearch m_searchPane;
-// private AssetPane m_assetPane;
-//ToDo NG private ImagesPane m_imagesPane;
+
private RoleAdminPane m_rolePane;
+
private WorkflowAdminPane m_workflowPane;
+
private LifecycleAdminPane m_lifecyclePane;
+
private CategoryAdminPane m_categoryPane;
- private ContentTypeAdminPane m_typePane;
- //private LayoutPanel m_userAdminPane;
+
private LayoutPanel m_csePane;
/**
@@ -148,18 +160,11 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
m_folderPane = getFolderAdminPane();
m_browsePane = getBrowsePane();
m_searchPane = getSearchPane();
- m_assetPane = getAssetPane();
-//ToDo NG m_imagesPane = getImagesPane();
m_rolePane = getRoleAdminPane();
m_workflowPane = getWorkflowAdminPane();
m_lifecyclePane = getLifecycleAdminPane();
m_categoryPane = getCategoryAdminPane();
- m_typePane = getContentTypeAdminPane();
- // userAdminPane removed, used to contain just one item (reset user
- // folder) which moved to the FolderAdminPane
- //m_userAdminPane = getUserAdminPane();
m_csePane = getCSEPane();
- m_reportPane = getReportPane();
// The panes
m_tabbedPane = createTabbedPane();
@@ -187,7 +192,8 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
m_tabbedPane.setTabVisible(
state,
m_workflowPane,
- permissionChecker.isPermitted(AdminPrivileges.ADMINISTER_WORKFLOWS));
+ permissionChecker.isPermitted(
+ AdminPrivileges.ADMINISTER_WORKFLOWS));
m_tabbedPane.setTabVisible(
state,
m_categoryPane,
@@ -198,11 +204,6 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
m_lifecyclePane,
permissionChecker.isPermitted(
AdminPrivileges.ADMINISTER_LIFECYLES));
- m_tabbedPane.setTabVisible(
- state,
- m_typePane,
- permissionChecker.isPermitted(
- AdminPrivileges.ADMINISTER_CONTENT_TYPES));
m_tabbedPane.setTabVisible(
state,
@@ -253,7 +254,7 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
protected ItemSearch getSearchPane() {
if (m_searchPane == null) {
m_searchPane
- = new ItemSearch(
+ = new ItemSearch(
ContentItemVersion.DRAFT.toString(),
CMSConfig.getConfig().isLimitItemSearchToContentSection());
}
@@ -267,7 +268,6 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
//
// return m_assetPane;
// }
-
// ToDo NG
// protected ImagesPane getImagesPane() {
// if (m_imagesPane == null) {
@@ -315,28 +315,6 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
return m_categoryPane;
}
- /**
- * Creates, and then caches, the content type administration pane.
- * Overriding this method to return null will prevent this tab from
- * appearing.
- *
- * @return
- */
- protected ContentTypeAdminPane getContentTypeAdminPane() {
- if (m_typePane == null) {
- m_typePane = new ContentTypeAdminPane();
- }
- return m_typePane;
- }
-
-// protected LayoutPanel getUserAdminPane() {
-// if (m_userAdminPane == null) {
-// m_userAdminPane = new LayoutPanel();
-// m_userAdminPane.setLeft(new SimpleComponent());
-// m_userAdminPane.setBody(new UserAdminPane());
-// }
-// return m_userAdminPane;
-// }
protected LayoutPanel getCSEPane() {
if (m_csePane == null) {
m_csePane = new LayoutPanel();
@@ -346,14 +324,13 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
return m_csePane;
}
-
/**
* Adds the specified component, with the specified tab name, to the tabbed
* pane only if it is not null.
*
- * @param pane The pane to which to add the tab
+ * @param pane The pane to which to add the tab
* @param tabName The name of the tab if it's added
- * @param comp The component to add to the pane
+ * @param comp The component to add to the pane
*/
protected void addToPane(final TabbedPane pane,
final String tabName,
@@ -391,15 +368,12 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
//tab(pane, "cms.ui.folders", getFolderAdminPane());
tab(pane, "cms.ui.browse", getBrowsePane());
tab(pane, "cms.ui.search", getSearchPane());
- tab(pane, "cms.ui.assets", getAssetPane());
// ToDo NG replace with media tab tab(pane, "cms.ui.images", getImagesPane());
tab(pane, "cms.ui.roles", getRoleAdminPane());
tab(pane, "cms.ui.workflows", getWorkflowAdminPane());
tab(pane, "cms.ui.lifecycles", getLifecycleAdminPane());
tab(pane, "cms.ui.categories", getCategoryAdminPane());
- tab(pane, "cms.ui.content_types", getContentTypeAdminPane());
tab(pane, "cms.ui.cse", getCSEPane());
- tab(pane, "cms.ui.reports", getReportPane());
return pane;
}
@@ -436,9 +410,7 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
// } else if (pane == m_imagesPane) {
// m_imagesPane.reset(state);
// } else
- if (pane == m_assetPane) {
- m_assetPane.reset(state);
- } else if (pane == m_folderPane) {
+ if (pane == m_folderPane) {
m_folderPane.reset(state);
//ToDo NG } else if (pane == m_browsePane) {
// m_browsePane.reset(state);
@@ -450,10 +422,7 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
m_lifecyclePane.reset(state);
} else if (pane == m_categoryPane) {
m_categoryPane.reset(state);
- } else if (pane == m_typePane) {
- m_typePane.reset(state);
-// } else if (pane == m_userAdminPane) {
- //m_userAdminPane.reset(state);
+
} else if (pane == m_csePane) {
m_csePane.reset(state);
}
@@ -463,7 +432,7 @@ public class ContentSectionPage extends CMSPage implements ActionListener {
* Construct a URL for displaying the tab
*
* @param item The item from which we get the corresponding content section
- * @param tab The index of the tab to display
+ * @param tab The index of the tab to display
*
* @return
*/
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPane.java
deleted file mode 100755
index 58ec05906..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPane.java
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * 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.type;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.GridPanel;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Page;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.event.FormSectionEvent;
-import com.arsdigita.bebop.event.ActionEvent;
-import com.arsdigita.bebop.event.ActionListener;
-import com.arsdigita.bebop.event.FormProcessListener;
-import com.arsdigita.bebop.event.FormSubmissionListener;
-import com.arsdigita.bebop.event.PrintEvent;
-import com.arsdigita.bebop.event.PrintListener;
-import com.arsdigita.cms.CMS;
-
-import org.librecms.contentsection.ContentSection;
-import org.librecms.contentsection.ContentType;
-//ToDo import com.arsdigita.cms.SectionTemplateMapping;
-
-import com.arsdigita.cms.ui.BaseAdminPane;
-import com.arsdigita.cms.ui.BaseDeleteForm;
-import com.arsdigita.globalization.GlobalizedMessage;
-//ToDo insert later import com.arsdigita.cms.ui.ContentSectionPage;
-
-import com.arsdigita.kernel.ui.ACSObjectSelectionModel;
-import com.arsdigita.toolbox.ui.ActionGroup;
-import com.arsdigita.toolbox.ui.Cancellable;
-import com.arsdigita.toolbox.ui.Section;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.core.UnexpectedErrorException;
-import org.librecms.CmsConstants;
-import org.librecms.contentsection.ContentSectionManager;
-import org.librecms.contentsection.ContentTypeManager;
-import org.librecms.contenttypes.ContentTypeInfo;
-
-import java.util.List;
-import java.util.TooManyListenersException;
-
-/**
- * This class contains the split pane for the ContentType administration
- * interface.
- *
- * @author Jack Chung
- * @author Michael Pih
- * @author Stanislav Freidin
- * @author Justin Ross <jross@redhat.com>
- * @author Jens Pelzetter
- */
-public final class ContentTypeAdminPane extends BaseAdminPane {
-
- private static final Logger LOGGER = LogManager.getLogger(
- ContentTypeAdminPane.class);
-
- private final ACSObjectSelectionModel m_model;
- private final ContentTypeRequestLocal m_type;
-
- /**
- * Constructs an admin pane. It is containing (a) a list of available
- * content types in a given content section and adds a link to make
- * additional content types available (out of a list of installed, but
- * available in a given content section).
- */
- public ContentTypeAdminPane() {
-
- //
- super(new Label(gz("cms.ui.types")),
- new ContentTypeListModelBuilder()); //list with all Types avail.
-
- m_model = new ACSObjectSelectionModel(getSelectionModel());
- m_type = new SelectionRequestLocal();
-
- ActionLink addTypeLink
- = new ActionLink(new Label(gz("cms.ui.type.add")));
-
- AddTypeContainer addTypeContainer = new AddTypeContainer();
- getBody().add(addTypeContainer);
- getBody().connect(addTypeLink, addTypeContainer);
- addTypeLink.addActionListener(addTypeContainer);
-
- setEdit(new ActionLink(new Label(gz("cms.ui.type.edit"))),
- new EditType(m_model));
-
- setDelete(new ActionLink(new Label(gz("cms.ui.type.delete"))),
- new DeleteForm());
-
- setIntroPane(new Label(gz("cms.ui.type.intro")));
- setItemPane(new ContentTypeItemPane(m_model,
- m_type,
- getEditLink(),
- getDeleteLink()));
-
- addAction(new TypeSecurityContainer(addTypeLink), ActionGroup.ADD);
- }
-
- @Override
- public void register(final Page page) {
- super.register(page);
-
- page.addActionListener(new ActionListener() {
-
- /**
- *
- * @param event
- */
- @Override
- public void actionPerformed(final ActionEvent event) {
-// ToDo
-// final PageState state = event.getPageState();
-// ContentType contentType = (ContentType) m_model.getSelectedObject(state);
-// ContentSection section = CMS.getContext().getContentSection();
-// if (contentType == null) {
-// final String template = state.getRequest()
-// .getParameter(ContentSectionPage
-// .SET_TEMPLATE);
-// if (template != null) {
-// DataCollection da = SessionManager.getSession().retrieve(SectionTemplateMapping.BASE_DATA_OBJECT_TYPE);
-// DomainCollection c = new DomainCollection(da);
-// c.addEqualsFilter(SectionTemplateMapping.SECTION + "." + ACSObject.ID,
-// section.getID());
-// c.addEqualsFilter(SectionTemplateMapping.TEMPLATE + "." + ACSObject.ID,
-// new BigDecimal(template));
-// c.addOrder(SectionTemplateMapping.CONTENT_TYPE + "." + ContentType.LABEL);
-// if (c.next()) {
-// SectionTemplateMapping mapping =
-// (SectionTemplateMapping) c.getDomainObject();
-// contentType = mapping.getContentType();
-// }
-// c.close();
-// }
-// if (contentType == null) {
-// ContentTypeCollection contentTypes = section.getContentTypes();
-// contentTypes.addOrder("label asc");
-// try {
-// if (contentTypes.next()) {
-// contentType = contentTypes.getContentType();
-// }
-// } finally {
-// contentTypes.close();
-// }
-// }
-// if (contentType != null) {
-// m_model.setSelectedObject(state, contentType);
-// getBody().push(state, getItemPane());
-// }
-//
-//
-// }
- }
-
- });
- }
-
-// ToDo (?) User Definied Content Types
-// private class AddTypeContainer extends GridPanel implements ActionListener,
-// FormProcessListener {
-//
-// private Label m_noTypesAvailable =
-// new Label(gz("cms.ui.type.select.none"));
-// private SelectType m_selectType;
-//// User Definied Content Types private CreateType m_createType;
-//
-// /**
-// *
-// */
-// AddTypeContainer() {
-// super(1);
-// Section selectSection = new Section();
-// selectSection.setHeading(new Label(gz("cms.ui.type.select")));
-// add(selectSection);
-//
-// GridPanel container = new GridPanel(1);
-// container.add(m_noTypesAvailable);
-// m_selectType = new SelectType();
-// m_selectType.addSubmissionListener(new CancelListener(m_selectType));
-// m_selectType.addProcessListener(this);
-// container.add(m_selectType);
-// selectSection.setBody(container);
-//
-// Section addSection = new Section() {
-//
-// @Override
-// public final boolean isVisible(final PageState state) {
-// return super.isVisible(state)
-// && !ContentSection.getConfig().getHideUDCTUI();
-// }
-// };
-// addSection.setHeading(new Label(gz("cms.ui.type.define")));
-// m_createType = new CreateType(m_model);
-// m_createType.addSubmissionListener(new CancelListener(m_createType));
-// m_createType.addProcessListener(this);
-// addSection.setBody(m_createType);
-// add(addSection);
-// }
-//
-// /**
-// *
-// * @param e
-// */
-// @Override
-// public void actionPerformed(ActionEvent e) {
-// PageState s = e.getPageState();
-// ContentSection section = CMS.getContext().getContentSection();
-// ContentTypeCollection contentTypes =
-// section.getNotAssociatedContentTypes();
-// boolean hasAvailableTypes = !contentTypes.isEmpty();
-// m_selectType.setVisible(s, hasAvailableTypes);
-// m_noTypesAvailable.setVisible(s, !hasAvailableTypes);
-// }
-//
-// public final void process(final FormSectionEvent e)
-// throws FormProcessException {
-// final PageState state = e.getPageState();
-// resetPane(state);
-// }
-// }
- /**
- * This class is essentially a copy of the CancelListener inside of
- * ModalPanel. We could not use the one in ModalPanel because it was
- * protected
- */
- private final class CancelListener implements FormSubmissionListener {
-
- Cancellable m_form;
-
- CancelListener(final Cancellable form) {
- m_form = form;
- }
-
- @Override
- public void submitted(FormSectionEvent event)
- throws FormProcessException {
- PageState state = event.getPageState();
- if (m_form.isCancelled(state)) {
- getBody().pop(state);
- throw new FormProcessException(new GlobalizedMessage(
- "cms.ui.type.cancelled", CmsConstants.CMS_BUNDLE));
- }
- }
-
- } // end private class
-
- private void resetPane(final PageState state) {
- getBody().reset(state);
- if (getSelectionModel().isSelected(state)) {
- LOGGER.debug("The selection model is selected; displaying "
- + "the item pane");
- getBody().push(state, getItemPane());
- }
- }
-
- private class SelectionRequestLocal extends ContentTypeRequestLocal {
-
- @Override
- protected final Object initialValue(final PageState state) {
- ContentType contentType = (ContentType) m_model.getSelectedObject(
- state);
- return contentType;
- }
-
- }
-
- private class DeleteForm extends BaseDeleteForm {
-
- DeleteForm() {
- super(new Label(gz("cms.ui.type.delete_prompt")));
-
- addSubmissionListener(new TypeSecurityListener());
- }
-
- @Override
- public final void process(final FormSectionEvent e)
- throws FormProcessException {
- final PageState state = e.getPageState();
- final ContentSection section = CMS.getContext().getContentSection();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentSectionManager sectionManager = cdiUtil.findBean(
- ContentSectionManager.class);
- final ContentTypeManager typeManager = cdiUtil.findBean(
- ContentTypeManager.class);
-
- m_type.getContentType(state).getContentItemClass();
-
- sectionManager.removeContentTypeFromSection(
- typeManager.classNameToClass(m_type.getContentType(state)
- .getContentItemClass()),
- section);
-
- getSelectionModel().clearSelection(state);
- }
-
- }
-
- private class AddTypeContainer
- extends GridPanel
- implements ActionListener, FormProcessListener {
-
- private final Label noTypesAvailableLabel
- = new Label(gz("cms.ui.type.select.none"));
- private final SelectType selectType;
-
- public AddTypeContainer() {
- super(1);
-
- final Section selectSection = new Section();
- selectSection.setHeading(new Label(gz("cms.ui.type.select")));
- add(selectSection);
-
- final GridPanel container = new GridPanel(1);
- container.add(noTypesAvailableLabel);
- selectType = new SelectType();
- selectType.addSubmissionListener(new CancelListener(selectType));
- selectType.addProcessListener(this);
- container.add(selectType);
- selectSection.setBody(container);
- }
-
- @Override
- public void actionPerformed(final ActionEvent event) {
-
- final PageState state = event.getPageState();
- final ContentSection section = CMS.getContext().getContentSection();
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeAdminPaneController controller = cdiUtil
- .findBean(ContentTypeAdminPaneController.class);
- final List contentTypes = controller
- .getNotAssociatedContentTypes(section);
- final boolean hasAvailableTypes = !contentTypes.isEmpty();
- selectType.setVisible(state, hasAvailableTypes);
- noTypesAvailableLabel.setVisible(state, !hasAvailableTypes);
- }
-
- @Override
- public void process(final FormSectionEvent event)
- throws FormProcessException {
-
- final PageState state = event.getPageState();
- resetPane(state);
- }
-
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPaneController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPaneController.java
deleted file mode 100644
index 5b60a7236..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeAdminPaneController.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.cms.ui.type;
-
-import org.libreccm.workflow.Workflow;
-import org.librecms.contentsection.ContentSection;
-import org.librecms.contentsection.ContentSectionManager;
-import org.librecms.contentsection.ContentSectionRepository;
-import org.librecms.contentsection.ContentType;
-import org.librecms.contentsection.ContentTypeManager;
-import org.librecms.contentsection.ContentTypeRepository;
-import org.librecms.contenttypes.ContentTypeInfo;
-import org.librecms.contenttypes.ContentTypesManager;
-import org.librecms.lifecycle.LifecycleDefinition;
-
-import java.nio.charset.IllegalCharsetNameException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.ResourceBundle;
-import java.util.stream.Collectors;
-
-import javax.enterprise.context.RequestScoped;
-import javax.inject.Inject;
-import javax.persistence.EntityManager;
-import javax.transaction.Transactional;
-
-/**
- * A controller class for the {@link ContentTypeAdminPane} and its associated
- * classes. For now it only contains methods which require or transaction (which
- * are controlled by the container now).
- *
- *
- * @author Jens Pelzetter
- */
-@RequestScoped
-class ContentTypeAdminPaneController {
-
- @Inject
- private EntityManager entityManager;
-
- @Inject
- private ContentSectionRepository sectionRepo;
-
- @Inject
- private ContentSectionManager sectionManager;
-
- @Inject
- private ContentTypeRepository typeRepo;
-
- @Inject
- private ContentTypeManager typeManager;
-
- @Inject
- private ContentTypesManager typesManager;
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected List getTypeList(final ContentSection section) {
- final List types = typeRepo.findByContentSection(section);
-
- return types.stream()
- .map(type -> generateListEntry(type))
- .collect(Collectors.toList());
- }
-
- @Transactional
- protected List getContentItemClassesList(
- final ContentSection ofSection
- ) {
- final ContentSection section = sectionRepo.findById(
- ofSection.getObjectId()
- )
- .orElseThrow(
- () -> new IllegalArgumentException(
- String.format(
- "No ContentSection with ID %d found.",
- ofSection.getObjectId()
- )
- )
- );
- return section.getContentTypes()
- .stream()
- .map(type -> type.getContentItemClass())
- .collect(Collectors.toList());
- }
-
- private String[] generateListEntry(final ContentType type) {
- final String[] entry = new String[2];
-
- entry[0] = Long.toString(type.getObjectId());
-
- final ContentTypeInfo typeInfo = typesManager
- .getContentTypeInfo(type.getContentItemClass());
- final ResourceBundle labelBundle = ResourceBundle
- .getBundle(typeInfo.getLabelBundle());
- final String labelKey = typeInfo.getLabelKey();
-
- entry[1] = labelBundle.getString(labelKey);
-
- return entry;
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected List getNotAssociatedContentTypes(
- final ContentSection section) {
-
- final List availableTypes = typesManager
- .getAvailableContentTypes();
- final List associatedTypes = typeRepo
- .findByContentSection(section)
- .stream()
- .map(type -> typesManager.getContentTypeInfo(type))
- .collect(Collectors.toList());
-
- return availableTypes
- .stream()
- .filter(typeInfo -> !associatedTypes.contains(typeInfo))
- .collect(Collectors.toList());
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected LifecycleDefinition getLifecycleDefinition(final ContentType type) {
-
- final ContentType contentType = typeRepo
- .findById(type.getObjectId())
- .orElseThrow(() -> new IllegalCharsetNameException(String.format(
- "No ContentType with Id %d in the database. "
- + "Where did that ID come from?",
- type.getObjectId())));
-
- return contentType.getDefaultLifecycle();
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected Optional getLifecycleDefinitionLabel(
- final ContentType type,
- final Locale locale) {
-
- final LifecycleDefinition lifecycleDefinition = getLifecycleDefinition(
- type);
-
- if (lifecycleDefinition == null) {
- return Optional.empty();
- } else {
- return Optional.of(lifecycleDefinition.getLabel().getValue(locale));
- }
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected Workflow getWorkflowTemplate(final ContentType type) {
-
- final ContentType contentType = typeRepo
- .findById(type.getObjectId())
- .orElseThrow(() -> new IllegalCharsetNameException(String.format(
- "No ContentType with Id %d in the database. "
- + "Where did that ID come from?",
- type.getObjectId())));
-
- return contentType.getDefaultWorkflow();
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected Optional getWorkflowTemplateName(final ContentType type,
- final Locale locale) {
-
- final Workflow workflowTemplate = getWorkflowTemplate(type);
-
- if (workflowTemplate == null) {
- return Optional.empty();
- } else {
- return Optional.of(workflowTemplate.getName().getValue(locale));
- }
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected List getLifecycleDefinitions(
- final ContentSection section) {
-
- final ContentSection contentSection = sectionRepo
- .findById(section.getObjectId())
- .orElseThrow(() -> new IllegalArgumentException(String.format(
- "No ContentSection with ID %d in the database. "
- + "Where did that ID come from?",
- section.getObjectId())));
-
- return new ArrayList<>(contentSection.getLifecycleDefinitions());
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected List getWorkflowTemplates(
- final ContentSection section) {
-
- final ContentSection contentSection = sectionRepo
- .findById(section.getObjectId())
- .orElseThrow(() -> new IllegalArgumentException(String.format(
- "No ContentSection with ID %d in the database. "
- + "Where did that ID come from?",
- section.getObjectId())));
-
- return new ArrayList<>(contentSection.getWorkflowTemplates());
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected void addContentTypeToContentSection(
- final String type, final ContentSection toSection
- ) {
- Objects.requireNonNull(type);
- Objects.requireNonNull(toSection);
-
- final ContentSection section = sectionRepo
- .findById(toSection.getObjectId())
- .orElseThrow(
- () -> new IllegalArgumentException(
- String.format(
- "No ContentSection identified by ID %d found.",
- toSection.getObjectId()
- )
- )
- );
-
- sectionManager.addContentTypeToSection(
- typeManager.classNameToClass(type),
- section,
- section.getLifecycleDefinitions().get(0),
- section.getWorkflowTemplates().get(0)
- );
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeItemPane.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeItemPane.java
deleted file mode 100755
index d8162a027..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeItemPane.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * 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.type;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Page;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.SimpleContainer;
-import com.arsdigita.bebop.event.ActionEvent;
-import com.arsdigita.bebop.event.ActionListener;
-import com.arsdigita.bebop.form.Submit;
-import com.arsdigita.cms.CMS;
-
-import org.librecms.contentsection.ContentItem;
-import org.librecms.contentsection.ContentSection;
-import org.librecms.contentsection.ContentType;
-
-import com.arsdigita.cms.ui.BaseItemPane;
-import com.arsdigita.cms.ui.ContentSectionRequestLocal;
-//ToDo import com.arsdigita.cms.ui.templates.SectionTemplatesListing;
-//ToDo import com.arsdigita.cms.ui.templates.TemplateCreate;
-import com.arsdigita.kernel.ui.ACSObjectSelectionModel;
-import com.arsdigita.toolbox.ui.ActionGroup;
-import com.arsdigita.toolbox.ui.Cancellable;
-import com.arsdigita.toolbox.ui.Section;
-import com.arsdigita.util.UncheckedWrapperException;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.security.PermissionChecker;
-import org.librecms.contentsection.ContentSectionManager;
-import org.librecms.contentsection.ContentTypeManager;
-import org.librecms.contentsection.privileges.AdminPrivileges;
-
-/**
- *
- * @author Justin Ross <jross@redhat.com>
- * @author Jens Pelzetter
- */
-final class ContentTypeItemPane extends BaseItemPane {
-
- private final ACSObjectSelectionModel m_model;
- private final ContentTypeRequestLocal m_type;
- private final SimpleContainer m_detailPane;
-// Only useful for user definied content types private final TypeElements m_elements;
-// Only useful for user definied content types private final AddElement m_elementAddForm;
-// ToDo private final SectionTemplatesListing m_templates;
- private final TypePermissionsTable m_permissions;
-
- ContentTypeItemPane(final ACSObjectSelectionModel model,
- final ContentTypeRequestLocal type,
- final ActionLink editLink,
- final ActionLink deleteLink) {
- m_model = model;
- m_type = type;
-
- m_detailPane = new SimpleContainer();
- add(m_detailPane);
- setDefault(m_detailPane);
-
-// m_elements = new TypeElements(m_model);
-// m_elementAddForm = new AddElement();
-// ToDo
-// m_templates = new SectionTemplatesListing(
-// new ContentSectionRequestLocal(), m_type);
- m_permissions = new TypePermissionsTable(
- new ContentSectionRequestLocal(), m_type);
-
- final ActionLink templateAddLink = new ActionLink(new Label(gz(
- "cms.ui.type.template.add")));
-// ToDo
-// final TemplateCreate templateFormSection = new TemplateCreate(m_model);
-// final Form templateForm = new CancellableForm("AddTemplate",
-// templateFormSection.
-// getSaveCancelSection().getCancelButton());
-// templateForm.add(templateFormSection);
-// add(templateForm);
-
-// final AddTextElement textForm = new AddTextElement(m_model);
-// add(textForm);
-//
-// final AddNumberElement numberForm = new AddNumberElement(m_model);
-// add(numberForm);
-//
-// final AddDateElement dateForm = new AddDateElement(m_model);
-// add(dateForm);
-//
-// final AddTextAssetElement assetForm = new AddTextAssetElement(m_model);
-// add(assetForm);
-//
-// final AddImageElement imageForm = new AddImageElement(m_model);
-// add(imageForm);
-//
-// final AddFileElement fileForm = new AddFileElement(m_model);
-// add(fileForm);
-//
-// final AddContentItemElement itemForm
-// = new AddContentItemElement(m_model);
-// add(itemForm);
- m_detailPane.add(new SummarySection(editLink, deleteLink));
-// m_detailPane.add(new RelationAttributeSection());
-
- m_detailPane.add(new TypeSecurityContainer(new ElementSection()));
- m_detailPane.add(new TemplateSection(templateAddLink));
-
- //m_detailPane.add(new PermissionsSection(permissionAddLink));
- m_detailPane.add(new PermissionsSection());
-
-// connect(templateAddLink, templateForm);
- // connect(permissionAddLink, permissionsForm);
-// final SingleSelect elementSelect
-// = m_elementAddForm.getElementTypeSelect();
-//
-// connect(m_elementAddForm, elementSelect,
-// AddElement.TEXT_ELEMENT, textForm);
-// connect(textForm);
-//
-// connect(m_elementAddForm, elementSelect,
-// AddElement.NUMBER_ELEMENT, numberForm);
-// connect(numberForm);
-//
-// connect(m_elementAddForm, elementSelect,
-// AddElement.DATE_ELEMENT, dateForm);
-// connect(dateForm);
-//
-// connect(m_elementAddForm, elementSelect,
-// AddElement.TEXT_ASSET_ELEMENT, assetForm);
-// connect(assetForm);
-//
-// connect(m_elementAddForm, elementSelect,
-// AddElement.IMAGE_ELEMENT, imageForm);
-// connect(imageForm);
-//
-// connect(m_elementAddForm, elementSelect,
-// AddElement.FILE_ELEMENT, fileForm);
-// connect(fileForm);
-//
-// connect(m_elementAddForm, elementSelect,
-// AddElement.CONTENT_ITEM_ELEMENT, itemForm);
-// connect(itemForm);
- }
-
- // XXX A temporary, low-impact fix.
- private class CancellableForm extends Form implements Cancellable {
-
- private final Submit m_cancel;
-
- CancellableForm(final String name, final Submit cancel) {
- super(name);
-
- m_cancel = cancel;
- }
-
- public final boolean isCancelled(final PageState state) {
- return m_cancel.isSelected(state);
- }
-
- }
-
- private class SummarySection extends Section {
-
- SummarySection(final ActionLink editLink,
- final ActionLink deleteLink) {
- setHeading(new Label(gz("cms.ui.type.details")));
-
- final ActionGroup group = new ActionGroup();
- setBody(group);
-
- group.setSubject(new ContentTypePropertyList(m_type));
-
- group.addAction(new TypeSecurityContainer(editLink));
- group.addAction(new TypeSecurityContainer(deleteLink));
- }
-
- }
-
- private class ElementSection extends Section {
-
- ElementSection() {
- setHeading(new Label(gz("cms.ui.type.elements")));
-
- final ActionGroup group = new ActionGroup();
- setBody(group);
-
-// group.setSubject(m_elements);
-// group.addAction(m_elementAddForm);
- }
-
- @Override
- public final boolean isVisible(final PageState state) {
-// return m_model.isSelected(state) && isDynamicType(state)
-// && !ContentSection.getConfig().getHideUDCTUI();
- return false;
- }
-
- }
-
- private class TemplateSection extends Section {
-
- TemplateSection(final ActionLink templateAddLink) {
- setHeading(new Label(gz("cms.ui.type.templates")));
-
- final ActionGroup group = new ActionGroup();
- setBody(group);
-
-// ToDo group.setSubject(m_templates);
- group.addAction(new TypeSecurityContainer(templateAddLink));
- }
-
- @Override
- public final boolean isVisible(final PageState state) {
- return m_model.isSelected(state) && !isDynamicType(state);
- }
-
- }
-
- private class PermissionsSection extends Section {
-
- public PermissionsSection() {
- setHeading(new Label(gz("cms.ui.type.permissions")));
-
- final ActionGroup group = new ActionGroup();
- setBody(group);
-
- group.setSubject(m_permissions);
- //group.addAction(new TypeSecurityContainer(permissionsAddLink));
- }
-
- @Override
- public final boolean isVisible(final PageState state) {
- return m_model.isSelected(state) && !isDynamicType(state);
- }
-
- }
-
-// private class RelationAttributeSection extends Section {
-//
-// RelationAttributeSection() {
-// setHeading(new Label(gz("cms.ui.type.attributes")));
-//
-// setBody(new RelationAttributeList(m_type));
-// }
-//
-// @Override
-// public final boolean isVisible(final PageState state) {
-//// ISt es möglich, den folgenden Code nur einmal zu haben?? Kann man auf die isVisible von RelationAttributeList
-// // zurückgreifen??
-// boolean retVal = false;
-// ContentType ct = (ContentType) m_type.getContentType(state);
-// ContentItem ci = null;
-//
-// try {
-// Class extends ContentItem> clazz = Class.forName(ct.
-// getClassName()).asSubclass(ContentItem.class);
-// ci = clazz.newInstance();
-// if (ci instanceof RelationAttributeInterface) {
-// RelationAttributeInterface rai
-// = (RelationAttributeInterface) ci;
-// retVal = rai.hasRelationAttributes();
-// }
-// ci.delete();
-// } catch (Exception ex) {
-// //retVal = false;
-// }
-//
-// return retVal;
-// }
-// }
- @Override
- public final void register(final Page page) {
- super.register(page);
-
- page.addActionListener(new ActionListener() {
-
- @Override
- public final void actionPerformed(final ActionEvent event) {
- final PageState state = event.getPageState();
-
- if (state.isVisibleOnPage(ContentTypeItemPane.this)
- && m_model.isSelected(state)
- && !userCanEdit(state)) {
-// m_templates.getRemoveColumn().setVisible(state, false);
-// m_templates.getDefaultColumn().setVisible(state, false);
-// m_elements.getTable().getColumn(3).setVisible(state, false);
- }
- }
-
- });
- }
-
- /**
- * Unregister a content type from a content section.
- */
- private void removeType(final PageState state) {
- final ContentSection section = CMS.getContext().getContentSection();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeManager typeManager = cdiUtil.findBean(
- ContentTypeManager.class);
- final ContentSectionManager sectionManager = cdiUtil.findBean(
- ContentSectionManager.class);
-
- final ContentType type = m_type.getContentType(state);
- final Class extends ContentItem> typeClass;
- try {
- typeClass = (Class extends ContentItem>) Class.forName(
- type.getContentItemClass());
- } catch (ClassNotFoundException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- sectionManager.removeContentTypeFromSection(typeClass, section);
- }
-
- /**
- * Determine if the current user has access to edit the content type
- */
- protected static boolean userCanEdit(final PageState state) {
- final PermissionChecker permissionChecker = CdiUtil.createCdiUtil()
- .findBean(PermissionChecker.class);
- final ContentSection section = CMS.getContext().getContentSection();
-
- return permissionChecker.isPermitted(
- AdminPrivileges.ADMINISTER_CONTENT_TYPES, section);
- }
-
- /**
- * utility method get the DataObject from the DataBase, returns true if it
- * is a modifiable type, false otherwise.
- *
- * Because we don't have modifiable types aka User Definied Content Types in
- * CCM NG yet, this method returns always false for now.
- */
- protected final boolean isDynamicType(final PageState state) {
- return false;
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeListModelBuilder.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeListModelBuilder.java
deleted file mode 100755
index f28975a32..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeListModelBuilder.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.type;
-
-import com.arsdigita.bebop.List;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.list.ListModel;
-import com.arsdigita.bebop.list.ListModelBuilder;
-import com.arsdigita.cms.CMS;
-
-import org.librecms.contentsection.ContentSection;
-
-import com.arsdigita.util.LockableImpl;
-
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.NoSuchElementException;
-
-/**
- * Builds a dynamic list of content types for a content section.
- */
-class ContentTypeListModelBuilder
- extends LockableImpl
- implements ListModelBuilder {
-
- /**
- *
- * @param list
- * @param state
- *
- * @return
- */
- @Override
- public ListModel makeModel(final List list, final PageState state) {
- return new Model();
- }
-
- /**
- *
- */
- private class Model implements ListModel {
-
- private final java.util.List types;
- private int index = -1;
-
- Model() {
- final ContentSection section = CMS.getContext().getContentSection();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeAdminPaneController controller = cdiUtil.findBean(
- ContentTypeAdminPaneController.class);
-
- types = controller.getTypeList(section);
- }
-
- @Override
- public boolean next() throws NoSuchElementException {
- index++;
- return index < types.size();
- }
-
- @Override
- public Object getElement() {
- return types.get(index)[1];
- }
-
- @Override
- public String getKey() {
- return types.get(index)[0];
- }
-
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypePropertyList.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypePropertyList.java
deleted file mode 100755
index 2dafd940e..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypePropertyList.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * 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.type;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.cms.CMS;
-
-import org.librecms.contentsection.ContentSection;
-import org.librecms.contentsection.ContentType;
-
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.kernel.KernelConfig;
-import com.arsdigita.toolbox.ui.Property;
-import com.arsdigita.toolbox.ui.PropertyList;
-
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.Locale;
-
-import org.librecms.CmsConstants;
-import org.librecms.contenttypes.ContentTypeInfo;
-import org.librecms.contenttypes.ContentTypesManager;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.ResourceBundle;
-
-/**
- * This component displays basic attributes of a content type including:
- *
- * label, description, default lifecycle definition, default workflow template
- *
- * @author Michael Pih
- * @author Justin Ross
- * @author Jens Pelzetter
- */
-class ContentTypePropertyList extends PropertyList {
-
- private final ContentTypeRequestLocal m_type;
-
- public ContentTypePropertyList(final ContentTypeRequestLocal type) {
- m_type = type;
- }
-
- @Override
- protected final List properties(final PageState state) {
- final List props = super.properties(state);
- final ContentType type = m_type.getContentType(state);
- final ContentSection section = CMS.getContext().getContentSection();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypesManager typesManager = cdiUtil
- .findBean(ContentTypesManager.class);
- final ContentTypeInfo typeInfo = typesManager.getContentTypeInfo(type);
-
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Locale defaultLocale = kernelConfig.getDefaultLocale();
-
- final ResourceBundle labelBundle = ResourceBundle
- .getBundle(typeInfo.getLabelBundle());
- final ResourceBundle descBundle = ResourceBundle
- .getBundle(typeInfo.getDescriptionBundle());
-
- props.add(new Property(gz("cms.ui.name"),
- labelBundle.getString(typeInfo.getLabelKey())));
- props.add(new Property(gz("cms.ui.description"),
- descBundle
- .getString(typeInfo.getDescriptionKey())));
-// props.add(new Property(gz("cms.ui.type.parent"),
-// type.getParent().orElse(null)));
- props.add(new Property(gz("cms.ui.type.lifecycle"),
- getLifecycle(section, type)));
- props.add(new Property(gz("cms.ui.type.workflow"),
- getWorkflow(section, type)));
-
- return props;
- }
-
- private String getLifecycle(final ContentSection section,
- final ContentType type) {
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Locale defaultLocale = kernelConfig.getDefaultLocale();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeAdminPaneController controller = cdiUtil
- .findBean(ContentTypeAdminPaneController.class);
-
- final Optional label = controller
- .getLifecycleDefinitionLabel(type, defaultLocale);
-
- if (label.isPresent()) {
- return label.get();
- } else {
- return lz("cms.ui.type.lifecycle.none");
- }
- }
-
- private String getWorkflow(final ContentSection section,
- final ContentType type) {
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Locale defaultLocale = kernelConfig.getDefaultLocale();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeAdminPaneController controller = cdiUtil
- .findBean(ContentTypeAdminPaneController.class);
-
- final Optional name = controller
- .getWorkflowTemplateName(type, defaultLocale);
-
- if (name.isPresent()) {
- return name.get();
- } else {
- return lz("cms.ui.type.workflow.none");
- }
- }
-
- private static GlobalizedMessage gz(final String key) {
- return new GlobalizedMessage(key, CmsConstants.CMS_BUNDLE);
- }
-
- private static String lz(final String key) {
- return (String) gz(key).localize();
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeRequestLocal.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeRequestLocal.java
deleted file mode 100755
index d2125e9d2..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/ContentTypeRequestLocal.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.type;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.RequestLocal;
-
-import org.librecms.contentsection.ContentType;
-
-public abstract class ContentTypeRequestLocal extends RequestLocal {
-
- @Override
- protected abstract Object initialValue(final PageState state);
-
- public final ContentType getContentType(final PageState state) {
- return (ContentType) get(state);
- }
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/EditType.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/EditType.java
deleted file mode 100755
index 2acd84c19..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/EditType.java
+++ /dev/null
@@ -1,386 +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.type;
-
-import com.arsdigita.bebop.ColumnPanel;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.SimpleContainer;
-import com.arsdigita.bebop.SingleSelectionModel;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.FormInitListener;
-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.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.LongParameter;
-import com.arsdigita.bebop.parameters.NotNullValidationListener;
-import com.arsdigita.cms.CMS;
-
-import org.librecms.contentsection.ContentSection;
-import org.librecms.contentsection.ContentType;
-import org.librecms.lifecycle.LifecycleDefinition;
-
-import com.arsdigita.cms.ui.CMSForm;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.kernel.KernelConfig;
-import com.arsdigita.util.UncheckedWrapperException;
-
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.workflow.Workflow;
-import org.libreccm.workflow.WorkflowRepository;
-import org.librecms.CmsConstants;
-import org.librecms.contentsection.ContentTypeManager;
-import org.librecms.contentsection.ContentTypeRepository;
-import org.librecms.lifecycle.LifecycleDefinitionRepository;
-
-import java.util.List;
-import java.util.Locale;
-import java.util.Optional;
-import java.util.TooManyListenersException;
-
-/**
- * This class contains a form component to edit a content type
- *
- * @author Jack Chung (flattop@arsdigita.com)
- * @author Michael Pih (pihman@arsdigita.com)
- * @author Jens Pelzetter
- */
-public class EditType extends CMSForm
- implements FormInitListener, FormProcessListener {
-
- private static final Logger LOGGER = LogManager.getLogger(EditType.class);
-
- private final SingleSelectionModel selectedTypeModel;
-
- // Form widgets
- private final Hidden idField;
-// private TextField m_label;
-// private TextArea m_description;
- private final SingleSelect lifecycleSelect;
- private final SingleSelect workflowSelect;
- private final Submit submitButton;
- private final Submit cancelButton;
-
- /**
- * @param selectedTypeModel The content type selection model. This tells the
- * form which content type is selected.
- */
- public EditType(final SingleSelectionModel selectedTypeModel) {
- super("EditContentType");
-
- this.selectedTypeModel = selectedTypeModel;
-
- idField = new Hidden(new LongParameter("id"));
- idField.addValidationListener(new NotNullValidationListener());
- super.add(idField);
-
-// add(new Label(new GlobalizedMessage("cms.ui.type.label",
-// CmsConstants.CMS_BUNDLE)));
-// m_label = new TextField(new StringParameter("label"));
-// m_label.addValidationListener(new NotNullValidationListener());
-// m_label.setSize(40);
-// m_label.setMaxLength(1000);
-// add(m_label);
-//
-// add(new Label(new GlobalizedMessage("cms.ui.description",
-// CmsConstants.CMS_BUNDLE)));
-// m_description = new TextArea(new StringParameter("description"));
-// m_description.addValidationListener(
-// new StringLengthValidationListener(4000));
-// m_description.setCols(40);
-// m_description.setRows(5);
-// m_description.setWrap(TextArea.SOFT);
-// add(m_description);
- super.add(new Label(new GlobalizedMessage("cms.ui.type.lifecycle",
- CmsConstants.CMS_BUNDLE)));
- lifecycleSelect = new SingleSelect(new LongParameter("lifecycle"));
- try {
- lifecycleSelect.addPrintListener(new SelectLifecyclePrintListener());
- } catch (TooManyListenersException e) {
- throw new UncheckedWrapperException("TooManyListeners: " + e
- .getMessage(), e);
- }
- super.add(lifecycleSelect);
-
- super.add(new Label(new GlobalizedMessage("cms.ui.type.workflow",
- CmsConstants.CMS_BUNDLE)));
- workflowSelect = new SingleSelect(new LongParameter("workflow"));
- try {
- workflowSelect.addPrintListener(new SelectWorkflowPrintListener());
- } catch (TooManyListenersException ex) {
- throw new UncheckedWrapperException("TooManyListeners: " + ex
- .getMessage(), ex);
- }
- super.add(workflowSelect);
-
- final SimpleContainer buttonContainer = new SimpleContainer();
- submitButton = new Submit(new GlobalizedMessage("cms.ui.save",
- CmsConstants.CMS_BUNDLE));
- buttonContainer.add(submitButton);
- cancelButton = new Submit(new GlobalizedMessage("cms.ui.cancel",
- CmsConstants.CMS_BUNDLE));
- buttonContainer.add(cancelButton);
- super.add(buttonContainer, ColumnPanel.FULL_WIDTH | ColumnPanel.CENTER);
-
- super.addInitListener(this);
- super.addSubmissionListener(new TypeSecurityListener());
- super.addProcessListener(this);
- }
-
- /**
- * Returns true if the "cancel" button was submitted.
- *
- * @param state The page state
- *
- * @return True if the form was cancelled, false otherwise
- */
- @Override
- public boolean isCancelled(final PageState state) {
- return cancelButton.isSelected(state);
- }
-
- /**
- * Returns the "cancel" button on the form
- *
- * @return the cancel button on the form
- */
- public Submit getCancelButton() {
- return cancelButton;
- }
-
- /**
- * Populates the form with the content type properties.
- *
- * @param event
- */
- @Override
- public void init(final FormSectionEvent event) {
-
- final FormData data = event.getFormData();
- final PageState state = event.getPageState();
-
-// final ContentSection section = CMS.getContext().getContentSection();
-//
-// final KernelConfig kernelConfig = KernelConfig.getConfig();
- final ContentType type = getContentType(state);
- final long typeId = type.getObjectId();
-// final String label = type.getLabel().getValue(kernelConfig
-// .getDefaultLocale());
-// final String description = type.getDescription().getValue(kernelConfig
-// .getDefaultLocale());
-
- data.put(idField.getName(), typeId);
-// data.put(m_label.getName(), label);
-// data.put(m_description.getName(), description);
-
- final LifecycleDefinition cycle = type.getDefaultLifecycle();
- if (cycle != null) {
- data.put(lifecycleSelect.getName(), cycle.getDefinitionId());
- }
-
- final Workflow template = type.getDefaultWorkflow();
- if (template != null) {
- data.put(workflowSelect.getName(), template.getWorkflowId());
- }
- }
-
- /**
- * Fetches the currently selected content type from the single selection
- * model.
- */
- private ContentType getContentType(final PageState state) {
-
- final String key = selectedTypeModel.getSelectedKey(state);
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeRepository typeRepo = cdiUtil.findBean(
- ContentTypeRepository.class);
-
- final Optional result;
- try {
- result = typeRepo.findByIdAndFetchAttributes(Long.parseLong(key),
- "defaultLifecycle",
- "defaultWorkflow");
- } catch (NumberFormatException ex) {
- throw new UncheckedWrapperException(String.format(
- "The provided key \"%s\" is not a long.", key),
- ex);
- }
-
- if (result.isPresent()) {
- return result.get();
- } else {
- throw new UncheckedWrapperException(String.format(
- "ContentType with ID %s not found.", key));
- }
- }
-
- /**
- * Edits the content type.
- *
- * @param event
- *
- * @throws FormProcessException
- */
- @Override
- public void process(final FormSectionEvent event) throws
- FormProcessException {
- final FormData data = event.getFormData();
-
- // Get the current content section.
- final ContentSection section = CMS.getContext().getContentSection();
-
- // Read form variables.
- final Long key = (Long) data.get(idField.getName());
-// final String label = (String) data.get(m_label.getName());
-// final String description = (String) data.get(m_description.getName());
- final Long lifecycleId = (Long) data.get(lifecycleSelect.getName());
- final Long workflowId = (Long) data.get(workflowSelect.getName());
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeRepository typeRepo = cdiUtil.findBean(
- ContentTypeRepository.class);
- final LifecycleDefinitionRepository lifecycleDefRepo = cdiUtil.findBean(
- LifecycleDefinitionRepository.class);
- final WorkflowRepository workflowRepo = cdiUtil
- .findBean(WorkflowRepository.class);
- final ContentTypeManager typeManager = cdiUtil.findBean(
- ContentTypeManager.class);
-
- final Optional type = typeRepo.findById(key);
- if (!type.isPresent()) {
- LOGGER.error("Can't find ContentType with key {}", key);
- throw new FormProcessException(new GlobalizedMessage(
- "cms.ui.type.content_editing_failed",
- CmsConstants.CMS_BUNDLE,
- new Object[]{key}));
- }
-
-// final KernelConfig kernelConfig = KernelConfig.getConfig();
-// type.get().getLabel().putValue(kernelConfig.getDefaultLocale(), label);
-// type.get().getDescription().putValue(kernelConfig.getDefaultLocale(),
-// description);
- typeRepo.save(type.get());
-
- // Handle default lifecycle and workflow.
- final LifecycleDefinition defaultLifecycle;
- if (lifecycleId == 0) {
- defaultLifecycle = null;
- } else {
- defaultLifecycle = lifecycleDefRepo.findById(lifecycleId).get();
- }
- final Workflow defaultWorkflow;
- if (workflowId == 0) {
- defaultWorkflow = null;
- } else {
- defaultWorkflow = workflowRepo.findById(workflowId).get();
- }
-
- typeManager.setDefaultLifecycle(type.get(), defaultLifecycle);
- typeManager.setDefaultWorkflow(type.get(), defaultWorkflow);
-
- }
-
- /**
- * Print listener to generate the select widget for the list of lifecyle
- * definitions.
- */
- private class SelectLifecyclePrintListener implements PrintListener {
-
- @Override
- public void prepare(final PrintEvent event) {
-
- final SingleSelect lifecycleSelect = (SingleSelect) event
- .getTarget();
- lifecycleSelect.clearOptions();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeAdminPaneController controller = cdiUtil
- .findBean(ContentTypeAdminPaneController.class);
-
- // Get the current content section
- ContentSection section = CMS.getContext().getContentSection();
-
- lifecycleSelect.addOption(new Option(
- "0",
- new Label(new GlobalizedMessage("cms.ui.type.lifecycle.select",
- CmsConstants.CMS_BUNDLE))));
-
- final List cycles = controller
- .getLifecycleDefinitions(section);
- final Locale defaultLocale = KernelConfig.getConfig()
- .getDefaultLocale();
- cycles.forEach(cycle -> {
- lifecycleSelect.addOption(
- new Option(Long.toString(cycle.getDefinitionId()),
- new Text(cycle.getLabel().getValue(defaultLocale))));
- });
- }
-
- }
-
- /**
- * Print listener to generate the select widget for the list of workflow
- * templates.
- */
- private class SelectWorkflowPrintListener implements PrintListener {
-
- @Override
- public void prepare(final PrintEvent event) {
-
- final SingleSelect workflowSelect = (SingleSelect) event.getTarget();
- workflowSelect.clearOptions();
-
- // Get the current content section
- ContentSection section = CMS.getContext().getContentSection();
-
- workflowSelect.addOption(new Option(
- "0",
- new Label(new GlobalizedMessage("cms.ui.type.workflow.select",
- CmsConstants.CMS_BUNDLE))));
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeAdminPaneController controller = cdiUtil
- .findBean(ContentTypeAdminPaneController.class);
-
- final List templates = controller
- .getWorkflowTemplates(section);
- final Locale defaultLocale = KernelConfig.getConfig()
- .getDefaultLocale();
- templates.forEach(template -> {
- workflowSelect.addOption(
- new Option(
- Long.toString(template.getWorkflowId()),
- new Text(template.getName().getValue(defaultLocale))));
- });
-
- }
-
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/SelectType.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/SelectType.java
deleted file mode 100755
index ae35157d9..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/SelectType.java
+++ /dev/null
@@ -1,211 +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.type;
-
-import com.arsdigita.bebop.ColumnPanel;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.SimpleContainer;
-import com.arsdigita.bebop.event.FormProcessListener;
-import com.arsdigita.bebop.event.FormSectionEvent;
-import com.arsdigita.bebop.event.FormSubmissionListener;
-import com.arsdigita.bebop.event.PrintEvent;
-import com.arsdigita.bebop.event.PrintListener;
-import com.arsdigita.bebop.form.CheckboxGroup;
-import com.arsdigita.bebop.form.Option;
-import com.arsdigita.bebop.form.Submit;
-import com.arsdigita.cms.CMS;
-
-import org.librecms.contentsection.ContentSection;
-
-import com.arsdigita.cms.ui.CMSForm;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.ui.admin.GlobalizationUtil;
-import com.arsdigita.util.UncheckedWrapperException;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.librecms.CmsConstants;
-import org.librecms.contentsection.ContentSectionManager;
-import org.librecms.contentsection.ContentTypeManager;
-import org.librecms.contenttypes.ContentTypeInfo;
-import org.librecms.contenttypes.ContentTypesManager;
-
-import java.util.List;
-import java.util.TooManyListenersException;
-import java.util.stream.Collectors;
-
-/**
- * This class contains a form component to that allows adding already-existing
- * content type to a content section.
- *
- * @author Jack Chung
- * @author Michael Pih
- * @author Jens Pelzetter
- */
-public class SelectType extends CMSForm implements PrintListener,
- FormSubmissionListener,
- FormProcessListener {
-
- private final static String TYPES = "types";
- private CheckboxGroup m_typesCheckbox;
- private Submit m_submit;
- private Submit m_cancel;
-
- public SelectType() {
- super("ContentTypeSelect");
-
- m_typesCheckbox = new CheckboxGroup(TYPES);
- try {
- m_typesCheckbox.addPrintListener(this);
- } catch (TooManyListenersException e) {
- throw new UncheckedWrapperException("TooManyListeners: " + e
- .getMessage());
- }
-
- add(new Label(new GlobalizedMessage("cms.ui.type.available_types",
- CmsConstants.CMS_BUNDLE)));
- add(m_typesCheckbox);
-
- SimpleContainer s = new SimpleContainer();
- m_submit = new Submit("submit");
- m_submit.setButtonLabel("Add Selected Content Types");
- s.add(m_submit);
- m_cancel = new Submit("cancel");
- m_cancel.setButtonLabel("Cancel");
- s.add(m_cancel);
- add(s, ColumnPanel.FULL_WIDTH | ColumnPanel.CENTER);
-
- addProcessListener(this);
- addSubmissionListener(new TypeSecurityListener());
- addSubmissionListener(this);
- }
-
- /**
- * Generate a checkbox list of all content type not associated with the
- * current content section
- * @param event
- */
- @Override
- public void prepare(final PrintEvent event) {
-
- final CheckboxGroup target = (CheckboxGroup) event.getTarget();
-
- // Get the current content section
- final ContentSection section = CMS.getContext().getContentSection();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ContentTypeAdminPaneController controller = cdiUtil
- .findBean(ContentTypeAdminPaneController.class);
- final ContentTypesManager typesManager = cdiUtil.findBean(
- ContentTypesManager.class);
-
- final List availableTypes = typesManager
- .getAvailableContentTypes();
- final List assignedTypes = controller
- .getContentItemClassesList(section);
-// = section.getContentTypes()
-// .stream()
-// .map(contentType -> contentType.getContentItemClass())
-// .collect(Collectors.toList());
-
- final List notAssignedTypes = availableTypes.stream()
- .filter(type -> !assignedTypes.contains(type.getContentItemClass()
- .getName()))
- .collect(Collectors.toList());
-
- for (final ContentTypeInfo typeInfo : notAssignedTypes) {
- addOption(target, typeInfo);
- }
- }
-
- private void addOption(final CheckboxGroup target,
- final ContentTypeInfo typeInfo) {
- final Label label = new Label(new GlobalizedMessage(typeInfo
- .getLabelKey(), typeInfo.getLabelBundle()));
- target.addOption(new Option(typeInfo.getContentItemClass().getName(),
- label));
- }
-
- /**
- * Form submission listener. If the cancel button was pressed, do not
- * process the form.
- *
- * @param event The submit event
- *
- * @throws com.arsdigita.bebop.FormProcessException
- */
- @Override
- public void submitted(final FormSectionEvent event) throws
- FormProcessException {
- PageState state = event.getPageState();
- if (isCancelled(state)) {
- throw new FormProcessException(GlobalizationUtil.globalize(
- "cms.ui.cancelled"));
- }
- }
-
- /**
- * Returns true if this form was cancelled.
- *
- * @return true if the form was cancelled, false otherwise
- */
- @Override
- public boolean isCancelled(final PageState state) {
- return m_cancel.isSelected(state);
- }
-
- /**
- * Processes form listener which updates a life cycle
- *
- * @param event
- *
- * @throws com.arsdigita.bebop.FormProcessException
- */
- @Override
- public void process(final FormSectionEvent event)
- throws FormProcessException {
-
- final ContentSection section = CMS.getContext().getContentSection();
-
- final FormData data = event.getFormData();
- final String[] types = (String[]) data.get(TYPES);
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-// final ContentTypeManager typeManager = cdiUtil.findBean(
-// ContentTypeManager.class);
-// final ContentSectionManager sectionManager = cdiUtil.findBean(
-// ContentSectionManager.class);
- final ContentTypeAdminPaneController controller = cdiUtil
- .findBean(ContentTypeAdminPaneController.class);
-
- if (types != null) {
- for (String type : types) {
-// sectionManager.addContentTypeToSection(
-// typeManager.classNameToClass(type),
-// section,
-// section.getLifecycleDefinitions().get(0),
-// section.getWorkflowTemplates().get(0));
- controller.addContentTypeToContentSection(type, section);
- }
- }
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTable.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTable.java
deleted file mode 100644
index 2fd5ddce4..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTable.java
+++ /dev/null
@@ -1,262 +0,0 @@
-package com.arsdigita.cms.ui.type;
-
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.ControlLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.TableActionEvent;
-import com.arsdigita.bebop.event.TableActionListener;
-import com.arsdigita.bebop.table.RowData;
-import com.arsdigita.bebop.table.TableCellRenderer;
-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.cms.CMS;
-
-import org.librecms.contentsection.ContentType;
-
-import com.arsdigita.cms.ui.ContentSectionRequestLocal;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.libreccm.security.Role;
-
-import com.arsdigita.util.LockableImpl;
-
-import java.util.List;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.security.PermissionChecker;
-import org.libreccm.security.RoleRepository;
-import org.librecms.CmsConstants;
-import org.librecms.contentsection.ContentSection;
-import org.librecms.contentsection.privileges.AdminPrivileges;
-
-import java.util.Iterator;
-
-/**
- *
- * ToDo, maybe not needed anymore...
- *
- * @author Jens Pelzetter
- */
-public class TypePermissionsTable extends Table implements TableActionListener {
-
- private final String TABLE_COL_ROLE = "table_col_role";
- private final String TABLE_COL_CAN_USE = "table_col_can_use";
- private final String TABLE_COL_ACTION = "table_col_action";
- private final ContentTypeRequestLocal type;
-
- public TypePermissionsTable(final ContentSectionRequestLocal section,
- final ContentTypeRequestLocal type) {
- super();
-
- this.type = type;
-
- setEmptyView(new Label(new GlobalizedMessage(
- "cms.ui.type.permissions.none",
- CmsConstants.CMS_BUNDLE)));
-
- TableColumnModel columnModel = getColumnModel();
-
- columnModel.add(new TableColumn(
- 0,
- new GlobalizedMessage("cms.ui.type.permissions.role",
- CmsConstants.CMS_BUNDLE).localize(),
- TABLE_COL_ROLE));
-
- columnModel.add(new TableColumn(
- 1,
- new GlobalizedMessage("cms.ui.type.permissions_can_use",
- CmsConstants.CMS_BUNDLE).localize(),
- TABLE_COL_CAN_USE));
-
- columnModel.add(new TableColumn(
- 2,
- new GlobalizedMessage("cms.ui.type.permission.action",
- CmsConstants.CMS_BUNDLE).localize(),
- TABLE_COL_ACTION));
-
- setModelBuilder(new TypePermissionsTableModelBuilder());
-
- columnModel.get(0).setCellRenderer(new RoleCellRenderer());
- columnModel.get(1).setCellRenderer(new CanUseCellRenderer());
- columnModel.get(2).setCellRenderer(new ActionCellRenderer());
-
- addTableActionListener(this);
- }
-
- @Override
- public void cellSelected(final TableActionEvent event) {
- final PageState state = event.getPageState();
-
- final TableColumn column = getColumnModel().get(event.getColumn());
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final RoleRepository roleRepo = cdiUtil.findBean(RoleRepository.class);
- final TypePermissionsTableController controller = cdiUtil.findBean(
- TypePermissionsTableController.class);
-
- if (TABLE_COL_ACTION.equals(column.getHeaderKey().toString())) {
- final Role role = roleRepo.findById(Long.parseLong(
- event.getRowKey().toString())).get();
- ContentType contentType = getType().getContentType(state);
-
- controller.toggleTypeUsePermission(contentType, role);
- }
- }
-
- @Override
- public void headSelected(final TableActionEvent event) {
- //Nothing to do
- }
-
- private class TypePermissionsTableModelBuilder
- extends LockableImpl
- implements TableModelBuilder {
-
- public TypePermissionsTableModelBuilder() {
- }
-
- @Override
- public TableModel makeModel(final Table table, final PageState state) {
- table.getRowSelectionModel().clearSelection(state);
- return new TypePermissionsTableModel(table, state);
- }
-
- }
-
- private class TypePermissionsTableModel implements TableModel {
-
- private final Iterator> iterator;
- private RowData currentRow;
-
- public TypePermissionsTableModel(final Table table,
- final PageState state) {
- final ContentType contentType = ((TypePermissionsTable) table)
- .getType()
- .getContentType(state);
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final TypePermissionsTableController controller = cdiUtil.findBean(
- TypePermissionsTableController.class);
- final ContentSection section = CMS.getContext().getContentSection();
- final List> rows = controller.retrieveTypePermissions(
- contentType, section);
- iterator = rows.iterator();
- }
-
- @Override
- public int getColumnCount() {
- return 3;
- }
-
- @Override
- public boolean nextRow() {
- if (iterator.hasNext()) {
- currentRow = iterator.next();
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- switch (columnIndex) {
- case 0:
- return currentRow.getColData(0);
- case 1:
- return currentRow.getColData(1);
- case 2:
- if ("cms.ui.type.permissions.can_use.yes".equals(currentRow
- .getColData(1))) {
- return "cms.ui.type.permissions.actions.revoke";
- } else {
- return "cms.ui.type.permissions.can_use.grant";
- }
- default:
- throw new IllegalArgumentException("Invalid column index.");
- }
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- return currentRow.getRowKey();
- }
-
- }
-
- private class RoleCellRenderer
- extends LockableImpl
- implements TableCellRenderer {
-
- @Override
- public Component getComponent(Table table,
- PageState state,
- Object value,
- boolean isSelected,
- Object key,
- int row,
- int column) {
- return new Text(value.toString());
- }
-
- }
-
- private class CanUseCellRenderer
- extends LockableImpl
- implements TableCellRenderer {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- return new Label(new GlobalizedMessage(value.toString(),
- CmsConstants.CMS_BUNDLE));
- }
-
- }
-
- private class ActionCellRenderer
- extends LockableImpl
- implements TableCellRenderer {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final PermissionChecker permissionChecker = cdiUtil.findBean(
- PermissionChecker.class);
-
- final ContentSection section = CMS.getContext().getContentSection();
-
- if (permissionChecker.isPermitted(
- AdminPrivileges.ADMINISTER_CONTENT_TYPES, section)) {
-
- return new ControlLink(new Label(new GlobalizedMessage(
- (String) value), CmsConstants.CMS_BUNDLE));
- } else {
- return new Text("");
- }
-
- }
-
- }
-
- private ContentTypeRequestLocal getType() {
- return type;
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTableController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTableController.java
deleted file mode 100644
index 9e9984aff..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypePermissionsTableController.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.cms.ui.type;
-
-import org.librecms.contentsection.privileges.TypePrivileges;
-
-import com.arsdigita.bebop.table.RowData;
-
-import org.libreccm.security.PermissionChecker;
-import org.libreccm.security.PermissionManager;
-import org.libreccm.security.Role;
-import org.librecms.contentsection.ContentSection;
-import org.librecms.contentsection.ContentSectionRepository;
-import org.librecms.contentsection.ContentType;
-import org.librecms.contentsection.ContentTypeRepository;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-import javax.enterprise.context.RequestScoped;
-import javax.inject.Inject;
-import javax.transaction.Transactional;
-
-/**
- *
- * @author Jens Pelzetter
- */
-@RequestScoped
-public class TypePermissionsTableController {
-
- @Inject
- private PermissionChecker permissionChecker;
-
- @Inject
- private PermissionManager permissionManager;
-
- @Inject
- private ContentSectionRepository sectionRepo;
-
- @Inject
- private ContentTypeRepository typeRepo;
-
- @Transactional(Transactional.TxType.REQUIRED)
- public List> retrieveTypePermissions(
- final ContentType type, final ContentSection section) {
-
- //Ensure that we use a sane object for the type
- return retrieveTypePermissions(type.getObjectId(), section);
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- public List> retrieveTypePermissions(
- final long typeId, final ContentSection section) {
-
- final ContentType type = typeRepo.findById(typeId).get();
- final ContentSection contentSection = sectionRepo
- .findById(section.getObjectId())
- .orElseThrow(() -> new IllegalArgumentException(String.format(
- "No ContentSection with ID %d in the database. "
- + "Where did that Id come from?",
- section.getObjectId())));
-
- final List roles = contentSection.getRoles();
-
- return roles.stream()
- .map(role -> retrievePermissionsForRole(type, role))
- .collect(Collectors.toList());
- }
-
- private RowData retrievePermissionsForRole(final ContentType type,
- final Role role) {
- final RowData rowData = new RowData<>(2);
- rowData.setRowKey(role.getRoleId());
- rowData.setColData(0, role.getName());
-
- if (permissionChecker.isPermitted(TypePrivileges.USE_TYPE, type)) {
- rowData.setColData(1, "cms.ui.type.permissions.can_use.yes");
- } else {
- rowData.setColData(1, "cms.ui.type.permissions.can_use.no");
- }
-
- return rowData;
- }
-
- public void toggleTypeUsePermission(final ContentType type,
- final Role role) {
- if (permissionChecker.isPermitted(TypePrivileges.USE_TYPE, type, role)) {
- permissionManager.revokePrivilege(TypePrivileges.USE_TYPE,
- role,
- type);
- } else {
- permissionManager.grantPrivilege(TypePrivileges.USE_TYPE,
- role,
- type);
- }
- }
-
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypeSecurityContainer.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypeSecurityContainer.java
deleted file mode 100755
index 5d5a8e64e..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypeSecurityContainer.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.type;
-
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.cms.CMS;
-
-import org.libreccm.security.Party;
-
-import com.arsdigita.toolbox.ui.SecurityContainer;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.security.PermissionChecker;
-import org.librecms.contentsection.ContentSection;
-import org.librecms.contentsection.privileges.AdminPrivileges;
-
-/**
- *
- * @author Justin Ross
- * @author Jens Pelzetter
- */
-public final class TypeSecurityContainer extends SecurityContainer {
-
- public TypeSecurityContainer(final Component component) {
- super(component);
- }
-
- @Override
- protected final boolean canAccess(final Party party,
- final PageState state) {
- final PermissionChecker permissionChecker = CdiUtil.createCdiUtil().findBean(PermissionChecker.class);
-
- final ContentSection section = CMS.getContext().getContentSection();
-
- return permissionChecker.isPermitted(
- AdminPrivileges.ADMINISTER_CONTENT_TYPES, section);
- }
-}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypeSecurityListener.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypeSecurityListener.java
deleted file mode 100755
index 7a163f192..000000000
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/type/TypeSecurityListener.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.type;
-
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.event.FormSectionEvent;
-import com.arsdigita.bebop.event.FormSubmissionListener;
-import com.arsdigita.cms.CMS;
-import com.arsdigita.dispatcher.AccessDeniedException;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.security.PermissionChecker;
-import org.librecms.contentsection.ContentSection;
-import org.librecms.contentsection.privileges.AdminPrivileges;
-
-/**
- *
- * @author Justin Ross <jross@redhat.com>
- * @autor Jens Pelzetter
- */
-final class TypeSecurityListener implements FormSubmissionListener {
-
-
- @Override
- public final void submitted(final FormSectionEvent event)
- throws FormProcessException {
-
- final ContentSection section = CMS.getContext().getContentSection();
- final PermissionChecker permissionChecker = CdiUtil.createCdiUtil().findBean(PermissionChecker.class);
- if (!permissionChecker.isPermitted(
- AdminPrivileges.ADMINISTER_CONTENT_TYPES, section)) {
- throw new AccessDeniedException();
- }
- }
-}