File: refreshmaskapi.html

package info (click to toggle)
ckeditor 4.16.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 258,804 kB
  • sloc: javascript: 239,590; sh: 184; makefile: 64; python: 37; php: 15; xml: 5
file content (87 lines) | stat: -rw-r--r-- 2,452 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<div id="editor">
	<p>bar</p>
	<div id="widget" class="partiallyMasked"><div class="notmasked">You can type here...</div></div>
</div>
<div>
	<button id="add-content">Add missing widget HTML</button>
</div>
<div>
	<button id="refresh-parts">Refresh widget parts</button>
</div>
<div>
	<button id="refresh-mask">Refresh widget mask</button>
</div>

<script>
	CKEDITOR.addCss( '.left { float: left; width: 200px; } .right { float: right; width: 200px; } .cke_widget_partial_mask { border: 1px solid red };' );

	CKEDITOR.stylesSet.add( 'default', [
		{ name: 'None', type: 'widget', widget: 'partiallyMasked', attributes: { 'class': '' }, group: 'alignment' },
		{ name: 'Left', type: 'widget', widget: 'partiallyMasked', attributes: { 'class': 'left' }, group: 'alignment' },
		{ name: 'Right', type: 'widget', widget: 'partiallyMasked', attributes: { 'class': 'right' }, group: 'alignment' }
	] );

	CKEDITOR.plugins.add( 'partiallyMasked', {
		requires: 'widget',
		init: function( editor ) {
			editor.widgets.add( 'partiallyMasked', {
				button: 'Partial mask widget',
				pathName: 'test-widget',

				template:
					'<div class="partiallyMasked">' +
						'<div class="notmasked"></div>' +
						'<div class="content"></div>' +
					'</div>',

				editables: {
					nomask: {
						selector: '.notmasked',
						allowedContent: 'br'
					},
					content: {
						selector: '.content',
						allowedContent: 'br'
					}
				},

				parts: {
					nomask: '.notmasked',
					content: '.content'
				},

				allowedContent: 'div(partiallyMasked,content,notmasked,left,right)',
				requiredContent: 'div(partiallyMasked)',

				mask: 'content',

				upcast: function( element ) {
					return element.name == 'div' && element.hasClass( 'partiallyMasked' );
				}
			} );
		}
	} );

	var editor = CKEDITOR.replace( 'editor', {
		extraPlugins: 'partiallyMasked'
	} );

	CKEDITOR.document.findOne( '#add-content' ).on( 'click', function() {
		var div = new CKEDITOR.dom.element( 'div' ),
			widget = editor.widgets.instances[ 0 ];

		if ( !widget.element.findOne( '.content' ) ) {
			div.setText( '...but not here' );
			div.addClass( 'content' );

			widget.element.append( div );
		}
	} );
	CKEDITOR.document.findOne( '#refresh-parts' ).on( 'click', function() {
		editor.widgets.instances[ 0 ].refreshParts();
	} );
	CKEDITOR.document.findOne( '#refresh-mask' ).on( 'click', function() {
		editor.widgets.instances[ 0 ].refreshMask();
	} );

</script>