From 2e2851dc13d73352530dd4495c7e05603b2e520d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 23:38:38 +0200 Subject: Adding upstream version 2.1.2~dev0+20240219. Signed-off-by: Daniel Baumann --- deluge/ui/web/js/deluge-all/AddTrackerWindow.js | 86 +++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 deluge/ui/web/js/deluge-all/AddTrackerWindow.js (limited to 'deluge/ui/web/js/deluge-all/AddTrackerWindow.js') diff --git a/deluge/ui/web/js/deluge-all/AddTrackerWindow.js b/deluge/ui/web/js/deluge-all/AddTrackerWindow.js new file mode 100644 index 0000000..aaf4a3f --- /dev/null +++ b/deluge/ui/web/js/deluge-all/AddTrackerWindow.js @@ -0,0 +1,86 @@ +/** + * Deluge.AddTrackerWindow.js + * + * Copyright (c) Damien Churchill 2009-2010 + * + * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with + * the additional special exception to link portions of this program with the OpenSSL library. + * See LICENSE for more details. + */ +Ext.ns('Deluge'); + +// Custom VType validator for tracker urls +var trackerUrlTest = + /(((^https?)|(^udp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i; +Ext.apply(Ext.form.VTypes, { + trackerUrl: function (val, field) { + return trackerUrlTest.test(val); + }, + trackerUrlText: 'Not a valid tracker url', +}); + +/** + * @class Deluge.AddTrackerWindow + * @extends Ext.Window + */ +Deluge.AddTrackerWindow = Ext.extend(Ext.Window, { + title: _('Add Tracker'), + layout: 'fit', + width: 375, + height: 150, + plain: true, + closable: true, + resizable: false, + constrainHeader: true, + bodyStyle: 'padding: 5px', + buttonAlign: 'right', + closeAction: 'hide', + iconCls: 'x-deluge-edit-trackers', + + initComponent: function () { + Deluge.AddTrackerWindow.superclass.initComponent.call(this); + + this.addButton(_('Cancel'), this.onCancelClick, this); + this.addButton(_('Add'), this.onAddClick, this); + this.addEvents('add'); + + this.form = this.add({ + xtype: 'form', + defaultType: 'textarea', + baseCls: 'x-plain', + labelWidth: 55, + items: [ + { + fieldLabel: _('Trackers:'), + labelSeparator: '', + name: 'trackers', + anchor: '100%', + }, + ], + }); + }, + + onAddClick: function () { + var trackers = this.form.getForm().findField('trackers').getValue(); + trackers = trackers.split('\n'); + + var cleaned = []; + Ext.each( + trackers, + function (tracker) { + if (Ext.form.VTypes.trackerUrl(tracker)) { + cleaned.push(tracker); + } + }, + this + ); + this.fireEvent('add', cleaned); + this.hide(); + this.form.getForm().findField('trackers').setValue(''); + }, + + onCancelClick: function () { + this.form.getForm().findField('trackers').setValue(''); + this.hide(); + }, +}); -- cgit v1.2.3