aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2013-10-23 12:08:20 +0200
committerJoas Schilling <nickvergessen@gmx.de>2013-10-23 12:08:20 +0200
commitd612041cd19d5bea7d08f80a2d952123699aa30e (patch)
treeb57d1193069b8435fda03c4d5da0d395816117b9
parenta7e41b23fd7e7f39b1e37796eca618a59e0cb9be (diff)
parentc810f1934ec1a167f934cf2c1d43f12c851f2fd6 (diff)
downloadforums-d612041cd19d5bea7d08f80a2d952123699aa30e.tar
forums-d612041cd19d5bea7d08f80a2d952123699aa30e.tar.gz
forums-d612041cd19d5bea7d08f80a2d952123699aa30e.tar.bz2
forums-d612041cd19d5bea7d08f80a2d952123699aa30e.tar.xz
forums-d612041cd19d5bea7d08f80a2d952123699aa30e.zip
Merge remote-tracking branch 'Marc/ticket/11916' into develop
* Marc/ticket/11916: [ticket/11916] Remove files from hidden attach list after deletion
-rw-r--r--phpBB/assets/javascript/plupload.js63
1 files changed, 43 insertions, 20 deletions
diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js
index 32ff178896..1befb88eb6 100644
--- a/phpBB/assets/javascript/plupload.js
+++ b/phpBB/assets/javascript/plupload.js
@@ -62,6 +62,47 @@ function phpbb_plupload_clear_params(obj) {
}
}
+/**
+ * Update hidden attachment inputs in posting form
+ * Pre-existing hidden inputs will be removed by comparing the old attachment
+ * data (old_data) to the new attachment data (data) that has been sent back
+ * by plupload.
+ *
+ * @param object form Posting form
+ * @param object data Current attachment_data
+ * @param object old_date Previous attachment_data (before submission)
+ *
+ * @return void
+ */
+phpbb.update_hidden_attachment_inputs = function(form, data, old_data) {
+ // Update already existing hidden inputs
+ for (var i = 0; i < form.length; i++) {
+ if (data.hasOwnProperty(form[i].name)) {
+ form[i].value = data[form[i].name];
+ delete data[form[i].name];
+ } else if (typeof old_data !== 'undefined' && old_data.hasOwnProperty(form[i].name)) {
+ var inputRegex = /\b^[a-z_]+[+[0-9]+]/;
+ var inputName = inputRegex.exec(form[i].name);
+ if (typeof inputName !== 'undefined' && inputName[0] !== '') {
+ $("input[type='hidden'][name^='" + inputName[0] + "']").remove();
+ }
+ }
+ }
+
+ // Append new inputs
+ for (var key in data) {
+ if (!data.hasOwnProperty(key)) {
+ continue;
+ }
+
+ var input = $('<input />')
+ .attr('type', 'hidden')
+ .attr('name', key)
+ .attr('value', data[key]);
+ $(form).append(input);
+ }
+}
+
jQuery(function($) {
$(phpbb.plupload.config.element_hook).pluploadQueue(phpbb.plupload.config);
var uploader = $(phpbb.plupload.config.element_hook).pluploadQueue();
@@ -208,26 +249,7 @@ jQuery(function($) {
var form = $(phpbb.plupload.config.form_hook)[0];
var data = phpbb_plupload_attachment_data_serialize();
- // Update already existing hidden inputs
- for (var i = 0; i < form.length; i++) {
- if (data.hasOwnProperty(form[i].name)) {
- form[i].value = data[form[i].name];
- delete data[form[i].name];
- }
- }
-
- // Append new inputs
- for (var key in data) {
- if (!data.hasOwnProperty(key)) {
- continue;
- }
-
- var input = $('<input />')
- .attr('type', 'hidden')
- .attr('name', key)
- .attr('value', data[key]);
- $(form).append(input);
- }
+ phpbb.update_hidden_attachment_inputs(form, data);
files.forEach(function(file) {
if (file.status !== plupload.DONE) {
@@ -257,6 +279,7 @@ jQuery(function($) {
var done = function(response) {
up.removeFile(file);
plupload.attachment_data = response;
+ phpbb.update_hidden_attachment_inputs(form, phpbb_plupload_attachment_data_serialize(), data);
phpbb_plupload_clear_params(up.settings.multipart_params);
up.settings.multipart_params = $.extend(
up.settings.multipart_params,