From 5e6f6ac5395323cc1c1b93ed6d7f6ce83945b251 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Wed, 30 Sep 2015 13:14:16 -0400
Subject: [PATCH] Fix responses list update issue after response name change (#1490555)
---
program/js/list.js | 35 ++++++++++++++++++++++-------------
CHANGELOG | 1 +
2 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index ec7bfee..33ada2f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,7 @@
- Fix so Installer requires PHP5
- Make brute force attacks harder by re-generating security token on every failed login (#1490549)
- Fix so database_attachments::cleanup() does not remove attachments from other sessions (#1490542)
+- Fix responses list update issue after response name change (#1490555)
RELEASE 1.1.3
-------------
diff --git a/program/js/list.js b/program/js/list.js
index 0dc700e..de2be7a 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -114,7 +114,8 @@
var r, len, rows = this.tbody.childNodes;
for (r=0, len=rows.length; r<len; r++) {
- this.rowcount += this.init_row(rows[r]) ? 1 : 0;
+ if (rows[r].nodeType == 1)
+ this.rowcount += this.init_row(rows[r]) ? 1 : 0;
}
this.init_header();
@@ -150,8 +151,9 @@
var self = this, uid = row.uid;
this.rows[uid] = {uid:uid, id:row.id, obj:row};
- // set eventhandlers to table row (only left-button-clicks in mouseup)
- $(row).mousedown(function(e) { return self.drag_row(e, this.uid); })
+ $(row).data('uid', uid)
+ // set eventhandlers to table row (only left-button-clicks in mouseup)
+ .mousedown(function(e) { return self.drag_row(e, this.uid); })
.mouseup(function(e) {
if (e.which == 1 && !self.drag_active)
return self.click_row(e, this.uid);
@@ -355,10 +357,11 @@
if (row.nodeName === undefined) {
// for performance reasons use DOM instead of jQuery here
var domrow = document.createElement(this.row_tagname());
+
if (row.id) domrow.id = row.id;
+ if (row.uid) domrow.uid = row.uid;
if (row.className) domrow.className = row.className;
if (row.style) $.extend(domrow.style, row.style);
- if (row.uid) $(domrow).data('uid', String(row.uid)); // #1489906
for (var e, domcell, col, i=0; row.cols && i < row.cols.length; i++) {
col = row.cols[i];
@@ -394,18 +397,22 @@
var row = this.rows[id];
if (!row) return false;
- var domrow = row.obj;
- for (var domcell, col, i=0; cols && i < cols.length; i++) {
+ var i, domrow = row.obj;
+ for (i = 0; cols && i < cols.length; i++) {
this.get_cell(domrow, i).html(cols[i]);
}
if (newid) {
delete this.rows[id];
+ domrow.uid = newid;
domrow.id = 'rcmrow' + newid;
this.init_row(domrow);
if (select)
this.selection[0] = newid;
+
+ if (this.last_selected == id)
+ this.last_selected = newid;
}
},
@@ -826,14 +833,16 @@
get_row_uid: function(row)
{
- if (row && row.uid)
- return row.uid;
+ if (!row)
+ return;
- var uid;
- if (row && (uid = $(row).data('uid')))
- row.uid = uid;
- else if (row && String(row.id).match(this.id_regexp))
- row.uid = RegExp.$1;
+ if (!row.uid) {
+ var uid = $(row).data('uid');
+ if (uid)
+ row.uid = uid;
+ else if (String(row.id).match(this.id_regexp))
+ row.uid = RegExp.$1;
+ }
return row.uid;
},
--
Gitblit v1.9.1