nieuws: port excelsior toc and year filtering
[minimedit.git] / edit.js
diff --git a/edit.js b/edit.js
index dfa4a6d099eee90f3cad28bd6f02e34933607eae..049bbd0d13aff7e939e34fbf6b110ca63effeb47 100644 (file)
--- a/edit.js
+++ b/edit.js
@@ -3,7 +3,9 @@ CKEDITOR.plugins.add('inlinesave', {
                editor.addCommand( 'inlinesave', {
                        exec: function (editor) {
                                var pagename = window.location.pathname.replace(/\/$/, '/index');
-                               var body = editor.getData().replace(/^(\t*).{73,}/mg, function (line, indent) {
+                               var body = editor.getData();
+                               body = body.replace(/<br \/>\s*<br \/>/g, '<p>');
+                               body = body.replace(/^(\t*).{73,}/mg, function (line, indent) {
                                        // wrap long line after each sentence
                                        var dots = '(?:.{24,72}|.{73,}?)'; // chars before punctuation
                                        var wrap = new RegExp('('+dots+'[.;:!?]) (?=[A-Z(<])', 'g'); // separate lines
@@ -45,6 +47,21 @@ CKEDITOR.on('dialogDefinition', function (event) {
 
 CKEDITOR.on('instanceCreated', function (event) {
        var editor = event.editor;
+       var pastefilter = 'h2 h3 p ul ol li blockquote em i strong b; a[!href]; img[alt,!src]';
+
+       editor.on('paste', function (e) {
+               var html = e.data.dataValue;
+               if (!/<[^>]* style="/.test(html) && !/<font/.test(html)) return;
+
+               // force pasteFilter on contents containing styling attributes
+               var filter = new CKEDITOR.filter(pastefilter),
+                       fragment = CKEDITOR.htmlParser.fragment.fromHtml(html),
+                       writer = new CKEDITOR.htmlParser.basicWriter();
+               filter.applyTo(fragment);
+               fragment.writeHtml(writer);
+               e.data.dataValue = writer.getHtml();
+       });
+
        editor.on('configLoaded', function () {
                var config = editor.config;
                config.language = 'nl';
@@ -52,8 +69,8 @@ CKEDITOR.on('instanceCreated', function (event) {
                config.format_tags = 'h2;h3;h4;p';
                config.allowedContent = true;
                config.entities = false; // keep unicode
-               config.filebrowserImageUploadUrl = '/edit?type=img';
-               config.forcePasteAsPlainText = true;
+               config.filebrowserImageUploadUrl = '/edit?output=ckescript';
+               config.pasteFilter = pastefilter;
                config.contentsCss = document.styleSheets[0].href;
                config.toolbar = [
                        ['Inlinesave', '-', 'Undo', 'Redo'],