All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.workplace.tools.projects.CmsProjectFilesDialog Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
 *
 * 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.
 *
 * For further information about Alkacon Software GmbH & Co. KG, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * 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.opencms.workplace.tools.projects;

import org.opencms.db.CmsResourceState;
import org.opencms.file.CmsProject;
import org.opencms.file.CmsResource;
import org.opencms.jsp.CmsJspActionElement;
import org.opencms.main.CmsException;
import org.opencms.util.CmsStringUtil;
import org.opencms.util.CmsUUID;
import org.opencms.widgets.A_CmsWidget;
import org.opencms.workplace.explorer.CmsExplorer;
import org.opencms.workplace.list.A_CmsListExplorerDialog;
import org.opencms.workplace.list.CmsHtmlList;
import org.opencms.workplace.list.CmsListDropdownAction;
import org.opencms.workplace.list.CmsListMetadata;
import org.opencms.workplace.list.I_CmsListResourceCollector;
import org.opencms.workplace.tools.CmsToolDialog;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;

/**
 * Explorer dialog for the project files view.

* * @since 6.0.0 */ public class CmsProjectFilesDialog extends A_CmsListExplorerDialog { /** list independent action constant. */ public static final String LIST_IACTION_FILTER = "iaf"; /** list id constant. */ public static final String LIST_ID = "lpr"; /** Session attribute key for the stored project. */ public static final String SESSION_STORED_PROJECT = "CmsProjectFilesDialog_storedProject"; /** The internal collector instance. */ private I_CmsListResourceCollector m_collector; /** Stores the value of the request parameter for the resource filter. */ private String m_filter; /** Stores the value of the request parameter for the project id. */ private String m_paramProjectid; /** * Public constructor with JSP action element.

* * @param jsp an initialized JSP action element */ public CmsProjectFilesDialog(CmsJspActionElement jsp) { super(jsp, LIST_ID, Messages.get().container(Messages.GUI_PROJECT_FILES_LIST_NAME_0)); } /** * Public constructor with JSP variables.

* * @param context the JSP page context * @param req the JSP request * @param res the JSP response */ public CmsProjectFilesDialog(PageContext context, HttpServletRequest req, HttpServletResponse res) { this(new CmsJspActionElement(context, req, res)); } /** * @see org.opencms.workplace.list.A_CmsListDialog#executeListIndepActions() */ @Override public void executeListIndepActions() { if (getParamListAction().equals(LIST_IACTION_FILTER)) { // forward to the editor getList().setCurrentPage(1); m_collector = null; refreshList(); } else { super.executeListIndepActions(); } } /** * @see org.opencms.workplace.list.A_CmsListDialog#executeListMultiActions() */ @Override public void executeListMultiActions() { throwListUnsupportedActionException(); } /** * @see org.opencms.workplace.list.A_CmsListDialog#executeListSingleActions() */ @Override public void executeListSingleActions() { throwListUnsupportedActionException(); } /** * @see org.opencms.workplace.list.A_CmsListExplorerDialog#getCollector() */ @Override public I_CmsListResourceCollector getCollector() { if (m_collector == null) { CmsUUID projectId = getProject().getUuid(); CmsResourceState state = CmsResource.STATE_KEEP; CmsHtmlList list = getList(); if (list != null) { if (getSettings().getCollector() != null) { getSettings().setCollector(null); } } if (m_filter.equals("new")) { state = CmsResource.STATE_NEW; } else if (m_filter.equals("changed")) { state = CmsResource.STATE_CHANGED; } else if (m_filter.equals("deleted")) { state = CmsResource.STATE_DELETED; } m_collector = new CmsProjectFilesCollector(this, projectId, state); } return m_collector; } /** * @see org.opencms.workplace.list.A_CmsListDialog#getList() */ @Override public CmsHtmlList getList() { CmsHtmlList list = super.getList(); // get parameter m_filter = getJsp().getRequest().getParameter(LIST_IACTION_FILTER + CmsListDropdownAction.SUFFIX_PARAM); CmsListDropdownAction listAction = null; if (list != null) { listAction = ((CmsListDropdownAction)list.getMetadata().getIndependentAction(LIST_IACTION_FILTER)); if (CmsStringUtil.isEmptyOrWhitespaceOnly(m_filter)) { // if no param, get old value m_filter = listAction.getSelection(); } } if (CmsStringUtil.isEmptyOrWhitespaceOnly(m_filter)) { m_filter = CmsProjectResourcesDisplayMode.ALL_CHANGES.getMode(); } if (listAction != null) { listAction.setSelection(m_filter); } return list; } /** * Returns the project id parameter value.

* * @return the project id parameter value */ public String getParamProjectid() { return m_paramProjectid; } /** * @see org.opencms.workplace.list.A_CmsListDialog#refreshList() */ @Override public synchronized void refreshList() { if (LIST_IACTION_FILTER.equals(getParamListAction())) { if (m_collector != null) { // refresh only if really necessary return; } } super.refreshList(); } /** * Sets the project id parameter value.

* * @param projectId the project id parameter value */ public void setParamProjectid(String projectId) { m_paramProjectid = projectId; getJsp().getRequest().getSession().setAttribute("LASTPRJ", projectId); } /** * @see org.opencms.workplace.list.A_CmsListDialog#fillDetails(java.lang.String) */ @Override protected void fillDetails(String detailId) { // no-details } /** * @see org.opencms.workplace.list.A_CmsListExplorerDialog#getAdditionalParametersForExplorerForward() */ @Override protected java.util.Map getAdditionalParametersForExplorerForward() { Map result = new HashMap(); result.put( CmsExplorer.PARAMETER_CONTEXTMENUPARAMS, new String[] {CmsToolDialog.PARAM_ADMIN_PROJECT + "=" + m_paramProjectid}); return result; } /** * @see org.opencms.workplace.list.A_CmsListExplorerDialog#getProject() */ @Override protected CmsProject getProject() { CmsUUID projectId = new CmsUUID(getParamProjectid()); try { return getCms().readProject(projectId); } catch (CmsException e) { return super.getProject(); } } /** * @see org.opencms.workplace.CmsWorkplace#initMessages() */ @Override protected void initMessages() { // add specific dialog resource bundle addMessages(Messages.get().getBundleName()); // add default resource bundles super.initMessages(); } /** * @see org.opencms.workplace.list.A_CmsListDialog#setIndependentActions(org.opencms.workplace.list.CmsListMetadata) */ @Override protected void setIndependentActions(CmsListMetadata metadata) { CmsListDropdownAction filterAction = new CmsListDropdownAction(LIST_IACTION_FILTER); filterAction.setName(Messages.get().container(Messages.GUI_PROJECT_FILES_FILTER_ACTION_NAME_0)); filterAction.setHelpText(Messages.get().container(Messages.GUI_PROJECT_FILES_FILTER_ACTION_HELP_0)); Iterator it = CmsProjectResourcesDisplayMode.VALUES.iterator(); while (it.hasNext()) { CmsProjectResourcesDisplayMode mode = (CmsProjectResourcesDisplayMode)it.next(); filterAction.addItem(mode.getMode(), Messages.get().container(A_CmsWidget.LABEL_PREFIX + mode.getMode())); } metadata.addIndependentAction(filterAction); super.setIndependentActions(metadata); } /** * @see org.opencms.workplace.list.A_CmsListDialog#setMultiActions(org.opencms.workplace.list.CmsListMetadata) */ @Override protected void setMultiActions(CmsListMetadata metadata) { // no LMAs } /** * @see org.opencms.workplace.list.A_CmsListDialog#validateParamaters() */ @Override protected void validateParamaters() throws Exception { try { getCms().readProject(new CmsUUID(getParamProjectid())); setStoredProject(getParamProjectid()); // doing this after the readProject call because now we know the id is valid } catch (Exception e) { Exception exceptionToRethrow = e; String storedProject = getStoredProject(); boolean usingStoredProject = false; if (storedProject != null) { try { getCms().readProject(new CmsUUID(storedProject)); m_paramProjectid = storedProject; usingStoredProject = true; } catch (Exception e2) { exceptionToRethrow = e2; } } if (!usingStoredProject) { if (!getCms().getRequestContext().getCurrentProject().isOnlineProject()) { m_paramProjectid = getCms().getRequestContext().getCurrentProject().getUuid().toString(); } else { throw exceptionToRethrow; } } } } /** * Gets the stored project id from the session.

* * @return the stored project id */ private String getStoredProject() { return (String)getSession().getAttribute(SESSION_STORED_PROJECT); } /** * Sets the stored project id.

* * @param project the project id to be stored */ private void setStoredProject(String project) { getSession().setAttribute(SESSION_STORED_PROJECT, project); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy