+++ /dev/null
-CKEDITOR.plugins.add('inlinesave', {
- init: function(editor) {
- editor.addCommand( 'inlinesave', {
- exec: function (editor) {
- var pagename = window.location.pathname.replace(/\/$/, '/index');
- var body = editor.getData();
- // empty line is equivalent to a paragraph break
- body = body.replace(/<br \/>\s*<br \/>/g, '<p>');
- // wrap long line after each sentence
- body = body.replace(/^(\t*).{73,}/mg, function (line, indent) {
- var dots = '(?:.{24,72}|.{73,}?)'; // chars before punctuation
- var wrap = new RegExp('('+dots+'[.:!?]) (?=[A-Z(<])', 'g'); // separate lines
- return line.replace(wrap, '$1\n'+indent+'\t');
- });
- // treat standalone placeholders as block elements
- body = body.replace(/<p>(\[\[.*\]\])<\/p>/g, '$1');
-
- var data = 'body='+encodeURIComponent(body);
- ajaxpost = new XMLHttpRequest();
- ajaxpost.open('POST', '/edit'+pagename, true);
- ajaxpost.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
- ajaxpost.onreadystatechange = function () {
- if (ajaxpost.readyState != 4)
- return; // not done yet
- if (ajaxpost.status != 200)
- alert('Foutcode '+ajaxpost.status+' bij opslaan: '+ajaxpost.responseText);
- else
- editor.resetDirty();
- };
- ajaxpost.send(data);
- },
- });
- editor.ui.addButton( 'Inlinesave', {
- command: 'inlinesave',
- label: editor.lang.save.toolbar,
- icon: 'save',
- });
- }
-});
-
-CKEDITOR.on('dialogDefinition', function (event) {
- switch (event.data.name) {
- case 'table':
- // override initial attribute values
- var infoTab = event.data.definition.getContents('info');
- infoTab.get('txtWidth').default = '';
- infoTab.get('txtBorder').default = '0';
- infoTab.get('txtCellSpace').default = '';
- infoTab.get('txtCellPad').default = '';
- break;
- case 'link':
- // remove unneeded widgets from the Link Info tab
- var infotab = event.data.definition.getContents('info');
- infotab.remove('linkType');
- break;
- }
-});
-
-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';
- config.extraPlugins = 'inlinesave,placeholder,image2,uploadimage';
- config.format_tags = 'h2;h3;h4;p';
- config.allowedContent = true;
- config.entities = false; // keep unicode
- config.filebrowserImageUploadUrl = '/edit?output=ckescript';
- config.uploadUrl = '/edit?output=ckjson';
- config.image2_alignClasses = ['left', 'center', 'right'];
- config.image2_disableResizer = true;
- config.stylesSet = [
- { name: 'Kolom', element: 'div', attributes: { 'class': 'col' } },
- { name: 'Rechts', element: 'div', attributes: { 'class': 'right' } },
- ];
- config.pasteFilter = pastefilter;
- config.contentsCss = document.styleSheets[0].href;
- config.toolbar = [
- ['Inlinesave', '-', 'Undo', 'Redo'],
- ['Format'],
- ['Bold', 'Italic', 'Link'],
- ['BulletedList', 'NumberedList', 'Blockquote'],
- ['Table', 'CreateDiv'],
- ['Image', 'HorizontalRule', 'CreatePlaceholder'],
-// ['Sourcedialog'],
- ['closebtn'],
- ];
- 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?
- });
-
- window.onbeforeunload = function () {
- if (editor.checkDirty()) {
- return 'Pagina verlaten zonder wijzigingen op te slaan?'; // message ignored in modern browsers
- }
- };
-});
-
- CKEDITOR.disableAutoInline = true;
-
-// add edit link to menu
-var pagebody = document.getElementsByClassName('static')[0];
-if (pagebody) {
- var editlink = document.querySelector('a[href="#edit"]');
- if (editlink)
- editlink.onclick = function (e) {
- editlink.style.fontWeight = 'bold';
- editlink.href = '';
- editlink.onclick = undefined;
- pagebody.setAttribute('contenteditable', true);
- pagebody.innerHTML = pagebody.innerHTML
- .replace(/<!--BLOCK:(.*?)-->[^]*?<!--\/-->/g, '$1');
- CKEDITOR.inline(pagebody, { customConfig: '' });
- document.body.className = 'edit';
- return false;
- };
- if (window.location.hash == '#edit') {
- editlink.onclick();
- }
-}
-