X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/19cde41f182998a36cdac76d530881aaea24c719..b3c4c38b834b8647f7c93f8326cce55b0ea47d28:/edit.js diff --git a/edit.js b/edit.js index 6f9211e..b97ed87 100644 --- a/edit.js +++ b/edit.js @@ -3,7 +3,14 @@ CKEDITOR.plugins.add('inlinesave', { editor.addCommand( 'inlinesave', { exec: function (editor) { var pagename = window.location.pathname.replace(/\/$/, '/index'); - var data = 'body='+encodeURIComponent(editor.getData()); + var body = editor.getData().replace(/^(\t*).{73,}/mg, function (line, indent) { + // wrap long line after each sentence + var dot = '(?:[^<]|<[^>]*>)'; // one character + var dots = '(?:'+dot+'{24,72}|'+dot+'{73,}?)'; // chars before punctuation + var wrap = new RegExp('('+dots+'[.;:!?]) (?=[A-Z])', 'g'); // separate lines + return line.replace(wrap, '$1\n'+indent+'\t'); + }); + var data = 'body='+encodeURIComponent(body); ajaxpost = new XMLHttpRequest(); ajaxpost.open('POST', '/edit'+pagename, true); ajaxpost.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); @@ -42,7 +49,7 @@ CKEDITOR.on('instanceCreated', function (event) { editor.on('configLoaded', function () { var config = editor.config; config.language = 'nl'; - config.extraPlugins = 'sourcedialog,inlinesave'; + config.extraPlugins = 'sourcedialog,inlinesave,placeholder'; config.format_tags = 'h2;h3;h4;p'; config.allowedContent = true; config.entities = false; // keep unicode @@ -54,26 +61,41 @@ CKEDITOR.on('instanceCreated', function (event) { ['Format'], ['BulletedList', 'NumberedList', '-', 'Blockquote'], ['Bold', 'Italic', 'Underline', 'Strike', 'RemoveFormat', '-', 'Anchor', 'Link'], - ['HorizontalRule', 'Table', 'Image'], + ['HorizontalRule', 'Table', 'Image', 'CreatePlaceholder'], ]; + config.toolbarCanCollapse = true; + config.floatSpacePreferRight = true; + config.floatSpaceDockedOffsetY = 0; + config.startupFocus = true; config.disableObjectResizing = true; document.execCommand('enableObjectResizing', false, false); // workaround in inline mode; ff bug? }); }); - CKEDITOR.on('instanceReady', function (event) { - var editor = event.editor; - var writer = editor.dataProcessor.writer; - writer.selfClosingEnd = '>'; - writer.setRules( 'p', { - breakAfterOpen: true, - breakBeforeClose: true, - }); - }); + CKEDITOR.disableAutoInline = true; -var pagebody = document.getElementsByClassName('article')[0]; -pagebody.setAttribute('contenteditable', 'true'); - -document.body.className = 'edit'; +// add edit link to menu +var pagebody = document.getElementsByClassName('static')[0]; +if (pagebody) { + var editlink = document.createElement('a'); + editlink.style.cursor = 'pointer'; + editlink.appendChild(document.createTextNode('Wijzig')); + editlink.href = '#edit'; + editlink.onclick = function (e) { + editlink.style.fontWeight = 'bold'; + editlink.href = ''; + editlink.onclick = undefined; + pagebody.setAttribute('contenteditable', true); + pagebody.innerHTML = pagebody.innerHTML + .replace(/[^]*?/g, '$1'); + CKEDITOR.inline(pagebody); + document.body.className = 'edit'; + return false; + }; + if (window.location.hash == '#edit') { + editlink.onclick(); + } + document.querySelector('header ul').appendChild(editlink); +}