package org.opencms.editors.tinymce; import javax.servlet.http.HttpServletRequest; import org.opencms.jsp.CmsJspActionElement; import org.opencms.util.CmsHtmlConverter; import org.opencms.util.CmsStringUtil; import org.opencms.workplace.CmsWorkplaceSettings; import org.opencms.workplace.editors.CmsSimplePageEditor; public class CmsTinyMCE extends CmsSimplePageEditor{ /** String constant separator for button groups. */ public static final String GROUP_SEPARATOR = "|"; /** Suffix for the style file that is added to the used template styles file name. */ public static final String SUFFIX_STYLE = "_style"; /** Constant for the editor type, must be the same as the editors sub folder name in the VFS. */ private static final String EDITOR_TYPE = "tinymce"; /** * Public constructor.<p> * * @param jsp an initialized JSP action element */ public CmsTinyMCE(CmsJspActionElement jsp) { super(jsp); } /** * Build toolbar Javascript file for TinyMCE * @param buttonString button names and block separators delimited by comma * @return Javascript for the toolbar */ public static String buildToolbar(String buttonString){ StringBuilder toolbar = new StringBuilder() ; String[] buttons = buttonString.split("\\,") ; String button ; boolean theFirstButtonInGroup = true; int rowNum = 1 ; for(int i=0; i < buttons.length; i++){ button = buttons[i] ; if(theFirstButtonInGroup){ toolbar.append("theme_advanced_buttons"+rowNum+" : \""+button); theFirstButtonInGroup = false ; } else { toolbar.append(","+button) ; } if(GROUP_SEPARATOR.equals(button)){ toolbar.append("\",\n"); rowNum++; theFirstButtonInGroup = true; } } return toolbar.toString() ; } /** * @see org.opencms.workplace.editors.CmsEditor#getEditorResourceUri() */ public String getEditorResourceUri() { return getSkinUri() + "editors/" + EDITOR_TYPE + "/jscripts/tiny_mce/"; } /** * @see org.opencms.workplace.CmsWorkplace#initWorkplaceRequestValues(org.opencms.workplace.CmsWorkplaceSettings, javax.servlet.http.HttpServletRequest) */ protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { if (CmsStringUtil.isNotEmpty(request.getParameter(PARAM_RESOURCE))) { super.initWorkplaceRequestValues(settings, request); } } /** * @see org.opencms.workplace.editors.CmsSimplePageEditor#prepareContent(boolean) */ protected String prepareContent(boolean save) { if (save) { String conversionSetting = CmsHtmlConverter.getConversionSettings(getCms(), m_file); if (CmsStringUtil.isEmptyOrWhitespaceOnly(conversionSetting)) { // by default we want to pretty-print and XHTML format when saving the content in TinyMCE String content = getParamContent(); CmsHtmlConverter converter = new CmsHtmlConverter(getEncoding(), CmsHtmlConverter.PARAM_XHTML); content = converter.convertToStringSilent(content); setParamContent(content); } } // do further processing with super class return super.prepareContent(true); } }