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

org.opencms.workplace.editors.CmsDialogProperty 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.editors;

import org.opencms.file.CmsPropertyDefinition;
import org.opencms.i18n.CmsMessages;
import org.opencms.jsp.CmsJspActionElement;
import org.opencms.main.CmsException;
import org.opencms.main.CmsLog;
import org.opencms.util.CmsStringUtil;
import org.opencms.workplace.commons.CmsPropertyCustom;
import org.opencms.workplace.explorer.CmsNewResourceXmlPage;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import java.util.TreeMap;

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

import org.apache.commons.logging.Log;

/**
 * Provides methods for the special xmlpage property dialog.

* * This is a special dialog that is used for xmlpages in the workplace and the editors.

* Uses methods from the customized property dialog where possible.

* * The following files use this class: *

    *
  • /jsp/editors/dialogs/property.html *
*

* * @since 6.0.0 */ public class CmsDialogProperty extends CmsPropertyCustom { /** The log object for this class. */ private static final Log LOG = CmsLog.getLog(CmsDialogProperty.class); /** Flag indicating if the template property was changed. */ private boolean m_templateChanged; /** * Public constructor with JSP action element.

* * @param jsp an initialized JSP action element */ public CmsDialogProperty(CmsJspActionElement jsp) { super(jsp); } /** * Public constructor with JSP variables.

* * @param context the JSP page context * @param req the JSP request * @param res the JSP response */ public CmsDialogProperty(PageContext context, HttpServletRequest req, HttpServletResponse res) { this(new CmsJspActionElement(context, req, res)); } /** * Creates the HTML String for the edit properties form.

* * @return the HTML output String for the edit properties form */ @Override public String buildEditForm() { CmsMessages messages = Messages.get().getBundle(getLocale()); StringBuffer retValue = new StringBuffer(2048); // check if the properties are editable boolean editable = isEditable(); // create "disabled" attribute if properties are not editable String disabled = ""; if (!editable) { disabled = " disabled=\"disabled\""; } retValue.append("

\n"); retValue.append("\n"); retValue.append("\t\n"); retValue.append("\t\n"); retValue.append( "\t\n"); retValue.append("\n"); retValue.append("\n"); // create template select box row retValue.append(buildTableRowStart(messages.key(Messages.GUI_INPUT_TEMPLATE_0))); retValue.append( buildSelectTemplates( "name=\"" + CmsPropertyDefinition.PROPERTY_TEMPLATE + "\" class=\"maxwidth noborder\"" + disabled)); retValue.append("\n"); retValue.append("\t
" + messages.key(Messages.GUI_INPUT_PROPERTY_0) + "" + messages.key(Messages.GUI_LABEL_VALUE_0) + "" + messages.key(Messages.GUI_INPUT_USEDPROPERTY_0) + "
"); retValue.append(" "); retValue.append(buildTableRowEnd()); // create the text property input rows retValue.append(buildTextInput(editable)); // show navigation properties if enabled in explorer type settings if (showNavigation()) { retValue.append(buildNavigationProperties(editable)); } retValue.append("
"); return retValue.toString(); } /** * Builds the html for the page template select box.

* * @param attributes optional attributes for the <select> tag * @return the html for the page template select box */ public String buildSelectTemplates(String attributes) { List options = new ArrayList(); List values = new ArrayList(); int selectedValue = -1; String currentTemplate = null; TreeMap templates = null; try { // read the current template currentTemplate = getCms().readPropertyObject( getParamResource(), CmsPropertyDefinition.PROPERTY_TEMPLATE, true).getValue(); // get all available templates templates = CmsNewResourceXmlPage.getTemplates(getCms(), getParamResource()); } catch (CmsException e) { // ignore this exception if (LOG.isInfoEnabled()) { LOG.info(Messages.get().getBundle().key(Messages.LOG_READ_TEMPLATE_FAILED_0), e); } } if (currentTemplate == null) { currentTemplate = ""; } if (templates == null) { // no valid template found, use only current one addCurrentTemplate(currentTemplate, options, values); } else { boolean found = false; // templates found, create option and value lists Iterator> i = templates.entrySet().iterator(); int counter = 0; while (i.hasNext()) { Entry entry = i.next(); String key = entry.getKey(); String path = entry.getValue(); if (currentTemplate.equals(path)) { // mark the currently selected template selectedValue = counter; found = true; } options.add(key); values.add(path); counter++; } if (!found) { // current template was not found among module templates, add current template as option addCurrentTemplate(currentTemplate, options, values); selectedValue = 0; } } String hiddenField = ""; return buildSelect(attributes, options, values, selectedValue, false) + hiddenField; } /** * Returns if the template property was changed.

* * @return true if the template property was changed, otherwise false */ public boolean hasTemplateChanged() { return m_templateChanged; } /** * Performs the editing of the resources properties.

* * @param request the HttpServletRequest * @return true, if the properties were successfully changed, otherwise false * @throws CmsException if editing is not successful */ @Override protected boolean performEditOperation(HttpServletRequest request) throws CmsException { boolean useTempfileProject = Boolean.valueOf(getParamUsetempfileproject()).booleanValue(); try { if (useTempfileProject) { switchToTempProject(); } // write the common properties defined in the explorer type settings Iterator i = getExplorerTypeSettings().getProperties().iterator(); // iterate over the properties while (i.hasNext()) { String curProperty = i.next(); String paramValue = request.getParameter(PREFIX_VALUE + curProperty); String oldValue = request.getParameter(PREFIX_HIDDEN + curProperty); writeProperty(curProperty, paramValue, oldValue); } // write special file properties String paramValue = null; String oldValue = null; // write the navigation properties if enabled if (showNavigation()) { // get the navigation enabled parameter paramValue = request.getParameter("enablenav"); if (Boolean.valueOf(paramValue).booleanValue()) { // navigation enabled, update params paramValue = request.getParameter("navpos"); if (!"-1".equals(paramValue)) { // update the property only when it is different from "-1" (meaning no change) oldValue = request.getParameter(PREFIX_HIDDEN + CmsPropertyDefinition.PROPERTY_NAVPOS); writeProperty(CmsPropertyDefinition.PROPERTY_NAVPOS, paramValue, oldValue); } paramValue = request.getParameter(PREFIX_VALUE + CmsPropertyDefinition.PROPERTY_NAVTEXT); oldValue = request.getParameter(PREFIX_HIDDEN + CmsPropertyDefinition.PROPERTY_NAVTEXT); writeProperty(CmsPropertyDefinition.PROPERTY_NAVTEXT, paramValue, oldValue); } else { // navigation disabled, delete property values writeProperty(CmsPropertyDefinition.PROPERTY_NAVPOS, null, null); writeProperty(CmsPropertyDefinition.PROPERTY_NAVTEXT, null, null); } } // get the template parameter paramValue = request.getParameter(CmsPropertyDefinition.PROPERTY_TEMPLATE); oldValue = request.getParameter(PREFIX_HIDDEN + CmsPropertyDefinition.PROPERTY_TEMPLATE); writeProperty(CmsPropertyDefinition.PROPERTY_TEMPLATE, paramValue, oldValue); if ((paramValue != null) && !paramValue.equals(oldValue)) { // template has changed, refresh editor window m_templateChanged = true; } } finally { if (useTempfileProject) { switchToCurrentProject(); } } return true; } /** * Adds the currently selected template value to the option and value list.

* * @param currentTemplate the currently selected template to add * @param options the option list * @param values the value list */ private void addCurrentTemplate(String currentTemplate, List options, List values) { CmsMessages messages = Messages.get().getBundle(getLocale()); // template was not found in regular template folders, add current template value if (CmsStringUtil.isEmpty(currentTemplate)) { // current template not available, add "please select" value options.add(0, "--- " + messages.key(Messages.GUI_PLEASE_SELECT_0) + " ---"); values.add(0, ""); } else { // current template was set to some value, add this value to the selection String name = null; try { // read the title of the current template name = getCms().readPropertyObject( currentTemplate, CmsPropertyDefinition.PROPERTY_TITLE, false).getValue(); } catch (CmsException e) { // ignore this exception - the title for this template was not readable if (LOG.isInfoEnabled()) { LOG.info(messages.key(Messages.LOG_READ_TITLE_PROP_FAILED_1, currentTemplate), e); } } if (name == null) { name = currentTemplate; } options.add(0, "* " + name); values.add(0, currentTemplate); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy