/*
* This library is part of OpenCms -
* the Open Source Content Management System
*
* Copyright (c) Alkacon Software GmbH (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, 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.configuration.CmsDefaultUserSettings;
import org.opencms.file.CmsResourceFilter;
import org.opencms.i18n.CmsEncoder;
import org.opencms.jsp.CmsJspActionElement;
import org.opencms.main.OpenCms;
import org.opencms.util.CmsStringUtil;
import org.opencms.workplace.CmsDialog;
import org.opencms.workplace.CmsFrameset;
import org.opencms.workplace.CmsWorkplace;
import org.opencms.workplace.commons.CmsPublishProject;
import java.io.IOException;
import javax.servlet.jsp.JspException;
/**
* Provides a method to perform a user defined action when editing a page.<p>
*
* @since 6.0.0
*/
public class CmsEditorActionDefault implements I_CmsEditorActionHandler {
/**
* Default constructor needed for editor action handler implementation.<p>
*/
public CmsEditorActionDefault() {
// empty constructor
}
/**
* @see org.opencms.workplace.editors.I_CmsEditorActionHandler#editorAction(org.opencms.workplace.editors.CmsEditor, org.opencms.jsp.CmsJspActionElement)
*/
public void editorAction(CmsEditor editor, CmsJspActionElement jsp) throws IOException, JspException {
// save the edited content
editor.actionSave();
// delete temporary file and unlock resource in direct edit mode
editor.actionClear(true);
// create the publish link to redirect to
String publishLink = jsp.link(CmsWorkplace.PATH_DIALOGS + "publishresource.jsp");
// define the parameters which are necessary for publishing the resource
StringBuffer params = new StringBuffer(256);
params.append("?").append(CmsDialog.PARAM_RESOURCE).append("=").append(editor.getParamResource());
params.append("&").append(CmsDialog.PARAM_ACTION).append("=").append(CmsDialog.DIALOG_CONFIRMED);
params.append("&").append(CmsPublishProject.PARAM_DIRECTPUBLISH).append("=").append(CmsStringUtil.TRUE);
params.append("&").append(CmsPublishProject.PARAM_PUBLISHSIBLINGS).append("=").append(
editor.getSettings().getUserSettings().getDialogPublishSiblings());
// set the related resources option
String pubRelated = CmsStringUtil.TRUE;
if (OpenCms.getWorkplaceManager().getDefaultUserSettings().getPublishRelatedResources() == CmsDefaultUserSettings.PUBLISH_RELATED_RESOURCES_MODE_FALSE) {
pubRelated = CmsStringUtil.FALSE;
}
params.append("&").append(CmsPublishProject.PARAM_RELATEDRESOURCES).append("=").append(pubRelated);
params.append("&").append(CmsDialog.PARAM_TITLE).append("=");
params.append(CmsEncoder.escapeWBlanks(editor.key(Messages.GUI_MESSAGEBOX_TITLE_PUBLISHRESOURCE_0)
+ ": "
+ editor.getParamResource(), CmsEncoder.ENCODING_UTF_8));
params.append("&").append(CmsDialog.PARAM_REDIRECT).append("=").append(CmsStringUtil.TRUE);
params.append("&").append(CmsDialog.PARAM_CLOSELINK).append("=");
if (Boolean.valueOf(editor.getParamDirectedit()).booleanValue()) {
String linkTarget;
if (!"".equals(editor.getParamBacklink())) {
linkTarget = jsp.link(editor.getParamBacklink());
} else {
linkTarget = jsp.link(editor.getParamResource());
}
// append the parameters and the report "ok" button action to the link
publishLink += params.toString() + CmsEncoder.escapeWBlanks(linkTarget, CmsEncoder.ENCODING_UTF_8);
} else {
// append the parameters and the report "ok" button action to the link
publishLink += params.toString()
+ CmsEncoder.escapeWBlanks(jsp.link(CmsFrameset.JSP_WORKPLACE_URI), CmsEncoder.ENCODING_UTF_8);
}
// redirect to the publish dialog with all necessary parameters
jsp.getResponse().sendRedirect(publishLink);
}
/**
* @see org.opencms.workplace.editors.I_CmsEditorActionHandler#getButtonName()
*/
public String getButtonName() {
return Messages.GUI_EXPLORER_CONTEXT_PUBLISH_0;
}
/**
* @see org.opencms.workplace.editors.I_CmsEditorActionHandler#getButtonUrl(CmsJspActionElement, java.lang.String)
*/
public String getButtonUrl(CmsJspActionElement jsp, String resourceName) {
// get the button image
String button = CmsWorkplace.VFS_PATH_RESOURCES + "buttons/publish.png";
if (!isButtonActive(jsp, resourceName)) {
// show disabled button if not active
button = CmsWorkplace.VFS_PATH_RESOURCES + "buttons/publish_in.png";
}
return jsp.link(button);
}
/**
* @see org.opencms.workplace.editors.I_CmsEditorActionHandler#isButtonActive(CmsJspActionElement, java.lang.String)
*/
public boolean isButtonActive(CmsJspActionElement jsp, String resourceName) {
try {
OpenCms.getPublishManager().getPublishList(
jsp.getCmsObject(),
jsp.getCmsObject().readResource(resourceName, CmsResourceFilter.IGNORE_EXPIRATION),
false);
return true;
} catch (Exception e) {
return false;
}
}
}