Ext.define('PBS.window.ACLEdit', {
    extend: 'Proxmox.window.Edit',
    alias: 'widget.pbsACLAdd',
    mixins: ['Proxmox.Mixin.CBind'],

    onlineHelp: 'user_acl',

    url: '/access/acl',
    method: 'PUT',
    isAdd: true,
    isCreate: true,
    width: 450,

    // caller can give a static path
    path: undefined,

    initComponent: function() {
	let me = this;

	me.items = [];

	me.items.push({
	    xtype: 'pmxDisplayEditField',
	    name: 'path',
	    fieldLabel: gettext('Path'),
	    editConfig: {
		xtype: 'pbsPermissionPathSelector',
		allowBlank: false,
	    },
	    editable: !me.path,
	    value: me.path,
	});

	if (me.aclType === 'user') {
	    me.subject = gettext('User Permission');
	    me.items.push({
		xtype: 'pbsUserSelector',
		name: 'auth-id',
		fieldLabel: gettext('User'),
		allowBlank: false,
	    });
	} else if (me.aclType === 'token') {
	    me.subject = gettext('API Token Permission');
	    me.items.push({
		xtype: 'pbsTokenSelector',
		name: 'auth-id',
		fieldLabel: gettext('API Token'),
		allowBlank: false,
	    });
	}
	me.items.push({
	    xtype: 'pmxRoleSelector',
	    name: 'role',
	    fieldLabel: gettext('Role'),
	    value: 'NoAccess',
	});
	me.items.push({
	    xtype: 'proxmoxcheckbox',
	    name: 'propagate',
	    fieldLabel: gettext('Propagate'),
	    checked: true,
	    uncheckedValue: 0,
	});

	me.callParent();
    },

    getValues: function(dirtyOnly) {
	let me = this;
	let values = me.callParent(arguments);

	if (me.path) {
	    values.path = me.path;
	}
	return values;
    },

});