jQuery UI fixes für CKEditor in Dialog
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 14 Jan 2014 14:36:08 +0000 (15:36 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 1 Apr 2014 11:12:25 +0000 (13:12 +0200)
SL/Form.pm
js/jquery/fixes.js [new file with mode: 0644]

index a3990f9..0d6e9ae 100644 (file)
@@ -472,7 +472,7 @@ sub header {
 
   $layout->use_javascript("$_.js") for (qw(
     jquery jquery-ui jquery.cookie jquery.checkall jquery.download
-    jquery/jquery.form client_js
+    jquery/jquery.form jquery/fixes client_js
     common part_selection switchmenuframe autocomplete_part
   ), "jquery/ui/i18n/jquery.ui.datepicker-$::myconfig{countrycode}");
 
diff --git a/js/jquery/fixes.js b/js/jquery/fixes.js
new file mode 100644 (file)
index 0000000..ecaad6d
--- /dev/null
@@ -0,0 +1,40 @@
+// Allow CKeditor to work in jQuery dialogs. See
+// http://bugs.jqueryui.com/ticket/9087
+
+$.widget( "ui.dialog", $.ui.dialog, {
+ /*! jQuery UI - v1.10.2 - 2013-12-12
+  *  http://bugs.jqueryui.com/ticket/9087#comment:27 - bugfix
+  *  http://bugs.jqueryui.com/ticket/4727#comment:23 - bugfix
+  *  allowInteraction fix to accommodate windowed editors
+  */
+  _allowInteraction: function( event ) {
+    if ( this._super( event ) ) {
+      return true;
+    }
+
+    // address interaction issues with general iframes with the dialog
+    if ( event.target.ownerDocument != this.document[ 0 ] ) {
+      return true;
+    }
+
+    // address interaction issues with dialog window
+    if ( $( event.target ).closest( ".cke_dialog" ).length ) {
+      return true;
+    }
+
+    // address interaction issues with iframe based drop downs in IE
+    if ( $( event.target ).closest( ".cke" ).length ) {
+      return true;
+    }
+  },
+ /*! jQuery UI - v1.10.2 - 2013-10-28
+  *  http://dev.ckeditor.com/ticket/10269 - bugfix
+  *  moveToTop fix to accommodate windowed editors
+  */
+  _moveToTop: function ( event, silent ) {
+    if ( !event || !this.options.modal ) {
+      this._super( event, silent );
+    }
+  }
+
+});