nextcloud/apps/user_ldap/js/wizard/wizardTabExpert.js

131 lines
3.6 KiB
JavaScript

/**
* Copyright (c) 2015, Arthur Schiwon <blizzz@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*/
OCA = OCA || {};
(function() {
/**
* @classdesc This class represents the view belonging to the expert tab
* in the LDAP wizard.
*/
var WizardTabExpert = OCA.LDAP.Wizard.WizardTabGeneric.subClass({
/**
* initializes the instance. Always call it after initialization.
*
* @param tabIndex
* @param tabID
*/
init: function (tabIndex, tabID) {
this._super(tabIndex, tabID);
var items = {
ldap_expert_username_attr: {
$element: $('#ldap_expert_username_attr'),
setMethod: 'setUsernameAttribute'
},
ldap_expert_uuid_user_attr: {
$element: $('#ldap_expert_uuid_user_attr'),
setMethod: 'setUserUUIDAttribute'
},
ldap_expert_uuid_group_attr: {
$element: $('#ldap_expert_uuid_group_attr'),
setMethod: 'setGroupUUIDAttribute'
},
//Buttons
ldap_action_clear_user_mappings: {
$element: $('#ldap_action_clear_user_mappings')
},
ldap_action_clear_group_mappings: {
$element: $('#ldap_action_clear_group_mappings')
}
};
this.setManagedItems(items);
_.bindAll(this, 'onClearUserMappingsClick', 'onClearGroupMappingsClick');
this.managedItems.ldap_action_clear_user_mappings.$element.click(this.onClearUserMappingsClick);
this.managedItems.ldap_action_clear_group_mappings.$element.click(this.onClearGroupMappingsClick);
},
/**
* Sets the config model for this view and subscribes to some events.
* Also binds the config chooser to the model
*
* @param {OCA.LDAP.Wizard.ConfigModel} configModel
*/
setModel: function(configModel) {
this._super(configModel);
this.configModel.on('configLoaded', this.onConfigLoaded, this);
this.configModel.on('receivedLdapFeature', this.onResultReceived, this);
},
/**
* sets the attribute to be used to create an Nextcloud ID (username)
*
* @param {string} attribute
*/
setUsernameAttribute: function(attribute) {
this.setElementValue(this.managedItems.ldap_expert_username_attr.$element, attribute);
},
/**
* sets the attribute that provides an unique identifier per LDAP user
* entry
*
* @param {string} attribute
*/
setUserUUIDAttribute: function(attribute) {
this.setElementValue(this.managedItems.ldap_expert_uuid_user_attr.$element, attribute);
},
/**
* sets the attribute that provides an unique identifier per LDAP group
* entry
*
* @param {string} attribute
*/
setGroupUUIDAttribute: function(attribute) {
this.setElementValue(this.managedItems.ldap_expert_uuid_group_attr.$element, attribute);
},
/**
* requests clearing of all user mappings
*/
onClearUserMappingsClick: function() {
this.configModel.requestWizard('ldap_action_clear_user_mappings', {ldap_clear_mapping: 'user'});
},
/**
* requests clearing of all group mappings
*/
onClearGroupMappingsClick: function() {
this.configModel.requestWizard('ldap_action_clear_group_mappings', {ldap_clear_mapping: 'group'});
},
/**
* deals with the result of the Test Connection test
*
* @param {WizardTabAdvanced} view
* @param {FeaturePayload} payload
*/
onResultReceived: function(view, payload) {
if(payload.feature === 'ClearMappings') {
var message;
if(payload.data.status === 'success') {
message = t('user_ldap', 'Mappings cleared successfully!');
} else {
message = t('user_ldap', 'Error while clearing the mappings.');
}
OC.Notification.showTemporary(message);
}
}
});
OCA.LDAP.Wizard.WizardTabExpert = WizardTabExpert;
})();