border: false,
listname: undefined, // 'blacklist' or 'whitelist',
+ selModel: 'checkboxmodel',
+
emptyText: gettext('No data in database'),
controller: {
var items = [{
xtype: 'proxmoxtextfield',
name: 'address',
+ minLength: 3,
+ regex: /^[^\,\;\s]*$/, // no whitespace no , and no ;
fieldLabel: gettext("Address")
}];
onRemoveAddress: function() {
var me = this.getView();
- var rec = me.selModel.getSelection()[0];
- if (!rec) {
+ var records = me.selModel.getSelection();
+ if (records.length < 1) {
return;
}
+ var url = '/quarantine/' + me.listname + '/';
+
+ url += records.map(function(rec) {
+ return encodeURIComponent(rec.getId());
+ }).join(',');
+
var params = me.getStore().getProxy().getExtraParams() || {};
- var url = '/quarantine/' + me.listname + '/' + encodeURIComponent(rec.getId());
Proxmox.Utils.API2Request({
url: url + '?' + Ext.Object.toQueryString(params),
text: gettext('Remove'),
disabled: true,
handler: 'onRemoveAddress',
- confirmMsg: function(rec) {
- var me = this;
+ confirmMsg: function() {
+ var me = this.up('gridpanel');
+
+ var selection = me.selModel.getSelection();
+ var text;
+ var param;
+
+ if (selection.length > 1) {
+ text = gettext('Are you sure you want to remove {0} entries');
+ param = selection.length.toString();
+ } else if (selection.length > 0) {
+ var rec = selection[0];
+ var name = rec.getId();
+ text = gettext('Are you sure you want to remove entry {0}');
+ param = "'" + Ext.String.htmlEncode(name) + "'";
+ }
- var name = rec.getId();
- return Ext.String.format(
- gettext('Are you sure you want to remove entry {0}'),
- "'" + Ext.String.htmlEncode(name) + "'");
+ if (text && param) {
+ return Ext.String.format(text, param);
+ }
}
}
],
proxy: {
type: 'proxmox',
url: "/api2/json/quarantine/blacklist"
+ },
+ sorters: {
+ property: 'address'
}
},
proxy: {
type: 'proxmox',
url: "/api2/json/quarantine/whitelist"
+ },
+ sorters: {
+ property: 'address'
}
},