PHP Classes

File: assets/js/ckeditor/showprotected/plugin.js

Recommend this page to a friend!
  Classes of Gabriel Alejandro López López   Yii2 Website Module   assets/js/ckeditor/showprotected/plugin.js   Download  
File: assets/js/ckeditor/showprotected/plugin.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Yii2 Website Module
Add a content page management system to a site
Author: By
Last change:
Date: 3 months ago
Size: 3,293 bytes
 

Contents

Class file image Download
/* * "showprotected" CKEditor plugin * * Created by Matthew Lieder (https://github.com/IGx89) * * Licensed under the MIT, GPL, LGPL and MPL licenses * * Icon courtesy of famfamfam: http://www.famfamfam.com/lab/icons/mini/ */ // TODO: configuration settings // TODO: show the actual text inline, not just an icon? // TODO: improve copy/paste behavior (tooltip is wrong after paste) CKEDITOR.plugins.add( 'showprotected', { requires: 'dialog,fakeobjects', onLoad: function() { // Add the CSS styles for protected source placeholders. var iconPath = CKEDITOR.getUrl( this.path + 'images' + '/code.gif' ), baseStyle = 'background:url(' + iconPath + ') no-repeat %1 center;border:1px dotted #00f;background-size:16px;'; var template = '.%2 img.cke_protected' + '{' + baseStyle + 'width:16px;' + 'min-height:15px;' + // The default line-height on IE. 'height:1.15em;' + // Opera works better with "middle" (even if not perfect) 'vertical-align:' + ( CKEDITOR.env.opera ? 'middle' : 'text-bottom' ) + ';' + '}'; // Styles with contents direction awareness. function cssWithDir( dir ) { return template.replace( /%1/g, dir == 'rtl' ? 'right' : 'left' ).replace( /%2/g, 'cke_contents_' + dir ); } CKEDITOR.addCss( cssWithDir( 'ltr' ) + cssWithDir( 'rtl' ) ); }, init: function( editor ) { CKEDITOR.dialog.add( 'showProtectedDialog', this.path + 'dialogs/protected.js' ); editor.on( 'doubleclick', function( evt ) { var element = evt.data.element; if ( element.is( 'img' ) && element.hasClass( 'cke_protected' ) ) { evt.data.dialog = 'showProtectedDialog'; } } ); }, afterInit: function( editor ) { // Register a filter to displaying placeholders after mode change. var dataProcessor = editor.dataProcessor, dataFilter = dataProcessor && dataProcessor.dataFilter; if ( dataFilter ) { dataFilter.addRules( { comment: function( commentText, commentElement ) { if(commentText.indexOf(CKEDITOR.plugins.showprotected.protectedSourceMarker) == 0) { commentElement.attributes = []; var fakeElement = editor.createFakeParserElement( commentElement, 'cke_protected', 'protected' ); var cleanedCommentText = CKEDITOR.plugins.showprotected.decodeProtectedSource( commentText ); fakeElement.attributes.title = fakeElement.attributes.alt = cleanedCommentText; return fakeElement; } return null; } } ); } } } ); /** * Set of showprotected plugin's helpers. * * @class * @singleton */ CKEDITOR.plugins.showprotected = { protectedSourceMarker: '{cke_protected}', decodeProtectedSource: function( protectedSource ) { if(protectedSource.indexOf('%3C!--') == 0) { return decodeURIComponent(protectedSource).replace( /<!--\{cke_protected\}([\s\S]+?)-->/g, function( match, data ) { return decodeURIComponent( data ); } ); } else { return decodeURIComponent(protectedSource.substr(CKEDITOR.plugins.showprotected.protectedSourceMarker.length)); } }, encodeProtectedSource: function( protectedSource ) { return '<!--' + CKEDITOR.plugins.showprotected.protectedSourceMarker + encodeURIComponent( protectedSource ).replace( /--/g, '%2D%2D' ) + '-->'; } };