瀏覽代碼

HUE-127. Delay filling popups so VML elements work in IE

Marcus McLaughlin 15 年之前
父節點
當前提交
83073eb075

+ 24 - 15
desktop/core/static/js/Source/JFrameRenderers/CCS.JFrame.Alert.js

@@ -34,22 +34,27 @@ CCS.JFrame.addGlobalRenderers({
 		var jframe_renders = popup.hasClass('jframe_renders');
 
 		var target = new Element('div', {'class': 'jframe_alert'}).hide().inject($(this));
-		if (!jframe_renders) {
-			//if we aren't rendering the jframe, fill the popup
-			//and remove the toolbar
-			this.fill(target, content);
-			var toolbar = target.getElements('.toolbar');
-			if (toolbar.length) toolbar.hide();
-		} else {
-			//otherwise we're going to leave the content object alone and clone
-			//the popup, hiding the original
-			this.fill(target, {
-				elements: $$(popup.clone())
-			});
-			popup.hide();
-		}
-		target.show();
+                var fillAndShow = function() {
+                        if (!jframe_renders) {
+                                //if we aren't rendering the jframe, fill the popup
+                                //and remove the toolbar
+                                this.fill(target, content);
+                                var toolbar = content.elements.filter('.toolbar');
+                                if (toolbar.length) toolbar.hide();
+                        } else {
+                                //otherwise we're going to leave the content object alone and clone
+                                //the popup, hiding the original
+                                this.fill(target, {
+                                        elements: $$(popup.clone())
+                                });
+                                popup.hide();
+                        }
+                }.bind(this);
 
+	        if(!Browser.Engine.trident) {
+                        fillAndShow();
+                }
+	
 		//our method to actually show the alert
 		var alerter = function(){
 			if (options.blankWindowWithError) {
@@ -57,6 +62,9 @@ CCS.JFrame.addGlobalRenderers({
 				this.getWindow().hide();
 			} else {
 				var alert = this.alert(content.title, target);
+                                if(Browser.Engine.trident) {
+                                        fillAndShow();
+                                }
 				target.getElements(":widget").each(function(widget) {
 					widget.get("widget").register(widget.getParent(":widget").get("widget"));
 				});
@@ -68,6 +76,7 @@ CCS.JFrame.addGlobalRenderers({
 					}
 				}
 				alert.position().show();
+                                target.show();
 			
 				//if jframe is rendering we remove this event which we're going to add a few lines down
 				if (jframe_renders) this.removeEvent('afterRenderer', alerter);

+ 16 - 6
desktop/core/static/js/Source/JFrameRenderers/CCS.JFrame.Prompt.js

@@ -30,20 +30,30 @@ CCS.JFrame.addGlobalRenderers({
 		//when the user clicks "ok"
 		var popup = content.elements.filter('.prompt_popup')[0];
 		if (!popup) return;
-
 		var target = new Element('div', {'class': 'jframe_prompt'}).hide().inject($(this));
-		this.fill(target, content);
-		target.show();
-		var toolbar = target.getElements('.toolbar');
+                var fillAndShow = function() {
+                        this.fill(target, content);
+                        target.show();
+                }.bind(this);
+                //VML in IE doesn't like being hidden and redisplayed.  Delaying filling and showing the target for IE.
+                if(!Browser.Engine.trident) {
+                        fillAndShow();
+                }
+		var toolbar = content.elements.filter('.toolbar');
 		if (toolbar.length) toolbar.hide();
 
 		var size = this.content.getSize();
-		var form = target.getElement('form');
+		var form = popup.getElement('form');
+                var hasInput = !!popup.getElement('form') && !!popup.getElement('input, textarea, select');
 		var prompt = this.prompt(content.title || 'Enter Details', target, function(){
 			if (form) form.retrieve('form.request').send();
 		}, {
+                        detectInput: !hasInput,
 			resizable: true
 		});
+                if(Browser.Engine.trident) {
+                        fillAndShow();
+                }
 		target.getElements(":widget").each(function(widget) {
 			widget.get("widget").register(widget.getParent(":widget").get("widget"));
 		});
@@ -63,7 +73,7 @@ CCS.JFrame.addGlobalRenderers({
 
 		}
 		if (options.callback) options.callback(data);
+
 		return true;
 	}
-
 });

+ 1 - 1
ext/thirdparty/js/art-widgets.hash

@@ -1 +1 @@
-46bb40455f2be85799ec2575b6fd606937c5f486
+9bbccdd1056faa716874312dff00264293388f1a