snappymail/dev/Admin/Contacts.js
2013-12-10 04:40:21 +04:00

102 lines
2.7 KiB
JavaScript

/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
function AdminContacts()
{
// var oData = RL.data();
this.contactsSupported = !!RL.settingsGet('ContactsIsSupported');
this.enableContacts = ko.observable(!!RL.settingsGet('ContactsEnable'));
this.pdoDsn = ko.observable(RL.settingsGet('ContactsPdoDsn'));
this.pdoUser = ko.observable(RL.settingsGet('ContactsPdoUser'));
this.pdoPassword = ko.observable(RL.settingsGet('ContactsPdoPassword'));
this.pdoDsnTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
this.pdoUserTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
this.pdoPasswordTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
this.testing = ko.observable(false);
this.testContactsSuccess = ko.observable(false);
this.testContactsError = ko.observable(false);
this.testContactsCommand = Utils.createCommand(this, function () {
this.testContactsSuccess(false);
this.testContactsError(false);
this.testing(true);
RL.remote().testContacts(this.onTestContactsResponse, {
'ContactsPdoDsn': this.pdoDsn(),
'ContactsPdoUser': this.pdoUser(),
'ContactsPdoPassword': this.pdoPassword()
});
}, function () {
return '' !== this.pdoDsn() && '' !== this.pdoUser();
});
this.onTestContactsResponse = _.bind(this.onTestContactsResponse, this);
}
Utils.addSettingsViewModel(AdminContacts, 'AdminSettingsContacts', 'Contacts', 'contacts');
AdminContacts.prototype.onTestContactsResponse = function (sResult, oData)
{
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
this.testContactsSuccess(true);
}
else
{
this.testContactsError(true);
}
this.testing(false);
};
AdminContacts.prototype.onShow = function ()
{
this.testContactsSuccess(false);
this.testContactsError(false);
};
AdminContacts.prototype.onBuild = function ()
{
var self = this;
_.delay(function () {
var
f1 = Utils.settingsSaveHelperSimpleFunction(self.pdoDsnTrigger, self),
f2 = Utils.settingsSaveHelperSimpleFunction(self.pdoUserTrigger, self),
f3 = Utils.settingsSaveHelperSimpleFunction(self.pdoPasswordTrigger, self)
;
self.enableContacts.subscribe(function (bValue) {
RL.remote().saveAdminConfig(null, {
'ContactsEnable': bValue ? '1' : '0'
});
});
self.pdoDsn.subscribe(function (sValue) {
RL.remote().saveAdminConfig(f1, {
'ContactsPdoDsn': Utils.trim(sValue)
});
});
self.pdoUser.subscribe(function (sValue) {
RL.remote().saveAdminConfig(f2, {
'ContactsPdoUser': Utils.trim(sValue)
});
});
self.pdoPassword.subscribe(function (sValue) {
RL.remote().saveAdminConfig(f3, {
'ContactsPdoPassword': Utils.trim(sValue)
});
});
}, 50);
};