/**
* Copyright (c) 2000-present Liferay, 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.
*/
package com.liferay.frontend.editor.tinymce.web.internal.editor.configuration;
import com.liferay.portal.kernel.editor.configuration.BaseEditorConfigContributor;
import com.liferay.portal.kernel.json.JSONObject;
import com.liferay.portal.kernel.portlet.RequestBackedPortletURLFactory;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.HtmlUtil;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
* @author Ambrin Chaudhary
*/
public class BaseTinyMCEEditorConfigContributor
extends BaseEditorConfigContributor {
@Override
public void populateConfigJSONObject(
JSONObject jsonObject, Map<String, Object> inputEditorTaglibAttributes,
ThemeDisplay themeDisplay,
RequestBackedPortletURLFactory requestBackedPortletURLFactory) {
StringBundler sb = new StringBundler(3);
sb.append(
HtmlUtil.escape(
PortalUtil.getStaticResourceURL(
themeDisplay.getRequest(),
themeDisplay.getPathThemeCss() + "/aui.css")));
sb.append(StringPool.COMMA);
sb.append(
HtmlUtil.escape(
PortalUtil.getStaticResourceURL(
themeDisplay.getRequest(),
themeDisplay.getPathThemeCss() + "/main.css")));
jsonObject.put("content_css", sb.toString());
jsonObject.put("convert_urls", Boolean.FALSE);
jsonObject.put("extended_valid_elements", _EXTENDED_VALID_ELEMENTS);
jsonObject.put("invalid_elements", "script");
String contentsLanguageId = (String)inputEditorTaglibAttributes.get(
"liferay-ui:input-editor:contentsLanguageId");
jsonObject.put("language", getTinyMCELanguage(contentsLanguageId));
jsonObject.put("menubar", Boolean.FALSE);
jsonObject.put("mode", "textareas");
jsonObject.put("relative_urls", Boolean.FALSE);
jsonObject.put("remove_script_host", Boolean.FALSE);
String namespace = GetterUtil.getString(
inputEditorTaglibAttributes.get(
"liferay-ui:input-editor:namespace"));
String name = GetterUtil.getString(
inputEditorTaglibAttributes.get("liferay-ui:input-editor:name"));
jsonObject.put("selector", "#" + namespace + name);
jsonObject.put(
"toolbar",
"bold italic underline | alignleft aligncenter alignright | " +
"preview print");
jsonObject.put("toolbar_items_size", "small");
}
protected String getTinyMCELanguage(String contentsLanguageId) {
Locale contentsLocale = LocaleUtil.fromLanguageId(contentsLanguageId);
contentsLanguageId = LocaleUtil.toLanguageId(contentsLocale);
String tinyMCELanguage = _tinyMCELanguages.get(contentsLanguageId);
if (Validator.isNull(tinyMCELanguage)) {
tinyMCELanguage = _tinyMCELanguages.get("en_US");
}
return tinyMCELanguage;
}
protected boolean isShowSource(
Map<String, Object> inputEditorTaglibAttributes) {
return GetterUtil.getBoolean(
inputEditorTaglibAttributes.get(
"liferay-ui:input-editor:showSource"));
}
private static final String _EXTENDED_VALID_ELEMENTS =
"a[name|href|target|title|onclick],img[class|src|border=0" +
"|alt|title|hspace|vspace|width|height|align|onmouseover" +
"|onmouseout|name|usemap],hr[class|width|size|noshade]," +
"font[face|size|color|style],span[class|align|style]";
private static final Map<String, String> _tinyMCELanguages =
new HashMap<>();
static {
_tinyMCELanguages.put("ar_SA", "ar");
_tinyMCELanguages.put("bg_BG", "bg_BG");
_tinyMCELanguages.put("ca_ES", "ca");
_tinyMCELanguages.put("cs_CZ", "cs");
_tinyMCELanguages.put("de_DE", "de");
_tinyMCELanguages.put("el_GR", "el");
_tinyMCELanguages.put("en_AU", "en_GB");
_tinyMCELanguages.put("en_GB", "en_GB");
_tinyMCELanguages.put("en_US", "en_GB");
_tinyMCELanguages.put("es_ES", "es");
_tinyMCELanguages.put("et_EE", "et");
_tinyMCELanguages.put("eu_ES", "eu");
_tinyMCELanguages.put("fa_IR", "fa");
_tinyMCELanguages.put("fi_FI", "fi");
_tinyMCELanguages.put("fr_FR", "fr_FR");
_tinyMCELanguages.put("gl_ES", "gl");
_tinyMCELanguages.put("hr_HR", "hr");
_tinyMCELanguages.put("hu_HU", "hu_HU");
_tinyMCELanguages.put("in_ID", "id");
_tinyMCELanguages.put("it_IT", "it");
_tinyMCELanguages.put("iw_IL", "he_IL");
_tinyMCELanguages.put("ja_JP", "ja");
_tinyMCELanguages.put("ko_KR", "ko_KR");
_tinyMCELanguages.put("lt_LT", "lt");
_tinyMCELanguages.put("nb_NO", "nb_NO");
_tinyMCELanguages.put("nl_NL", "nl");
_tinyMCELanguages.put("pl_PL", "pl");
_tinyMCELanguages.put("pt_BR", "pt_BR");
_tinyMCELanguages.put("pt_PT", "pt_PT");
_tinyMCELanguages.put("ro_RO", "ro");
_tinyMCELanguages.put("ru_RU", "ru");
_tinyMCELanguages.put("sk_SK", "sk");
_tinyMCELanguages.put("sl_SI", "sl_SI");
_tinyMCELanguages.put("sr_RS", "sr");
_tinyMCELanguages.put("sv_SE", "sv_SE");
_tinyMCELanguages.put("tr_TR", "tr_TR");
_tinyMCELanguages.put("uk_UA", "uk");
_tinyMCELanguages.put("vi_VN", "vi");
_tinyMCELanguages.put("zh_CN", "zh_CN");
_tinyMCELanguages.put("zh_TW", "zh_TW");
}
}