From cd8ed4ff109ec1d5da4d784ea6b2cd1cb42fc2c7 Mon Sep 17 00:00:00 2001 From: Mike Gelfand Date: Thu, 23 Apr 2015 19:30:40 +0000 Subject: [PATCH] #5894: Get rid of eval() in JS code (patch by Ancient; 2nd part) --- web/javascript/dialog.js | 10 ++++------ web/javascript/remote.js | 5 +++-- web/javascript/transmission.js | 16 ++++++++++++---- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/web/javascript/dialog.js b/web/javascript/dialog.js index bdff4c30c..6a9b41219 100644 --- a/web/javascript/dialog.js +++ b/web/javascript/dialog.js @@ -24,8 +24,7 @@ Dialog.prototype = { this._message = $('#dialog_message'); this._cancel_button = $('#dialog_cancel_button'); this._confirm_button = $('#dialog_confirm_button'); - this._callback_function = ''; - this._callback_data = null; + this._callback = null; // Observe the buttons this._cancel_button.bind('click', {dialog: this}, this.onCancelClicked); @@ -58,7 +57,7 @@ Dialog.prototype = { onConfirmClicked: function(event) { var dialog = event.data.dialog; - eval(dialog._callback_function + "(dialog._callback_data)"); + dialog._callback(); dialog.hideDialog(); }, @@ -72,7 +71,7 @@ Dialog.prototype = { * Display a confirm dialog */ confirm: function(dialog_heading, dialog_message, confirm_button_label, - callback_function, callback_data, cancel_button_label) + callback, cancel_button_label) { if (!isMobileDevice) $('.dialog_container').hide(); @@ -81,8 +80,7 @@ Dialog.prototype = { setTextContent(this._cancel_button[0], cancel_button_label || 'Cancel'); setTextContent(this._confirm_button[0], confirm_button_label); this._confirm_button.show(); - this._callback_function = callback_function; - this._callback_data = callback_data; + this._callback = callback; $('body').addClass('dialog_showing'); this._container.show(); transmission.updateButtonStates(); diff --git a/web/javascript/remote.js b/web/javascript/remote.js index 5cb13bed8..472a25d6c 100644 --- a/web/javascript/remote.js +++ b/web/javascript/remote.js @@ -62,8 +62,9 @@ TransmissionRemote.prototype = dialog.confirm('Connection Failed', 'Could not connect to the server. You may need to reload the page to reconnect.', 'Details', - 'alert(remote._error);', - null, + function() { + alert(remote._error); + }, 'Dismiss'); remote._controller.togglePeriodicSessionRefresh(false); }, diff --git a/web/javascript/transmission.js b/web/javascript/transmission.js index bd317db49..6c7c4c667 100644 --- a/web/javascript/transmission.js +++ b/web/javascript/transmission.js @@ -1034,13 +1034,17 @@ Transmission.prototype = var torrent = torrents[0], header = 'Remove ' + torrent.getName() + '?', message = 'Once removed, continuing the transfer will require the torrent file. Are you sure you want to remove it?'; - dialog.confirm(header, message, 'Remove', 'transmission.removeTorrents', torrents); + dialog.confirm(header, message, 'Remove', function() { + transmission.removeTorrents(torrents); + }); } else { var header = 'Remove ' + torrents.length + ' transfers?', message = 'Once removed, continuing the transfers will require the torrent files. Are you sure you want to remove them?'; - dialog.confirm(header, message, 'Remove', 'transmission.removeTorrents', torrents); + dialog.confirm(header, message, 'Remove', function() { + transmission.removeTorrents(torrents); + }); } }, @@ -1051,13 +1055,17 @@ Transmission.prototype = var torrent = torrents[0], header = 'Remove ' + torrent.getName() + ' and delete data?', message = 'All data downloaded for this torrent will be deleted. Are you sure you want to remove it?'; - dialog.confirm(header, message, 'Remove', 'transmission.removeTorrentsAndData', torrents); + dialog.confirm(header, message, 'Remove', function() { + transmission.removeTorrentsAndData(torrents); + }); } else { var header = 'Remove ' + torrents.length + ' transfers and delete data?', message = 'All data downloaded for these torrents will be deleted. Are you sure you want to remove them?'; - dialog.confirm(header, message, 'Remove', 'transmission.removeTorrentsAndData', torrents); + dialog.confirm(header, message, 'Remove', function() { + transmission.removeTorrentsAndData(torrents); + }); } },