File: /home/barbeatleanalyti/public_html/public_html/webmail/modules/Google/js/Settings.js
'use strict';
var
_ = require('underscore'),
ko = require('knockout'),
Types = require('%PathToCoreWebclientModule%/js/utils/Types.js')
;
module.exports = {
ServerModuleName: 'Google',
HashModuleName: 'google',
Connected: false,
EnableModule: false,
Id: '',
Secret: '',
Key: '',
Scopes: [],
/**
* Initializes settings from AppData object sections.
*
* @param {Object} oAppData Object contained modules settings.
*/
init: function (oAppData)
{
var oAppDataSection = _.extend({}, oAppData[this.ServerModuleName] || {}, oAppData['%ModuleName%'] || {});
if (!_.isEmpty(oAppDataSection))
{
this.Connected = Types.pBool(oAppDataSection.Connected, this.Connected);
this.EnableModule = Types.pBool(oAppDataSection.EnableModule, this.EnableModule);
this.Id = Types.pString(oAppDataSection.Id, this.Id);
this.Secret = Types.pString(oAppDataSection.Secret, this.Secret);
this.Key = Types.pString(oAppDataSection.Key, this.Key);
this.Scopes = Types.pArray(oAppDataSection.Scopes, this.Scopes);
}
},
/**
* Returns copy of Scopes with observable Value parameter.
*
* @returns {Array}
*/
getScopesCopy: function ()
{
var aScopesCopy = [];
_.each(this.Scopes, function (oScope) {
aScopesCopy.push({
Description: oScope.Description,
Name: oScope.Name,
Value: ko.observable(oScope.Value)
});
});
return aScopesCopy;
},
/**
* Updates Connected and Scopes parameters.
*
* @param {boolean} bConnected New value of Connected parameter.
* @param {array} aScopes New value of Scopes parameter.
*/
updateScopes: function (bConnected, aScopes)
{
var aNewScopes = [];
_.each(aScopes, function (oScope) {
aNewScopes.push({
Description: oScope.Description,
Name: oScope.Name,
Value: oScope.Value()
});
});
this.Connected = bConnected;
this.Scopes = aNewScopes;
},
/**
* Updates settings that is edited by administrator.
*
* @param {boolean} bEnableModule New value of EnableModule parameter.
* @param {string} sId New value of Id parameter.
* @param {string} sSecret New value of Secret parameter.
* @param {string} sKey New value of Key parameter.
* @param {array} aScopes New value of Scopes parameter.
*/
updateAdmin: function (bEnableModule, sId, sSecret, sKey, aScopes)
{
this.EnableModule = bEnableModule;
this.Id = sId;
this.Secret = sSecret;
this.Key = sKey;
this.Scopes = aScopes;
}
};