diff --git a/Public/Resources/CSS/jquery.spellchecker.css b/Public/Resources/CSS/jquery.spellchecker.css new file mode 100644 index 0000000..e8c1443 --- /dev/null +++ b/Public/Resources/CSS/jquery.spellchecker.css @@ -0,0 +1,57 @@ +/* + * jQuery Spellchecker - v0.2.4 + * https://github.com/badsyntax/jquery-spellchecker + * + * Copyright (c) 2012 Richard Willis + * Licensed under the MIT license. + */ +.spellchecker-suggestbox { + position: absolute; + display: none; + z-index: 9999; + overflow: none; + font: normal 13px arial; + box-shadow: 0 0 4px #aaa; + background: #fff; + border: 1px solid #bbb; +} +.spellchecker-suggestbox .loading { + padding: 3px 6px; + font-style: italic; +} +.spellchecker-suggestbox a { + outline: none; + cursor: pointer; + color: #333; + padding: 3px 6px; + display: block; + text-decoration: none; +} +.spellchecker-suggestbox a:hover { + color: #000; + background: #ddd; +} +.spellchecker-suggestbox .footer { + border-top: 1px solid #ddd; +} +.spellchecker-suggestbox .footer .ignore-all, +.spellchecker-suggestbox .footer .ignore-forever { + display: none; +} +.spellchecker-word-highlight { + color: red; + cursor: pointer; + border-bottom: 1px dotted red; +} +.spellchecker-incorrectwords { + display: none; +} +.spellchecker-incorrectwords a { + display: inline-block; + margin-right: .5em; +} +.spellchecker-button-icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHtSURBVDjLY/j//z8DJZiBKgY49drM9J3idhLEtu+xjvea4nLNqsVspnWr2S6QmF6+Zol2ltpq5QSlmcpxijMxDABp9pjkuMuu28rIpsMi3rLZFKzIus38mm6OuqRxpf41nC5w7rOJd+i1ngnUXGLTbj7Tsskk3rbL8ppZreEu7Ry1mWpJSvHK8Uoz0TWK5U/nYIg8y8rgPsl+l12P1WqgbTPdJtk/AtoWb1CkBdagnqyyWilawVM/Rw/FBQyx540ZGm/eYIg8P43BdYLdSZiEcYXeTJB/TaoNroH8q5OldVIhXE5SKUqhXSNRfZdKvPKVkOrED+L9d/8wN998w+B4XIL40I48K8FQf/O6+7In/7mbb35hsD2qjBKNDLU3ExjKb7pi1Rx61ke89+6fwBVP/jPXXn/HYHlYGiMdMJTe1JJc/PgHQ/X1xQyplznBYuFnmRiiz062nPfof8DSJ/8ZSq8/ZzA9KIEzIQE1Vvuuf/6fufv2M4bgsz4MxVdPui8Cal4C1Jx/+RGDPqpmTANiz7MAvXI+bO2L/5ZzHvzP2Pjif8DCx/8ZMi/fY9DcL0FUUmbwPKkg3Hr7T+WOV//95j/8z5B6/jaD6l4JkvIC0J9FTtPu/2dIPn+PQXG3BFmZiUFzbweDLH7NVMmNAOGld33BRiNUAAAAAElFTkSuQmCC) !important; + background-repeat: no-repeat; + background-position: center center; +} diff --git a/Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/add.png b/Public/Resources/Images/Components/WysiwygEditor/add.png similarity index 100% rename from Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/add.png rename to Public/Resources/Images/Components/WysiwygEditor/add.png diff --git a/Public/Resources/Images/Components/WysiwygEditor/backgroundcolor.png b/Public/Resources/Images/Components/WysiwygEditor/backgroundcolor.png new file mode 100644 index 0000000..b1d765c Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/backgroundcolor.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/blockjustify.png b/Public/Resources/Images/Components/WysiwygEditor/blockjustify.png new file mode 100644 index 0000000..66d9dbe Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/blockjustify.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/bold.png b/Public/Resources/Images/Components/WysiwygEditor/bold.png new file mode 100644 index 0000000..41ee077 Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/bold.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/centerjustify.png b/Public/Resources/Images/Components/WysiwygEditor/centerjustify.png new file mode 100644 index 0000000..fb4b948 Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/centerjustify.png differ diff --git a/Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/check.png b/Public/Resources/Images/Components/WysiwygEditor/check.png similarity index 100% rename from Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/check.png rename to Public/Resources/Images/Components/WysiwygEditor/check.png diff --git a/Public/Resources/Images/Components/WysiwygEditor/debug.png b/Public/Resources/Images/Components/WysiwygEditor/debug.png new file mode 100644 index 0000000..a40b2c9 Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/debug.png differ diff --git a/Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/done.png b/Public/Resources/Images/Components/WysiwygEditor/done.png similarity index 100% rename from Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/done.png rename to Public/Resources/Images/Components/WysiwygEditor/done.png diff --git a/Public/Resources/Images/Components/WysiwygEditor/dropdownbutton.png b/Public/Resources/Images/Components/WysiwygEditor/dropdownbutton.png new file mode 100644 index 0000000..1111eed Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/dropdownbutton.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/hr.png b/Public/Resources/Images/Components/WysiwygEditor/hr.png new file mode 100644 index 0000000..92b7caa Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/hr.png differ diff --git a/Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/ignore.png b/Public/Resources/Images/Components/WysiwygEditor/ignore.png similarity index 100% rename from Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/ignore.png rename to Public/Resources/Images/Components/WysiwygEditor/ignore.png diff --git a/Public/Resources/Images/Components/WysiwygEditor/image.png b/Public/Resources/Images/Components/WysiwygEditor/image.png new file mode 100644 index 0000000..1ad554b Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/image.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/indent.png b/Public/Resources/Images/Components/WysiwygEditor/indent.png new file mode 100644 index 0000000..1a554de Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/indent.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/italic.png b/Public/Resources/Images/Components/WysiwygEditor/italic.png new file mode 100644 index 0000000..705f52f Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/italic.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/leftjustify.png b/Public/Resources/Images/Components/WysiwygEditor/leftjustify.png new file mode 100644 index 0000000..e9a9331 Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/leftjustify.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/link.png b/Public/Resources/Images/Components/WysiwygEditor/link.png new file mode 100644 index 0000000..b6879f5 Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/link.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/new_tab.png b/Public/Resources/Images/Components/WysiwygEditor/new_tab.png new file mode 100644 index 0000000..bcf57c8 Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/new_tab.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/ol.png b/Public/Resources/Images/Components/WysiwygEditor/ol.png new file mode 100644 index 0000000..0e1f7ed Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/ol.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/outdent.png b/Public/Resources/Images/Components/WysiwygEditor/outdent.png new file mode 100644 index 0000000..29de65f Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/outdent.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/quote.png b/Public/Resources/Images/Components/WysiwygEditor/quote.png new file mode 100644 index 0000000..e132cef Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/quote.png differ diff --git a/Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/replace.png b/Public/Resources/Images/Components/WysiwygEditor/replace.png similarity index 100% rename from Public/Resources/Javascript/ckeditor/_source/plugins/centionspellcheck/images/replace.png rename to Public/Resources/Images/Components/WysiwygEditor/replace.png diff --git a/Public/Resources/Images/Components/WysiwygEditor/rightjustify.png b/Public/Resources/Images/Components/WysiwygEditor/rightjustify.png new file mode 100644 index 0000000..2dcf3fc Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/rightjustify.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/strikethrough.png b/Public/Resources/Images/Components/WysiwygEditor/strikethrough.png new file mode 100644 index 0000000..a5d7553 Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/strikethrough.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/textcolor.png b/Public/Resources/Images/Components/WysiwygEditor/textcolor.png new file mode 100644 index 0000000..40c6d3d Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/textcolor.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/ul.png b/Public/Resources/Images/Components/WysiwygEditor/ul.png new file mode 100644 index 0000000..5eeb72b Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/ul.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/underline.png b/Public/Resources/Images/Components/WysiwygEditor/underline.png new file mode 100644 index 0000000..01437ad Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/underline.png differ diff --git a/Public/Resources/Images/Components/WysiwygEditor/video.png b/Public/Resources/Images/Components/WysiwygEditor/video.png new file mode 100644 index 0000000..a00833f Binary files /dev/null and b/Public/Resources/Images/Components/WysiwygEditor/video.png differ diff --git a/Public/Resources/Images/arrow_down.gif b/Public/Resources/Images/arrow_down.gif new file mode 100644 index 0000000..1283448 Binary files /dev/null and b/Public/Resources/Images/arrow_down.gif differ diff --git a/Public/Resources/Images/sort_down.gif b/Public/Resources/Images/sort_down.gif old mode 100755 new mode 100644 diff --git a/Public/Resources/Images/sort_up.gif b/Public/Resources/Images/sort_up.gif old mode 100755 new mode 100644 diff --git a/Public/Resources/Javascript/General.js b/Public/Resources/Javascript/General.js index 1328e23..29b550b 100644 --- a/Public/Resources/Javascript/General.js +++ b/Public/Resources/Javascript/General.js @@ -311,14 +311,17 @@ function Calendar( id, start ) { this.changeBg = function (id, count) { var node = window.opener.document.getElementById(this.id); var human = window.opener.document.getElementById(this.id + 'Human'); - if( CalendarFormat( human, this.dayRef[count] ) ) { + var target = (human ? human : node); + if( CalendarFormat( target, this.dayRef[count] ) ) { if (document.getElementById(id).style.backgroundColor != "yellow"){ document.getElementById(id).style.backgroundColor = "yellow" } else{ document.getElementById(id).style.backgroundColor = "#ffffff" } - node.value = '' + this.dayRef[count]; + if (human){ + node.value = '' + this.dayRef[count]; + } window.setTimeout('window.close()',100); } } @@ -903,17 +906,17 @@ function I(k) { function wfStringExpand( format ) { var i = 0; - for( i = 0; i < 8; i++ ) { var o = new RegExp('{(' + i + ')(:(.*?))?}', 'g'); - var after = format.replace(o, arguments[i+1]); + var arg = ('' + arguments[i+1]).replace('$', '___DOLLAR_SIGN___'); + var after = format.replace(o, arg); if( after == format ) { break; } else { format = after; } } - return format; + return format.replace('___DOLLAR_SIGN___', '$'); } function extractEmailAddresses( text ) { var r = text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi); diff --git a/Public/Resources/Javascript/Hotkey.js b/Public/Resources/Javascript/Hotkey.js index 6e5f8db..03abb8f 100644 --- a/Public/Resources/Javascript/Hotkey.js +++ b/Public/Resources/Javascript/Hotkey.js @@ -16,7 +16,7 @@ Hotkeys = { 'add': function(shortcut_combination,callback,opt,held_callback) { //Provide a set of default options var default_options = { - 'type':'keydown', + 'type':'keypress', 'propagate':false, 'disable_in_input':false, 'target':document, @@ -200,7 +200,7 @@ Hotkeys = { var keydown_function = function(e) { if( check_key_function( e, shortcut_combination ) ) { - if( captured_this.all_shortcuts[shortcut_combination]['timeout'] == 0 ) { + if( captured_this.all_shortcuts[shortcut_combination] && captured_this.all_shortcuts[shortcut_combination]['timeout'] == 0 ) { captured_this.log_keypress('Calling callback for ' + shortcut_combination); callback(e, shortcut_combination, opt); @@ -232,6 +232,10 @@ Hotkeys = { } }; + if( this.all_shortcuts[shortcut_combination] ) { + this.remove(shortcut_combination); + } + this.all_shortcuts[shortcut_combination] = { 'callback': keydown_function, 'keyup_callback': keyup_function, @@ -281,7 +285,7 @@ Hotkeys = { var binding = this.all_shortcuts[shortcut_combination]; delete(this.all_shortcuts[shortcut_combination]) - if(!binding) + if(!binding) return; var type = binding['event']; diff --git a/Public/Resources/Javascript/MCAM.js b/Public/Resources/Javascript/MCAM.js index d63333c..398f592 100644 --- a/Public/Resources/Javascript/MCAM.js +++ b/Public/Resources/Javascript/MCAM.js @@ -41,41 +41,49 @@ function MCAM() { // Multiple Channel AJAX Mechanism this.setOutput = function( os ) { this.outputSystem = os; }; - this.handleChannel = function( requester, channel ) { + this.handleChannel = function( requesterEvent, channel ) { var id = (channel.id ? channel.id : ''); var type = (channel.type ? channel.type : ''); var content = (channel.content ? channel.content : ''); - var rval = this.handlers[type]( requester, id, type, content ); + var rval = this.handlers[type]( requesterEvent, id, type, content ); this.lastChannel = 'Channel: (type:' + type + ',id:' + id + ')'; return rval; }; - this.handleEvent = function( requester ) { + this.handleEvent = function( requesterEvent ) { + var requester = requesterEvent.requester; if( !requester.abortedByUser ) { switch( requester.readyState ) { case 4: { if( requester.status == 200 ) { var i = 0, lastChannel = 0; var successful = true; -// try { + try { var data = JSON.parse(requester.responseText); if( data && data.mcam && data.mcam.channels ) { for( i = 0; i < data.mcam.channels.length; i++ ) { lastChannel = i; - if( !this.handleChannel( requester, data.mcam.channels[i] ) && successful ) { + if( !this.handleChannel( requesterEvent, data.mcam.channels[i] ) && successful ) { successful = false; break; } } } -// } catch ( e ) { + } catch ( e ) { // this.outputSystem.errorBox( 'Error Decoding MCAM Packet: (channel #' + lastChannel + ')\n' + e.message + '\n', requester.responseText ); -// } + this.log('Error Decoding MCAM Packet: (channel #' + lastChannel + ') ' + e.message); + if( requesterEvent.failureCallback ) + requesterEvent.failureCallback(); + } if( !successful ) { this.outputSystem.errorBox( 'Error Decoding MCAM Packet.', requester.responseText ); + if( requesterEvent.failureCallback ) + requesterEvent.failureCallback(); } } else if( requester.status != 404 && requester.status > 0 ) { - this.outputSystem.errorBox('All going wrong -> ' + requester.status + ' : ' + requester.mcamURL, ''); + this.outputSystem.errorBox('All going wrong -> ' + requester.status + ' : ' + requesterEvent.mcamURL, ''); + if( requesterEvent.failureCallback ) + requesterEvent.failureCallback(); } this.dirtyList = new Array(); this._dirtyList = new Array(); @@ -110,6 +118,10 @@ function MCAM() { // Multiple Channel AJAX Mechanism if( node ) { if( this.loading ) { + /* Tobias 2011-11-29: If this loading image is not hidden + * as it should people get very annoyed and think that the page + * is still loading. Therefore lets disable it and see if + * people think that the system gets quicker. if( node.builtByMCAM ) { node.style.display = 'block'; node.style.top = '5px'; @@ -117,6 +129,7 @@ function MCAM() { // Multiple Channel AJAX Mechanism } else { node.style.display = ''; } + */ } else node.style.display = 'none'; @@ -143,11 +156,13 @@ function MCAM() { // Multiple Channel AJAX Mechanism } this.toggleLoading(true); + var requesterEvent = {}; var requester = this.createRequestObject(); + requesterEvent.requester = requester; requester.open( "POST", url ); requester.setRequestHeader( 'Content-Type','application/x-www-form-urlencoded' ); requester.onreadystatechange = function() { - self.handleEvent(requester); + self.handleEvent(requesterEvent); }; requester.send( 'uieventcomponent='+ component + '&uieventdata=' + event_type + @@ -176,6 +191,9 @@ function MCAM() { // Multiple Channel AJAX Mechanism this.fireCallbackRequest = function( request, callback, new_parameters ) { return this.fireReplaceRequestWithCallback( request, callback, '', new_parameters ); }; + this.fireCallbackRequest = function( request, callback, new_parameters, failureCallback ) { + return this.fireReplaceRequestWithCallback( request, callback, '', new_parameters, failureCallback ); + }; this.createProgressDiv = function( node, label ) { var pos = findPos(node); var div = document.createElement('div'); @@ -188,7 +206,7 @@ function MCAM() { // Multiple Channel AJAX Mechanism div.style.top = pos[1] + 'px'; return div; }; - this.fireReplaceRequestWithCallback = function( request, callback, target, new_parameters ) { + this.fireReplaceRequestWithCallback = function( request, callback, target, new_parameters, failureCallback ) { var url = this.getTargetURL() + '/-/MCAM/' + request; var self = this; var parameters = ''; @@ -214,12 +232,14 @@ function MCAM() { // Multiple Channel AJAX Mechanism this.toggleLoading(true); + var requesterEvent = {}; var requester = this.createRequestObject(); - requester.mcamURL = url; + requesterEvent.requester = requester; + requesterEvent.mcamURL = url; requester.open( "POST", url ); requester.setRequestHeader( 'Content-Type','application/x-www-form-urlencoded' ); requester.onreadystatechange = function() { - self.handleEvent(requester); + self.handleEvent(requesterEvent); }; var status_div; @@ -228,7 +248,8 @@ function MCAM() { // Multiple Channel AJAX Mechanism status_div = this.createProgressDiv( target_node, target ); wfinsertAdjacentElement( target_node, "afterEnd", status_div ); } - requester.mcamCallback = function( id, type, content ) { + + requesterEvent.mcamCallback = function( id, type, content ) { if( callback ) callback( content ); if( target ) { @@ -238,6 +259,11 @@ function MCAM() { // Multiple Channel AJAX Mechanism return true; }; + requesterEvent.failureCallback = function() { + if( failureCallback ) + failureCallback(); + }; + requester.send( parameters ); return requester; @@ -247,10 +273,10 @@ function MCAM() { // Multiple Channel AJAX Mechanism }; /*** SETUP ***/ var self = this; - this.registerType( 'Result', function( requester, id, type, content ) { - return requester.mcamCallback( id, type, content ); + this.registerType( 'Result', function( requesterEvent, id, type, content ) { + return requesterEvent.mcamCallback( id, type, content ); }); - this.registerType( 'Replace', function( requester, id, type, content ) { + this.registerType( 'Replace', function( requesterEvent, id, type, content ) { var node = document.getElementById(id); if( node ) { wfinsertAdjacentHTML( node, 'replace', content ); @@ -267,7 +293,7 @@ function MCAM() { // Multiple Channel AJAX Mechanism } return true; } ); - this.registerType( 'SetContent', function( requester, id, type, content ) { + this.registerType( 'SetContent', function( requesterEvent, id, type, content ) { var node = document.getElementById(id); if( node ) { node.innerHTML = ''; @@ -276,7 +302,7 @@ function MCAM() { // Multiple Channel AJAX Mechanism } return false; }); - this.registerType( 'SetValue', function( requester, id, type, content ) { + this.registerType( 'SetValue', function( requesterEvent, id, type, content ) { var node = document.getElementById(id); if( node ) { document.getElementById(id).value = content; @@ -284,7 +310,7 @@ function MCAM() { // Multiple Channel AJAX Mechanism } return false; }); - this.registerType( 'Script', function( requester, id, type, content ) { + this.registerType( 'Script', function( requesterEvent, id, type, content ) { try { eval( content ); return true; @@ -292,9 +318,13 @@ function MCAM() { // Multiple Channel AJAX Mechanism return false; } }); - this.registerType( 'Error', function( requester, id, type, content ) { + this.registerType( 'Error', function( requesterEvent, id, type, content ) { var errorMessage = content; - alert( 'MCAM.Error: ' + errorMessage ); +// alert( 'MCAM.Error: ' + errorMessage ); +// mcam.logError( 'MCAM.Error: ' + errorMessage ); + mcam.log( 'MCAM.Error: ' + errorMessage ); + if( requesterEvent.failureCallback ) + requesterEvent.failureCallback(); return true; }); this.log = function( value ) { diff --git a/Public/Resources/Javascript/Validator.js b/Public/Resources/Javascript/Validator.js index 783f867..b3a732c 100644 --- a/Public/Resources/Javascript/Validator.js +++ b/Public/Resources/Javascript/Validator.js @@ -2,17 +2,14 @@ function RequiredFieldValidation( message_node, target_node ) { var n = document.getElementById(target_node); var e = document.getElementById(message_node); - e.style.display = 'none'; - if(_(target_node)) - { - if(_(target_node).formValue() == '') { - e.style.display = 'block'; + e.style.display = 'none'; + if( _(target_node) ) { + if( _(target_node)._enabled && _(target_node).formValue() == '' ) { + e.style.display = 'block'; return false; } - } - else - { - if(( n && SerializeFormValue('', n) == '')) { + } else { + if( ( n && SerializeFormValue('', n) == '') ) { e.style.display = 'block'; return false; } @@ -22,15 +19,25 @@ function RequiredFieldValidation( message_node, target_node ) { function RegularExpressionFieldValidation( message_node, target_node, expression ) { var n = document.getElementById(target_node); var e = document.getElementById(message_node); + var r = new RegExp(expression); e.style.display = 'none'; - if( n ) { - var r = new RegExp(expression); - var value = SerializeFormValue('', n); - if( !(r && r.test(value)) && !(r && r.test(n.value)) ) { - e.style.display = 'block'; - return false; + if( _(target_node) ) { + if( _(target_node)._enabled ) { + var value = _(target_node).formValue(); + if( !(r && r.test(value)) ) { + e.style.display = 'block'; + return false; + } + } + } else { + if( n ) { + var value = SerializeFormValue('', n); + if( !(r && r.test(value)) && !(r && r.test(n.value)) ) { + e.style.display = 'block'; + return false; + } } } return true; } -// object HTMLTextAreaElement \ No newline at end of file +// object HTMLTextAreaElement diff --git a/Public/Resources/Javascript/ckeditor/.htaccess b/Public/Resources/Javascript/ckeditor/.htaccess deleted file mode 100644 index ed1d794..0000000 --- a/Public/Resources/Javascript/ckeditor/.htaccess +++ /dev/null @@ -1,24 +0,0 @@ -# -# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. -# For licensing, see LICENSE.html or http://ckeditor.com/license -# - -# -# On some specific Linux installations you could face problems with Firefox. -# It could give you errors when loading the editor saying that some illegal -# characters were found (three strange chars in the beginning of the file). -# This could happen if you map the .js or .css files to PHP, for example. -# -# Those characters are the Byte Order Mask (BOM) of the Unicode encoded files. -# All FCKeditor files are Unicode encoded. -# - -AddType application/x-javascript .js -AddType text/css .css - -# -# If PHP is mapped to handle XML files, you could have some issues. The -# following will disable it. -# - -AddType text/xml .xml diff --git a/Public/Resources/Javascript/ckeditor/CHANGES.html b/Public/Resources/Javascript/ckeditor/CHANGES.html deleted file mode 100644 index 2886d58..0000000 --- a/Public/Resources/Javascript/ckeditor/CHANGES.html +++ /dev/null @@ -1,862 +0,0 @@ - - - -
-- Fixed issues:
-- New features:
-- Fixed issues:
-- New features:
-- Fixed issues:
-- Fixed issues:
-- New features:
-- New features:
-- Fixed issues:
-- New features:
-- Fixed issues:
-- New features:
-- Fixed issues:
-- New features:
-- Fixed issues:
-- New features:
-- Fixed issues:
-- New features:
-- Fixed issues:
-- New features:
-- Fixed issues:
-- New features:
-- Fixed issues:
-- Changelog starts at this release.
- - - diff --git a/Public/Resources/Javascript/ckeditor/CHANGES.md b/Public/Resources/Javascript/ckeditor/CHANGES.md new file mode 100644 index 0000000..c7f7451 --- /dev/null +++ b/Public/Resources/Javascript/ckeditor/CHANGES.md @@ -0,0 +1,82 @@ +CKEditor 4 Changelog +==================== + +## CKEditor 4.0.2 + +* [#9779](http://dev.ckeditor.com/ticket/9779): Fixed overriding `CKEDITOR.getUrl` with `CKEDITOR_GETURL`. +* [#9772](http://dev.ckeditor.com/ticket/9772): Custom buttons in dialog window footer have different look and size (Moono, Kama). +* [#9029](http://dev.ckeditor.com/ticket/9029): Custom styles added with `styleSet.add()` are displayed in wrong order. +* [#9887](http://dev.ckeditor.com/ticket/9887): Disable magicline when `editor.readOnly` is set. +* [#9882](http://dev.ckeditor.com/ticket/9882): Fixed empty document title on `getData()` if set via the Document Properties dialog window. +* [#9773](http://dev.ckeditor.com/ticket/9773): Fixed rendering problems with selection fields in the Kama skin. +* [#9851](http://dev.ckeditor.com/ticket/9851): The `selectionChange` event is not fired when mouse selection ended outside editable. +* [#9903](http://dev.ckeditor.com/ticket/9903): [Inline editor] Bad positioning of floating space with page horizontal scroll. +* [#9872](http://dev.ckeditor.com/ticket/9872): `editor.checkDirty()` returns `true` when called onload. Removed the obsolete `editor.mayBeDirty` flag. +* [#9893](http://dev.ckeditor.com/ticket/9893): Fixed broken toolbar when editing mixed direction content in Quirks mode. +* [#9845](http://dev.ckeditor.com/ticket/9845): Fixed TAB navigation in the Link dialog window when the Anchor option is used and no anchors are available. +* [#9883](http://dev.ckeditor.com/ticket/9883): Maximizing was making the entire page editable with divarea-based editors. +* [#9940](http://dev.ckeditor.com/ticket/9940): [Firefox] Navigating back to a page with the editor was making the entire page editable. +* [#9966](http://dev.ckeditor.com/ticket/9966): Fixed: Unable to type square brackets with French keyboard layout. Changed magicline keystrokes. +* [#9507](http://dev.ckeditor.com/ticket/9507): [Firefox] Selection is moved before editable position when the editor is focused for the first time. +* [#9947](http://dev.ckeditor.com/ticket/9947): [Webkit] Editor overflows parent container in some edge cases. +* [#10105](http://dev.ckeditor.com/ticket/10105): Fixed: Broken sourcearea view when an RTL language is set. +* [#10123](http://dev.ckeditor.com/ticket/10123): [Webkit] Fixed: Several dialog windows have broken layout since the latest Webkit release. +* [#10152](http://dev.ckeditor.com/ticket/10152): Fixed: Invalid ARIA property used on menu items. + +## CKEditor 4.0.1.1 + +* Security update: Added protection against XSS attack and possible path disclosure in PHP sample. + +## CKEditor 4.0.1 + +Fixed issues: + +* [#9655](http://dev.ckeditor.com/ticket/9655): Support for IE Quirks Mode in new Moono skin. +* Accessibility issues (mainly on inline editor): [#9364](http://dev.ckeditor.com/ticket/9364), [#9368](http://dev.ckeditor.com/ticket/9368), [#9369](http://dev.ckeditor.com/ticket/9369), [#9370](http://dev.ckeditor.com/ticket/9370), [#9541](http://dev.ckeditor.com/ticket/9541), [#9543](http://dev.ckeditor.com/ticket/9543), [#9841](http://dev.ckeditor.com/ticket/9841), [#9844](http://dev.ckeditor.com/ticket/9844). +* Magic-line: + * [#9481](http://dev.ckeditor.com/ticket/9481): Added accessibility support for Magic-line. + * [#9509](http://dev.ckeditor.com/ticket/9509): Added Magic-line support for forms. + * [#9573](http://dev.ckeditor.com/ticket/9573): Magic-line doesn't disappear on `mouseout` in the specific case. +* [#9754](http://dev.ckeditor.com/ticket/9754): [Webkit] Cut & paste simple unformatted text generates inline wrapper in Webkits. +* [#9456](http://dev.ckeditor.com/ticket/9456): [Chrome] Properly paste bullet list style from MS-Word. +* [#9699](http://dev.ckeditor.com/ticket/9699), [#9758](http://dev.ckeditor.com/ticket/9758): Improved selection locking when selecting by dragging. +* Context menu: + * [#9712](http://dev.ckeditor.com/ticket/9712): Context menu open destroys editor focus. + * [#9366](http://dev.ckeditor.com/ticket/9366): Context menu should be displayed over floating toolbar. + * [#9706](http://dev.ckeditor.com/ticket/9706): Context menu generates JS error in inline mode when editor attached to header element. +* [#9800](http://dev.ckeditor.com/ticket/9800): Hide float panel when resizing window. +* [#9721](http://dev.ckeditor.com/ticket/9721): Padding in content of div based editor puts editing area under bottom UI space. +* [#9528](http://dev.ckeditor.com/ticket/9528): Host page's `box-sizing` style shouldn't influence editor UI elements. +* [#9503](http://dev.ckeditor.com/ticket/9503): Forms plugin adds context menu listeners only on supported input types. Added support for `tel, email, search` and `url` input types. +* [#9769](http://dev.ckeditor.com/ticket/9769): Improved floating toolbar positioning in narrow window. +* [#9875](http://dev.ckeditor.com/ticket/9875): Table dialog doesn't populate width correctly. +* [#8675](http://dev.ckeditor.com/ticket/8675): Deleting cells in nested table removes outer table cell. +* [#9815](http://dev.ckeditor.com/ticket/9815): Can't edit dialog fields on editor initialized in jQuery UI modal dialog. +* [#8888](http://dev.ckeditor.com/ticket/8888): CKEditor dialogs do not show completely in small window. +* [#9360](http://dev.ckeditor.com/ticket/9360): [Inline editor] Blocks shown for a div stay permanently even after user exists editing the div. +* [#9531](http://dev.ckeditor.com/ticket/9531): [Firefox & Inline editor] Toolbar is lost when closing format combo by clicking on its button. +* [#9553](http://dev.ckeditor.com/ticket/9553): Table width incorrectly set when `border-width` style is specified. +* [#9594](http://dev.ckeditor.com/ticket/9594): Cannot tab past CKEditor when it is in read only mode. +* [#9658](http://dev.ckeditor.com/ticket/9658): [IE9] Justify not working on selected image. +* [#9686](http://dev.ckeditor.com/ticket/9686): Added missing contents styles for ``. +* [#9709](http://dev.ckeditor.com/ticket/9709): PasteFromWord should not depend on configuration from other styles. +* [#9726](http://dev.ckeditor.com/ticket/9726): Removed color dialog dependency from table tools. +* [#9765](http://dev.ckeditor.com/ticket/9765): Toolbar Collapse command documented incorrectly on Accessibility Instructions dialog. +* [#9771](http://dev.ckeditor.com/ticket/9771): [Webkit & Opera] Fixed scrolling issues when pasting. +* [#9787](http://dev.ckeditor.com/ticket/9787): [IE9] onChange isn't fired for checkboxes in dialogs. +* [#9842](http://dev.ckeditor.com/ticket/9842): [Firefox 17] When we open toolbar menu for the first time & press down arrow key, focus goes to next toolbar button instead of menu options. +* [#9847](http://dev.ckeditor.com/ticket/9847): Elements path shouldn't be initialized on inline editor. +* [#9853](http://dev.ckeditor.com/ticket/9853): `Editor#addRemoveFormatFilter` is exposed before it really works. +* [#8893](http://dev.ckeditor.com/ticket/8893): Value of `pasteFromWordCleanupFile` config is now taken from instance configuration. +* [#9693](http://dev.ckeditor.com/ticket/9693): Removed "live preview" checkbox from UI color picker. + + +## CKEditor 4.0 + +The first stable release of the new CKEditor 4 code line. + +The CKEditor JavaScript API has been kept compatible with CKEditor 4, whenever +possible. The list of relevant changes can be found in the [API Changes page of +the CKEditor 4 documentation][1]. + +[1]: http://docs.ckeditor.com/#!/guide/dev_api_changes "API Changes" diff --git a/Public/Resources/Javascript/ckeditor/INSTALL.html b/Public/Resources/Javascript/ckeditor/INSTALL.html deleted file mode 100644 index 8cf37f9..0000000 --- a/Public/Resources/Javascript/ckeditor/INSTALL.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -Installation Guide - CKEditor - - - - -- CKEditor Installation Guide
-- What's CKEditor?
-- CKEditor is a text editor to be used inside web pages. It's not a replacement - for desktop text editors like Word or OpenOffice, but a component to be used as - part of web applications and web sites.
-- Installation
-- Installing CKEditor is an easy task. Just follow these simple steps:
--
-- Download the latest version of the editor from our web site: http://ckeditor.com. You should have already completed - this step, but be sure you have the very latest version.
-- Extract (decompress) the downloaded file into the root of your - web site.
-- Note: CKEditor is by default installed in the "ckeditor" - folder. You can place the files in whichever you want though.
-- Checking Your Installation -
-- The editor comes with a few sample pages that can be used to verify that installation - proceeded properly. Take a look at the _samples directory.
-- To test your installation, just call the following page at your web site:
--http://<your site>/<CKEditor installation path>/_samples/index.html - -For example: -http://www.example.com/ckeditor/_samples/index.html-- Documentation
-- The full editor documentation is available online at the following address:
- - - diff --git a/Public/Resources/Javascript/ckeditor/LICENSE.html b/Public/Resources/Javascript/ckeditor/LICENSE.html deleted file mode 100644 index ecbe06e..0000000 --- a/Public/Resources/Javascript/ckeditor/LICENSE.html +++ /dev/null @@ -1,1334 +0,0 @@ - - - - -
- http://docs.cksource.com/ckeditorLicense - CKEditor - - -- Software License Agreement -
-- CKEditor™ - The text editor for Internet™ - - http://ckeditor.com
-
- Copyright © 2003-2010, CKSource - Frederico Knabben. All rights reserved. -- Licensed under the terms of any of the following licenses at your choice: -
-
- You are not required to, but if you want to explicitly declare the license you have - chosen to be bound to when using, reproducing, modifying and distributing this software, - just include a text file titled "LEGAL" in your version of this software, indicating - your license choice. In any case, your choice will not restrict any recipient of - your version of this software to use, reproduce, modify and distribute this software - under any of the above licenses. -
-- Where not otherwise indicated, all CKEditor content is authored by CKSource engineers - and consists of CKSource-owned intellectual property. In some specific instances, - CKEditor will incorporate work done by developers outside of CKSource with their - express permission. -
-- YUI Test: At _source/tests/yuitest.js - can be found part of the source code of YUI, which is licensed under the terms of - the BSD License. YUI is - Copyright © 2008, Yahoo! Inc. -
-- CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product - names are trademarks, registered trademarks or service marks of their respective - holders. -
- - diff --git a/Public/Resources/Javascript/ckeditor/LICENSE.md b/Public/Resources/Javascript/ckeditor/LICENSE.md new file mode 100644 index 0000000..d447c67 --- /dev/null +++ b/Public/Resources/Javascript/ckeditor/LICENSE.md @@ -0,0 +1,1264 @@ +Software License Agreement +========================== + +CKEditor - The text editor for Internet - http://ckeditor.com +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. + +Licensed under the terms of any of the following licenses at your +choice: + + - GNU General Public License Version 2 or later (the "GPL") + http://www.gnu.org/licenses/gpl.html + (See Appendix A) + + - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + http://www.gnu.org/licenses/lgpl.html + (See Appendix B) + + - Mozilla Public License Version 1.1 or later (the "MPL") + http://www.mozilla.org/MPL/MPL-1.1.html + (See Appendix C) + +You are not required to, but if you want to explicitly declare the +license you have chosen to be bound to when using, reproducing, +modifying and distributing this software, just include a text file +titled "legal.txt" in your version of this software, indicating your +license choice. In any case, your choice will not restrict any +recipient of your version of this software to use, reproduce, modify +and distribute this software under any of the above licenses. + +Sources of Intellectual Property Included in CKEditor +----------------------------------------------------- + +Where not otherwise indicated, all CKEditor content is authored by +CKSource engineers and consists of CKSource-owned intellectual +property. In some specific instances, CKEditor will incorporate work +done by developers outside of CKSource with their express permission. + +Trademarks +---------- + +CKEditor is a trademark of CKSource - Frederico Knabben. All other brand +and product names are trademarks, registered trademarks or service +marks of their respective holders. + +--- + +Appendix A: The GPL License +--------------------------- + +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software-to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + +GNU GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + +NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + + +Appendix B: The LGPL License +---------------------------- + +GNU LESSER GENERAL PUBLIC LICENSE +Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + +Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software-to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages-typically libraries-of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + +NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +END OF TERMS AND CONDITIONS + + +Appendix C: The MPL License +--------------------------- + +MOZILLA PUBLIC LICENSE +Version 1.1 + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] diff --git a/Public/Resources/Javascript/ckeditor/README.Scayt b/Public/Resources/Javascript/ckeditor/README.Scayt deleted file mode 100644 index 572e7ee..0000000 --- a/Public/Resources/Javascript/ckeditor/README.Scayt +++ /dev/null @@ -1,51 +0,0 @@ -Notes about implementing your own Spell checking as you type plugin for -Ckeditor. - - -Good things to do before implementing - - - Extract changes made to current Ckeditor version. - - Update Ckeditor to latest version. - - Patch Ckeditor with extracted changes. - - -The general idea of how to implement it (spell checking as you type) - - - In some way get the last modified/newly entered text/html. - (Checking whole document is too slow. Plus it causes other problems) - (It could work to just get the latest entered word when pressing space) - (In range.js there are functions to create bookmarks. These are something - that might be useful) - - - Save caret position. - - - Add tags around the words in the selection. - - - Reset caret position. - (Remember if tags have been added you can't just reset to - the original position. You have to calculate a new position based on how - many tags you added) - - - Perform spell checking on words in selection. - - - Highlight misspelled words. - - -The scayt plugin included in Ckeditor seams to do this that is a good thing. -If something is being entered inside the tags which marks a word -the tags (or maybe just the highlighting) are removed. -This is to ensure that the highlighting does not stretch multiple words. - - -How to reset caret position using Ckedtior API. - -var selection = editor.getSelection(); -var ranges = selection.getRanges(); -ranges[0].select(); - -There seams to be a bug in the above code in Internet Explorer. -If something is entered at the end of the document some object does not seam -to be set. This can be ignored. The caret is at the position it should be. - - - diff --git a/Public/Resources/Javascript/ckeditor/_samples/ajax.html b/Public/Resources/Javascript/ckeditor/_samples/ajax.html deleted file mode 100644 index 153e546..0000000 --- a/Public/Resources/Javascript/ckeditor/_samples/ajax.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - -- - -
- -- This sample shows how to use the dialog API to customize dialogs whithout changing - the original editor code. The following customizations are being done::
-The ckeditor.asp file provides a wrapper to ease the work of creating CKEditor instances from classic Asp.
-To use it, you must first include it into your page:
-
- <!-- #INCLUDE file="../../ckeditor.asp" -->
-
- Of course, you should adjust the path to make it point to the correct location, and maybe use a full path (with virtual="" instead of file="")
-
After that script is included, you can use it in different ways, based on the following pattern:
- -dim editor -set editor = New CKEditor-
editor.basePath = "../../"-
editor.replaceInstance "editor1"-
editor.replaceAll empty-
editor.editor "editor1", initialValue-
Before step 3 you can use a number of methods and properties to adjust the behavior of this class and the CKEditor instances -that will be created:
-| Field Name | -Value | -
|---|---|
| <%=Server.HTMLEncode( sForm )%> | -<%=Server.HTMLEncode( Request.Form(sForm) )%> |
-
- Double-click on any of the following DIVs to transform them into editor instances.
-- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi - semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna - rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla - nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce - eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus. -
-- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi - semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna - rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla - nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce - eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus. -
-- Donec velit. Mauris massa. Vestibulum non nulla. Nam suscipit arcu nec elit. Phasellus - sollicitudin iaculis ante. Ut non mauris et sapien tincidunt adipiscing. Vestibulum - vitae leo. Suspendisse nec mi tristique nulla laoreet vulputate. -
-- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi - semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna - rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla - nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce - eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus. -
-Your browser is not compatible with CKEditor.'; - - var browsers = - { - gecko : 'Firefox 2.0', - ie : 'Internet Explorer 6.0', - opera : 'Opera 9.5', - webkit : 'Safari 3.0' - }; - - var alsoBrowsers = ''; - - for ( var key in env ) - { - if ( browsers[ key ] ) - { - if ( env[key] ) - html += ' CKEditor is compatible with ' + browsers[ key ] + ' or higher.'; - else - alsoBrowsers += browsers[ key ] + '+, '; - } - } - - alsoBrowsers = alsoBrowsers.replace( /\+,([^,]+), $/, '+ and $1' ); - - html += ' It is also compatible with ' + alsoBrowsers + '.'; - - html += '
With non compatible browsers, you should still be able to see and edit the contents (HTML) in a plain text field.
'; - - var alertsEl = document.getElementById( 'alerts' ); - alertsEl && ( alertsEl.innerHTML = html ); - }; - - var onload = function() - { - // Show a friendly compatibility message as soon as the page is loaded, - // for those browsers that are not compatible with CKEditor. - if ( !CKEDITOR.env.isCompatible ) - showCompatibilityMsg(); - }; - - // Register the onload listener. - if ( window.addEventListener ) - window.addEventListener( 'load', onload, false ); - else if ( window.attachEvent ) - window.attachEvent( 'onload', onload ); - })(); -} diff --git a/Public/Resources/Javascript/ckeditor/_samples/sample_posteddata.php b/Public/Resources/Javascript/ckeditor/_samples/sample_posteddata.php deleted file mode 100644 index af20e89..0000000 --- a/Public/Resources/Javascript/ckeditor/_samples/sample_posteddata.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - -| Field Name | -Value | -
|---|---|
| - | - |
- Click the UI Color Picker button to test your color preferences at runtime.
- - - - diff --git a/Public/Resources/Javascript/ckeditor/_samples/ui_languages.html b/Public/Resources/Javascript/ckeditor/_samples/ui_languages.html deleted file mode 100644 index e7c2e15..0000000 --- a/Public/Resources/Javascript/ckeditor/_samples/ui_languages.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -...
[text) - // or at the start of block ([text...), by comparing the document position - // with 'enlargeable' node. - this.setStartAt( - blockBoundary, - !blockBoundary.is( 'br' ) && - ( !enlargeable && this.checkStartOfBlock() - || enlargeable && blockBoundary.contains( enlargeable ) ) ? - CKEDITOR.POSITION_AFTER_START : - CKEDITOR.POSITION_AFTER_END ); - - // Enlarging the end boundary. - walkerRange = this.clone(); - walkerRange.collapse(); - walkerRange.setEndAt( body, CKEDITOR.POSITION_BEFORE_END ); - walker = new CKEDITOR.dom.walker( walkerRange ); - - // tailBrGuard only used for on range end. - walker.guard = ( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ) ? - tailBrGuard : boundaryGuard; - blockBoundary = null; - // End the range right before the block boundary node. - - enlargeable = walker.lastForward(); - - // It's the body which stop the enlarging if no block boundary found. - blockBoundary = blockBoundary || body; - - // Close the range either before the found block start (text]
...
) or at the block end (...text]) - // by comparing the document position with 'enlargeable' node. - this.setEndAt( - blockBoundary, - ( !enlargeable && this.checkEndOfBlock() - || enlargeable && blockBoundary.contains( enlargeable ) ) ? - CKEDITOR.POSITION_BEFORE_END : - CKEDITOR.POSITION_BEFORE_START ); - // We must include the element, spaces should be touched differently.
- inPre = false,
- returnPoint;
-
- function checkPending( newTagName )
- {
- var pendingBRsSent;
-
- if ( pendingInline.length > 0 )
- {
- for ( var i = 0 ; i < pendingInline.length ; i++ )
- {
- var pendingElement = pendingInline[ i ],
- pendingName = pendingElement.name,
- pendingDtd = CKEDITOR.dtd[ pendingName ],
- currentDtd = currentNode.name && CKEDITOR.dtd[ currentNode.name ];
-
- if ( ( !currentDtd || currentDtd[ pendingName ] ) && ( !newTagName || !pendingDtd || pendingDtd[ newTagName ] || !CKEDITOR.dtd[ newTagName ] ) )
- {
- if ( !pendingBRsSent )
- {
- sendPendingBRs();
- pendingBRsSent = 1;
- }
-
- // Get a clone for the pending element.
- pendingElement = pendingElement.clone();
-
- // Add it to the current node and make it the current,
- // so the new element will be added inside of it.
- pendingElement.parent = currentNode;
- currentNode = pendingElement;
-
- // Remove the pending element (back the index by one
- // to properly process the next entry).
- pendingInline.splice( i, 1 );
- i--;
- }
- }
- }
- }
-
- function sendPendingBRs( brsToIgnore )
- {
- while ( pendingBRs.length - ( brsToIgnore || 0 ) > 0 )
- currentNode.add( pendingBRs.shift() );
- }
-
- function addElement( element, target, enforceCurrent )
- {
- target = target || currentNode || fragment;
-
- // If the target is the fragment and this element can't go inside
- // body (if fixForBody).
- if ( fixForBody && !target.type )
- {
- var elementName, realElementName;
- if ( element.attributes
- && ( realElementName =
- element.attributes[ '_cke_real_element_type' ] ) )
- elementName = realElementName;
- else
- elementName = element.name;
- if ( elementName
- && !( elementName in CKEDITOR.dtd.$body )
- && !( elementName in CKEDITOR.dtd.$nonBodyContent ) )
- {
- var savedCurrent = currentNode;
-
- // Create a in the fragment.
- currentNode = target;
- parser.onTagOpen( fixForBody, {} );
-
- // The new target now is the
.
- target = currentNode;
-
- if ( enforceCurrent )
- currentNode = savedCurrent;
- }
- }
-
- // Rtrim empty spaces on block end boundary. (#3585)
- if ( element._.isBlockLike
- && element.name != 'pre' )
- {
-
- var length = element.children.length,
- lastChild = element.children[ length - 1 ],
- text;
- if ( lastChild && lastChild.type == CKEDITOR.NODE_TEXT )
- {
- if ( !( text = CKEDITOR.tools.rtrim( lastChild.value ) ) )
- element.children.length = length -1;
- else
- lastChild.value = text;
- }
- }
-
- target.add( element );
-
- if ( element.returnPoint )
- {
- currentNode = element.returnPoint;
- delete element.returnPoint;
- }
- }
-
- parser.onTagOpen = function( tagName, attributes, selfClosing )
- {
- var element = new CKEDITOR.htmlParser.element( tagName, attributes );
-
- // "isEmpty" will be always "false" for unknown elements, so we
- // must force it if the parser has identified it as a selfClosing tag.
- if ( element.isUnknown && selfClosing )
- element.isEmpty = true;
-
- // This is a tag to be removed if empty, so do not add it immediately.
- if ( CKEDITOR.dtd.$removeEmpty[ tagName ] )
- {
- pendingInline.push( element );
- return;
- }
- else if ( tagName == 'pre' )
- inPre = true;
- else if ( tagName == 'br' && inPre )
- {
- currentNode.add( new CKEDITOR.htmlParser.text( '\n' ) );
- return;
- }
-
- if ( tagName == 'br' )
- {
- pendingBRs.push( element );
- return;
- }
-
- var currentName = currentNode.name;
-
- var currentDtd = currentName
- && ( CKEDITOR.dtd[ currentName ]
- || ( currentNode._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span ) );
-
- // If the element cannot be child of the current element.
- if ( currentDtd // Fragment could receive any elements.
- && !element.isUnknown && !currentNode.isUnknown && !currentDtd[ tagName ] )
- {
-
- var reApply = false,
- addPoint; // New position to start adding nodes.
-
- // Fixing malformed nested lists by moving it into a previous list item. (#3828)
- if ( tagName in listBlocks
- && currentName in listBlocks )
- {
- var children = currentNode.children,
- lastChild = children[ children.length - 1 ];
-
- // Establish the list item if it's not existed.
- if ( !( lastChild && lastChild.name in listItems ) )
- addElement( ( lastChild = new CKEDITOR.htmlParser.element( 'li' ) ), currentNode );
-
- returnPoint = currentNode, addPoint = lastChild;
- }
- // If the element name is the same as the current element name,
- // then just close the current one and append the new one to the
- // parent. This situation usually happens with
,
.
- if ( !currentNode._.hasInlineStarted && !inPre )
- {
- text = CKEDITOR.tools.ltrim( text );
-
- if ( text.length === 0 )
- return;
- }
-
- sendPendingBRs();
- checkPending();
-
- if ( fixForBody
- && ( !currentNode.type || currentNode.name == 'body' )
- && CKEDITOR.tools.trim( text ) )
- {
- this.onTagOpen( fixForBody, {} );
- }
-
- // Shrinking consequential spaces into one single for all elements
- // text contents.
- if ( !inPre )
- text = text.replace( /[\t\r\n ]{2,}|[\t\r\n]/g, ' ' );
-
- currentNode.add( new CKEDITOR.htmlParser.text( text ) );
- };
-
- parser.onCDATA = function( cdata )
- {
- currentNode.add( new CKEDITOR.htmlParser.cdata( cdata ) );
- };
-
- parser.onComment = function( comment )
- {
- currentNode.add( new CKEDITOR.htmlParser.comment( comment ) );
- };
-
- // Parse it.
- parser.parse( fragmentHtml );
-
- // Send all pending BRs except one, which we consider a unwanted bogus. (#5293)
- sendPendingBRs( !CKEDITOR.env.ie && 1 );
-
- // Close all pending nodes.
- while ( currentNode.type )
- {
- var parent = currentNode.parent,
- node = currentNode;
-
- if ( fixForBody
- && ( !parent.type || parent.name == 'body' )
- && !CKEDITOR.dtd.$body[ node.name ] )
- {
- currentNode = parent;
- parser.onTagOpen( fixForBody, {} );
- parent = currentNode;
- }
-
- parent.add( node );
- currentNode = parent;
- }
-
- return fragment;
- };
-
- CKEDITOR.htmlParser.fragment.prototype =
- {
- /**
- * Adds a node to this fragment.
- * @param {Object} node The node to be added. It can be any of of the
- * following types: {@link CKEDITOR.htmlParser.element},
- * {@link CKEDITOR.htmlParser.text} and
- * {@link CKEDITOR.htmlParser.comment}.
- * @example
- */
- add : function( node )
- {
- var len = this.children.length,
- previous = len > 0 && this.children[ len - 1 ] || null;
-
- if ( previous )
- {
- // If the block to be appended is following text, trim spaces at
- // the right of it.
- if ( node._.isBlockLike && previous.type == CKEDITOR.NODE_TEXT )
- {
- previous.value = CKEDITOR.tools.rtrim( previous.value );
-
- // If we have completely cleared the previous node.
- if ( previous.value.length === 0 )
- {
- // Remove it from the list and add the node again.
- this.children.pop();
- this.add( node );
- return;
- }
- }
-
- previous.next = node;
- }
-
- node.previous = previous;
- node.parent = this;
-
- this.children.push( node );
-
- this._.hasInlineStarted = node.type == CKEDITOR.NODE_TEXT || ( node.type == CKEDITOR.NODE_ELEMENT && !node._.isBlockLike );
- },
-
- /**
- * Writes the fragment HTML to a CKEDITOR.htmlWriter.
- * @param {CKEDITOR.htmlWriter} writer The writer to which write the HTML.
- * @example
- * var writer = new CKEDITOR.htmlWriter();
- * var fragment = CKEDITOR.htmlParser.fragment.fromHtml( '<P><B>Example' );
- * fragment.writeHtml( writer )
- * alert( writer.getHtml() ); "<p><b>Example</b></p>"
- */
- writeHtml : function( writer, filter )
- {
- var isChildrenFiltered;
- this.filterChildren = function()
- {
- var writer = new CKEDITOR.htmlParser.basicWriter();
- this.writeChildrenHtml.call( this, writer, filter, true );
- var html = writer.getHtml();
- this.children = new CKEDITOR.htmlParser.fragment.fromHtml( html ).children;
- isChildrenFiltered = 1;
- };
-
- // Filtering the root fragment before anything else.
- !this.name && filter && filter.onFragment( this );
-
- this.writeChildrenHtml( writer, isChildrenFiltered ? null : filter );
- },
-
- writeChildrenHtml : function( writer, filter )
- {
- for ( var i = 0 ; i < this.children.length ; i++ )
- this.children[i].writeHtml( writer, filter );
- }
- };
-})();
diff --git a/Public/Resources/Javascript/ckeditor/_source/core/htmlparser/text.js b/Public/Resources/Javascript/ckeditor/_source/core/htmlparser/text.js
deleted file mode 100644
index 0d63ac9..0000000
--- a/Public/Resources/Javascript/ckeditor/_source/core/htmlparser/text.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-
-(function()
-{
- var spacesRegex = /[\t\r\n ]{2,}|[\t\r\n]/g;
-
- /**
- * A lightweight representation of HTML text.
- * @constructor
- * @example
- */
- CKEDITOR.htmlParser.text = function( value )
- {
- /**
- * The text value.
- * @type String
- * @example
- */
- this.value = value;
-
- /** @private */
- this._ =
- {
- isBlockLike : false
- };
- };
-
- CKEDITOR.htmlParser.text.prototype =
- {
- /**
- * The node type. This is a constant value set to {@link CKEDITOR.NODE_TEXT}.
- * @type Number
- * @example
- */
- type : CKEDITOR.NODE_TEXT,
-
- /**
- * Writes the HTML representation of this text to a CKEDITOR.htmlWriter.
- * @param {CKEDITOR.htmlWriter} writer The writer to which write the HTML.
- * @example
- */
- writeHtml : function( writer, filter )
- {
- var text = this.value;
-
- if ( filter && !( text = filter.onText( text, this ) ) )
- return;
-
- writer.text( text );
- }
- };
-})();
diff --git a/Public/Resources/Javascript/ckeditor/_source/core/imagecacher.js b/Public/Resources/Javascript/ckeditor/_source/core/imagecacher.js
deleted file mode 100644
index 0704556..0000000
--- a/Public/Resources/Javascript/ckeditor/_source/core/imagecacher.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-
-(function()
-{
- var loaded = {};
-
- var loadImage = function( image, callback )
- {
- var doCallback = function()
- {
- img.removeAllListeners();
- loaded[ image ] = 1;
- callback();
- };
-
- var img = new CKEDITOR.dom.element( 'img' );
- img.on( 'load', doCallback );
- img.on( 'error', doCallback );
- img.setAttribute( 'src', image );
- };
-
- /**
- * Load images into the browser cache.
- * @namespace
- * @example
- */
- CKEDITOR.imageCacher =
- {
- /**
- * Loads one or more images.
- * @param {Array} images The URLs for the images to be loaded.
- * @param {Function} callback The function to be called once all images
- * are loaded.
- */
- load : function( images, callback )
- {
- var pendingCount = images.length;
-
- var checkPending = function()
- {
- if ( --pendingCount === 0 )
- callback();
- };
-
- for ( var i = 0 ; i < images.length ; i++ )
- {
- var image = images[ i ];
-
- if ( loaded[ image ] )
- checkPending();
- else
- loadImage( image, checkPending );
- }
- }
- };
-})();
diff --git a/Public/Resources/Javascript/ckeditor/_source/core/lang.js b/Public/Resources/Javascript/ckeditor/_source/core/lang.js
deleted file mode 100644
index add9982..0000000
--- a/Public/Resources/Javascript/ckeditor/_source/core/lang.js
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-
-(function()
-{
- var loadedLangs = {};
-
- CKEDITOR.lang =
- {
- /**
- * The list of languages available in the editor core.
- * @type Object
- * @example
- * alert( CKEDITOR.lang.en ); // "true"
- */
- languages :
- {
- 'af' : 1,
- 'ar' : 1,
- 'bg' : 1,
- 'bn' : 1,
- 'bs' : 1,
- 'ca' : 1,
- 'cs' : 1,
- 'cy' : 1,
- 'da' : 1,
- 'de' : 1,
- 'el' : 1,
- 'en-au' : 1,
- 'en-ca' : 1,
- 'en-gb' : 1,
- 'en' : 1,
- 'eo' : 1,
- 'es' : 1,
- 'et' : 1,
- 'eu' : 1,
- 'fa' : 1,
- 'fi' : 1,
- 'fo' : 1,
- 'fr-ca' : 1,
- 'fr' : 1,
- 'gl' : 1,
- 'gu' : 1,
- 'he' : 1,
- 'hi' : 1,
- 'hr' : 1,
- 'hu' : 1,
- 'is' : 1,
- 'it' : 1,
- 'ja' : 1,
- 'km' : 1,
- 'ko' : 1,
- 'lt' : 1,
- 'lv' : 1,
- 'mn' : 1,
- 'ms' : 1,
- 'nb' : 1,
- 'nl' : 1,
- 'no' : 1,
- 'pl' : 1,
- 'pt-br' : 1,
- 'pt' : 1,
- 'ro' : 1,
- 'ru' : 1,
- 'sk' : 1,
- 'sl' : 1,
- 'sr-latn' : 1,
- 'sr' : 1,
- 'sv' : 1,
- 'th' : 1,
- 'tr' : 1,
- 'uk' : 1,
- 'vi' : 1,
- 'zh-cn' : 1,
- 'zh' : 1
- },
-
- /**
- * Loads a specific language file, or auto detect it. A callback is
- * then called when the file gets loaded.
- * @param {String} languageCode The code of the language file to be
- * loaded. If "autoDetect" is set to true, this language will be
- * used as the default one, if the detect language is not
- * available in the core.
- * @param {Boolean} autoDetect Indicates that the function must try to
- * detect the user language and load it instead.
- * @param {Function} callback The function to be called once the
- * language file is loaded. Two parameters are passed to this
- * function: the language code and the loaded language entries.
- * @example
- */
- load : function( languageCode, defaultLanguage, callback )
- {
- // If no languageCode - fallback to browser or default.
- // If languageCode - fallback to no-localized version or default.
- if ( !languageCode || !CKEDITOR.lang.languages[ languageCode ] )
- languageCode = this.detect( defaultLanguage, languageCode );
-
- if ( !this[ languageCode ] )
- {
- CKEDITOR.scriptLoader.load( CKEDITOR.getUrl(
- '_source/' + // @Packager.RemoveLine
- 'lang/' + languageCode + '.js' ),
- function()
- {
- callback( languageCode, this[ languageCode ] );
- }
- , this );
- }
- else
- callback( languageCode, this[ languageCode ] );
- },
-
- /**
- * Returns the language that best fit the user language. For example,
- * suppose that the user language is "pt-br". If this language is
- * supported by the editor, it is returned. Otherwise, if only "pt" is
- * supported, it is returned instead. If none of the previous are
- * supported, a default language is then returned.
- * @param {String} defaultLanguage The default language to be returned
- * if the user language is not supported.
- * @returns {String} The detected language code.
- * @example
- * alert( CKEDITOR.lang.detect( 'en' ) ); // e.g., in a German browser: "de"
- */
- detect : function( defaultLanguage, probeLanguage )
- {
- var languages = this.languages;
- probeLanguage = probeLanguage || navigator.userLanguage || navigator.language;
-
- var parts = probeLanguage
- .toLowerCase()
- .match( /([a-z]+)(?:-([a-z]+))?/ ),
- lang = parts[1],
- locale = parts[2];
-
- if ( languages[ lang + '-' + locale ] )
- lang = lang + '-' + locale;
- else if ( !languages[ lang ] )
- lang = null;
-
- CKEDITOR.lang.detect = lang ?
- function() { return lang; } :
- function( defaultLanguage ) { return defaultLanguage; };
-
- return lang || defaultLanguage;
- }
- };
-
-})();
diff --git a/Public/Resources/Javascript/ckeditor/_source/core/loader.js b/Public/Resources/Javascript/ckeditor/_source/core/loader.js
deleted file mode 100644
index 2e23d7e..0000000
--- a/Public/Resources/Javascript/ckeditor/_source/core/loader.js
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-
-/**
- * @fileOverview Defines the {@link CKEDITOR.loader} objects, which is used to
- * load core scripts and their dependencies from _source.
- */
-
-if ( typeof CKEDITOR == 'undefined' )
- CKEDITOR = {};
-
-if ( !CKEDITOR.loader )
-{
- /**
- * Load core scripts and their dependencies from _source.
- * @namespace
- * @example
- */
- CKEDITOR.loader = (function()
- {
- // Table of script names and their dependencies.
- var scripts =
- {
- 'core/_bootstrap' : [ 'core/config', 'core/ckeditor', 'core/plugins', 'core/scriptloader', 'core/tools', /* The following are entries that we want to force loading at the end to avoid dependence recursion */ 'core/dom/comment', 'core/dom/elementpath', 'core/dom/text', 'core/dom/rangelist' ],
- 'core/ajax' : [ 'core/xml' ],
- 'core/ckeditor' : [ 'core/ckeditor_basic', 'core/dom', 'core/dtd', 'core/dom/document', 'core/dom/element', 'core/editor', 'core/event', 'core/htmlparser', 'core/htmlparser/element', 'core/htmlparser/fragment', 'core/htmlparser/filter', 'core/htmlparser/basicwriter', 'core/tools' ],
- 'core/ckeditor_base' : [],
- 'core/ckeditor_basic' : [ 'core/editor_basic', 'core/env', 'core/event' ],
- 'core/command' : [],
- 'core/config' : [ 'core/ckeditor_base' ],
- 'core/dom' : [],
- 'core/dom/comment' : [ 'core/dom/node' ],
- 'core/dom/document' : [ 'core/dom', 'core/dom/domobject', 'core/dom/window' ],
- 'core/dom/documentfragment' : [ 'core/dom/element' ],
- 'core/dom/element' : [ 'core/dom', 'core/dom/document', 'core/dom/domobject', 'core/dom/node', 'core/dom/nodelist', 'core/tools' ],
- 'core/dom/elementpath' : [ 'core/dom/element' ],
- 'core/dom/event' : [],
- 'core/dom/node' : [ 'core/dom/domobject', 'core/tools' ],
- 'core/dom/nodelist' : [ 'core/dom/node' ],
- 'core/dom/domobject' : [ 'core/dom/event' ],
- 'core/dom/range' : [ 'core/dom/document', 'core/dom/documentfragment', 'core/dom/element', 'core/dom/walker' ],
- 'core/dom/rangelist' : [ 'core/dom/range' ],
- 'core/dom/text' : [ 'core/dom/node', 'core/dom/domobject' ],
- 'core/dom/walker' : [ 'core/dom/node' ],
- 'core/dom/window' : [ 'core/dom/domobject' ],
- 'core/dtd' : [ 'core/tools' ],
- 'core/editor' : [ 'core/command', 'core/config', 'core/editor_basic', 'core/focusmanager', 'core/lang', 'core/plugins', 'core/skins', 'core/themes', 'core/tools', 'core/ui' ],
- 'core/editor_basic' : [ 'core/event' ],
- 'core/env' : [],
- 'core/event' : [],
- 'core/focusmanager' : [],
- 'core/htmlparser' : [],
- 'core/htmlparser/comment' : [ 'core/htmlparser' ],
- 'core/htmlparser/element' : [ 'core/htmlparser', 'core/htmlparser/fragment' ],
- 'core/htmlparser/fragment' : [ 'core/htmlparser', 'core/htmlparser/comment', 'core/htmlparser/text', 'core/htmlparser/cdata' ],
- 'core/htmlparser/text' : [ 'core/htmlparser' ],
- 'core/htmlparser/cdata' : [ 'core/htmlparser' ],
- 'core/htmlparser/filter' : [ 'core/htmlparser' ],
- 'core/htmlparser/basicwriter': [ 'core/htmlparser' ],
- 'core/imagecacher' : [ 'core/dom/element' ],
- 'core/lang' : [],
- 'core/plugins' : [ 'core/resourcemanager' ],
- 'core/resourcemanager' : [ 'core/scriptloader', 'core/tools' ],
- 'core/scriptloader' : [ 'core/dom/element', 'core/env' ],
- 'core/skins' : [ 'core/imagecacher', 'core/scriptloader' ],
- 'core/themes' : [ 'core/resourcemanager' ],
- 'core/tools' : [ 'core/env' ],
- 'core/ui' : [],
- 'core/xml' : [ 'core/env' ]
- };
-
- var basePath = (function()
- {
- // This is a copy of CKEDITOR.basePath, but requires the script having
- // "_source/core/loader.js".
- if ( CKEDITOR && CKEDITOR.basePath )
- return CKEDITOR.basePath;
-
- // Find out the editor directory path, based on its ' +
- '';
-
- var iframe = CKEDITOR.dom.element.createFromHtml(
- '' );
-
- iframe.on( 'load', function( e )
- {
- e.removeListener();
- var doc = iframe.getFrameDocument().$;
- // Custom domain handling is needed after each document.open().
- doc.open();
- if ( isCustomDomain )
- doc.domain = document.domain;
- doc.write( htmlToLoad );
- doc.close();
- }, this );
-
- iframe.setCustomData( 'dialog', this );
-
- var field = this.getContentElement( 'general', 'editing_area' ),
- container = field.getElement();
- container.setHtml( '' );
- container.append( iframe );
-
- // IE need a redirect on focus to make
- // the cursor blinking inside iframe. (#5461)
- if ( CKEDITOR.env.ie )
- {
- var focusGrabber = CKEDITOR.dom.element.createFromHtml( '' );
- focusGrabber.on( 'focus', function()
- {
- iframe.$.contentWindow.focus();
- });
- container.append( focusGrabber );
-
- // Override focus handler on field.
- field.focus = function()
- {
- focusGrabber.focus();
- this.fire( 'focus' );
- };
- }
-
- field.getInputElement = function(){ return iframe; };
-
- // Force container to scale in IE.
- if ( CKEDITOR.env.ie )
- {
- container.setStyle( 'display', 'block' );
- container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' );
- }
- },
-
- onHide : function()
- {
- if ( CKEDITOR.env.ie )
- this.getParentEditor().document.getBody().$.contentEditable = 'true';
- },
-
- onLoad : function()
- {
- if ( ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) && editor.lang.dir == 'rtl' )
- this.parts.contents.setStyle( 'overflow', 'hidden' );
- },
-
- onOk : function()
- {
- var container = this.getContentElement( 'general', 'editing_area' ).getElement(),
- iframe = container.getElementsByTag( 'iframe' ).getItem( 0 ),
- editor = this.getParentEditor(),
- html = iframe.$.contentWindow.document.body.innerHTML;
-
- setTimeout( function(){
- editor.fire( 'paste', { 'html' : html } );
- }, 0 );
-
- },
-
- contents : [
- {
- id : 'general',
- label : editor.lang.common.generalTab,
- elements : [
- {
- type : 'html',
- id : 'securityMsg',
- html : '' + lang.securityMsg + ''
- },
- {
- type : 'html',
- id : 'pasteMsg',
- html : ''+lang.pasteMsg +''
- },
- {
- type : 'html',
- id : 'editing_area',
- style : 'width: 100%; height: 100%;',
- html : '',
- focus : function()
- {
- var win = this.getInputElement().$.contentWindow;
-
- // #3291 : JAWS needs the 500ms delay to detect that the editor iframe
- // iframe is no longer editable. So that it will put the focus into the
- // Paste from Word dialog's editable area instead.
- setTimeout( function()
- {
- win.focus();
- }, 500 );
- }
- }
- ]
- }
- ]
- };
-});
diff --git a/Public/Resources/Javascript/ckeditor/_source/plugins/clipboard/plugin.js b/Public/Resources/Javascript/ckeditor/_source/plugins/clipboard/plugin.js
deleted file mode 100644
index 9dc230e..0000000
--- a/Public/Resources/Javascript/ckeditor/_source/plugins/clipboard/plugin.js
+++ /dev/null
@@ -1,412 +0,0 @@
-/*
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-
-/**
- * @file Clipboard support
- */
-
-(function()
-{
- // Tries to execute any of the paste, cut or copy commands in IE. Returns a
- // boolean indicating that the operation succeeded.
- var execIECommand = function( editor, command )
- {
- var doc = editor.document,
- body = doc.getBody();
-
- var enabled = false;
- var onExec = function()
- {
- enabled = true;
- };
-
- // The following seems to be the only reliable way to detect that
- // clipboard commands are enabled in IE. It will fire the
- // onpaste/oncut/oncopy events only if the security settings allowed
- // the command to execute.
- body.on( command, onExec );
-
- // IE6/7: document.execCommand has problem to paste into positioned element.
- ( CKEDITOR.env.version > 7 ? doc.$ : doc.$.selection.createRange() ) [ 'execCommand' ]( command );
-
- body.removeListener( command, onExec );
-
- return enabled;
- };
-
- // Attempts to execute the Cut and Copy operations.
- var tryToCutCopy =
- CKEDITOR.env.ie ?
- function( editor, type )
- {
- return execIECommand( editor, type );
- }
- : // !IE.
- function( editor, type )
- {
- try
- {
- // Other browsers throw an error if the command is disabled.
- return editor.document.$.execCommand( type );
- }
- catch( e )
- {
- return false;
- }
- };
-
- // A class that represents one of the cut or copy commands.
- var cutCopyCmd = function( type )
- {
- this.type = type;
- this.canUndo = ( this.type == 'cut' ); // We can't undo copy to clipboard.
- };
-
- cutCopyCmd.prototype =
- {
- exec : function( editor, data )
- {
- this.type == 'cut' && fixCut( editor );
-
- var success = tryToCutCopy( editor, this.type );
-
- if ( !success )
- alert( editor.lang.clipboard[ this.type + 'Error' ] ); // Show cutError or copyError.
-
- return success;
- }
- };
-
- // Paste command.
- var pasteCmd =
- {
- canUndo : false,
-
- exec :
- CKEDITOR.env.ie ?
- function( editor )
- {
- // Prevent IE from pasting at the begining of the document.
- editor.focus();
-
- if ( !editor.document.getBody().fire( 'beforepaste' )
- && !execIECommand( editor, 'paste' ) )
- {
- editor.fire( 'pasteDialog' );
- return false;
- }
- }
- :
- function( editor )
- {
- try
- {
- if ( !editor.document.getBody().fire( 'beforepaste' )
- && !editor.document.$.execCommand( 'Paste', false, null ) )
- {
- throw 0;
- }
- }
- catch ( e )
- {
- setTimeout( function()
- {
- editor.fire( 'pasteDialog' );
- }, 0 );
- return false;
- }
- }
- };
-
- // Listens for some clipboard related keystrokes, so they get customized.
- var onKey = function( event )
- {
- if ( this.mode != 'wysiwyg' )
- return;
-
- switch ( event.data.keyCode )
- {
- // Paste
- case CKEDITOR.CTRL + 86 : // CTRL+V
- case CKEDITOR.SHIFT + 45 : // SHIFT+INS
-
- var body = this.document.getBody();
-
- // Simulate 'beforepaste' event for all none-IEs.
- if ( !CKEDITOR.env.ie && body.fire( 'beforepaste' ) )
- event.cancel();
- // Simulate 'paste' event for Opera/Firefox2.
- else if ( CKEDITOR.env.opera
- || CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 )
- body.fire( 'paste' );
- return;
-
- // Cut
- case CKEDITOR.CTRL + 88 : // CTRL+X
- case CKEDITOR.SHIFT + 46 : // SHIFT+DEL
-
- // Save Undo snapshot.
- var editor = this;
- this.fire( 'saveSnapshot' ); // Save before paste
- setTimeout( function()
- {
- editor.fire( 'saveSnapshot' ); // Save after paste
- }, 0 );
- }
- };
-
- // Allow to peek clipboard content by redirecting the
- // pasting content into a temporary bin and grab the content of it.
- function getClipboardData( evt, mode, callback )
- {
- var doc = this.document;
-
- // Avoid recursions on 'paste' event for IE.
- if ( CKEDITOR.env.ie && doc.getById( 'cke_pastebin' ) )
- return;
-
- // If the browser supports it, get the data directly
- if (mode == 'text' && evt.data && evt.data.$.clipboardData)
- {
- // evt.data.$.clipboardData.types contains all the flavours in Mac's Safari, but not on windows.
- var plain = evt.data.$.clipboardData.getData( 'text/plain' );
- if (plain)
- {
- evt.data.preventDefault();
- callback( plain );
- return;
- }
- }
-
- var sel = this.getSelection(),
- range = new CKEDITOR.dom.range( doc );
-
- // Create container to paste into
- var pastebin = new CKEDITOR.dom.element( mode == 'text' ? 'textarea' : CKEDITOR.env.webkit ? 'body' : 'div', doc );
- pastebin.setAttribute( 'id', 'cke_pastebin' );
- // Safari requires a filler node inside the div to have the content pasted into it. (#4882)
- CKEDITOR.env.webkit && pastebin.append( doc.createText( '\xa0' ) );
- doc.getBody().append( pastebin );
-
- pastebin.setStyles(
- {
- position : 'absolute',
- // Position the bin exactly at the position of the selected element
- // to avoid any subsequent document scroll.
- top : sel.getStartElement().getDocumentPosition().y + 'px',
- width : '1px',
- height : '1px',
- overflow : 'hidden'
- });
-
- // It's definitely a better user experience if we make the paste-bin pretty unnoticed
- // by pulling it off the screen.
- pastebin.setStyle( this.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-1000px' );
-
- var bms = sel.createBookmarks();
-
- // Turn off design mode temporarily before give focus to the paste bin.
- if ( mode == 'text' )
- {
- if ( CKEDITOR.env.ie )
- {
- var ieRange = doc.getBody().$.createTextRange();
- ieRange.moveToElementText( pastebin.$ );
- ieRange.execCommand( 'Paste' );
- evt.data.preventDefault();
- }
- else
- {
- doc.$.designMode = 'off';
- pastebin.$.focus();
- }
- }
- else
- {
- range.setStartAt( pastebin, CKEDITOR.POSITION_AFTER_START );
- range.setEndAt( pastebin, CKEDITOR.POSITION_BEFORE_END );
- range.select( true );
- }
-
- // Wait a while and grab the pasted contents
- window.setTimeout( function()
- {
- mode == 'text' && !CKEDITOR.env.ie && ( doc.$.designMode = 'on' );
- pastebin.remove();
-
- // Grab the HTML contents.
- // We need to look for a apple style wrapper on webkit it also adds
- // a div wrapper if you copy/paste the body of the editor.
- // Remove hidden div and restore selection.
- var bogusSpan;
- pastebin = ( CKEDITOR.env.webkit
- && ( bogusSpan = pastebin.getFirst() )
- && ( bogusSpan.is && bogusSpan.hasClass( 'Apple-style-span' ) ) ?
- bogusSpan : pastebin );
-
- sel.selectBookmarks( bms );
- callback( pastebin[ 'get' + ( mode == 'text' ? 'Value' : 'Html' ) ]() );
- }, 0 );
- }
-
- // Cutting off control type element in IE standards breaks the selection entirely. (#4881)
- function fixCut( editor )
- {
- if ( !CKEDITOR.env.ie || editor.document.$.compatMode == 'BackCompat' )
- return;
-
- var sel = editor.getSelection();
- var control;
- if( ( sel.getType() == CKEDITOR.SELECTION_ELEMENT ) && ( control = sel.getSelectedElement() ) )
- {
- var range = sel.getRanges()[ 0 ];
- var dummy = editor.document.createText( '' );
- dummy.insertBefore( control );
- range.setStartBefore( dummy );
- range.setEndAfter( control );
- sel.selectRanges( [ range ] );
-
- // Clear up the fix if the paste wasn't succeeded.
- setTimeout( function()
- {
- // Element still online?
- if ( control.getParent() )
- {
- dummy.remove();
- sel.selectElement( control );
- }
- }, 0 );
- }
- }
-
- // Register the plugin.
- CKEDITOR.plugins.add( 'clipboard',
- {
- requires : [ 'dialog', 'htmldataprocessor' ],
- init : function( editor )
- {
- // Inserts processed data into the editor at the end of the
- // events chain.
- editor.on( 'paste', function( evt )
- {
- var data = evt.data;
- if ( data[ 'html' ] )
- editor.insertHtml( data[ 'html' ] );
- else if ( data[ 'text' ] )
- editor.insertText( data[ 'text' ] );
-
- }, null, null, 1000 );
-
- editor.on( 'pasteDialog', function( evt )
- {
- setTimeout( function()
- {
- // Open default paste dialog.
- editor.openDialog( 'paste' );
- }, 0 );
- });
-
- function addButtonCommand( buttonName, commandName, command, ctxMenuOrder )
- {
- var lang = editor.lang[ commandName ];
-
- editor.addCommand( commandName, command );
- editor.ui.addButton( buttonName,
- {
- label : lang,
- command : commandName
- });
-
- // If the "menu" plugin is loaded, register the menu item.
- if ( editor.addMenuItems )
- {
- editor.addMenuItem( commandName,
- {
- label : lang,
- command : commandName,
- group : 'clipboard',
- order : ctxMenuOrder
- });
- }
- }
-
- addButtonCommand( 'Cut', 'cut', new cutCopyCmd( 'cut' ), 1 );
- addButtonCommand( 'Copy', 'copy', new cutCopyCmd( 'copy' ), 4 );
- addButtonCommand( 'Paste', 'paste', pasteCmd, 8 );
-
- CKEDITOR.dialog.add( 'paste', CKEDITOR.getUrl( this.path + 'dialogs/paste.js' ) );
-
- editor.on( 'key', onKey, editor );
-
- var mode = editor.config.forcePasteAsPlainText ? 'text' : 'html';
-
- // We'll be catching all pasted content in one line, regardless of whether the
- // it's introduced by a document command execution (e.g. toolbar buttons) or
- // user paste behaviors. (e.g. Ctrl-V)
- editor.on( 'contentDom', function()
- {
- var body = editor.document.getBody();
- body.on( ( (mode == 'text' && CKEDITOR.env.ie) || CKEDITOR.env.webkit ) ? 'paste' : 'beforepaste',
- function( evt )
- {
- if ( depressBeforeEvent )
- return;
-
- getClipboardData.call( editor, evt, mode, function ( data )
- {
- // The very last guard to make sure the
- // paste has successfully happened.
- if ( !data )
- return;
-
- var dataTransfer = {};
- dataTransfer[ mode ] = data;
- editor.fire( 'paste', dataTransfer );
- } );
- });
-
- body.on( 'beforecut', function() { !depressBeforeEvent && fixCut( editor ); } );
- });
-
- // If the "contextmenu" plugin is loaded, register the listeners.
- if ( editor.contextMenu )
- {
- var depressBeforeEvent;
- function stateFromNamedCommand( command )
- {
- // IE Bug: queryCommandEnabled('paste') fires also 'beforepaste(copy/cut)',
- // guard to distinguish from the ordinary sources( either
- // keyboard paste or execCommand ) (#4874).
- CKEDITOR.env.ie && ( depressBeforeEvent = 1 );
-
- var retval = editor.document.$.queryCommandEnabled( command ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;
- depressBeforeEvent = 0;
- return retval;
- }
-
- editor.contextMenu.addListener( function( element, selection )
- {
- var readOnly = selection.getCommonAncestor().isReadOnly();
- return {
- cut : !readOnly && stateFromNamedCommand( 'Cut' ),
- copy : stateFromNamedCommand( 'Copy' ),
- paste : !readOnly && ( CKEDITOR.env.webkit ? CKEDITOR.TRISTATE_OFF : stateFromNamedCommand( 'Paste' ) )
- };
- });
- }
- }
- });
-})();
-
-/**
- * Fired when a clipboard operation is about to be taken into the editor.
- * Listeners can manipulate the data to be pasted before having it effectively
- * inserted into the document.
- * @name CKEDITOR.editor#paste
- * @since 3.1
- * @event
- * @param {String} [data.html] The HTML data to be pasted. If not available, e.data.text will be defined.
- * @param {String} [data.text] The plain text data to be pasted, available when plain text operations are to used. If not available, e.data.html will be defined.
- */
diff --git a/Public/Resources/Javascript/ckeditor/_source/plugins/colorbutton/plugin.js b/Public/Resources/Javascript/ckeditor/_source/plugins/colorbutton/plugin.js
deleted file mode 100644
index 305c44d..0000000
--- a/Public/Resources/Javascript/ckeditor/_source/plugins/colorbutton/plugin.js
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-
-CKEDITOR.plugins.add( 'colorbutton',
-{
- requires : [ 'panelbutton', 'floatpanel', 'styles' ],
-
- init : function( editor )
- {
- var config = editor.config,
- lang = editor.lang.colorButton;
-
- var clickFn;
-
- if ( !CKEDITOR.env.hc )
- {
- addButton( 'TextColor', 'fore', lang.textColorTitle );
- addButton( 'BGColor', 'back', lang.bgColorTitle );
- }
-
- function addButton( name, type, title )
- {
- editor.ui.add( name, CKEDITOR.UI_PANELBUTTON,
- {
- label : title,
- title : title,
- className : 'cke_button_' + name.toLowerCase(),
- modes : { wysiwyg : 1 },
-
- panel :
- {
- css : editor.skin.editor.css,
- attributes : { role : 'listbox', 'aria-label' : lang.panelTitle }
- },
-
- onBlock : function( panel, block )
- {
- block.autoSize = true;
- block.element.addClass( 'cke_colorblock' );
- block.element.setHtml( renderColors( panel, type ) );
- // The block should not have scrollbars (#5933, #6056)
- block.element.getDocument().getBody().setStyle( 'overflow', 'hidden' );
-
- var keys = block.keys;
- var rtl = editor.lang.dir == 'rtl';
- keys[ rtl ? 37 : 39 ] = 'next'; // ARROW-RIGHT
- keys[ 40 ] = 'next'; // ARROW-DOWN
- keys[ 9 ] = 'next'; // TAB
- keys[ rtl ? 39 : 37 ] = 'prev'; // ARROW-LEFT
- keys[ 38 ] = 'prev'; // ARROW-UP
- keys[ CKEDITOR.SHIFT + 9 ] = 'prev'; // SHIFT + TAB
- keys[ 32 ] = 'click'; // SPACE
- }
- });
- }
-
-
- function renderColors( panel, type )
- {
- var output = [],
- colors = config.colorButton_colors.split( ',' ),
- total = colors.length + ( config.colorButton_enableMore ? 2 : 1 );
-
- var clickFn = CKEDITOR.tools.addFunction( function( color, type )
- {
- if ( color == '?' )
- {
- var applyColorStyle = arguments.callee;
- function onColorDialogClose( evt )
- {
- this.removeListener( 'ok', onColorDialogClose );
- this.removeListener( 'cancel', onColorDialogClose );
-
- evt.name == 'ok' && applyColorStyle( this.getContentElement( 'picker', 'selectedColor' ).getValue(), type );
- }
-
- editor.openDialog( 'colordialog', function()
- {
- this.on( 'ok', onColorDialogClose );
- this.on( 'cancel', onColorDialogClose );
- } );
-
- return;
- }
-
- editor.focus();
-
- panel.hide();
-
-
- editor.fire( 'saveSnapshot' );
-
- // Clean up any conflicting style within the range.
- new CKEDITOR.style( config['colorButton_' + type + 'Style'], { color : 'inherit' } ).remove( editor.document );
-
- if ( color )
- {
- var colorStyle = config['colorButton_' + type + 'Style'];
-
- colorStyle.childRule = type == 'back' ?
- // It's better to apply background color as the innermost style. (#3599)
- function(){ return false; } :
- // Fore color style must be applied inside links instead of around it.
- function( element ){ return element.getName() != 'a'; };
-
- new CKEDITOR.style( colorStyle, { color : color } ).apply( editor.document );
- }
-
- editor.fire( 'saveSnapshot' );
- });
-
- // Render the "Automatic" button.
- output.push(
- '' +
- '| ' + - '' + - ' | ' + - '', - lang.auto, - ' | ' + - '||||||
| ' + - '' + - '' + - '' + - ' | ' ); - } - - // Render the "More Colors" button. - if ( config.colorButton_enableMore ) - { - output.push( - '|||||||
| ' + - '', - lang.more, - '' + - ' | ' ); // It is later in the code. - } - - output.push( '|||||||
| 0 ) - html.push( 'style="', styles.join( '; ' ), '" ' ); - html.push( ' class="cke_dialog_ui_vbox_child">', childHtmlList[i], ' |
Note that this event is called only the first time a specific dialog is - * opened. Successive openings will use the cached dialog, and this event will - * not get fired.
- * @name CKEDITOR#dialogDefinition - * @event - * @param {CKEDITOR.dialog.dialogDefinition} data The dialog defination that - * is being loaded. - * @param {CKEDITOR.editor} editor The editor instance that will use the - * dialog. - */ - -/** - * Fired when a tab is going to be selected in a dialog - * @name dialog#selectPage - * @event - * @param String page The id of the page that it's gonna be selected. - * @param String currentPage The id of the current page. - */ diff --git a/Public/Resources/Javascript/ckeditor/_source/plugins/dialogadvtab/plugin.js b/Public/Resources/Javascript/ckeditor/_source/plugins/dialogadvtab/plugin.js deleted file mode 100644 index deed8fc..0000000 --- a/Public/Resources/Javascript/ckeditor/_source/plugins/dialogadvtab/plugin.js +++ /dev/null @@ -1,207 +0,0 @@ -/* -Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ - -(function() -{ - -function setupAdvParams( element ) -{ - var attrName = this.att; - - var value = element && element.hasAttribute( attrName ) && element.getAttribute( attrName ) || ''; - - if ( value !== undefined ) - this.setValue( value ); -} - -function commitAdvParams() -{ - // Dialogs may use different parameters in the commit list, so, by - // definition, we take the first CKEDITOR.dom.element available. - var element; - - for ( var i = 0 ; i < arguments.length ; i++ ) - { - if ( arguments[ i ] instanceof CKEDITOR.dom.element ) - { - element = arguments[ i ]; - break; - } - } - - if ( element ) - { - var attrName = this.att, - value = this.getValue(); - - if ( value ) - element.setAttribute( attrName, value ); - else - element.removeAttribute( attrName, value ); - } -} - -CKEDITOR.plugins.add( 'dialogadvtab', -{ - /** - * - * @param tabConfig - * id, dir, classes, styles - */ - createAdvancedTab : function( editor, tabConfig ) - { - if ( !tabConfig ) - tabConfig = { id:1, dir:1, classes:1, styles:1 }; - - var lang = editor.lang.common; - - var result = - { - id : 'advanced', - label : lang.advancedTab, - title : lang.advancedTab, - elements : - [ - { - type : 'vbox', - padding : 1, - children : [] - } - ] - }; - - var contents = []; - - if ( tabConfig.id || tabConfig.dir ) - { - if ( tabConfig.id ) - { - contents.push( - { - id : 'advId', - att : 'id', - type : 'text', - label : lang.id, - setup : setupAdvParams, - commit : commitAdvParams - }); - } - - if ( tabConfig.dir ) - { - contents.push( - { - id : 'advLangDir', - att : 'dir', - type : 'select', - label : lang.langDir, - 'default' : '', - style : 'width:110px', - items : - [ - [ lang.notSet, '' ], - [ lang.langDirLTR, 'ltr' ], - [ lang.langDirRTL, 'rtl' ] - ], - setup : setupAdvParams, - commit : commitAdvParams - }); - } - - result.elements[ 0 ].children.push( - { - type : 'hbox', - widths : [ '50%', '50%' ], - children : [].concat( contents ) - }); - } - - if ( tabConfig.styles || tabConfig.classes ) - { - contents = []; - - if ( tabConfig.id ) - { - contents.push( - { - id : 'advStyles', - att : 'style', - type : 'text', - label : lang.styles, - 'default' : '', - - onChange : function(){}, - - getStyle : function( name, defaultValue ) - { - var match = this.getValue().match( new RegExp( name + '\\s*:\s*([^;]*)', 'i') ); - return match ? match[ 1 ] : defaultValue; - }, - - updateStyle : function( name, value ) - { - var styles = this.getValue(); - - // Remove the current value. - if ( styles ) - { - styles = styles - .replace( new RegExp( '\\s*' + name + '\s*:[^;]*(?:$|;\s*)', 'i' ), '' ) - .replace( /^[;\s]+/, '' ) - .replace( /\s+$/, '' ); - } - - if ( value ) - { - styles && !(/;\s*$/).test( styles ) && ( styles += '; ' ); - styles += name + ': ' + value; - } - - this.setValue( styles, true ); - - }, - - setup : setupAdvParams, - - commit : commitAdvParams - - }); - } - - if ( tabConfig.classes ) - { - contents.push( - { - type : 'hbox', - widths : [ '45%', '55%' ], - children : - [ - { - id : 'advCSSClasses', - att : 'class', - type : 'text', - label : lang.cssClasses, - 'default' : '', - setup : setupAdvParams, - commit : commitAdvParams - - } - ] - }); - } - - result.elements[ 0 ].children.push( - { - type : 'hbox', - widths : [ '50%', '50%' ], - children : [].concat( contents ) - }); - } - - return result; - } -}); - -})(); diff --git a/Public/Resources/Javascript/ckeditor/_source/plugins/dialogui/plugin.js b/Public/Resources/Javascript/ckeditor/_source/plugins/dialogui/plugin.js deleted file mode 100644 index 7875b5b..0000000 --- a/Public/Resources/Javascript/ckeditor/_source/plugins/dialogui/plugin.js +++ /dev/null @@ -1,1522 +0,0 @@ -/* -Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ - -/** @fileoverview The "dialogui" plugin. */ - -CKEDITOR.plugins.add( 'dialogui' ); - -(function() -{ - var initPrivateObject = function( elementDefinition ) - { - this._ || ( this._ = {} ); - this._['default'] = this._.initValue = elementDefinition['default'] || ''; - this._.required = elementDefinition[ 'required' ] || false; - var args = [ this._ ]; - for ( var i = 1 ; i < arguments.length ; i++ ) - args.push( arguments[i] ); - args.push( true ); - CKEDITOR.tools.extend.apply( CKEDITOR.tools, args ); - return this._; - }, - textBuilder = - { - build : function( dialog, elementDefinition, output ) - { - return new CKEDITOR.ui.dialog.textInput( dialog, elementDefinition, output ); - } - }, - commonBuilder = - { - build : function( dialog, elementDefinition, output ) - { - return new CKEDITOR.ui.dialog[elementDefinition.type]( dialog, elementDefinition, output ); - } - }, - containerBuilder = - { - build : function( dialog, elementDefinition, output ) - { - var children = elementDefinition.children, - child, - childHtmlList = [], - childObjList = []; - for ( var i = 0 ; ( i < children.length && ( child = children[i] ) ) ; i++ ) - { - var childHtml = []; - childHtmlList.push( childHtml ); - childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) ); - } - return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition ); - } - }, - commonPrototype = - { - isChanged : function() - { - return this.getValue() != this.getInitValue(); - }, - - reset : function( noChangeEvent ) - { - this.setValue( this.getInitValue(), noChangeEvent ); - }, - - setInitValue : function() - { - this._.initValue = this.getValue(); - }, - - resetInitValue : function() - { - this._.initValue = this._['default']; - }, - - getInitValue : function() - { - return this._.initValue; - } - }, - commonEventProcessors = CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, - { - onChange : function( dialog, func ) - { - if ( !this._.domOnChangeRegistered ) - { - dialog.on( 'load', function() - { - this.getInputElement().on( 'change', function() - { - // Make sure 'onchange' doesn't get fired after dialog closed. (#5719) - if ( !dialog.parts.dialog.isVisible() ) - return; - - this.fire( 'change', { value : this.getValue() } ); - }, this ); - }, this ); - this._.domOnChangeRegistered = true; - } - - this.on( 'change', func ); - } - }, true ), - eventRegex = /^on([A-Z]\w+)/, - cleanInnerDefinition = function( def ) - { - // An inner UI element should not have the parent's type, title or events. - for ( var i in def ) - { - if ( eventRegex.test( i ) || i == 'title' || i == 'type' ) - delete def[i]; - } - return def; - }; - - CKEDITOR.tools.extend( CKEDITOR.ui.dialog, - /** @lends CKEDITOR.ui.dialog */ - { - /** - * Base class for all dialog elements with a textual label on the left. - * @constructor - * @example - * @extends CKEDITOR.ui.dialog.uiElement - * @param {CKEDITOR.dialog} dialog - * Parent dialog object. - * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition - * The element definition. Accepted fields: - *