From: Moritz Bunkus Date: Wed, 1 Mar 2017 12:46:34 +0000 (+0100) Subject: Dateimanagement: Stammdaten: DOM-Elemente bei multiples Tab-Aufrufen nicht duplizieren X-Git-Tag: release-3.5.4~1241 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=69e526ee5cfc3d153f738083b397a000c00c4468;p=kivitendo-erp.git Dateimanagement: Stammdaten: DOM-Elemente bei multiples Tab-Aufrufen nicht duplizieren Der Aufruf des Tabs »Dateianhänge« in den Artikelstammdaten liefert einen Tab aus, in dem der HTML-Code für den Umbenennen-Dialog vorhanden ist (initial versteckt). Ruft man den Dialog dann auf, so verschieb jQuery den in dem Moment im DOM an eine ganz andere Stelle (an den Ende vom ), sodass der Dialog-Code nun nicht mehr innerhalb des
liegt, das für den Tab geladen wurde. Wechselt man nur zu einem anderen Tab und ruft den Tab »Dateianhänge« erneut auf, so wird die bisherige
für den Tab entfernt und neu geladen. Beim Neuladen wird natürlich auch wieder eine Kopie des HTML-Codes für den Dialog mitgeschickt. Die erste Kopie befindet sich zu dem Zeitpunkt aber weiterhin im DOM, weil sie ja kein Kind des ursprünglichen Tab-
s mehr ist. Somit haben wir nun zwei Kopien des HTML-Codes im DOM. Das führt dazu, dass auch die Inputs doppelt vorhanden sind. Es wird dann die falsche Input (nicht die, die der Benutzer*in angezeigt wird) an den Server geschickt. Der Fix sorgt dafür, dass der Dialog beim Schließen wieder an seine ursprüngliche Stelle im DOM verschoben wird. Dadurch wird der beim Neuladen des Tabs zusammen mit dem alten Tab-
sauber entfernt. --- diff --git a/js/kivi.File.js b/js/kivi.File.js index 4bf79ba77..b02d7d0ff 100644 --- a/js/kivi.File.js +++ b/js/kivi.File.js @@ -1,6 +1,8 @@ namespace('kivi.File', function(ns) { ns.rename = function(id,type,file_type,checkbox_class,is_global) { + var $dlg = $('#rename_dialog'); + var parent_id = $dlg.parent("div.ui-tabs-panel").attr('id'); var checkboxes = $('.'+checkbox_class).filter(function () { return $(this).prop('checked'); }); if (checkboxes.size() === 0) { @@ -23,7 +25,12 @@ namespace('kivi.File', function(ns) { dialog: { title: kivi.t8("Rename attachment") , width: 400 , height: 200 - , modal: true } }); + , modal: true + , close: function() { + console.log("Closing, moving to original parent " + parent_id); + $dlg.remove().appendTo('#' + parent_id); + } + } }); return true; }