rich 1.4.2 → 1.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. data/lib/rich/version.rb +1 -1
  2. data/vendor/assets/ckeditor/ckeditor/CHANGES.md +60 -56
  3. data/vendor/assets/ckeditor/ckeditor/README.md +1 -1
  4. data/vendor/assets/ckeditor/ckeditor/build-config.js +2 -1
  5. data/vendor/assets/ckeditor/ckeditor/ckeditor.js +15 -10
  6. data/vendor/assets/ckeditor/ckeditor/config.js +1 -1
  7. data/vendor/assets/ckeditor/ckeditor/plugins/autogrow/plugin.js +178 -0
  8. data/vendor/assets/ckeditor/ckeditor/plugins/autogrow/samples/autogrow.html +99 -0
  9. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/css/codemirror.css +10 -9
  10. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/addon/edit/closetag.js +3 -0
  11. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/addon/edit/continuecomment.js +2 -0
  12. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/addon/edit/continuelist.js +1 -0
  13. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/addon/edit/matchbrackets.js +4 -0
  14. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/addon/format/formatting.js +5 -0
  15. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/codemirror.js +168 -160
  16. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/css.js +3 -3
  17. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/javascript.js +13 -12
  18. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/rubyblue.css +1 -1
  19. data/vendor/assets/ckeditor/ckeditor/plugins/icons.png +0 -0
  20. data/vendor/assets/ckeditor/ckeditor/samples/assets/posteddata.php +59 -59
  21. data/vendor/assets/ckeditor/ckeditor/samples/index.html +3 -0
  22. data/vendor/assets/ckeditor/ckeditor/samples/plugins/autogrow/autogrow.html +99 -0
  23. data/vendor/assets/ckeditor/ckeditor/skins/moono/dialog_iequirks.css +1 -1
  24. data/vendor/assets/ckeditor/ckeditor/skins/moono/icons.png +0 -0
  25. metadata +10 -2
@@ -1,3 +1,3 @@
1
1
  module Rich
2
- VERSION = "1.4.2"
2
+ VERSION = "1.4.3"
3
3
  end
@@ -1,56 +1,60 @@
1
- CKEditor 4 Changelog
2
- ====================
3
-
4
- ## CKEditor 4.0.1
5
-
6
- Fixed issues:
7
-
8
- * [#9655](http://dev.ckeditor.com/ticket/9655): Support for IE Quirks Mode in new Moono skin.
9
- * 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).
10
- * Magic-line:
11
- * [#9481](http://dev.ckeditor.com/ticket/9481): Added accessibility support for Magic-line.
12
- * [#9509](http://dev.ckeditor.com/ticket/9509): Added Magic-line support for forms.
13
- * [#9573](http://dev.ckeditor.com/ticket/9573): Magic-line doesn't disappear on `mouseout` in the specific case.
14
- * [#9754](http://dev.ckeditor.com/ticket/9754): [Webkit] Cut & paste simple unformatted text generates inline wrapper in Webkits.
15
- * [#9456](http://dev.ckeditor.com/ticket/9456): [Chrome] Properly paste bullet list style from MS-Word.
16
- * [#9699](http://dev.ckeditor.com/ticket/9699), [#9758](http://dev.ckeditor.com/ticket/9758): Improved selection locking when selecting by dragging.
17
- * Context menu:
18
- * [#9712](http://dev.ckeditor.com/ticket/9712): Context menu open destroys editor focus.
19
- * [#9366](http://dev.ckeditor.com/ticket/9366): Context menu should be displayed over floating toolbar.
20
- * [#9706](http://dev.ckeditor.com/ticket/9706): Context menu generates JS error in inline mode when editor attached to header element.
21
- * [#9800](http://dev.ckeditor.com/ticket/9800): Hide float panel when resizing window.
22
- * [#9721](http://dev.ckeditor.com/ticket/9721): Padding in content of div based editor puts editing area under bottom UI space.
23
- * [#9528](http://dev.ckeditor.com/ticket/9528): Host page's `box-sizing` style shouldn't influence editor UI elements.
24
- * [#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.
25
- * [#9769](http://dev.ckeditor.com/ticket/9769): Improved floating toolbar positioning in narrow window.
26
- * [#9875](http://dev.ckeditor.com/ticket/9875): Table dialog doesn't populate width correctly.
27
- * [#8675](http://dev.ckeditor.com/ticket/8675): Deleting cells in nested table removes outer table cell.
28
- * [#9815](http://dev.ckeditor.com/ticket/9815): Can't edit dialog fields on editor initialized in jQuery UI modal dialog.
29
- * [#8888](http://dev.ckeditor.com/ticket/8888): CKEditor dialogs do not show completely in small window.
30
- * [#9360](http://dev.ckeditor.com/ticket/9360): [Inline editor] Blocks shown for a div stay permanently even after user exists editing the div.
31
- * [#9531](http://dev.ckeditor.com/ticket/9531): [Firefox & Inline editor] Toolbar is lost when closing format combo by clicking on its button.
32
- * [#9553](http://dev.ckeditor.com/ticket/9553): Table width incorrectly set when `border-width` style is specified.
33
- * [#9594](http://dev.ckeditor.com/ticket/9594): Cannot tab past CKEditor when it is in read only mode.
34
- * [#9658](http://dev.ckeditor.com/ticket/9658): [IE9] Justify not working on selected image.
35
- * [#9686](http://dev.ckeditor.com/ticket/9686): Added missing contents styles for `<pre>`.
36
- * [#9709](http://dev.ckeditor.com/ticket/9709): PasteFromWord should not depend on configuration from other styles.
37
- * [#9726](http://dev.ckeditor.com/ticket/9726): Removed color dialog dependency from table tools.
38
- * [#9765](http://dev.ckeditor.com/ticket/9765): Toolbar Collapse command documented incorrectly on Accessibility Instructions dialog.
39
- * [#9771](http://dev.ckeditor.com/ticket/9771): [Webkit & Opera] Fixed scrolling issues when pasting.
40
- * [#9787](http://dev.ckeditor.com/ticket/9787): [IE9] onChange isn't fired for checkboxes in dialogs.
41
- * [#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.
42
- * [#9847](http://dev.ckeditor.com/ticket/9847): Elements path shouldn't be initialized on inline editor.
43
- * [#9853](http://dev.ckeditor.com/ticket/9853): `Editor#addRemoveFormatFilter` is exposed before it really works.
44
- * [#8893](http://dev.ckeditor.com/ticket/8893): Value of `pasteFromWordCleanupFile` config is now taken from instance configuration.
45
- * [#9693](http://dev.ckeditor.com/ticket/9693): Removed "live preview" checkbox from UI color picker.
46
-
47
-
48
- ## CKEditor 4.0
49
-
50
- The first stable release of the new CKEditor 4 code line.
51
-
52
- The CKEditor JavaScript API has been kept compatible with CKEditor 4, whenever
53
- possible. The list of relevant changes can be found in the [API Changes page of
54
- the CKEditor 4 documentation][1].
55
-
56
- [1]: http://docs.ckeditor.com/#!/guide/dev_api_changes "API Changes""
1
+ CKEditor 4 Changelog
2
+ ====================
3
+
4
+ ## CKEditor 4.0.1.1
5
+
6
+ * Security update: Added protection against XSS attack and possible path disclosure in PHP sample.
7
+
8
+ ## CKEditor 4.0.1
9
+
10
+ Fixed issues:
11
+
12
+ * [#9655](http://dev.ckeditor.com/ticket/9655): Support for IE Quirks Mode in new Moono skin.
13
+ * 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).
14
+ * Magic-line:
15
+ * [#9481](http://dev.ckeditor.com/ticket/9481): Added accessibility support for Magic-line.
16
+ * [#9509](http://dev.ckeditor.com/ticket/9509): Added Magic-line support for forms.
17
+ * [#9573](http://dev.ckeditor.com/ticket/9573): Magic-line doesn't disappear on `mouseout` in the specific case.
18
+ * [#9754](http://dev.ckeditor.com/ticket/9754): [Webkit] Cut & paste simple unformatted text generates inline wrapper in Webkits.
19
+ * [#9456](http://dev.ckeditor.com/ticket/9456): [Chrome] Properly paste bullet list style from MS-Word.
20
+ * [#9699](http://dev.ckeditor.com/ticket/9699), [#9758](http://dev.ckeditor.com/ticket/9758): Improved selection locking when selecting by dragging.
21
+ * Context menu:
22
+ * [#9712](http://dev.ckeditor.com/ticket/9712): Context menu open destroys editor focus.
23
+ * [#9366](http://dev.ckeditor.com/ticket/9366): Context menu should be displayed over floating toolbar.
24
+ * [#9706](http://dev.ckeditor.com/ticket/9706): Context menu generates JS error in inline mode when editor attached to header element.
25
+ * [#9800](http://dev.ckeditor.com/ticket/9800): Hide float panel when resizing window.
26
+ * [#9721](http://dev.ckeditor.com/ticket/9721): Padding in content of div based editor puts editing area under bottom UI space.
27
+ * [#9528](http://dev.ckeditor.com/ticket/9528): Host page's `box-sizing` style shouldn't influence editor UI elements.
28
+ * [#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.
29
+ * [#9769](http://dev.ckeditor.com/ticket/9769): Improved floating toolbar positioning in narrow window.
30
+ * [#9875](http://dev.ckeditor.com/ticket/9875): Table dialog doesn't populate width correctly.
31
+ * [#8675](http://dev.ckeditor.com/ticket/8675): Deleting cells in nested table removes outer table cell.
32
+ * [#9815](http://dev.ckeditor.com/ticket/9815): Can't edit dialog fields on editor initialized in jQuery UI modal dialog.
33
+ * [#8888](http://dev.ckeditor.com/ticket/8888): CKEditor dialogs do not show completely in small window.
34
+ * [#9360](http://dev.ckeditor.com/ticket/9360): [Inline editor] Blocks shown for a div stay permanently even after user exists editing the div.
35
+ * [#9531](http://dev.ckeditor.com/ticket/9531): [Firefox & Inline editor] Toolbar is lost when closing format combo by clicking on its button.
36
+ * [#9553](http://dev.ckeditor.com/ticket/9553): Table width incorrectly set when `border-width` style is specified.
37
+ * [#9594](http://dev.ckeditor.com/ticket/9594): Cannot tab past CKEditor when it is in read only mode.
38
+ * [#9658](http://dev.ckeditor.com/ticket/9658): [IE9] Justify not working on selected image.
39
+ * [#9686](http://dev.ckeditor.com/ticket/9686): Added missing contents styles for `<pre>`.
40
+ * [#9709](http://dev.ckeditor.com/ticket/9709): PasteFromWord should not depend on configuration from other styles.
41
+ * [#9726](http://dev.ckeditor.com/ticket/9726): Removed color dialog dependency from table tools.
42
+ * [#9765](http://dev.ckeditor.com/ticket/9765): Toolbar Collapse command documented incorrectly on Accessibility Instructions dialog.
43
+ * [#9771](http://dev.ckeditor.com/ticket/9771): [Webkit & Opera] Fixed scrolling issues when pasting.
44
+ * [#9787](http://dev.ckeditor.com/ticket/9787): [IE9] onChange isn't fired for checkboxes in dialogs.
45
+ * [#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.
46
+ * [#9847](http://dev.ckeditor.com/ticket/9847): Elements path shouldn't be initialized on inline editor.
47
+ * [#9853](http://dev.ckeditor.com/ticket/9853): `Editor#addRemoveFormatFilter` is exposed before it really works.
48
+ * [#8893](http://dev.ckeditor.com/ticket/8893): Value of `pasteFromWordCleanupFile` config is now taken from instance configuration.
49
+ * [#9693](http://dev.ckeditor.com/ticket/9693): Removed "live preview" checkbox from UI color picker.
50
+
51
+
52
+ ## CKEditor 4.0
53
+
54
+ The first stable release of the new CKEditor 4 code line.
55
+
56
+ The CKEditor JavaScript API has been kept compatible with CKEditor 4, whenever
57
+ possible. The list of relevant changes can be found in the [API Changes page of
58
+ the CKEditor 4 documentation][1].
59
+
60
+ [1]: http://docs.ckeditor.com/#!/guide/dev_api_changes "API Changes""
@@ -1,7 +1,7 @@
1
1
  CKEditor 4
2
2
  ==========
3
3
 
4
- Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
4
+ Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
5
5
  http://ckeditor.com - See LICENSE.md for license information.
6
6
 
7
7
  CKEditor is a text editor to be used inside web pages. It's not a replacement
@@ -95,7 +95,8 @@ var CKBUILDER_CONFIG = {
95
95
  'menubutton' : 1,
96
96
  'codemirror' : 1,
97
97
  'iframedialog' : 1,
98
- 'stylesheetparser' : 1
98
+ 'stylesheetparser' : 1,
99
+ 'autogrow' : 1
99
100
  },
100
101
  languages : {
101
102
  'en' : 1,
@@ -2,7 +2,7 @@
2
2
  Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
- (function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var b={timestamp:"D08E",version:"4.0.1",revision:"d02739be4b",rnd:Math.floor(900*Math.random())+100,_:{pending:[]},status:"unloaded",basePath:function(){var a=window.CKEDITOR_BASEPATH||"";if(!a)for(var b=document.getElementsByTagName("script"),d=0;d<b.length;d++){var c=b[d].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(c){a=c[1];break}}-1==a.indexOf(":/")&&(a=0===a.indexOf("/")?location.href.match(/^.*?:\/\/[^\/]*/)[0]+a:location.href.match(/^[^\?]*\/(?:)/)[0]+
5
+ (function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var b={timestamp:"D08E",version:"4.0.1.1",revision:"270438fe31",rnd:Math.floor(900*Math.random())+100,_:{pending:[]},status:"unloaded",basePath:function(){var a=window.CKEDITOR_BASEPATH||"";if(!a)for(var b=document.getElementsByTagName("script"),d=0;d<b.length;d++){var c=b[d].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(c){a=c[1];break}}-1==a.indexOf(":/")&&(a=0===a.indexOf("/")?location.href.match(/^.*?:\/\/[^\/]*/)[0]+a:location.href.match(/^[^\?]*\/(?:)/)[0]+
6
6
  a);if(!a)throw'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return a}(),getUrl:function(a){-1==a.indexOf(":/")&&0!==a.indexOf("/")&&(a=this.basePath+a);this.timestamp&&("/"!=a.charAt(a.length-1)&&!/[&?]t=/.test(a))&&(a+=(0<=a.indexOf("?")?"&":"?")+"t="+this.timestamp);return a},domReady:function(){function a(){try{document.addEventListener?(document.removeEventListener("DOMContentLoaded",a,
7
7
  !1),b()):document.attachEvent&&"complete"===document.readyState&&(document.detachEvent("onreadystatechange",a),b())}catch(d){}}function b(){for(var a;a=d.shift();)a()}var d=[];return function(b){d.push(b);"complete"===document.readyState&&setTimeout(a,1);if(1==d.length)if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,!1),window.addEventListener("load",a,!1);else if(document.attachEvent){document.attachEvent("onreadystatechange",a);window.attachEvent("onload",a);b=!1;try{b=
8
8
  !window.frameElement}catch(e){}if(document.documentElement.doScroll&&b){var c=function(){try{document.documentElement.doScroll("left")}catch(b){setTimeout(c,1);return}a()};c()}}}}()},c=window.CKEDITOR_GETURL;if(c){var a=b.url;b.url=function(f){return c.call(b,f)||a.call(b,f)}}return b}());
@@ -378,7 +378,8 @@ a[g].$.styleSheet.cssText=a[g].$.styleSheet.cssText+f:a[g].$.innerHTML=a[g].$.in
378
378
  (e=this.icons[a+"-rtl"]);e||(e=this.icons[a])}a=c||e&&e.path||"";d=d||e&&e.offset;return a&&"background-image:url("+CKEDITOR.getUrl(a)+");background-position:0 "+d+"px;"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=f(CKEDITOR.document);return(this.setUiColor=function(a){var c=CKEDITOR.skin.chameleon,d=[[h,a]];this.uiColor=a;e([b],c(this,"editor"),d);e(k,c(this,"panel"),d)}).call(this,a)}});var g="cke_ui_color",k=[],h=/\$color/g;
379
379
  CKEDITOR.on("instanceLoaded",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor,a=function(a){a=(a.data[0]||a.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!a.getById("cke_ui_color")){a=f(a);k.push(a);var c=b.getUiColor();c&&e([a],CKEDITOR.skin.chameleon(b,"panel"),[[h,c]])}};b.on("panelShow",a);b.on("menuShow",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})})();
380
380
  (function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=false;else{var b=CKEDITOR.dom.element.createFromHtml('<div style="width:0px;height:0px;position:absolute;left:-10000px;border: 1px solid;border-color: red blue;"></div>',CKEDITOR.document);b.appendTo(CKEDITOR.document.getHead());try{CKEDITOR.env.hc=b.getComputedStyle("border-top-color")==b.getComputedStyle("border-right-color")}catch(c){CKEDITOR.env.hc=false}b.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+" cke_hc";CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");
381
- CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(b=CKEDITOR._.pending){delete CKEDITOR._.pending;for(var a=0;a<b.length;a++){CKEDITOR.editor.prototype.constructor.apply(b[a][0],b[a][1]);CKEDITOR.add(b[a][0])}}})();/*
381
+ CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(b=CKEDITOR._.pending){delete CKEDITOR._.pending;for(var a=0;a<b.length;a++){CKEDITOR.editor.prototype.constructor.apply(b[a][0],b[a][1]);CKEDITOR.add(b[a][0])}}})();
382
+ /*
382
383
  Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
383
384
  For licensing, see LICENSE.html or http://ckeditor.com/license
384
385
  */
@@ -870,15 +871,19 @@ this.typesCount=0},fireChange:function(){this.hasUndo=!!this.getNextImage(!0);th
870
871
  this.editor,b;a.bookmarks&&(c.focus(),b=c.getSelection());this.locked=1;this.editor.loadSnapshot(a.contents);a.bookmarks?b.selectBookmarks(a.bookmarks):CKEDITOR.env.ie&&(c=this.editor.document.getBody().$.createTextRange(),c.collapse(!0),c.select());this.locked=0;this.index=a.index;this.update();this.fireChange()},getNextImage:function(a){var c=this.snapshots,b=this.currentImage,d;if(b)if(a)for(d=this.index-1;0<=d;d--){if(a=c[d],!b.equals(a,!0))return a.index=d,a}else for(d=this.index+1;d<c.length;d++)if(a=
871
872
  c[d],!b.equals(a,!0))return a.index=d,a;return null},redoable:function(){return this.enabled&&this.hasRedo},undoable:function(){return this.enabled&&this.hasUndo},undo:function(){if(this.undoable()){this.save(!0);var a=this.getNextImage(!0);if(a)return this.restoreImage(a),!0}return!1},redo:function(){if(this.redoable()&&(this.save(!0),this.redoable())){var a=this.getNextImage(!1);if(a)return this.restoreImage(a),!0}return!1},update:function(){this.locked||this.snapshots.splice(this.index,1,this.currentImage=
872
873
  new i(this.editor))},lock:function(){if(!this.locked){var a=this.editor.getSnapshot();this.locked={update:this.currentImage&&a==this.currentImage.contents?a:null}}},unlock:function(){if(this.locked){var a=this.locked.update,c=this.editor.getSnapshot();this.locked=null;"string"==typeof a&&c!=a&&this.update()}}}})();CKEDITOR.plugins.add("wsc",{requires:"dialog",init:function(a){a.addCommand("checkspell",new CKEDITOR.dialogCommand("checkspell")).modes={wysiwyg:!CKEDITOR.env.opera&&!CKEDITOR.env.air&&document.domain==window.location.hostname};"undefined"==typeof a.plugins.scayt&&a.ui.addButton&&a.ui.addButton("SpellChecker",{label:a.lang.wsc.toolbar,command:"checkspell",toolbar:"spellchecker,10"});CKEDITOR.dialog.add("checkspell",this.path+"dialogs/wsc.js")}});
873
- CKEDITOR.config.wsc_customerId=CKEDITOR.config.wsc_customerId||"1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk";CKEDITOR.config.wsc_customLoaderScript=CKEDITOR.config.wsc_customLoaderScript||null;(function(){CKEDITOR.plugins.add("codemirror",{lang:"af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en-au,en-ca,en-gb,en,eo,es,et,eu,fa,fi,fo,fr-ca,fr,gl,gu,he,hi,hr,hu,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt-br,pt,ro,ru,sk,sl,sr-latn,sr,sv,th,tr,ug,uk,vi,zh-cn,zh",init:function(a){var b=this.path,c=a.config,f=null!=c.codemirror_theme?c.codemirror_theme:"default";CKEDITOR.document.appendStyleSheet(b+"css/codemirror.css");f.length&&"default"!=f&&CKEDITOR.document.appendStyleSheet(b+"theme/"+f+".css");
874
- CKEDITOR.scriptLoader.load(b+"js/codemirror.js",function(){CKEDITOR.scriptLoader.load([b+"js/xml.js",b+"js/javascript.js",b+"js/css.js",b+"js/htmlmixed.js"])});a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&(c=CKEDITOR.plugins.sourcearea,a.addMode("source",function(b){var d=a.ui.space("contents").getDocument().createElement("textarea");d.setStyles(CKEDITOR.tools.extend({width:CKEDITOR.env.ie7Compat?"99%":"100%",height:"100%",resize:"none",outline:"none","text-align":"left"},CKEDITOR.tools.cssVendorPrefix("tab-size",
875
- a.config.sourceAreaTabSize||4)));var c=[a.lang.editor,a.name].join();d.setAttributes({dir:"ltr",tabIndex:CKEDITOR.env.webkit?-1:a.tabIndex,role:"textbox","aria-label":c});d.addClass("cke_source cke_reset cke_enable_context_menu");a.ui.space("contents").append(d);window["editable_"+a.id]=a.editable(new e(a,d));window["editable_"+a.id].setData(a.getData(1));window["editable_"+a.id].editorID=a.id;a.fire("ariaWidget",this);var h,d=window["editable_"+a.id],g=d.getParent(),c=g.$.clientHeight+"px",g=g.$.clientWidth+
876
- "px";codemirror=a.id;window["codemirror_"+a.id]=CodeMirror.fromTextArea(d.$,{mode:"text/html",matchBrackets:!0,workDelay:300,workTime:35,lineNumbers:!0,lineWrapping:!0,theme:f});window["codemirror_"+a.id].on("change",function(){clearTimeout(h);h=setTimeout(function(){window["codemirror_"+a.id].save()},300)});window["codemirror_"+a.id].setSize(g,c);b()}),a.addCommand("source",c.commands.source),a.ui.addButton&&a.ui.addButton("Source",{label:a.lang.codemirror.toolbar,command:"source",toolbar:"mode,10"}),
877
- a.on("mode",function(){a.getCommand("source").setState("source"==a.mode?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)}),a.on("resize",function(){if(window["editable_"+a.id]){var b=window["editable_"+a.id].getParent();window["codemirror_"+a.id].setSize(b.$.clientWidth+"px",b.$.clientHeight+"px")}}))}});var e=CKEDITOR.tools.createClass({base:CKEDITOR.editable,proto:{setData:function(a){this.setValue(a);this.editor.fire("dataReady")},getData:function(){return this.getValue()},insertHtml:function(){},insertElement:function(){},
878
- insertText:function(){},setReadOnly:function(a){this[(a?"set":"remove")+"Attribute"]("readOnly","readonly")},editorID:null,detach:function(){window["codemirror_"+this.editorID].toTextArea();e.baseProto.detach.call(this);this.clearCustomData();this.remove()}}})})();
879
- CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:!1,readOnly:1,exec:function(e){"wysiwyg"==e.mode&&e.fire("saveSnapshot");e.getCommand("source").setState(CKEDITOR.TRISTATE_DISABLED);e.setMode("source"==e.mode?"wysiwyg":"source")},canUndo:!1}}};CKEDITOR.plugins.add("iframedialog",{requires:"dialog",onLoad:function(){CKEDITOR.dialog.addIframe=function(e,d,a,j,f,l,g){a={type:"iframe",src:a,width:"100%",height:"100%"};a.onContentLoad="function"==typeof l?l:function(){var a=this.getElement().$.contentWindow;if(a.onDialogEvent){var b=this.getDialog(),c=function(b){return a.onDialogEvent(b)};b.on("ok",c);b.on("cancel",c);b.on("resize",c);b.on("hide",function(a){b.removeListener("ok",c);b.removeListener("cancel",c);b.removeListener("resize",c);
874
+ CKEDITOR.config.wsc_customerId=CKEDITOR.config.wsc_customerId||"1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk";CKEDITOR.config.wsc_customLoaderScript=CKEDITOR.config.wsc_customLoaderScript||null;(function(){CKEDITOR.plugins.add("codemirror",{lang:"af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en-au,en-ca,en-gb,en,eo,es,et,eu,fa,fi,fo,fr-ca,fr,gl,gu,he,hi,hr,hu,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt-br,pt,ro,ru,sk,sl,sr-latn,sr,sv,th,tr,ug,uk,vi,zh-cn,zh",init:function(c){function f(b){function c(){return{from:window["codemirror_"+b.id].getCursor(!0),to:window["codemirror_"+b.id].getCursor(!1)}}var a=b.ui.space("contents").getDocument().createElement("textarea");a.setStyles(CKEDITOR.tools.extend({width:CKEDITOR.env.ie7Compat?
875
+ "99%":"100%",height:"100%",resize:"none",outline:"none","text-align":"left"},CKEDITOR.tools.cssVendorPrefix("tab-size",b.config.sourceAreaTabSize||4)));var d=[b.lang.editor,b.name].join();a.setAttributes({dir:"ltr",tabIndex:CKEDITOR.env.webkit?-1:b.tabIndex,role:"textbox","aria-label":d});a.addClass("cke_source cke_reset cke_enable_context_menu");b.ui.space("contents").append(a);window["editable_"+b.id]=b.editable(new e(b,a));window["editable_"+b.id].setData(b.getData(1));window["editable_"+b.id].editorID=
876
+ b.id;b.fire("ariaWidget",this);var f,a=window["editable_"+b.id],g=a.getParent(),d=g.$.clientHeight+"px",g=g.$.clientWidth+"px";codemirror=b.id;window["codemirror_"+b.id]=CodeMirror.fromTextArea(a.$,{mode:"text/html",matchBrackets:!0,workDelay:300,workTime:35,lineNumbers:!0,lineWrapping:!0,theme:h,onKeyEvent:function(b,a){if("keydown"==a.type&&a.ctrlKey&&75==a.keyCode&&!a.shiftKey){var d=c();b.commentRange(!0,d.from,d.to)}else"keydown"==a.type&&a.ctrlKey&&75==a.keyCode&&a.shiftKey?(d=c(),b.commentRange(!1,
877
+ d.from,d.to)):"keydown"==a.type&&(a.ctrlKey&&70==a.keyCode&&a.shiftKey)&&(d=c(),b.autoFormatRange(d.from,d.to,!1))}});i&&window["codemirror_"+b.id].autoFormatRange({line:0,ch:0},{line:window["codemirror_"+b.id].lineCount(),ch:0},!0);window["codemirror_"+b.id].on("change",function(){clearTimeout(f);f=setTimeout(function(){window["codemirror_"+b.id].save()},300)});window["codemirror_"+b.id].setSize(g,d)}var a=this.path,d=c.config,h=null!=d.codemirror_theme?d.codemirror_theme:"default",i=null!=d.codemirror_autoFormatOnStart?
878
+ d.codemirror_autoFormatOnStart:!0;CKEDITOR.document.appendStyleSheet(a+"css/codemirror.css");h.length&&"default"!=h&&CKEDITOR.document.appendStyleSheet(a+"theme/"+h+".css");CKEDITOR.scriptLoader.load(a+"js/codemirror.js",function(){CKEDITOR.scriptLoader.load([a+"js/xml.js",a+"js/javascript.js",a+"js/css.js",a+"js/htmlmixed.js",a+"js/addon/format/formatting.js"])});c.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&(d=CKEDITOR.plugins.sourcearea,c.addMode("source",function(b){"undefined"==typeof CodeMirror?
879
+ CKEDITOR.scriptLoader.load([a+"js/codemirror.js",a+"js/xml.js",a+"js/javascript.js",a+"js/css.js",a+"js/htmlmixed.js",a+"js/addon/format/formatting.js"],function(){f(c);b()}):(f(c),b())}),c.addCommand("source",d.commands.source),c.ui.addButton&&c.ui.addButton("Source",{label:c.lang.codemirror.toolbar,command:"source",toolbar:"mode,10"}),c.on("mode",function(){c.getCommand("source").setState("source"==c.mode?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)}),c.on("resize",function(){if(window["editable_"+
880
+ c.id]&&"source"==c.mode){var a=window["editable_"+c.id].getParent();window["codemirror_"+c.id].setSize(a.$.clientWidth+"px",a.$.clientHeight+"px")}}))}});var e=CKEDITOR.tools.createClass({base:CKEDITOR.editable,proto:{setData:function(c){this.setValue(c);this.editor.fire("dataReady")},getData:function(){return this.getValue()},insertHtml:function(){},insertElement:function(){},insertText:function(){},setReadOnly:function(c){this[(c?"set":"remove")+"Attribute"]("readOnly","readonly")},editorID:null,
881
+ detach:function(){window["codemirror_"+this.editorID].toTextArea();e.baseProto.detach.call(this);this.clearCustomData();this.remove()}}})})();CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:!1,readOnly:1,exec:function(e){"wysiwyg"==e.mode&&e.fire("saveSnapshot");e.getCommand("source").setState(CKEDITOR.TRISTATE_DISABLED);e.setMode("source"==e.mode?"wysiwyg":"source")},canUndo:!1}}};CKEDITOR.plugins.add("iframedialog",{requires:"dialog",onLoad:function(){CKEDITOR.dialog.addIframe=function(e,d,a,j,f,l,g){a={type:"iframe",src:a,width:"100%",height:"100%"};a.onContentLoad="function"==typeof l?l:function(){var a=this.getElement().$.contentWindow;if(a.onDialogEvent){var b=this.getDialog(),c=function(b){return a.onDialogEvent(b)};b.on("ok",c);b.on("cancel",c);b.on("resize",c);b.on("hide",function(a){b.removeListener("ok",c);b.removeListener("cancel",c);b.removeListener("resize",c);
880
882
  a.removeListener()});a.onDialogEvent({name:"load",sender:this,editor:b._.editor})}};var h={title:d,minWidth:j,minHeight:f,contents:[{id:"iframe",label:d,expand:!0,elements:[a]}]},i;for(i in g)h[i]=g[i];this.add(e,function(){return h})};(function(){var e=function(d,a,j){if(!(3>arguments.length)){var f=this._||(this._={}),e=a.onContentLoad&&CKEDITOR.tools.bind(a.onContentLoad,this),g=CKEDITOR.tools.cssLength(a.width),h=CKEDITOR.tools.cssLength(a.height);f.frameId=CKEDITOR.tools.getNextId()+"_iframe";
881
883
  d.on("load",function(){CKEDITOR.document.getById(f.frameId).getParent().setStyles({width:g,height:h})});var i={src:"%2",id:f.frameId,frameborder:0,allowtransparency:!0},k=[];"function"==typeof a.onContentLoad&&(i.onload="CKEDITOR.tools.callFunction(%1);");CKEDITOR.ui.dialog.uiElement.call(this,d,a,k,"iframe",{width:g,height:h},i,"");j.push('<div style="width:'+g+";height:"+h+';" id="'+this.domId+'"></div>');k=k.join("");d.on("show",function(){var b=CKEDITOR.document.getById(f.frameId).getParent(),
882
884
  c=CKEDITOR.tools.addFunction(e),c=k.replace("%1",c).replace("%2",CKEDITOR.tools.htmlEncode(a.src));b.setHtml(c)})}};e.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.dialog.addUIElement("iframe",{build:function(d,a,j){return new e(d,a,j)}})})()}});(function(){function i(b,h,d){var e=[],g=[],a;for(a=0;a<b.styleSheets.length;a++){var c=b.styleSheets[a];if(!(c.ownerNode||c.owningElement).getAttribute("data-cke-temp")&&!(c.href&&"chrome://"==c.href.substr(0,9)))try{for(var f=c.cssRules||c.rules,c=0;c<f.length;c++)g.push(f[c].selectorText)}catch(i){}}a=g.join(" ");a=a.replace(/(,|>|\+|~)/g," ");a=a.replace(/\[[^\]]*/g,"");a=a.replace(/#[^\s]*/g,"");a=a.replace(/\:{1,2}[^\s]*/g,"");a=a.replace(/\s+/g," ");a=a.split(" ");b=[];for(g=0;g<a.length;g++)f=
883
885
  a[g],d.test(f)&&!h.test(f)&&-1==CKEDITOR.tools.indexOf(b,f)&&b.push(f);for(a=0;a<b.length;a++)d=b[a].split("."),h=d[0].toLowerCase(),d=d[1],e.push({name:h+"."+d,element:h,attributes:{"class":d}});return e}CKEDITOR.plugins.add("stylesheetparser",{onLoad:function(){var b=CKEDITOR.editor.prototype;b.getStylesSet=CKEDITOR.tools.override(b.getStylesSet,function(b){return function(d){var e=this;b.call(this,function(b){d(e._.stylesDefinitions=b.concat(i(e.document.$,e.config.stylesheetParser_skipSelectors||
884
- /(^body\.|^\.)/i,e.config.stylesheetParser_validSelectors||/\w+\.\w+/)))})}})}})})();CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,dialogadvtab,basicstyles,bidi,blockquote,clipboard,button,panelbutton,panel,floatpanel,colorbutton,colordialog,templates,menu,contextmenu,div,resize,toolbar,elementspath,list,indent,enterkey,entities,popup,filebrowser,find,fakeobjects,flash,floatingspace,listblock,richcombo,font,forms,format,htmlwriter,horizontalrule,iframe,wysiwygarea,image,smiley,justify,link,liststyle,magicline,maximize,newpage,pagebreak,pastetext,pastefromword,preview,print,removeformat,save,selectall,showblocks,showborders,sourcearea,specialchar,menubutton,scayt,stylescombo,tab,table,tabletools,undo,wsc,codemirror,iframedialog,stylesheetparser';CKEDITOR.config.skin='moono';(function() {var icons = ( 'about,0,bold,32,italic,64,strike,96,subscript,128,superscript,160,underline,192,bidiltr,224,bidirtl,256,blockquote,288,copy-rtl,320,copy,352,cut-rtl,384,cut,416,paste-rtl,448,paste,480,bgcolor,512,textcolor,544,templates-rtl,576,templates,608,creatediv,640,bulletedlist-rtl,672,bulletedlist,704,numberedlist-rtl,736,numberedlist,768,indent-rtl,800,indent,832,outdent-rtl,864,outdent,896,find-rtl,928,find,960,replace,992,flash,1024,button,1056,checkbox,1088,form,1120,hiddenfield,1152,imagebutton,1184,radio,1216,select-rtl,1248,select,1280,textarea-rtl,1312,textarea,1344,textfield-rtl,1376,textfield,1408,horizontalrule,1440,iframe,1472,image,1504,smiley,1536,justifyblock,1568,justifycenter,1600,justifyleft,1632,justifyright,1664,anchor-rtl,1696,anchor,1728,link,1760,unlink,1792,maximize,1824,newpage-rtl,1856,newpage,1888,pagebreak-rtl,1920,pagebreak,1952,pastetext-rtl,1984,pastetext,2016,pastefromword-rtl,2048,pastefromword,2080,preview-rtl,2112,preview,2144,print,2176,removeformat,2208,save,2240,selectall,2272,showblocks-rtl,2304,showblocks,2336,source-rtl,2368,source,2400,specialchar,2432,scayt,2464,table,2496,redo-rtl,2528,redo,2560,undo-rtl,2592,undo,2624,spellchecker,2656' ),path = CKEDITOR.getUrl( 'plugins/icons.png' ),icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ] };})();CKEDITOR.lang.languages={"en":1};}());
886
+ /(^body\.|^\.)/i,e.config.stylesheetParser_validSelectors||/\w+\.\w+/)))})}})}})})();(function(){function h(a){var a=a.document,c=a.getBody(),d=a.getDocumentElement();return"BackCompat"==a.$.compatMode?c:d}var g=function(a){if(a.window){var c=a.getCommand("maximize");if(!(c&&c.state==CKEDITOR.TRISTATE_ON)){var c=h(a),d=a.window.getViewPaneSize().height,b;b=c.getStyle("overflow-y");var f=c.getDocument(),e=CKEDITOR.dom.element.createFromHtml('<span style="margin:0;padding:0;border:0;clear:both;width:1px;height:1px;display:block;">'+(CKEDITOR.env.webkit?"&nbsp;":"")+"</span>",f);f[CKEDITOR.env.ie?
887
+ "getBody":"getDocumentElement"]().append(e);f=e.getDocumentPosition(f).y+e.$.offsetHeight;e.remove();c.setStyle("overflow-y",b);b=f+(a.config.autoGrow_bottomSpace||0);e=a.config.autoGrow_maxHeight||Infinity;b=Math.max(b,void 0!=a.config.autoGrow_minHeight?a.config.autoGrow_minHeight:200);b=Math.min(b,e);b!=d&&(b=a.fire("autoGrow",{currentHeight:d,newHeight:b}).newHeight,a.resize(a.container.getStyle("width"),b,!0));c.$.scrollHeight>c.$.clientHeight&&b<e?c.setStyle("overflow-y","hidden"):c.removeStyle("overflow-y")}}};
888
+ CKEDITOR.plugins.add("autogrow",{init:function(a){if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE)a.on("instanceReady",function(){if(a.editable().isInline())a.ui.space("contents").setStyle("height","auto");else{a.addCommand("autogrow",{exec:g,modes:{wysiwyg:1},readOnly:1,canUndo:!1,editorFocus:!1});var c={contentDom:1,key:1,selectionChange:1,insertElement:1,mode:1},d;for(d in c)a.on(d,function(a){"wysiwyg"==a.editor.mode&&setTimeout(function(){g(a.editor);g(a.editor)},100)});a.on("afterCommandExec",
889
+ function(b){"maximize"==b.data.name&&"wysiwyg"==b.editor.mode&&(b.data.command.state==CKEDITOR.TRISTATE_ON?h(a).removeStyle("overflow"):g(a))});a.config.autoGrow_onStartup&&a.execCommand("autogrow")}})}})})();CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,dialogadvtab,basicstyles,bidi,blockquote,clipboard,button,panelbutton,panel,floatpanel,colorbutton,colordialog,templates,menu,contextmenu,div,resize,toolbar,elementspath,list,indent,enterkey,entities,popup,filebrowser,find,fakeobjects,flash,floatingspace,listblock,richcombo,font,forms,format,htmlwriter,horizontalrule,iframe,wysiwygarea,image,smiley,justify,link,liststyle,magicline,maximize,newpage,pagebreak,pastetext,pastefromword,preview,print,removeformat,save,selectall,showblocks,showborders,sourcearea,specialchar,menubutton,scayt,stylescombo,tab,table,tabletools,undo,wsc,codemirror,iframedialog,stylesheetparser,autogrow';CKEDITOR.config.skin='moono';(function() {var icons = ( 'about,0,bold,32,italic,64,strike,96,subscript,128,superscript,160,underline,192,bidiltr,224,bidirtl,256,blockquote,288,copy-rtl,320,copy,352,cut-rtl,384,cut,416,paste-rtl,448,paste,480,bgcolor,512,textcolor,544,templates-rtl,576,templates,608,creatediv,640,bulletedlist-rtl,672,bulletedlist,704,numberedlist-rtl,736,numberedlist,768,indent-rtl,800,indent,832,outdent-rtl,864,outdent,896,find-rtl,928,find,960,replace,992,flash,1024,button,1056,checkbox,1088,form,1120,hiddenfield,1152,imagebutton,1184,radio,1216,select-rtl,1248,select,1280,textarea-rtl,1312,textarea,1344,textfield-rtl,1376,textfield,1408,horizontalrule,1440,iframe,1472,image,1504,smiley,1536,justifyblock,1568,justifycenter,1600,justifyleft,1632,justifyright,1664,anchor-rtl,1696,anchor,1728,link,1760,unlink,1792,maximize,1824,newpage-rtl,1856,newpage,1888,pagebreak-rtl,1920,pagebreak,1952,pastetext-rtl,1984,pastetext,2016,pastefromword-rtl,2048,pastefromword,2080,preview-rtl,2112,preview,2144,print,2176,removeformat,2208,save,2240,selectall,2272,showblocks-rtl,2304,showblocks,2336,source-rtl,2368,source,2400,specialchar,2432,scayt,2464,table,2496,redo-rtl,2528,redo,2560,undo-rtl,2592,undo,2624,spellchecker,2656' ),path = CKEDITOR.getUrl( 'plugins/icons.png' ),icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ] };})();CKEDITOR.lang.languages={"en":1};}());
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
2
+ * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
3
3
  * For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
 
@@ -0,0 +1,178 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
3
+ * For licensing, see LICENSE.html or http://ckeditor.com/license
4
+ */
5
+
6
+ /**
7
+ * @fileOverview AutoGrow plugin.
8
+ */
9
+
10
+ (function() {
11
+
12
+ // Actual content height, figured out by appending check the last element's document position.
13
+ function contentHeight( scrollable ) {
14
+ var overflowY = scrollable.getStyle( 'overflow-y' );
15
+
16
+ var doc = scrollable.getDocument();
17
+ // Create a temporary marker element.
18
+ var marker = CKEDITOR.dom.element.createFromHtml( '<span style="margin:0;padding:0;border:0;clear:both;width:1px;height:1px;display:block;">' + ( CKEDITOR.env.webkit ? '&nbsp;' : '' ) + '</span>', doc );
19
+ doc[ CKEDITOR.env.ie ? 'getBody' : 'getDocumentElement' ]().append( marker );
20
+
21
+ var height = marker.getDocumentPosition( doc ).y + marker.$.offsetHeight;
22
+ marker.remove();
23
+ scrollable.setStyle( 'overflow-y', overflowY );
24
+ return height;
25
+ }
26
+
27
+ function getScrollable( editor ) {
28
+ var doc = editor.document,
29
+ body = doc.getBody(),
30
+ htmlElement = doc.getDocumentElement();
31
+
32
+ // Quirks mode overflows body, standards overflows document element
33
+ return doc.$.compatMode == 'BackCompat' ? body : htmlElement;
34
+ }
35
+
36
+ var resizeEditor = function( editor ) {
37
+ if ( !editor.window )
38
+ return;
39
+
40
+ var maximize = editor.getCommand( 'maximize' );
41
+ // Disable autogrow when the editor is maximized .(#6339)
42
+ if( maximize && maximize.state == CKEDITOR.TRISTATE_ON )
43
+ return;
44
+
45
+ var scrollable = getScrollable( editor ),
46
+ currentHeight = editor.window.getViewPaneSize().height,
47
+ newHeight = contentHeight( scrollable );
48
+
49
+ // Additional space specified by user.
50
+ newHeight += ( editor.config.autoGrow_bottomSpace || 0 );
51
+
52
+ var min = editor.config.autoGrow_minHeight != undefined ? editor.config.autoGrow_minHeight : 200,
53
+ max = editor.config.autoGrow_maxHeight || Infinity;
54
+
55
+ newHeight = Math.max( newHeight, min );
56
+ newHeight = Math.min( newHeight, max );
57
+
58
+ if ( newHeight != currentHeight ) {
59
+ newHeight = editor.fire( 'autoGrow', { currentHeight: currentHeight, newHeight: newHeight } ).newHeight;
60
+ editor.resize( editor.container.getStyle( 'width' ), newHeight, true );
61
+ }
62
+
63
+ if ( scrollable.$.scrollHeight > scrollable.$.clientHeight && newHeight < max )
64
+ scrollable.setStyle( 'overflow-y', 'hidden' );
65
+ else
66
+ scrollable.removeStyle( 'overflow-y' );
67
+
68
+
69
+ };
70
+
71
+ CKEDITOR.plugins.add( 'autogrow', {
72
+ init: function( editor ) {
73
+
74
+ // This feature is available only for themed ui instance.
75
+ if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE )
76
+ return;
77
+
78
+ editor.on( 'instanceReady', function() {
79
+
80
+ var editable = editor.editable();
81
+
82
+ // Simply set auto height with div wysiwyg.
83
+ if ( editable.isInline() )
84
+ editor.ui.space( 'contents' ).setStyle( 'height', 'auto' );
85
+ // For framed wysiwyg we need to resize the editor.
86
+ else
87
+ {
88
+ editor.addCommand( 'autogrow', {
89
+ exec:resizeEditor,
90
+ modes:{ wysiwyg:1 },
91
+ readOnly: 1,
92
+ canUndo: false,
93
+ editorFocus: false
94
+ } );
95
+
96
+ var eventsList = { contentDom:1,key:1,selectionChange:1,insertElement:1,mode:1 };
97
+ for ( var eventName in eventsList ) {
98
+ editor.on( eventName, function( evt ) {
99
+ // Some time is required for insertHtml, and it gives other events better performance as well.
100
+ if ( evt.editor.mode == 'wysiwyg' ) {
101
+ setTimeout( function() {
102
+ resizeEditor( evt.editor );
103
+ // Second pass to make correction upon
104
+ // the first resize, e.g. scrollbar.
105
+ resizeEditor( evt.editor );
106
+ }, 100 );
107
+ }
108
+ });
109
+ }
110
+
111
+ // Coordinate with the "maximize" plugin. (#9311)
112
+ editor.on( 'afterCommandExec', function( evt ) {
113
+ if ( evt.data.name == 'maximize' && evt.editor.mode == 'wysiwyg' ) {
114
+ if ( evt.data.command.state == CKEDITOR.TRISTATE_ON ) {
115
+ var scrollable = getScrollable( editor );
116
+ scrollable.removeStyle( 'overflow' );
117
+ }
118
+ else
119
+ resizeEditor( editor );
120
+ }
121
+ });
122
+
123
+ editor.config.autoGrow_onStartup && editor.execCommand( 'autogrow' );
124
+ }
125
+ });
126
+ }
127
+ });
128
+ })();
129
+
130
+ /**
131
+ * The minimum height that the editor can reach using the AutoGrow feature.
132
+ *
133
+ * config.autoGrow_minHeight = 300;
134
+ *
135
+ * @since 3.4
136
+ * @cfg {Number} [autoGrow_minHeight=200]
137
+ * @member CKEDITOR.config
138
+ */
139
+
140
+ /**
141
+ * The maximum height that the editor can reach using the AutoGrow feature. Zero means unlimited.
142
+ *
143
+ * config.autoGrow_maxHeight = 400;
144
+ *
145
+ * @since 3.4
146
+ * @cfg {Number} [autoGrow_maxHeight=0]
147
+ * @member CKEDITOR.config
148
+ */
149
+
150
+ /**
151
+ * Whether to have the auto grow happen on editor creation.
152
+ *
153
+ * config.autoGrow_onStartup = true;
154
+ *
155
+ * @since 3.6.2
156
+ * @cfg {Boolean} [autoGrow_onStartup=false]
157
+ * @member CKEDITOR.config
158
+ */
159
+
160
+ /**
161
+ * Extra height in pixel to leave between the bottom boundary of content with document size when auto resizing.
162
+ *
163
+ * @since 3.6.2
164
+ * @cfg {Number} [autoGrow_bottomSpace=0]
165
+ * @member CKEDITOR.config
166
+ */
167
+
168
+ /**
169
+ * Fired when the AutoGrow plugin is about to change the size of the editor.
170
+ *
171
+ * @event autogrow
172
+ * @member CKEDITOR.editor
173
+ * @param {CKEDITOR.editor} editor This editor instance.
174
+ * @param data
175
+ * @param {Number} data.currentHeight The current height of the editor (before resizing).
176
+ * @param {Number} data.newHeight The new height of the editor (after resizing). It can be changed
177
+ * to determine a different height value to be used instead.
178
+ */
@@ -0,0 +1,99 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
4
+ For licensing, see LICENSE.html or http://ckeditor.com/license
5
+ -->
6
+ <html>
7
+ <head>
8
+ <title>AutoGrow Plugin &mdash; CKEditor Sample</title>
9
+ <meta charset="utf-8">
10
+ <script src="../../../ckeditor.js"></script>
11
+ <link rel="stylesheet" href="../../../samples/sample.css">
12
+ <meta name="ckeditor-sample-name" content="AutoGrow plugin">
13
+ <meta name="ckeditor-sample-group" content="Plugins">
14
+ <meta name="ckeditor-sample-description" content="Using the AutoGrow plugin in order to make the editor grow to fit the size of its content.">
15
+ </head>
16
+ <body>
17
+ <h1 class="samples">
18
+ <a href="../../../samples/index.html">CKEditor Samples</a> &raquo; Using AutoGrow Plugin
19
+ </h1>
20
+ <div class="description">
21
+ <p>
22
+ This sample shows how to configure CKEditor instances to use the
23
+ <strong>AutoGrow</strong> (<code>autogrow</code>) plugin that lets the editor window expand
24
+ and shrink depending on the amount and size of content entered in the editing area.
25
+ </p>
26
+ <p>
27
+ In its default implementation the <strong>AutoGrow feature</strong> can expand the
28
+ CKEditor window infinitely in order to avoid introducing scrollbars to the editing area.
29
+ </p>
30
+ <p>
31
+ It is also possible to set a maximum height for the editor window. Once CKEditor
32
+ editing area reaches the value in pixels specified in the
33
+ <code><a class="samples" href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-autoGrow_maxHeight">autoGrow_maxHeight</a></code>
34
+ configuration setting, scrollbars will be added and the editor window will no longer expand.
35
+ </p>
36
+ <p>
37
+ To add a CKEditor instance using the <code>autogrow</code> plugin and its
38
+ <code>autoGrow_maxHeight</code> attribute, insert the following JavaScript call to your code:
39
+ </p>
40
+ <pre class="samples">
41
+ CKEDITOR.replace( '<em>textarea_id</em>', {
42
+ <strong>extraPlugins: 'autogrow',</strong>
43
+ autoGrow_maxHeight: 800,
44
+
45
+ // Remove the Resize plugin as it does not make sense to use it in conjunction with the AutoGrow plugin.
46
+ removePlugins: 'resize'
47
+ });</pre>
48
+ <p>
49
+ Note that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of
50
+ the <code>&lt;textarea&gt;</code> element to be replaced with CKEditor. The maximum height should
51
+ be given in pixels.
52
+ </p>
53
+ </div>
54
+ <form action="../../../samples/sample_posteddata.php" method="post">
55
+ <p>
56
+ <label for="editor1">
57
+ CKEditor using the <code>autogrow</code> plugin with its default configuration:
58
+ </label>
59
+ <textarea cols="80" id="editor1" name="editor1" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
60
+ <script>
61
+
62
+ CKEDITOR.replace( 'editor1', {
63
+ extraPlugins: 'autogrow',
64
+ removePlugins: 'resize'
65
+ });
66
+
67
+ </script>
68
+ </p>
69
+ <p>
70
+ <label for="editor2">
71
+ CKEditor using the <code>autogrow</code> plugin with maximum height set to 400 pixels:
72
+ </label>
73
+ <textarea cols="80" id="editor2" name="editor2" rows="10">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>
74
+ <script>
75
+
76
+ CKEDITOR.replace( 'editor2', {
77
+ extraPlugins: 'autogrow',
78
+ autoGrow_maxHeight: 400,
79
+ removePlugins: 'resize'
80
+ });
81
+
82
+ </script>
83
+ </p>
84
+ <p>
85
+ <input type="submit" value="Submit">
86
+ </p>
87
+ </form>
88
+ <div id="footer">
89
+ <hr>
90
+ <p>
91
+ CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
92
+ </p>
93
+ <p id="copy">
94
+ Copyright &copy; 2003-2013, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
95
+ Knabben. All rights reserved.
96
+ </p>
97
+ </div>
98
+ </body>
99
+ </html>