This demo uses the CDN of TinyMCE as a showcase. There are other integration possibilities. For more information to setup see TinyMCE.
Only working with internet access of the browser, because of the use of a CDN.
The setup needs entries in tobago-config.xml for CSP. More infomation about these entries you find also on their webside.
tobago-config.xml
This page contains two <tc:script/> tags, one for the TinyMCE itself and the other for the initialization in this demo. The <tc:textarea/> contain <tc:dataAttribute name="html-editor" value="tinymce"/>, to mark this textarea to be used as rich text editor. The initialization is done by the init-tinymce.js script.
<tc:script/>
<tc:textarea/>
<tc:dataAttribute name="html-editor" value="tinymce"/>
init-tinymce.js
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */document.addEventListener("DOMContentLoaded", (event) => { tinymce.init({ selector: "textarea[data-html-editor=tinymce]" });});
<?xml version="1.0" encoding="UTF-8"?> <!-- * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. --> <ui:composition template="/main.xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:tc="http://myfaces.apache.org/tobago/component" xmlns:ui="http://java.sun.com/jsf/facelets"> <tc:script file="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js" referrerpolicy="origin"/> <tc:script file="#{request.contextPath}/content/20-component/110-wysiwyg/00-tinymce/init-tinymce.js"/> <ui:param name="title" value="#{demoBundle.tinymce}"/> <tc:section label="Setup"> <p> This demo uses the CDN of TinyMCE as a showcase. There are other integration possibilities. For more information to setup see <tc:link image="fa-external-link" link="https://www.tiny.cloud/" label="TinyMCE"/>. </p> <p> <tc:badge value="Only working with internet access of the browser, because of the use of a CDN." markup="info"/> </p> <p> The setup needs entries in <code>tobago-config.xml</code> for CSP. More infomation about these entries you find also on their webside. </p> <p> This page contains two <code class="language-markup"><tc:script/></code> tags, one for the TinyMCE itself and the other for the initialization in this demo. The <code class="language-markup"><tc:textarea/></code> contain <code class="language-markup"><tc:dataAttribute name="html-editor" value="tinymce"/></code>, to mark this textarea to be used as rich text editor. The initialization is done by the <code>init-tinymce.js</code> script. </p> <tc:box id="sourceCodeBox" label="init-tinymce.js" collapsed="true" collapsedMode="hidden"> <f:facet name="bar"> <tc:buttons> <tc:button label="show" omit="true"> <tc:operation name="show" for="sourceCodeBox"/> </tc:button> <tc:button label="hide" omit="true"> <tc:operation name="hide" for="sourceCodeBox"/> </tc:button> </tc:buttons> </f:facet> <pre><code class="language-javascript"><tc:out value="#{tinyMceController.source}"/></code></pre> </tc:box> <tc:textarea value="#{tinyMceController.text}"> <tc:dataAttribute name="html-editor" value="tinymce"/> </tc:textarea> <tc:button label="Submit"/> </tc:section> </ui:composition>