/home/ivoiecob/email.hirewise-va.com/modules/MailWebclient/js/Settings.js
'use strict';
var
ko = require('knockout'),
_ = require('underscore'),
Types = require('%PathToCoreWebclientModule%/js/utils/Types.js'),
App = require('%PathToCoreWebclientModule%/js/App.js')
;
module.exports = {
ServerModuleName: 'Mail',
HashModuleName: 'mail',
FetchersServerModuleName: 'MtaConnector',
AliasesServerModuleName: 'CpanelIntegrator',
// from Core module
EnableMultiTenant: false,
// from Mail module
AllowAddAccounts: false,
AllowAutosaveInDrafts: true,
AllowChangeMailQuotaOnMailServer: false,
AllowDefaultAccountForUser: true,
AllowEditDomainsInServer: true,
AllowFetchers: false,
AllowIdentities: false,
AllowAliases: false,
OnlyUserEmailsInIdentities: false,
AllowInsertImage: true,
AllowMultiAccounts: false,
AutoSaveIntervalSeconds: 60,
AllowTemplateFolders: false,
AllowInsertTemplateOnCompose: false,
MaxTemplatesCountOnCompose: 100,
AllowAlwaysRefreshFolders: false,
AutocreateMailAccountOnNewUserFirstLogin: false,
IgnoreImapSubscription: false,
ImageUploadSizeLimit: 0,
AllowUnifiedInbox: true,
AllowScheduledAutoresponder: false,
// from MailWebclient module
AllowAppRegisterMailto: false,
AllowChangeInputDirection: true,
FoldersExpandedByDefault: false,
AllowSpamFolder: true,
AllowAddNewFolderOnMainScreen: false,
ComposeToolbarOrder: ['back', 'send', 'save', 'importance', 'MailSensitivity', 'confirmation', 'OpenPgp'],
DefaultFontName: 'Tahoma',
DefaultFontSize: 3,
AlwaysTryUseImageWhilePasting: true,
AllowHorizontalLineButton: false,
AllowComposePlainText: false,
AllowEditHtmlSource: false,
JoinReplyPrefixes: true,
MailsPerPage: 20,
AllowChangeStarredMessagesSource: false,
StarredMessagesSource: Enums.StarredMessagesSource.InboxOnly,
MaxMessagesBodiesSizeToPrefetch: 50000,
MessageBodyTruncationThreshold: 650000, // in bytes
MessagesSortBy: {},
ShowEmailAsTabName: true,
AllowOtherModulesToReplaceTabsbarHeader: false,
AllowShowMessagesCountInFolderList: false,
showMessagesCountInFolderList: ko.observable(false),
AllowSearchMessagesBySubject: false,
PrefixesToRemoveBeforeSearchMessagesBySubject: [],
AllowHorizontalLayout: false,
HorizontalLayout: false,
HorizontalLayoutByDefault: false,
DisableRtlRendering: false,
AllowQuickReply: false,
AllowQuickSendOnCompose: false,
AllowUserGroupsInComposeAutocomplete: true,
MarkMessageSeenWhenViewing: true,
MarkMessageSeenWhenAnswerForward: false,
UserLoginPartInAccountDropdown: false,
UseMeRecipientForMessages: true,
userMailAccountsCount: ko.observable(0),
mailAccountsEmails: ko.observableArray([]),
ImageResizerOptions: {
"%ModuleName%/ACTION_MAKE_IMAGE_SMALL": "300px",
"%ModuleName%/ACTION_MAKE_IMAGE_MEDIUM": "600px",
"%ModuleName%/ACTION_MAKE_IMAGE_LARGE": "1200px",
"%ModuleName%/ACTION_MAKE_IMAGE_ORIGINAL": ""
},
/**
* Initializes settings from AppData object sections.
*
* @param {Object} oAppData Object contained modules settings.
*/
init: function (oAppData)
{
var
oCoreDataSection = oAppData['Core'],
oAppDataMailSection = oAppData[this.ServerModuleName],
oAppDataMailWebclientSection = oAppData['%ModuleName%'],
oAppDataFetchersSection = oAppData[this.FetchersServerModuleName],
oAppDataAliasesSection = oAppData[this.AliasesServerModuleName]
;
if (!_.isEmpty(oCoreDataSection))
{
this.EnableMultiTenant = Types.pBool(oCoreDataSection.EnableMultiTenant, this.EnableMultiTenant);
}
if (!_.isEmpty(oAppDataMailSection))
{
this.AllowAddAccounts = Types.pBool(oAppDataMailSection.AllowAddAccounts, this.AllowAddAccounts);
this.AllowAutosaveInDrafts = Types.pBool(oAppDataMailSection.AllowAutosaveInDrafts, this.AllowAutosaveInDrafts);
this.AllowChangeMailQuotaOnMailServer = Types.pBool(oAppDataMailSection.AllowChangeMailQuotaOnMailServer, this.AllowChangeMailQuotaOnMailServer);
this.AllowDefaultAccountForUser = Types.pBool(oAppDataMailSection.AllowDefaultAccountForUser, this.AllowDefaultAccountForUser);
this.AllowEditDomainsInServer = Types.pBool(oAppDataMailSection.AllowEditDomainsInServer, this.AllowEditDomainsInServer);
this.AllowIdentities = Types.pBool(oAppDataMailSection.AllowIdentities, this.AllowIdentities);
this.OnlyUserEmailsInIdentities = Types.pBool(oAppDataMailSection.OnlyUserEmailsInIdentities, this.OnlyUserEmailsInIdentities);
this.AllowInsertImage = Types.pBool(oAppDataMailSection.AllowInsertImage, this.AllowInsertImage);
this.AllowMultiAccounts = Types.pBool(oAppDataMailSection.AllowMultiAccounts, this.AllowMultiAccounts);
this.AutoSaveIntervalSeconds = Types.pNonNegativeInt(oAppDataMailSection.AutoSaveIntervalSeconds, this.AutoSaveIntervalSeconds);
this.AllowTemplateFolders = Types.pBool(oAppDataMailSection.AllowTemplateFolders, this.AllowTemplateFolders);
this.AllowInsertTemplateOnCompose = Types.pBool(oAppDataMailSection.AllowInsertTemplateOnCompose, this.AllowInsertTemplateOnCompose);
this.MaxTemplatesCountOnCompose = Types.pPositiveInt(oAppDataMailSection.MaxTemplatesCountOnCompose, this.MaxTemplatesCountOnCompose);
this.AllowAlwaysRefreshFolders = Types.pBool(oAppDataMailSection.AllowAlwaysRefreshFolders, this.AllowAlwaysRefreshFolders);
this.AutocreateMailAccountOnNewUserFirstLogin = Types.pBool(oAppDataMailSection.AutocreateMailAccountOnNewUserFirstLogin, this.AutocreateMailAccountOnNewUserFirstLogin);
this.IgnoreImapSubscription = Types.pBool(oAppDataMailSection.IgnoreImapSubscription, this.IgnoreImapSubscription);
this.ImageUploadSizeLimit = Types.pNonNegativeInt(oAppDataMailSection.ImageUploadSizeLimit, this.ImageUploadSizeLimit);
this.AllowUnifiedInbox = Types.pBool(oAppDataMailSection.AllowUnifiedInbox, this.AllowUnifiedInbox);
this.AllowScheduledAutoresponder = Types.pBool(oAppDataMailSection.AllowScheduledAutoresponder, this.AllowScheduledAutoresponder);
window.Enums.SmtpAuthType = Types.pObject(oAppDataMailSection.SmtpAuthType);
this.MessagesSortBy = _.clone(Types.pObject(oAppDataMailSection.MessagesSortBy, this.MessagesSortBy));
this.MessagesSortBy.Allow = Types.pBool(this.MessagesSortBy.Allow, false);
this.MessagesSortBy.List = Types.pArray(this.MessagesSortBy.List, []);
this.MessagesSortBy.DefaultSortBy = Types.pString(this.MessagesSortBy.DefaultSortBy, 'arrival');
var sOrder = Types.pString(this.MessagesSortBy.DefaultSortOrder, 'desc');
this.MessagesSortBy.DefaultSortOrder = sOrder === 'desc' ? Enums.SortOrder.Desc : Enums.SortOrder.Asc;
}
if (!_.isEmpty(oAppDataMailWebclientSection))
{
this.AllowAppRegisterMailto = Types.pBool(oAppDataMailWebclientSection.AllowAppRegisterMailto, this.AllowAppRegisterMailto);
this.AllowChangeInputDirection = Types.pBool(oAppDataMailWebclientSection.AllowChangeInputDirection, this.AllowChangeInputDirection);
this.FoldersExpandedByDefault = Types.pBool(oAppDataMailWebclientSection.FoldersExpandedByDefault, this.FoldersExpandedByDefault);
this.AllowSpamFolder = Types.pBool(oAppDataMailWebclientSection.AllowSpamFolder, this.AllowSpamFolder);
this.AllowAddNewFolderOnMainScreen = Types.pBool(oAppDataMailWebclientSection.AllowAddNewFolderOnMainScreen, this.AllowAddNewFolderOnMainScreen);
this.ComposeToolbarOrder = Types.pArray(oAppDataMailWebclientSection.ComposeToolbarOrder, this.ComposeToolbarOrder);
this.DefaultFontName = Types.pString(oAppDataMailWebclientSection.DefaultFontName, this.DefaultFontName);
this.DefaultFontSize = Types.pPositiveInt(oAppDataMailWebclientSection.DefaultFontSize, this.DefaultFontSize);
this.AlwaysTryUseImageWhilePasting = Types.pBool(oAppDataMailWebclientSection.AlwaysTryUseImageWhilePasting, this.AlwaysTryUseImageWhilePasting);
this.AllowHorizontalLineButton = Types.pBool(oAppDataMailWebclientSection.AllowHorizontalLineButton, this.AllowHorizontalLineButton);
this.AllowComposePlainText = Types.pBool(oAppDataMailWebclientSection.AllowComposePlainText, this.AllowComposePlainText);
this.AllowEditHtmlSource = Types.pBool(oAppDataMailWebclientSection.AllowEditHtmlSource, this.AllowEditHtmlSource);
this.JoinReplyPrefixes = Types.pBool(oAppDataMailWebclientSection.JoinReplyPrefixes, this.JoinReplyPrefixes);
this.MailsPerPage = Types.pPositiveInt(oAppDataMailWebclientSection.MailsPerPage, this.MailsPerPage);
this.AllowChangeStarredMessagesSource = Types.pBool(oAppDataMailWebclientSection.AllowChangeStarredMessagesSource, this.AllowChangeStarredMessagesSource);
if (this.AllowChangeStarredMessagesSource) {
this.StarredMessagesSource = Types.pEnum(oAppDataMailWebclientSection.StarredMessagesSource, Enums.StarredMessagesSource, Enums.StarredMessagesSource.InboxOnly);
}
this.MaxMessagesBodiesSizeToPrefetch = Types.pNonNegativeInt(oAppDataMailWebclientSection.MaxMessagesBodiesSizeToPrefetch, this.MaxMessagesBodiesSizeToPrefetch);
this.MessageBodyTruncationThreshold = Types.pNonNegativeInt(oAppDataMailWebclientSection.MessageBodyTruncationThreshold, this.MessageBodyTruncationThreshold);
this.ShowEmailAsTabName = Types.pBool(oAppDataMailWebclientSection.ShowEmailAsTabName, this.ShowEmailAsTabName);
this.AllowOtherModulesToReplaceTabsbarHeader = Types.pBool(oAppDataMailWebclientSection.AllowOtherModulesToReplaceTabsbarHeader, this.AllowOtherModulesToReplaceTabsbarHeader);
this.AllowShowMessagesCountInFolderList = Types.pBool(oAppDataMailWebclientSection.AllowShowMessagesCountInFolderList, this.AllowShowMessagesCountInFolderList);
this.showMessagesCountInFolderList(Types.pBool(oAppDataMailWebclientSection.ShowMessagesCountInFolderList, this.showMessagesCountInFolderList()));
this.AllowSearchMessagesBySubject = Types.pBool(oAppDataMailWebclientSection.AllowSearchMessagesBySubject, this.AllowSearchMessagesBySubject);
this.PrefixesToRemoveBeforeSearchMessagesBySubject = Types.pArray(oAppDataMailWebclientSection.PrefixesToRemoveBeforeSearchMessagesBySubject, this.PrefixesToRemoveBeforeSearchMessagesBySubject);
this.AllowHorizontalLayout = Types.pBool(oAppDataMailWebclientSection.AllowHorizontalLayout, this.AllowHorizontalLayout);
this.HorizontalLayoutByDefault = this.AllowHorizontalLayout && Types.pBool(oAppDataMailWebclientSection.HorizontalLayoutByDefault, this.HorizontalLayoutByDefault);
this.HorizontalLayout = this.AllowHorizontalLayout && Types.pBool(oAppDataMailWebclientSection.HorizontalLayout, this.HorizontalLayoutByDefault);
this.DisableRtlRendering = Types.pBool(oAppDataMailWebclientSection.DisableRtlRendering, this.DisableRtlRendering);
this.AllowQuickReply = Types.pBool(oAppDataMailWebclientSection.AllowQuickReply, this.AllowQuickReply);
this.AllowQuickSendOnCompose = Types.pBool(oAppDataMailWebclientSection.AllowQuickSendOnCompose, this.AllowQuickSendOnCompose);
this.AllowUserGroupsInComposeAutocomplete = Types.pBool(oAppDataMailWebclientSection.AllowUserGroupsInComposeAutocomplete, this.AllowUserGroupsInComposeAutocomplete);
this.MarkMessageSeenWhenViewing = Types.pBool(oAppDataMailWebclientSection.MarkMessageSeenWhenViewing, this.MarkMessageSeenWhenViewing);
this.MarkMessageSeenWhenAnswerForward = Types.pBool(oAppDataMailWebclientSection.MarkMessageSeenWhenAnswerForward, this.MarkMessageSeenWhenAnswerForward);
this.UserLoginPartInAccountDropdown = Types.pBool(oAppDataMailWebclientSection.UserLoginPartInAccountDropdown, this.UserLoginPartInAccountDropdown);
this.UseMeRecipientForMessages = Types.pBool(oAppDataMailWebclientSection.UseMeRecipientForMessages, this.UseMeRecipientForMessages);
this.ImageResizerOptions = Types.pObject(oAppDataMailWebclientSection.TextEditorImageResizerOptions, this.ImageResizerOptions);
}
if (!_.isEmpty(oAppDataFetchersSection))
{
this.AllowFetchers = Types.pBool(oAppDataFetchersSection.AllowFetchers, this.AllowFetchers);
}
if (!_.isEmpty(oAppDataAliasesSection))
{
this.AllowAliases = Types.pBool(oAppDataAliasesSection.AllowAliases, this.AllowAliases);
}
App.registerUserAccountsCount(this.userMailAccountsCount);
App.registerAccountsWithPass(this.mailAccountsEmails);
},
/**
* Updates new settings values after saving on server.
*
* @param {object} parameters
*/
update: function (parameters)
{
this.AllowAutosaveInDrafts = Types.pBool(parameters.AllowAutosaveInDrafts, this.AllowAutosaveInDrafts);
this.AllowChangeInputDirection = Types.pBool(parameters.AllowChangeInputDirection, this.AllowChangeInputDirection);
this.MailsPerPage = Types.pPositiveInt(parameters.MailsPerPage, this.MailsPerPage);
this.showMessagesCountInFolderList(Types.pBool(parameters.ShowMessagesCountInFolderList, this.showMessagesCountInFolderList()));
this.StarredMessagesSource = Types.pEnum(parameters.StarredMessagesSource, Enums.StarredMessagesSource, Enums.StarredMessagesSource.InboxOnly);
},
/**
* Updates new admin settings values after saving on server.
*
* @param {boolean} bAutocreateMailAccountOnNewUserFirstLogin
* @param {boolean} bAllowAddAccounts
* @param {boolean} bHorizontalLayoutByDefault
*/
updateAdmin: function (bAutocreateMailAccountOnNewUserFirstLogin, bAllowAddAccounts, bHorizontalLayoutByDefault)
{
this.AutocreateMailAccountOnNewUserFirstLogin = Types.pBool(bAutocreateMailAccountOnNewUserFirstLogin, this.AutocreateMailAccountOnNewUserFirstLogin);
this.AllowAddAccounts = Types.pBool(bAllowAddAccounts, this.AllowAddAccounts);
this.HorizontalLayoutByDefault = Types.pBool(bHorizontalLayoutByDefault, this.HorizontalLayoutByDefault);
},
disableEditDomainsInServer: function ()
{
this.AllowEditDomainsInServer = false;
}
};