diff -r 000000000000 -r bca7a7e058a3 src/pyams_skin/resources/js/ext/tinymce/dev/plugins/pagebreak/plugin.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_skin/resources/js/ext/tinymce/dev/plugins/pagebreak/plugin.js Thu Feb 13 11:43:31 2020 +0100 @@ -0,0 +1,88 @@ +/** + * plugin.js + * + * Copyright, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/*global tinymce:true */ + +tinymce.PluginManager.add('pagebreak', function(editor) { + var pageBreakClass = 'mce-pagebreak', separatorHtml = editor.getParam('pagebreak_separator', ''); + + var pageBreakSeparatorRegExp = new RegExp(separatorHtml.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) { + return '\\' + a; + }), 'gi'); + + var pageBreakPlaceHolderHtml = ''; + + // Register commands + editor.addCommand('mcePageBreak', function() { + if (editor.settings.pagebreak_split_block) { + editor.insertContent('

' + pageBreakPlaceHolderHtml + '

'); + } else { + editor.insertContent(pageBreakPlaceHolderHtml); + } + }); + + // Register buttons + editor.addButton('pagebreak', { + title: 'Page break', + cmd: 'mcePageBreak' + }); + + editor.addMenuItem('pagebreak', { + text: 'Page break', + icon: 'pagebreak', + cmd: 'mcePageBreak', + context: 'insert' + }); + + editor.on('ResolveName', function(e) { + if (e.target.nodeName == 'IMG' && editor.dom.hasClass(e.target, pageBreakClass)) { + e.name = 'pagebreak'; + } + }); + + editor.on('click', function(e) { + e = e.target; + + if (e.nodeName === 'IMG' && editor.dom.hasClass(e, pageBreakClass)) { + editor.selection.select(e); + } + }); + + editor.on('BeforeSetContent', function(e) { + e.content = e.content.replace(pageBreakSeparatorRegExp, pageBreakPlaceHolderHtml); + }); + + editor.on('PreInit', function() { + editor.serializer.addNodeFilter('img', function(nodes) { + var i = nodes.length, node, className; + + while (i--) { + node = nodes[i]; + className = node.attr('class'); + if (className && className.indexOf('mce-pagebreak') !== -1) { + // Replace parent block node if pagebreak_split_block is enabled + var parentNode = node.parent; + if (editor.schema.getBlockElements()[parentNode.name] && editor.settings.pagebreak_split_block) { + parentNode.type = 3; + parentNode.value = separatorHtml; + parentNode.raw = true; + node.remove(); + continue; + } + + node.type = 3; + node.value = separatorHtml; + node.raw = true; + } + } + }); + }); +}); \ No newline at end of file