芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/www/cloud.pulsehost.co.uk/modules/MailWebclient/js/popups/CreateFetcherPopup.js
'use strict'; var _ = require('underscore'), $ = require('jquery'), ko = require('knockout'), TextUtils = require('%PathToCoreWebclientModule%/js/utils/Text.js'), Utils = require('%PathToCoreWebclientModule%/js/utils/Common.js'), Api = require('%PathToCoreWebclientModule%/js/Api.js'), Screens = require('%PathToCoreWebclientModule%/js/Screens.js'), CoreAjax = require('%PathToCoreWebclientModule%/js/Ajax.js'), Popups = require('%PathToCoreWebclientModule%/js/Popups.js'), CAbstractPopup = require('%PathToCoreWebclientModule%/js/popups/CAbstractPopup.js'), CreateFolderPopup = require('modules/%ModuleName%/js/popups/CreateFolderPopup.js'), AccountList = require('modules/%ModuleName%/js/AccountList.js'), MailCache = require('modules/%ModuleName%/js/Cache.js'), Settings = require('modules/%ModuleName%/js/Settings.js'), CServerPropertiesView = require('modules/%ModuleName%/js/views/CServerPropertiesView.js') ; /** * @constructor */ function CCreateFetcherPopup() { CAbstractPopup.call(this); this.iAccountId = 0; this.loading = ko.observable(false); this.newFolderCreating = ko.observable(false); this.incomingLogin = ko.observable(''); this.incomingPassword = ko.observable(''); this.oIncoming = new CServerPropertiesView(110, 995, 'fectcher_add_incoming', TextUtils.i18n('%MODULENAME%/LABEL_POP3_SERVER')); this.folder = ko.observable(''); this.options = ko.observableArray([]); MailCache.folderList.subscribe(function () { this.populateOptions(); }, this); this.addNewFolderCommand = Utils.createCommand(this, this.onAddNewFolderClick); this.leaveMessagesOnServer = ko.observable(false); this.loginIsSelected = ko.observable(false); this.passwordIsSelected = ko.observable(false); this.defaultOptionsAfterRender = Utils.defaultOptionsAfterRender; } _.extendOwn(CCreateFetcherPopup.prototype, CAbstractPopup.prototype); CCreateFetcherPopup.prototype.PopupTemplate = '%ModuleName%_Settings_CreateFetcherPopup'; CCreateFetcherPopup.prototype.onOpen = function (iAccountId) { this.iAccountId = iAccountId; this.bShown = true; this.populateOptions(); this.incomingLogin(''); this.incomingPassword(''); this.oIncoming.clear(); this.folder(''); this.leaveMessagesOnServer(true); }; CCreateFetcherPopup.prototype.populateOptions = function () { if (this.bShown) { this.options(MailCache.folderList().getOptions('', true, false, false)); } }; CCreateFetcherPopup.prototype.onClose = function () { this.bShown = false; }; CCreateFetcherPopup.prototype.save = function () { if (this.isEmptyRequiredFields()) { Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_REQUIRED_FIELDS_EMPTY')); } else { var oParameters = { 'AccountId': this.iAccountId, 'Folder': this.folder(), 'IncomingServer': this.oIncoming.server(), 'IncomingPort': this.oIncoming.getIntPort(), 'IncomingUseSsl': this.oIncoming.ssl(), 'IncomingLogin': $.trim(this.incomingLogin()), 'IncomingPassword': $.trim(this.incomingPassword()), 'LeaveMessagesOnServer': this.leaveMessagesOnServer() } ; this.loading(true); CoreAjax.send(Settings.FetchersServerModuleName, 'CreateFetcher', oParameters, this.onCreateFetcherResponse, this); } }; /** * @param {Object} oResponse * @param {Object} oRequest */ CCreateFetcherPopup.prototype.onCreateFetcherResponse = function (oResponse, oRequest) { this.loading(false); if (!oResponse.Result) { Api.showErrorByCode(oResponse, TextUtils.i18n('COREWEBCLIENT/ERROR_UNKNOWN')); } else { AccountList.populateFetchers(); this.closePopup(); } }; CCreateFetcherPopup.prototype.cancelPopup = function () { if (!this.newFolderCreating()) { this.closePopup(); } }; CCreateFetcherPopup.prototype.isEmptyRequiredFields = function () { switch ('') { case this.oIncoming.server(): this.oIncoming.server.focused(true); return true; case $.trim(this.incomingLogin()): this.loginIsSelected(true); return true; case $.trim(this.incomingPassword()): this.passwordIsSelected(true); return true; default: return false; } }; CCreateFetcherPopup.prototype.onAddNewFolderClick = function () { this.newFolderCreating(true); Popups.showPopup(CreateFolderPopup, [_.bind(this.chooseFolderInList, this)]); }; /** * @param {string} sFolderName * @param {string} sParentFullName */ CCreateFetcherPopup.prototype.chooseFolderInList = function (sFolderName, sParentFullName) { var sDelimiter = MailCache.folderList().sDelimiter, aFolder = [] ; if (sFolderName !== '' && sParentFullName !== '') { this.options(MailCache.folderList().getOptions('', true, false, false)); _.each(this.options(), _.bind(function (oOption) { if (sFolderName === oOption.name) { aFolder = oOption.fullName.split(sDelimiter); aFolder.pop(); if (sParentFullName === aFolder.join(sDelimiter)) { this.folder(oOption.fullName); } } }, this)); } this.newFolderCreating(false); }; module.exports = new CCreateFetcherPopup();