src/pyams_skin/resources/js/ext/tinymce/dev/plugins/pagebreak/plugin.js
changeset 557 bca7a7e058a3
equal deleted inserted replaced
-1:000000000000 557:bca7a7e058a3
       
     1 /**
       
     2  * plugin.js
       
     3  *
       
     4  * Copyright, Moxiecode Systems AB
       
     5  * Released under LGPL License.
       
     6  *
       
     7  * License: http://www.tinymce.com/license
       
     8  * Contributing: http://www.tinymce.com/contributing
       
     9  */
       
    10 
       
    11 /*global tinymce:true */
       
    12 
       
    13 tinymce.PluginManager.add('pagebreak', function(editor) {
       
    14 	var pageBreakClass = 'mce-pagebreak', separatorHtml = editor.getParam('pagebreak_separator', '<!-- pagebreak -->');
       
    15 
       
    16 	var pageBreakSeparatorRegExp = new RegExp(separatorHtml.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {
       
    17 		return '\\' + a;
       
    18 	}), 'gi');
       
    19 
       
    20 	var pageBreakPlaceHolderHtml = '<img src="' + tinymce.Env.transparentSrc + '" class="' +
       
    21 		pageBreakClass + '" data-mce-resize="false" />';
       
    22 
       
    23 	// Register commands
       
    24 	editor.addCommand('mcePageBreak', function() {
       
    25 		if (editor.settings.pagebreak_split_block) {
       
    26 			editor.insertContent('<p>' + pageBreakPlaceHolderHtml + '</p>');
       
    27 		} else {
       
    28 			editor.insertContent(pageBreakPlaceHolderHtml);
       
    29 		}
       
    30 	});
       
    31 
       
    32 	// Register buttons
       
    33 	editor.addButton('pagebreak', {
       
    34 		title: 'Page break',
       
    35 		cmd: 'mcePageBreak'
       
    36 	});
       
    37 
       
    38 	editor.addMenuItem('pagebreak', {
       
    39 		text: 'Page break',
       
    40 		icon: 'pagebreak',
       
    41 		cmd: 'mcePageBreak',
       
    42 		context: 'insert'
       
    43 	});
       
    44 
       
    45 	editor.on('ResolveName', function(e) {
       
    46 		if (e.target.nodeName == 'IMG' && editor.dom.hasClass(e.target, pageBreakClass)) {
       
    47 			e.name = 'pagebreak';
       
    48 		}
       
    49 	});
       
    50 
       
    51 	editor.on('click', function(e) {
       
    52 		e = e.target;
       
    53 
       
    54 		if (e.nodeName === 'IMG' && editor.dom.hasClass(e, pageBreakClass)) {
       
    55 			editor.selection.select(e);
       
    56 		}
       
    57 	});
       
    58 
       
    59 	editor.on('BeforeSetContent', function(e) {
       
    60 		e.content = e.content.replace(pageBreakSeparatorRegExp, pageBreakPlaceHolderHtml);
       
    61 	});
       
    62 
       
    63 	editor.on('PreInit', function() {
       
    64 		editor.serializer.addNodeFilter('img', function(nodes) {
       
    65 			var i = nodes.length, node, className;
       
    66 
       
    67 			while (i--) {
       
    68 				node = nodes[i];
       
    69 				className = node.attr('class');
       
    70 				if (className && className.indexOf('mce-pagebreak') !== -1) {
       
    71 					// Replace parent block node if pagebreak_split_block is enabled
       
    72 					var parentNode = node.parent;
       
    73 					if (editor.schema.getBlockElements()[parentNode.name] && editor.settings.pagebreak_split_block) {
       
    74 						parentNode.type = 3;
       
    75 						parentNode.value = separatorHtml;
       
    76 						parentNode.raw = true;
       
    77 						node.remove();
       
    78 						continue;
       
    79 					}
       
    80 
       
    81 					node.type = 3;
       
    82 					node.value = separatorHtml;
       
    83 					node.raw = true;
       
    84 				}
       
    85 			}
       
    86 		});
       
    87 	});
       
    88 });