+function editorsetup() {
+
+CKEDITOR.disableAutoInline = true;
+
CKEDITOR.plugins.add('inlinesave', {
init: function(editor) {
editor.addCommand( 'inlinesave', {
exec: function (editor) {
- var pagename = window.location.pathname.replace(/\/$/, '/index');
+ var pagename = window.location.pathname;
var body = editor.getData();
+ // trim trailing whitespace in non-empty paragraphs
+ body = body.replace(/((?!<p>).{3})(?:\s|\u200B)+(?=<\/p>)/g, '$1');
// empty line is equivalent to a paragraph break
body = body.replace(/<br \/>\s*<br \/>/g, '<p>');
+ // keep names and preceding abbreviations together
+ body = body.replace(/\b((?:dhr|mw|me?vr|mr?s?)\.)\s+(?=[A-Z])/ig, '$1 ');
// wrap long line after each sentence
body = body.replace(/^(\t*).{73,}/mg, function (line, indent) {
var dots = '(?:.{24,72}|.{73,}?)'; // chars before punctuation
ajaxpost.send(data);
},
});
+ editor.setKeystroke(CKEDITOR.CTRL + 83 /*S*/, 'inlinesave');
editor.ui.addButton( 'Inlinesave', {
command: 'inlinesave',
label: editor.lang.save.toolbar,
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 = '';
+ var infotab = event.data.definition.getContents('info');
+ infotab.remove('txtWidth');
+ infotab.remove('txtHeight');
+ infotab.remove('txtBorder');
+ infotab.remove('txtCellSpace');
+ infotab.remove('txtCellPad');
+ infotab.remove('cmbAlign');
+
+ // horizontal repositioning of existing elements
+ var hbox = {
+ id: 'hboxDimensions',
+ type: 'hbox',
+ children: [ infotab.get('txtCols'), infotab.get('txtRows') ],
+ };
+ infotab.add(hbox, 'selHeaders');
+ infotab.remove('txtCols');
+ infotab.remove('txtRows');
+
break;
case 'link':
// hide unneeded widgets from the Link Info tab
config.toolbarCanCollapse = true;
config.floatSpacePreferRight = true;
config.floatSpaceDockedOffsetY = 0;
+ config.title = false;
config.startupFocus = true;
config.disableObjectResizing = true;
};
});
- CKEDITOR.disableAutoInline = true;
-
-// add edit link to menu
var pagebody = document.getElementsByClassName('static')[0];
if (pagebody) {
+ // add edit link to menu
var editlink = document.querySelector('a[href="#edit"]');
if (editlink)
editlink.onclick = function (e) {
editlink.href = '';
editlink.onclick = undefined;
pagebody.setAttribute('contenteditable', true);
- pagebody.innerHTML = pagebody.innerHTML
- .replace(/<!--BLOCK:(.*?)-->[^]*?<!--\/-->/g, '$1');
+ pagebody.querySelectorAll('[data-dyn]').forEach(function (el) {
+ let blockname = el.getAttribute('data-dyn');
+ if (!blockname) {
+ el.remove();
+ return;
+ }
+ el.outerHTML = '[[' + blockname + ']]';
+ });
CKEDITOR.inline(pagebody, { customConfig: '' });
document.body.className = 'edit';
return false;
}
}
+}
+
+document.addEventListener('DOMContentLoaded', function (e) {
+ var editorinc = document.createElement('script');
+ editorinc.addEventListener('load', editorsetup);
+ editorinc.src = ckesrc;
+ document.getElementsByTagName('head')[0].appendChild(editorinc);
+});