| Server IP : 85.158.181.41 / Your IP : 216.73.217.12 Web Server : Apache System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64 User : moncbefd ( 1024) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/moncbefd/www.moneta.at/admin/includes/ckeditor/plugins/showprotected/ |
Upload File : |
/*
* "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') +
'-->';
}
};