[pve-devel] [PATCH manager 1/4] ext6migrate: update Ext.ux.IFrame code in Toolkit.js

Dominik Csapak d.csapak at proxmox.com
Fri Feb 26 15:33:43 CET 2016


update to current code from framework
makes it working again

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 www/manager6/Toolkit.js | 65 ++++++++++++++++++++++++++++++-------------------
 1 file changed, 40 insertions(+), 25 deletions(-)

diff --git a/www/manager6/Toolkit.js b/www/manager6/Toolkit.js
index 351cd8b..881e43a 100644
--- a/www/manager6/Toolkit.js
+++ b/www/manager6/Toolkit.js
@@ -122,22 +122,14 @@ Ext.define('Ext.ux.IFrame', {
     src: 'about:blank',
 
     renderTpl: [
-        '<iframe src="{src}" name="{frameName}" width="100%" height="100%" frameborder="0"></iframe>'
+        '<iframe src="{src}" id="{id}-iframeEl" data-ref="iframeEl" name="{frameName}" width="100%" height="100%" frameborder="0"></iframe>'
     ],
+    childEls: ['iframeEl'],
 
     initComponent: function () {
         this.callParent();
 
-       this.frameName = this.frameName || this.id + '-frame';
-
-        this.addEvents(
-            'beforeload',
-            'load'
-        );
-
-        Ext.apply(this.renderSelectors, {
-            iframeEl: 'iframe'
-        });
+        this.frameName = this.frameName || this.id + '-frame';
     },
 
     initEvents : function() {
@@ -190,9 +182,9 @@ Ext.define('Ext.ux.IFrame', {
 
         if (this.rendered) {
             try {
-               doc = this.getDoc();
+                doc = this.getDoc();
                 if (doc) {
-                    Ext.EventManager.removeAll(doc);
+                    Ext.get(doc).un(this._docListeners);
                     if (destroying) {
                         for (prop in doc) {
                             if (doc.hasOwnProperty && doc.hasOwnProperty(prop)) {
@@ -212,32 +204,32 @@ Ext.define('Ext.ux.IFrame', {
 
         if (doc) {
             try {
-                Ext.EventManager.removeAll(doc);
-
                 // These events need to be relayed from the inner document (where they stop
                 // bubbling) up to the outer document. This has to be done at the DOM level so
                 // the event reaches listeners on elements like the document body. The effected
                 // mechanisms that depend on this bubbling behavior are listed to the right
                 // of the event.
-                Ext.EventManager.on(doc, {
-                    mousedown: fn, // menu dismisal (MenuManager) and Window onMouseDown (toFront)
-                    mousemove: fn, // window resize drag detection
-                    mouseup: fn,   // window resize termination
-                    click: fn,     // not sure, but just to be safe
-                    dblclick: fn,  // not sure again
-                    scope: me
-                });
+                Ext.get(doc).on(
+                    me._docListeners = {
+                        mousedown: fn, // menu dismisal (MenuManager) and Window onMouseDown (toFront)
+                        mousemove: fn, // window resize drag detection
+                        mouseup: fn,   // window resize termination
+                        click: fn,     // not sure, but just to be safe
+                        dblclick: fn,  // not sure again
+                        scope: me
+                    }
+                );
             } catch(e) {
                 // cannot do this xss
             }
 
             // We need to be sure we remove all our events from the iframe on unload or we're going to LEAK!
-            Ext.EventManager.on(this.getWin(), 'beforeunload', me.cleanupListeners, me);
+            Ext.get(this.getWin()).on('beforeunload', me.cleanupListeners, me);
 
             this.el.unmask();
             this.fireEvent('load', this);
 
-        } else if(me.src && me.src != '') {
+        } else if (me.src) {
 
             this.el.unmask();
             this.fireEvent('error', this);
@@ -246,6 +238,29 @@ Ext.define('Ext.ux.IFrame', {
 
     },
 
+    onRelayedEvent: function (event) {
+        // relay event from the iframe's document to the document that owns the iframe...
+
+        var iframeEl = this.iframeEl,
+
+            // Get the left-based iframe position
+            iframeXY = iframeEl.getTrueXY(),
+            originalEventXY = event.getXY(),
+
+            // Get the left-based XY position.
+            // This is because the consumer of the injected event will
+            // perform its own RTL normalization.
+            eventXY = event.getTrueXY();
+
+        // the event from the inner document has XY relative to that document's origin,
+        // so adjust it to use the origin of the iframe in the outer document:
+        event.xy = [iframeXY[0] + eventXY[0], iframeXY[1] + eventXY[1]];
+
+        event.injectEvent(iframeEl); // blame the iframe for the event...
+
+        event.xy = originalEventXY; // restore the original XY (just for safety)
+    },
+
     load: function (src) {
         var me = this,
             text = me.loadMask,
-- 
2.1.4





More information about the pve-devel mailing list