edit/page: include admin stylesheet in editor ui
[minimedit.git] / edit / page.js
index b21a0386519ca07d4c03880b31a533b5a0f5dc49..f9bfd629948f46d2bddaee01318fb02cb97147a9 100644 (file)
@@ -28,6 +28,10 @@ CKEDITOR.plugins.add('inlinesave', {
                                });
                                // treat standalone placeholders as block elements
                                body = body.replace(/<p>(\[\[.*\]\])<\/p>/g, '$1');
+                               // strip redundant domain in relative urls
+                               var hostlink = 'https?://' + window.location.hostname.replace(/\W/g, '\\$&');
+                               hostlink = new RegExp('(<a [^>]*href="|<img [^>]*src=")' + hostlink + '(?=/)', 'gi');
+                               body = body.replace(hostlink, '$1');
 
                                var data = 'body='+encodeURIComponent(body);
                                var ajaxpost = new XMLHttpRequest();
@@ -115,7 +119,6 @@ CKEDITOR.on('instanceCreated', function (event) {
                var config = editor.config;
                config.language = 'nl';
                config.extraPlugins = 'inlinesave,placeholder,image2,uploadimage';
-               config.format_tags = 'h2;h3;h4;p';
                config.allowedContent = true;
                config.entities = false; // keep unicode
                config.filebrowserImageUploadUrl = '/edit/page?output=ckescript';
@@ -123,6 +126,10 @@ CKEDITOR.on('instanceCreated', function (event) {
                config.image2_alignClasses = ['left', 'center', 'right'];
                config.image2_disableResizer = true;
                config.stylesSet = [
+                       { name: 'Paginakop', element: 'h2' },
+                       { name: 'Paragraafkop', element: 'h3' },
+                       { name: 'Alineakop', element: 'h4' },
+
                        { name: 'Gerelateerd', element: 'aside' },
                        { name: 'Voetnoot', element: 'div', attributes: { 'class': 'right' } },
                        { name: 'Kolom', element: 'div', attributes: { 'class': 'col' } },
@@ -139,11 +146,10 @@ CKEDITOR.on('instanceCreated', function (event) {
                        { name: 'Uitgelogd', element: 'span', attributes: { 'class': 'logout' } },
                ];
                config.pasteFilter = pastefilter;
-               config.contentsCss = document.styleSheets[0].href;
+               config.contentsCss = [...document.styleSheets].map(e => e.href).filter(Boolean);
                config.toolbar = [
                        ['Inlinesave', '-', 'Undo', 'Redo'],
-                       ['Format', 'Styles'],
-                       ['Bold', 'Italic', 'Link'],
+                       ['Styles', 'Bold', 'Italic', 'Link'],
                        ['BulletedList', 'NumberedList', 'Blockquote'],
                        ['Table', 'CreateDiv'],
                        ['Image', 'HorizontalRule', 'CreatePlaceholder'],
@@ -169,8 +175,12 @@ CKEDITOR.on('instanceCreated', function (event) {
 
 if (pagebody) {
        // add edit link to menu
-       var editlink = document.querySelector('a[href="#edit"]');
-       if (editlink)
+       var editdiv = document.querySelector('header .login > p');
+       if (!editdiv) return;
+       var editlink = editdiv.appendChild(document.createElement('a'));
+       editlink.append('\u270D');
+       editlink.className = 'icon icon-edit';
+       editlink.href = '#edit';
        editlink.onclick = function (e) {
                editlink.style.fontWeight = 'bold';
                editlink.href = '';
@@ -196,6 +206,7 @@ if (pagebody) {
 
 }
 
+var ckesrc = document.currentScript.getAttribute('data-ckesrc');
 document.addEventListener('DOMContentLoaded', function (e) {
        pagebody = editorcontents().cloneNode(true);
        var editorinc = document.createElement('script');