Commit 364b7be1 authored by eileen's avatar eileen
Browse files

Elfinder integration wip

parent cc0aecc6
......@@ -80,7 +80,10 @@ which is currently packaged & is firewall friendly.
- Integrations. The integration that currently looks most promising is [elFinder](https://github.com/Studio-42/elFinder)
Work on ElFinder integration is currently on the elfinder branch.
Right now I'm stuck on getting jquery to load in the elfinder promise when it is not part of our global scope.
![Screenshot](images/jquerybug.png)
Other issues to deal with
1) Ckeditor works with builds - my expectation is we will wind up with several builds shipping
......@@ -91,3 +94,7 @@ we also need for invoicing settings).
3) ckeditor builds are generated with npm - it's a bit unclear to me how we deal with that
in extensions (currently committing all the code to the extension). Moving ckeditor4 to a core
extension makes sense but we'd need to figure out this challenge.
Note that I'm currently using the downloaded classic build for elfinder
as opposed to the lightly customised one I used for the base-uploader
- this has a slightly different structure -ie no build folder
......@@ -154,7 +154,10 @@ function ckeditor5_civicrm_coreResourceList(&$items, $region) {
$items[] = [
'config' => [
'wysisygScriptLocation' => CRM_Core_Resources::singleton()->getUrl('ckeditor5', 'js/wysiwyg/crm.ckeditor5.js'),
'CKEditor5Location' => CRM_Core_Resources::singleton()->getUrl('ckeditor5', 'js/ckeditor5/ckeditor-base64-upload-adapter/build/ckeditor.js'),
// Note that I am just using 'classic build' at the moment - not a configured
// build so no build in the path.
'CKEditor5Location' => CRM_Core_Resources::singleton()->getUrl('ckeditor5', 'js/ckeditor5/ckeditor-elfinder/ckeditor.js'),
'ELFinderLocation' => CRM_Core_Resources::singleton()->getUrl('ckeditor5', 'js/elFinder/js/elFinder.js'),
],
];
}
......
Software License Agreement
==========================
**CKEditor 5 classic editor build** – https://github.com/ckeditor/ckeditor5-build-classic <br>
Copyright (c) 2003-2020, [CKSource](http://cksource.com) Frederico Knabben. All rights reserved.
Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
Sources of Intellectual Property Included in CKEditor
-----------------------------------------------------
Where not otherwise indicated, all CKEditor content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, CKEditor will incorporate work done by developers outside of CKSource with their express permission.
The following libraries are included in CKEditor under the [MIT license](https://opensource.org/licenses/MIT):
* Lo-Dash - Copyright (c) JS Foundation and other contributors https://js.foundation/. Based on Underscore.js, copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors http://underscorejs.org/.
Trademarks
----------
**CKEditor** is a trademark of [CKSource](http://cksource.com) Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.
CKEditor 5 classic editor build v17.0.0
=======================================
In order to start using CKEditor 5 Builds, configure or customize them, please visit http://docs.ckeditor.com/ckeditor5/latest/builds/index.html
## License
Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
For full details about the license, please check the LICENSE.md file.
This diff is collapsed.
This diff is collapsed.
<!DOCTYPE html>
<!--
Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-->
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<link type="text/css" href="sample/css/sample.css" rel="stylesheet" media="screen" />
<title>CKEditor 5 – classic editor build sample</title>
</head>
<body>
<header>
<div class="centered">
<h1><a href="https://ckeditor.com/ckeditor-5"><img src="sample/img/logo.svg" alt="WYSIWYG editor - CKEditor 5" /></a></h1>
<input type="checkbox" id="menu-toggle" />
<label for="menu-toggle"></label>
<nav>
<ul>
<li><a href="https://ckeditor.com/ckeditor-5">Project homepage</a></li>
<li><a href="https://ckeditor.com/docs/">Documentation</a></li>
<li><a href="https://github.com/ckeditor/ckeditor5">GitHub</a></li>
</ul>
</nav>
</div>
</header>
<main>
<div class="message">
<div class="centered">
<h1>Congratulations!</h1>
<p>If you can see CKEditor below, it means that the installation succeeded. You can now try out your new editor version, see its features,
and check some of the most useful <a href="#references">resources recommended below</a>.</p>
</div>
</div>
<div class="centered">
<div id="editor">
<h2>The three greatest things you learn from traveling</h2>
<p>Like all the great things on earth traveling teaches us by example. Here are some of the most precious lessons I’ve learned over the years of traveling.</p>
<h3>Appreciation of diversity</h3>
<p>Getting used to an entirely different culture can be challenging. While it’s also nice to learn about cultures online or from books, nothing comes close to experiencing <a href="https://en.wikipedia.org/wiki/Cultural_diversity">cultural diversity</a> in person. You learn to appreciate each and every single one of the differences while you become more culturally fluid.</p>
<figure class="image image-style-side"><img src="sample/img/umbrellas.jpg" alt="Three Monks walking on ancient temple.">
<figcaption>Leaving your comfort zone might lead you to such beautiful sceneries like this one.</figcaption>
</figure>
<h3>Confidence</h3>
<p>Going to a new place can be quite terrifying. While change and uncertainty makes us scared, traveling teaches us how ridiculous it is to be afraid of something before it happens. The moment you face your fear and see there was nothing to be afraid of, is the moment you discover bliss.</p>
</div>
<div id="references">
<section>
<h2>Configure the editor</h2>
<p>CKEditor 5 is configurable so you can change many of its aspects (like the <a href="https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/configuration.html#toolbar-setup">toolbar</a>) to get most of the editor in your project.</p>
<p><a href="https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/configuration.html">Learn how to configure</a></p>
</section>
<section>
<h2>Discover the features</h2>
<p>CKEditor 5 comes with plenty of rich text editing features. Most of them are available out of the box in your build.</p>
<p><a href="https://ckeditor.com/docs/ckeditor5/latest/features/index.html">Discover rich text editor features</a></p> </section>
<section>
<h2>Discover editor builds</h2>
<p>There are other editor builds you can use in your project. They offer a different user interface and features but they all share the same solid core of CKEditor 5.</p>
<p><a href="https://ckeditor.com/docs/ckeditor5/latest/builds/guides/overview.html">Discover the builds</a></p>
</section>
<section>
<h2>Real-time collaboration</h2>
<p>CKEditor 5 Collaboration Features let you customize any CKEditor 5 build to include real-time collaborative editing and commenting features and tailor them to your needs.</p>
<p><a href="https://ckeditor.com/docs/ckeditor5/latest/features/collaboration/collaboration.html">Real-time collaboration overview</a></p>
</section>
<section>
<h2>Create your own rich text editor</h2>
<p>CKEditor 5 is a rich text editing framework that allows you to create your own editor using the building blocks it offers. You can customize existing builds or create a new one from scratch.</p>
<p><a href="https://ckeditor.com/docs/ckeditor5/latest/builds/guides/development/custom-builds.html">Create your own build</a></p>
</section>
<section>
<h2>Integration with the frameworks</h2>
<p>CKEditor 5 supports the most popular web frameworks like React, Angular or Vue.js &mdash; get the full benefit of CKEditor 5 in your project using official integrations.</p>
<p><a href="https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/frameworks/overview.html">Browse the integrations</a></p>
</section>
</div>
</div>
</main>
<footer>
<div>
<p>CKEditor 5 – The text editor for the Internet – <a href="https://ckeditor.com/ckeditor-5">https://ckeditor.com/ckeditor-5</a></p>
<p>Copyright © 2003-2019, <a href="https://cksource.com/">CKSource</a> – Frederico Knabben. All rights reserved.</p>
</div>
</footer>
<script src="ckeditor.js"></script>
<script>
ClassicEditor
.create( document.querySelector( '#editor' ), {
// toolbar: [ 'heading', '|', 'bold', 'italic', 'link' ]
} )
.then( editor => {
window.editor = editor;
} )
.catch( err => {
console.error( err.stack );
} );
</script>
</body>
</html>
/**
* @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
:root {
--ck-sample-base-spacing: 2em;
--ck-sample-color-white: #fff;
--ck-sample-color-green: #279863;
}
body, html {
padding: 0;
margin: 0;
font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 16px;
line-height: 22px;
}
body {
height: 100%;
color: #2D3A4A;
background-image: url(../img/bg.png);
background-repeat: no-repeat;
background-position: 50% 100%;
background-size: 100% auto;
}
body * {
box-sizing: border-box;
}
a {
color: #38A5EE;
}
abbr {
border-bottom: 1px dotted #333;
text-decoration: none;
}
.centered {
max-width: 960px;
margin: 0 auto;
padding: 0 var(--ck-sample-base-spacing);
}
/* --------- HEADER ---------------------------------------------------------------------------- */
header .centered {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
align-items: center;
min-height: 8em;
}
header h1 {
margin: 0;
font-size: 1em;
display: inline-block;
}
header h1 a {
display: inline-block;
line-height: 0;
}
header h1 img {
height: 3em;
}
header nav ul {
margin: 0;
padding: 0;
list-style-type: none;
}
header nav ul li {
display: inline-block;
}
header nav ul li + li {
margin-left: 1em;
}
header nav ul li a {
font-weight: bold;
text-decoration: none;
color: #2D3A4A;
}
header nav ul li a:hover {
text-decoration: underline;
}
header nav ul li:last-child a::before {
content: url(../img/github.svg);
width: 1.4em;
height: 1.4em;
display: inline-block;
margin-right: .4em;
position: relative;
top: .3em;
}
header input {
display: none;
}
header label {
display: none;
}
/* --------- MAIN ------------------------------------------------------------------------------- */
main .message {
padding: 0 0 var(--ck-sample-base-spacing);
background: var(--ck-sample-color-green);
color: var(--ck-sample-color-white);
}
main .message::after {
content: "";
z-index: -1;
display: block;
height: 10em;
width: 100%;
background: var(--ck-sample-color-green);
position: absolute;
left: 0;
}
main .message h1 {
padding-top: var(--ck-sample-base-spacing);
margin: 0 0 1em;
font-size: 2.2em;
}
main .message p {
font-size: 1.1em;
line-height: 1.6em;
}
main .message p a {
color: var(--ck-sample-color-white);
}
main #editor {
background: var(--ck-sample-color-white);
box-shadow: 2px 2px 2px rgba(0,0,0,.1);
border: 1px solid #DFE4E6;
border-bottom-color: #cdd0d2;
border-right-color: #cdd0d2;
}
main .ck.ck-editor {
box-shadow: 2px 2px 2px rgba(0,0,0,.1);
}
main .ck.ck-content {
font-size: 1em;
line-height: 1.6em;
margin-bottom: 0.8em;
min-height: 200px;
padding: 1.5em 2em;
}
main #references {
margin: 4em 0 var(--ck-sample-base-spacing);
display: grid;
grid-template-columns: repeat( auto-fit, minmax(320px, 1fr) );
grid-gap: var(--ck-sample-base-spacing);
}
main #references > section {
background: var(--ck-sample-color-white);
border-radius: 2px;
border: 1px solid #DFE4E6;
padding: var(--ck-sample-base-spacing);
line-height: 1.8em;
display: flex;
flex-flow: column nowrap;
justify-content: space-between;
}
main #references > section h2 {
margin: .5em 0;
}
main #references > section p:first-of-type {
flex: 1 0 auto;
}
main #references > section p:last-child {
margin: calc(.25*var(--ck-sample-base-spacing)) 0 0;
}
main #references > section p:last-child a {
background: #38A5EE;
border-radius: 5px;
padding: .4em 1em;
color: var(--ck-sample-color-white);
text-decoration: none;
font-weight: bold;
display: block;
text-align: center;
}
main #references > section p:last-child a:hover {
background: #218cd4;
}
/* --------- MAIN / DOCUMENT EDITOR --------------------------------------------------------------- */
main .document-editor {
border: 1px solid #DFE4E6;
border-bottom-color: #cdd0d2;
border-right-color: #cdd0d2;
border-radius: 2px;
max-height: 700px;
display: flex;
flex-flow: column nowrap;
box-shadow: 2px 2px 2px rgba(0,0,0,.1);
}
main .toolbar-container {
z-index: 1;
position: relative;
box-shadow: 2px 2px 1px rgba(0,0,0,.05);
}
main .toolbar-container .ck.ck-toolbar {
border-top-width: 0;
border-left-width: 0;
border-right-width: 0;
border-radius: 0;
}
main .content-container {
padding: var(--ck-sample-base-spacing);
background: #eee;
overflow-y: scroll;
}
main .content-container #editor {
border-top-left-radius: 0;
border-top-right-radius: 0;
width: 15.8cm;
min-height: 21cm;
padding: 1cm 1cm 2cm;
margin: 0 auto;
box-shadow: 2px 2px 1px rgba(0,0,0,.05);
}
/* --------- FOOTER ------------------------------------------------------------------------------- */
footer {
margin: calc(2*var(--ck-sample-base-spacing)) var(--ck-sample-base-spacing);
font-size: .8em;
text-align: center;
color: rgba(0,0,0,.4);
}
/* --------- RWD ------------------------------------------------------------------------------- */
@media (max-width: 900px) {
header .centered {
padding-top: var(--ck-sample-base-spacing);
padding-bottom: var(--ck-sample-base-spacing);
flex-flow: column nowrap;
align-items: stretch;
min-height: unset;
}
header h1 {
text-align: center;
margin-bottom: var(--ck-sample-base-spacing);
}
header nav ul {
text-align: center;
}
}
@media (max-width: 600px) {
header .centered {
padding-left: 0;
padding-right: 0;
}
header nav {
position: absolute;
top: 0;
left: 0;
right: 0;
background: #fff;
padding: 1em 0;
transition: all .4s ease-out;
transform: translateY(-100%);
overflow: hidden;
}
header h1 {
margin: 0;
}
header nav ul li {
display: block;
line-height: 3em;
margin-bottom: 1px;
}
header nav ul li a {
display: block;
}
header nav ul li a:hover {
background: #eee;
}
header nav ul li + li {
margin-left: 0;
}
header label {
display: block;
color: #fff;
width: 40px;
height: 40px;
position: absolute;
top: 10px;
left: 10px;
z-index: 1;
transition: transform .2s ease-out;
transform: rotate(0deg);
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjE5cHgiIHZpZXdCb3g9IjAgMCAyNCAxOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5oYW1idXJnZXI8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4gICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+ICAgICAgICA8cGF0aCBkPSJNMS41LDAgTDIyLjUsMCBDMjMuMzI4NDI3MSwtMS41MjE3OTU5NGUtMTYgMjQsMC42NzE1NzI4NzUgMjQsMS41IEMyNCwyLjMyODQyNzEyIDIzLjMyODQyNzEsMyAyMi41LDMgTDEuNSwzIEMwLjY3MTU3Mjg3NSwzIDEuMDE0NTMwNjNlLTE2LDIuMzI4NDI3MTIgMCwxLjUgQy0xLjAxNDUzMDYzZS0xNiwwLjY3MTU3Mjg3NSAwLjY3MTU3Mjg3NSwxLjUyMTc5NTk0ZS0xNiAxLjUsMCBaIE0xLjUsOCBMMjIuNSw4IEMyMy4zMjg0MjcxLDggMjQsOC42NzE1NzI4OCAyNCw5LjUgQzI0LDEwLjMyODQyNzEgMjMuMzI4NDI3MSwxMSAyMi41LDExIEwxLjUsMTEgQzAuNjcxNTcyODc1LDExIDEuMDE0NTMwNjNlLTE2LDEwLjMyODQyNzEgMCw5LjUgQy0xLjAxNDUzMDYzZS0xNiw4LjY3MTU3Mjg4IDAuNjcxNTcyODc1LDggMS41LDggWiBNMS41LDE2IEwyMi41LDE2IEMyMy4zMjg0MjcxLDE2IDI0LDE2LjY3MTU3MjkgMjQsMTcuNSBDMjQsMTguMzI4NDI3MSAyMy4zMjg0MjcxLDE5IDIyLjUsMTkgTDEuNSwxOSBDMC42NzE1NzI4NzUsMTkgMS4wMTQ1MzA2M2UtMTYsMTguMzI4NDI3MSAwLDE3LjUgQy0xLjAxNDUzMDYzZS0xNiwxNi42NzE1NzI5IDAuNjcxNTcyODc1LDE2IDEuNSwxNiBaIiBpZD0iaGFtYnVyZ2VyIiBmaWxsPSIjMDAwMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4gICAgPC9nPjwvc3ZnPg==) center center no-repeat;
}
header input:checked ~ nav {
transform: translateY(0%);
box-shadow: 0 3px 3px rgba(0,0,0,.1);
}
header input:checked ~ label {
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOXB4IiBoZWlnaHQ9IjE5cHgiIHZpZXdCb3g9IjAgMCAxOSAxOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5jbG9zZTwvdGl0bGU+ICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4gICAgICAgIDxwYXRoIGQ9Ik05LjA3MTA2NzgxLDYuODI1OTk4NTcgTDE1LjQ5Mzk3MTgsMC40MDMwOTQ2MTYgQzE2LjA3OTc1ODIsLTAuMTgyNjkxODIyIDE3LjAyOTUwNTcsLTAuMTgyNjkxODIyIDE3LjYxNTI5MjEsMC40MDMwOTQ2MTYgTDE3LjczOTA0MSwwLjUyNjg0MzUxMSBDMTguMzI0ODI3NCwxLjExMjYyOTk1IDE4LjMyNDgyNzQsMi4wNjIzNzc0MiAxNy43MzkwNDEsMi42NDgxNjM4NSBMMTEuMzE2MTM3MSw5LjA3MTA2NzgxIEwxNy43MzkwNDEsMTUuNDkzOTcxOCBDMTguMzI0ODI3NCwxNi4wNzk3NTgyIDE4LjMyNDgyNzQsMTcuMDI5NTA1NyAxNy43MzkwNDEsMTcuNjE1MjkyMSBMMTcuNjE1MjkyMSwxNy43MzkwNDEgQzE3LjAyOTUwNTcsMTguMzI0ODI3NCAxNi4wNzk3NTgyLDE4LjMyNDgyNzQgMTUuNDkzOTcxOCwxNy43MzkwNDEgTDkuMDcxMDY3ODEsMTEuMzE2MTM3MSBMMi42NDgxNjM4NSwxNy43MzkwNDEgQzIuMDYyMzc3NDIsMTguMzI0ODI3NCAxLjExMjYyOTk1LDE4LjMyNDgyNzQgMC41MjY4NDM1MTEsMTcuNzM5MDQxIEwwLjQwMzA5NDYxNiwxNy42MTUyOTIxIEMtMC4xODI2OTE4MjIsMTcuMDI5NTA1NyAtMC4xODI2OTE4MjIsMTYuMDc5NzU4MiAwLjQwMzA5NDYxNiwxNS40OTM5NzE4IEw2LjgyNTk5ODU3LDkuMDcxMDY3ODEgTDAuNDAzMDk0NjE2LDIuNjQ4MTYzODUgQy0wLjE4MjY5MTgyMiwyLjA2MjM3NzQyIC0wLjE4MjY5MTgyMiwxLjExMjYyOTk1IDAuNDAzMDk0NjE2LDAuNTI2ODQzNTExIEwwLjUyNjg0MzUxMSwwLjQwMzA5NDYxNiBDMS4xMTI2Mjk5NSwtMC4xODI2OTE4MjIgMi4wNjIzNzc0MiwtMC4xODI2OTE4MjIgMi42NDgxNjM4NSwwLjQwMzA5NDYxNiBMOS4wNzEwNjc4MSw2LjgyNTk5ODU3IFoiIGlkPSJjbG9zZSIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+ICAgIDwvZz48L3N2Zz4=);
transform: rotate(180deg);
}
main #references {
grid-template-columns: repeat( auto-fit, minmax(240px, 1fr) );
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>GitHub logo</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" fill="#000"></path>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="311px" height="82px" viewBox="0 0 311 82" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>CKEditor 5 logo</title>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="logo" fill="#2D3A4A">
<path d="M131.22,36.08 C130.233328,34.9333276 129.066673,34.0400032 127.72,33.4 C126.373327,32.7599968 125.006674,32.44 123.62,32.44 C121.886658,32.44 120.300007,32.8533292 118.86,33.68 C117.419993,34.5066708 116.286671,35.6466594 115.46,37.1 C114.633329,38.5533406 114.22,40.146658 114.22,41.88 C114.22,43.613342 114.633329,45.2066594 115.46,46.66 C116.286671,48.1133406 117.419993,49.2599958 118.86,50.1 C120.300007,50.9400042 121.886658,51.36 123.62,51.36 C124.95334,51.36 126.293327,51.0666696 127.64,50.48 C128.986673,49.8933304 130.179995,49.0800052 131.22,48.04 L134.38,51.56 C132.913326,53.0533408 131.206676,54.233329 129.26,55.1 C127.313324,55.966671 125.34001,56.4 123.34,56.4 C120.646653,56.4 118.180011,55.7600064 115.94,54.48 C113.699989,53.1999936 111.940006,51.460011 110.66,49.26 C109.379994,47.059989 108.74,44.62668 108.74,41.96 C108.74,39.29332 109.393327,36.8666776 110.7,34.68 C112.006673,32.4933224 113.786655,30.7733396 116.04,29.52 C118.293345,28.2666604 120.79332,27.64 123.54,27.64 C125.54001,27.64 127.49999,28.039996 129.42,28.84 C131.34001,29.640004 132.979993,30.7466596 134.34,32.16 L131.22,36.08 Z M162.668889,56 L156.228889,56 L147.428889,44 L143.028889,48.84 L143.028889,56 L137.668889,56 L137.668889,28 L143.028889,28 L143.028889,41.96 L155.668889,28 L161.988889,28 L151.228889,39.84 L162.668889,56 Z M165.597778,28 L186.117778,28 L186.117778,32.68 L170.957778,32.68 L170.957778,39.6 L184.557778,39.6 L184.557778,44.28 L170.957778,44.28 L170.957778,51.32 L186.597778,51.32 L186.597778,56 L165.597778,56 L165.597778,28 Z M211.366667,26.32 L211.366667,56 L206.166667,56 L206.166667,52.56 C205.39333,53.760006 204.400006,54.6733302 203.186667,55.3 C201.973328,55.9266698 200.566675,56.24 198.966667,56.24 C196.93999,56.24 195.160008,55.7800046 193.626667,54.86 C192.093326,53.9399954 190.900005,52.646675 190.046667,50.98 C189.193329,49.313325 188.766667,47.4000108 188.766667,45.24 C188.766667,43.106656 189.186663,41.2200082 190.026667,39.58 C190.866671,37.9399918 192.053326,36.6666712 193.586667,35.76 C195.120008,34.8533288 196.873324,34.4 198.846667,34.4 C200.473342,34.4 201.899994,34.7199968 203.126667,35.36 C204.35334,36.0000032 205.366663,36.919994 206.166667,38.12 L206.166667,26.32 L211.366667,26.32 Z M200.086667,51.88 C201.873343,51.88 203.333328,51.2733394 204.466667,50.06 C205.600006,48.8466606 206.166667,47.2800096 206.166667,45.36 C206.166667,43.4399904 205.600006,41.8733394 204.466667,40.66 C203.333328,39.4466606 201.873343,38.84 200.086667,38.84 C198.299991,38.84 196.846673,39.4466606 195.726667,40.66 C194.606661,41.8733394 194.033334,43.4399904 194.006667,45.36 C194.033334,47.2800096 194.606661,48.8466606 195.726667,50.06 C196.846673,51.2733394 198.299991,51.88 200.086667,51.88 Z M216.935556,34.6 L222.135556,34.6 L222.135556,56 L216.935556,56 L216.935556,34.6 Z M219.495556,25.4 C220.348894,25.4 221.055553,25.6933304 221.615556,26.28 C222.175559,26.8666696 222.455556,27.6133288 222.455556,28.52 C222.455556,29.4000044 222.175559,30.1333304 221.615556,30.72 C221.055553,31.3066696 220.348894,31.6 219.495556,31.6 C218.642218,31.6 217.935559,31.3066696 217.375556,30.72 C216.815553,30.1333304 216.535556,29.4000044 216.535556,28.52 C216.535556,27.6133288 216.815553,26.8666696 217.375556,26.28 C217.935559,25.6933304 218.642218,25.4 219.495556,25.4 Z M239.984445,54.68 C238.27777,55.7200052 236.491121,56.24 234.624445,56.24 C232.784436,56.24 231.277784,55.7000054 230.104445,54.62 C228.931106,53.5399946 228.344445,51.9466772 228.344445,49.84 L228.344445,39.28 L225.344445,39.28 L225.304445,35.48 L228.344445,35.48 L228.344445,29.6 L233.504445,29.6 L233.504445,35.48 L239.624445,35.48 L239.624445,39.28 L233.504445,39.28 L233.504445,48.92 C233.504445,49.9066716 233.69111,50.6066646 234.064445,51.02 C234.43778,51.4333354 234.997775,51.64 235.744445,51.64 C236.544449,51.64 237.557772,51.3466696 238.784445,50.76 L239.984445,54.68 Z M252.113334,34.44 C254.326678,34.44 256.279992,34.8933288 257.973334,35.8 C259.666676,36.7066712 260.986663,37.9799918 261.933334,39.62 C262.880005,41.2600082 263.353334,43.146656 263.353334,45.28 C263.353334,47.4400108 262.880005,49.3466584 261.933334,51 C260.986663,52.6533416 259.666676,53.9333288 257.973334,54.84 C256.279992,55.7466712 254.326678,56.2 252.113334,56.2 C249.873323,56.2 247.900009,55.7466712 246.193334,54.84 C244.486659,53.9333288 243.160005,52.6533416 242.213334,51 C241.266663,49.3466584 240.793334,47.4400108 240.793334,45.28 C240.793334,43.146656 241.266663,41.2600082 242.213334,39.62 C243.160005,37.9799918 244.486659,36.7066712 246.193334,35.8 C247.900009,34.8933288 249.873323,34.44 252.113334,34.44 Z M252.113334,38.88 C250.299992,38.88 248.83334,39.479994 247.713334,40.68 C246.593328,41.880006 246.033334,43.4399904 246.033334,45.36 C246.033334,47.2800096 246.593328,48.839994 247.713334,50.04 C248.83334,51.240006 250.299992,51.84 252.113334,51.84 C253.873343,51.84 255.313328,51.240006 256.433334,50.04 C257.55334,48.839994 258.113334,47.2800096 258.113334,45.36 C258.113334,43.4399904 257.55334,41.880006 256.433334,40.68 C255.313328,39.479994 253.873343,38.88 252.113334,38.88 Z M271.962223,38.72 C272.682227,37.3333264 273.662217,36.273337 274.902223,35.54 C276.142229,34.806663 277.588881,34.4266668 279.242223,34.4 L279.242223,39.44 C277.028879,39.306666 275.26223,39.8199942 273.942223,40.98 C272.622216,42.1400058 271.962223,43.7066568 271.962223,45.68 L271.962223,56 L266.762223,56 L266.762223,34.6 L271.962223,34.6 L271.962223,38.72 Z M299.860001,38.24 C301.966678,38.24 303.819993,38.5999964 305.420001,39.32 C307.020009,40.0400036 308.25333,41.0466602 309.120001,42.34 C309.986672,43.6333398 310.420001,45.0933252 310.420001,46.72 C310.420001,48.6133428 309.966672,50.2799928 309.060001,51.72 C308.15333,53.1600072 306.873343,54.2733294 305.220001,55.06 C303.566659,55.8466706 301.646679,56.24 299.460001,56.24 C297.699992,56.24 295.866677,55.940003 293.960001,55.34 C292.053325,54.739997 290.366675,53.9333384 288.900001,52.92 L291.020001,48.72 C292.220007,49.653338 293.499994,50.3799974 294.860001,50.9 C296.220008,51.4200026 297.579994,51.68 298.940001,51.68 C300.70001,51.68 302.093329,51.2733374 303.120001,50.46 C304.146673,49.6466626 304.660001,48.5333404 304.660001,47.12 C304.660001,45.7599932 304.153339,44.7066704 303.140001,43.96 C302.126663,43.2133296 300.620011,42.84 298.620001,42.84 C297.659996,42.84 296.393342,42.873333 294.820001,42.94 C293.24666,43.006667 292.033339,43.0799996 291.180001,43.16 L291.180001,28 L309.180001,28 L309.180001,32.68 L296.140001,32.68 L296.140001,38.24 L299.860001,38.24 Z" id="CKEditor-5"></path>
<path d="M59.2576769,11.4756855 C58.2248461,13.6254036 57.6907121,15.9759179 57.694259,18.3556755 C57.694259,27.2175882 64.9639519,34.4023878 73.9305741,34.4023878 L74,34.4023878 L74,57.5415333 C73.9999273,60.3699812 72.4731099,62.9835479 69.9946595,64.3977718 L41.0053405,80.9393051 C38.5268272,82.353565 35.4731728,82.353565 32.9946595,80.9393051 L4.00534045,64.3977718 C1.52689012,62.9835479 7.27028093e-05,60.3699812 0,57.5415333 L0,24.4584667 C7.27028093e-05,21.6300188 1.52689012,19.0164521 4.00534045,17.6022282 L32.9946595,1.06069491 C35.4731728,-0.353564971 38.5268272,-0.353564971 41.0053405,1.06069491 L59.2576769,11.4756855 Z M20.9786382,26.4852532 C19.872594,26.4852532 18.975968,27.3714087 18.975968,28.4645369 L18.975968,29.2648272 C18.975968,30.3579554 19.872594,31.2441109 20.9786382,31.2441109 L53.6889186,31.2441109 C54.7949628,31.2441109 55.6915888,30.3579554 55.6915888,29.2648272 L55.6915888,28.4645369 C55.6915888,27.3714087 54.7949628,26.4852532 53.6889186,26.4852532 L20.9786382,26.4852532 Z M20.9786382,38.3174109 C19.872594,38.3174109 18.975968,39.2035664 18.975968,40.2966945 L18.975968,41.0976447 C18.975968,42.1907728 19.872594,43.0769283 20.9786382,43.0769283 L44.6602136,43.0769283 C45.7662578,43.0769283 46.6628838,42.1907728 46.6628838,41.0976447 L46.6628838,40.2966945 C46.6628838,39.2035664 45.7662578,38.3174109 44.6602136,38.3174109 L20.9786382,38.3174109 Z M20.9786382,50.1502283 C19.872594,50.1502283 18.975968,51.0363838 18.975968,52.129512 L18.975968,52.9298023 C18.975968,54.0229305 19.872594,54.909086 20.9786382,54.909086 L53.6889186,54.909086 C54.7949628,54.909086 55.6915888,54.0229305 55.6915888,52.9298023 L55.6915888,52.129512 C55.6915888,51.0363838 54.7949628,50.1502283 53.6889186,50.1502283 L20.9786382,50.1502283 Z M73.5,32 C66.0440488,32 60,25.9559512 60,18.5 C60,11.0440488 66.0440488,5 73.5,5 C80.9559512,5 87,11.0440488 87,18.5 C87,25.9559512 80.9559512,32 73.5,32 Z M78.1492683,20.7120244 C78.1492683,20.0969512 78.0392927,19.5582683 77.82,19.0972927 C77.6100128,18.648511 77.3032554,18.2517954 76.9217561,17.9356341 C76.5261101,17.6138977 76.0693155,17.3757552 75.579,17.2356098 C75.0438789,17.0792151 74.488837,17.0015714 73.9313415,17.005122 C73.7555122,17.005122 73.5605854,17.0130244 73.346561,17.0294878 C73.1494374,17.0433883 72.9538258,17.0737874 72.7617805,17.1203659 L72.860561,15.2751463 L77.5559268,15.2751463 L77.5559268,12.902439 L70.4055366,12.902439 L70.1256585,19.5747317 C70.5887159,19.4091809 71.0656353,19.2853228 71.5507317,19.2046341 C72.0834878,19.111122 72.5582927,19.0643659 72.9758049,19.0643659 C73.2616098,19.0643659 73.5474146,19.0920244 73.832561,19.1466829 C74.1183659,19.2013415 74.373878,19.2981463 74.5990976,19.435122 C74.8236585,19.5720976 75.0073902,19.7564878 75.1509512,19.9869756 C75.2931951,20.2174634 75.3649756,20.5032683 75.3649756,20.8430732 C75.3649756,21.4041463 75.1917805,21.8269268 74.8460488,22.1120732 C74.4996585,22.397878 74.0907073,22.540122 73.6185366,22.540122 C73.157561,22.540122 72.7591463,22.4084146 72.4239512,22.145 C72.0954632,21.8908304 71.8561198,21.5389632 71.7403902,21.1400732 L69.2195122,21.9145122 C69.3512195,22.3754878 69.5573415,22.7903659 69.8372195,23.1584878 C70.1155179,23.5249359 70.4555874,23.8400461 70.8421463,24.0896585 C71.232,24.341878 71.6659756,24.5374634 72.1440732,24.674439 C72.6344133,24.813286 73.1418504,24.8824517 73.6514634,24.8799024 C74.2224146,24.8799024 74.777561,24.7949512 75.3155854,24.6250488 C75.8398637,24.4620722 76.3288571,24.2020502 76.757122,23.8585122 C77.1874841,23.5086677 77.5338272,23.0666808 77.7706098,22.5651463 C78.0228293,22.0435854 78.1492683,21.425878 78.1492683,20.7120244 Z" id="Combined-Shape" fill="#32B968" fill-rule="nonzero"></path>
</g>
</g>
</svg>
\ No newline at end of file
(function(d){d['af']=Object.assign(d['af']||{},{a:"Lêer nie opgelaai nie:",b:"Image toolbar",c:"Table toolbar",d:"Vetgedruk",e:"Skuinsgedruk",f:"image widget",g:"Blok-aanhaling",h:"Voeg beeld of lêer in",i:"Choose heading",j:"Heading",k:"Insert image",l:"Numbered List",m:"Bulleted List",n:"Full size image",o:"Side image",p:"Left aligned image",q:"Centered image",r:"Right aligned image",s:"Increase indent",t:"Decrease indent",u:"Insert table",v:"Header column",w:"Insert column left",x:"Insert column right",y:"Delete column",z:"Column",aa:"Header row",ab:"Insert row below",ac:"Insert row above",ad:"Delete row",ae:"Row",af:"Merge cell up",ag:"Merge cell right",ah:"Merge cell down",ai:"Merge cell left",aj:"Split cell vertically",ak:"Split cell horizontally",al:"Merge cells",am:"Upload failed",an:"media widget",ao:"Insert media",ap:"The URL must not be empty.",aq:"This media URL is not supported.",ar:"Enter image caption",as:"Link",at:"Widget toolbar",au:"Change image text alternative",av:"Upload in progress",aw:"Open in a new tab",ax:"Downloadable",ay:"Unlink",az:"Edit link",ba:"Open link in new tab",bb:"This link has no URL",bc:"Berg",bd:"Kanselleer",be:"Link URL",bf:"Paste the media URL in the input.",bg:"Tip: Paste the URL into the content to embed faster.",bh:"Media URL",bi:"Rich Text Editor",bj:"Dropdown toolbar",bk:"%0 of %1",bl:"Previous",bm:"Next",bn:"Editor toolbar",bo:"Show more items",bp:"Text alternative",bq:"Undo",br:"Redo",bs:"Paragraph",bt:"Heading 1",bu:"Heading 2",bv:"Heading 3",bw:"Heading 4",bx:"Heading 5",by:"Heading 6",bz:"Could not obtain resized image URL.",ca:"Selecting resized image failed",cb:"Beeld kan nie in die posisie toegevoeg word nie.",cc:"Inserting image failed",cd:"Rich Text Editor, %0"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
\ No newline at end of file
(function(d){d['ar']=Object.assign(d['ar']||{},{a:"لا يمكن رفع الملف:",b:"Image toolbar",c:"Table toolbar",d:"عريض",e:"مائل",f:"عنصر الصورة",g:"اقتباس",h:"Insert image or file",i:"اختر عنوان",j:"عنوان",k:"ادراج صورة",l:"قائمة رقمية",m:"قائمة نقطية",n:"صورة بحجم كامل",o:"صورة جانبية",p:"صورة بمحاذاة لليسار",q:"صورة بالوسط",r:"صورة بمحاذاة لليمين",s:"Increase indent",t:"Decrease indent",u:"إدراج جدول",v:"عمود عنوان",w:"Insert column left",x:"Insert column right",y:"حذف العمود",z:"عمود",aa:"صف عنوان",ab:"ادراج صف بعد",ac:"ادراج صف قبل",ad:"حذف الصف",ae:"صف",af:"دمج الخلايا للأعلى",ag:"دمج الخلايا لليمين",ah:"دمج الخلايا للأسفل",ai:"دمج الخلايا لليسار",aj:"فصل الخلايا بشكل عمودي",ak:"فصل الخلايا بشكل افقي",al:"دمج الخلايا",am:"فشل الرفع",an:"media widget",ao:"Insert media",ap:"The URL must not be empty.",aq:"This media URL is not supported.",ar:"ادخل عنوان الصورة",as:"رابط",at:"Widget toolbar",au:"غير النص البديل للصورة",av:"جاري الرفع",aw:"Open in a new tab",ax:"Downloadable",ay:"إلغاء الرابط",az:"تحرير الرابط",ba:"فتح الرابط في تبويب جديد",bb:"لا يحتوي هذا الرابط على عنوان",bc:"حفظ",bd:"إلغاء",be:"رابط عنوان",bf:"Paste the media URL in the input.",bg:"Tip: Paste the URL into the content to embed faster.",bh:"Media URL",bi:"معالج نصوص",bj:"Dropdown toolbar",bk:"%0 of %1",bl:"Previous",bm:"Next",bn:"Editor toolbar",bo:"Show more items",bp:"النص البديل",bq:"تراجع",br:"إعادة",bs:"فقرة",bt:"عنوان 1",bu:"عنوان 2",bv:"عنوان 3",bw:"Heading 4",bx:"Heading 5",by:"Heading 6",bz:"Could not obtain resized image URL.",ca:"Selecting resized image failed",cb:"Could not insert image at the current position.",cc:"Inserting image failed",cd:"معالج نصوص، 0%"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS=