From 7f73c2bfb2ad78e8867ba25c1fb1e6848418f6da Mon Sep 17 00:00:00 2001 From: Steven Wittens Date: Wed, 7 Sep 2005 13:49:39 +0000 Subject: [PATCH] Fixes for AJAX/JS stuff in Konqueror: - Fix collapsible fieldsets (broken since to 'IE5 icons alignment' fix) - Fix JS upload (broken due to mysterious form submission abortion bug) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks Bèr for letting me use VNC :). --- misc/drupal.css | 5 ++++- misc/drupal.js | 21 ++++++++++++++++++--- misc/progress.js | 3 ++- misc/upload.js | 6 ++++-- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/misc/drupal.css b/misc/drupal.css index f659c63f6cc..569a6df7bdb 100644 --- a/misc/drupal.css +++ b/misc/drupal.css @@ -619,10 +619,13 @@ html.js fieldset.collapsed legend * { } html.js fieldset.collapsible legend a { padding-left: 15px; - display: block; background: url('menu-expanded.png') 5px 50% no-repeat; } html.js fieldset.collapsed legend a { background-image: url('menu-collapsed.png'); } +// Note: IE-only fix due to '* html' (breaks Konqueror otherwise). +* html.js fieldset.collapsible legend a { + display: block; +} diff --git a/misc/drupal.js b/misc/drupal.js index 4007817c4a2..f685490c3cc 100644 --- a/misc/drupal.js +++ b/misc/drupal.js @@ -108,9 +108,19 @@ function HTTPPost(uri, object, callbackFunction, callbackParameter) { */ function redirectFormButton(uri, button, handler) { // Insert the iframe - var div = document.createElement('div'); - div.innerHTML = ''; - button.parentNode.appendChild(div); + var iframe = document.createElement('iframe'); + with (iframe) { + name = 'redirect-target'; + setAttribute('name', 'redirect-target'); + id = 'redirect-target'; + } + with (iframe.style) { + position = 'absolute'; + height = '1px'; + width = '1px'; + visibility = 'hidden'; + } + document.body.appendChild(iframe); // Trap the button button.onfocus = function() { @@ -119,10 +129,13 @@ function redirectFormButton(uri, button, handler) { var button = this; var action = button.form.action; var target = button.form.target; + // Redirect form submission this.form.action = uri; this.form.target = 'redirect-target'; + handler.onsubmit(); + // Set iframe handler for later window.iframeHandler = function (data) { // Restore form submission @@ -130,6 +143,8 @@ function redirectFormButton(uri, button, handler) { button.form.target = target; handler.oncomplete(data); } + + return true; } } button.onblur = function() { diff --git a/misc/progress.js b/misc/progress.js index b4e4c903904..a2de44e8071 100644 --- a/misc/progress.js +++ b/misc/progress.js @@ -22,7 +22,8 @@ function progressBar(id) { */ progressBar.prototype.setProgress = function (percentage, status) { var divs = this.element.getElementsByTagName('div'); - for (i in divs) { + var div; + for (var i = 0; div = divs[i]; ++i) { if (percentage >= 0) { if (hasClass(divs[i], 'filled')) { divs[i].style.width = percentage + '%'; diff --git a/misc/upload.js b/misc/upload.js index 48f40344819..6437b3175fa 100644 --- a/misc/upload.js +++ b/misc/upload.js @@ -42,8 +42,10 @@ jsUpload.prototype.onsubmit = function () { this.progress.element.style.width = '28em'; this.progress.element.style.height = hide.offsetHeight +'px'; hide.parentNode.insertBefore(this.progress.element, hide); - // Hide file form - hide.style.display = 'none'; + // Hide file form (cannot use display: none, this mysteriously aborts form + // submission in Konqueror) + hide.style.position = 'absolute'; + hide.style.left = '-2000px'; } /**