CTwoFactorAuthSettingsFormView.prototype.onValidatingPinResponse = function (Response) { this.isValidatingPin(false); if(Response && Response.Result) { this.QRCodeSrc(''); this.secret(''); this.pin(''); this.isShowSecret(false); this.isEnabledTwoFactorAuth(true); } else { Screens.showError(TextUtils.i18n('%MODULENAME%/ERROR_WRONG_PIN')); } };
this.browserTitle = ko.computed(function () { return AccountList.getEmail() + ' - ' + TextUtils.i18n('%MODULENAME%/HEADING_BROWSER_TAB'); });
CFilesView.prototype.moveItems = function (sMethod, oFolder, aChecked) { if (this.bPublic) { return false; } var sFromPath = '', sFromStorageType = '', bFromAllSame = true, bFolderIntoItself = false, sToPath = oFolder instanceof CFolderModel ? oFolder.fullPath() : '', aItems = [], sStorageType = oFolder ? (oFolder instanceof CFolderModel ? oFolder.storageType() : oFolder.type) : this.storageType(), oToStorage = this.getStorageByType(sStorageType), oFromStorage = this.getStorageByType(this.storageType()), bSameStorage = oToStorage.type === oFromStorage.type, iUsed = this.used(), iQuota = this.quota(), bAllowMove = true ; if (bSameStorage || !bSameStorage && !oToStorage.isExternal && !oFromStorage.isExternal) { if (oToStorage.type === Enums.FileStorageType.Personal && oFromStorage.type !== Enums.FileStorageType.Personal) { bAllowMove = _.every(aChecked, function (oItem) { if (oItem instanceof CFileModel) { if (iQuota > 0 && iUsed + oItem.size() > iQuota) { return false; } iUsed = iUsed + oItem.size(); } return true; }); if (!bAllowMove) { Popups.showPopup(AlertPopup, [TextUtils.i18n('%MODULENAME%/ERROR_CANT_MOVE_FILES_QUOTA_PLURAL', {}, '', aChecked.length)]); return false; } } _.each(aChecked, _.bind(function (oItem) { if (sFromPath !== '' && sFromPath !== oItem.path() || sFromStorageType !== '' && sFromStorageType !== oItem.storageType()) { bFromAllSame = false; } sFromPath = oItem.path(); sFromStorageType = oItem.storageType(); bFolderIntoItself = oItem instanceof CFolderModel && sToPath === sFromPath + '/' + oItem.id(); if (!bFolderIntoItself) { if (sMethod === 'Move') { if (oItem instanceof CFileModel) { this.deleteFileByName(oItem.id()); } else { this.deleteFolderByName(oItem.fileName()); } } aItems.push({ 'FromType': sFromStorageType, 'FromPath': sFromPath, 'Name': oItem.id(), 'IsFolder': oItem instanceof CFolderModel }); } }, this)); if (aItems.length > 0) { if (!bFromAllSame) { sFromStorageType = ''; sFromPath = ''; } Ajax.send(sMethod, { 'FromType': sFromStorageType, 'ToType': sStorageType, 'FromPath': sFromPath, 'ToPath': sToPath, 'Files': aItems }, this.onMoveResponse, this); if (oFolder instanceof CFolderModel) { oFolder.recivedAnim(true); } return true; } } return false; };
CFilesView.prototype.onFileUploadComplete = function (sFileUid, bResponseReceived, oResult) { if (this.searchPattern() === '') { var oFile = this.getUploadFileByUid(sFileUid), bRequestFiles = false ; if (oFile) { oFile.onUploadComplete(sFileUid, bResponseReceived, oResult); this.deleteUploadFileByUid(sFileUid); if (oFile.uploadError()) { this.uploadError(true); if (oResult && oResult.ErrorCode === Enums.Errors.CanNotUploadFileQuota) { Popups.showPopup(AlertPopup, [TextUtils.i18n('COREWEBCLIENT/ERROR_CANT_UPLOAD_FILE_QUOTA')]); bRequestFiles = true; } else if (oResult && oResult.ErrorCode === Enums.Errors.FileAlreadyExists) { bRequestFiles = true; Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_FILE_ALREADY_EXISTS')); } else if (oResult && oResult.ErrorCode === Enums.Errors.FileNotFound) { bRequestFiles = true; Screens.showError(TextUtils.i18n('COREWEBCLIENT/ERROR_FILE_NOT_FOUND')); } else { Screens.showError(oFile.statusText()); } } else { if (oFile.path() === this.currentPath() && oFile.storageType() === this.storageType()) { this.files.push(oFile); } if (this.uploadingFiles().length === 0) { Screens.showReport(TextUtils.i18n('COREWEBCLIENT/REPORT_UPLOAD_COMPLETE')); bRequestFiles = true; } } } else { bRequestFiles = true; } if (bRequestFiles) { this.routeFiles(this.storageType(), this.currentPath(), this.searchPattern(), true); } } };
/** * @constructor * @param {boolean=} bPopup = false */ function CFilesView(bPopup) { CAbstractScreenView.call(this, '%ModuleName%'); this.browserTitle = ko.observable(TextUtils.i18n('%MODULENAME%/HEADING_BROWSER_TAB')); this.bAllowSendEmails = _.isFunction(ComposeMessageWithAttachments); this.error = ko.observable(false); this.loaded = ko.observable(false); this.bPublic = App.isPublic(); this.storages = ko.observableArray([]); this.folders = ko.observableArray(); this.files = ko.observableArray(); this.uploadingFiles = ko.observableArray(); this.rootPath = ko.observable(this.bPublic ? Settings.PublicFolderName : TextUtils.i18n('%MODULENAME%/LABEL_PERSONAL_STORAGE')); this.storageType = ko.observable(Enums.FileStorageType.Personal); this.storageDisplayName = ko.computed(function () { var oStorage = this.getStorageByType(this.storageType()); return oStorage ? oStorage.displayName : ''; }, this); this.storageType.subscribe(function () { if (this.bPublic) { this.rootPath(Settings.PublicFolderName); } else { var oStorage = this.getStorageByType(this.storageType()); if (oStorage) { this.rootPath(oStorage.displayName); } else if (this.storageType() === 'corporate') { this.rootPath(TextUtils.i18n('%MODULENAME%/LABEL_CORPORATE_STORAGE')); } this.selector.listCheckedAndSelected(false); } }, this); this.pathItems = ko.observableArray(); this.currentPath = ko.observable(''); this.dropPath = ko.observable(''); ko.computed(function () { this.dropPath(this.currentPath()); }, this); this.filesCollection = ko.computed(function () { var aFiles = _.union(this.files(), this.getUploadingFiles()); aFiles.sort(function(left, right) { return left.fileName() === right.fileName() ? 0 : (left.fileName() < right.fileName() ? -1 : 1); }); return aFiles; }, this); this.collection = ko.computed(function () { return _.union(this.folders(), this.filesCollection()); }, this); this.columnCount = ko.observable(1); this.selector = new CSelector(this.collection, _.bind(this.onItemSelect, this), _.bind(this.onItemDelete, this), _.bind(this.onItemDblClick, this), _.bind(this.onEnter, this), this.columnCount, true, true, true); this.firstSelectedFile = ko.computed(function () { return _.find(this.selector.listCheckedAndSelected(), function (oItem) { return oItem instanceof CFileModel; }); }, this); this.selectedCount = ko.computed(function () { return this.selector.listCheckedAndSelected().length; }, this); this.searchPattern = ko.observable(''); this.newSearchPattern = ko.observable(''); this.isSearchFocused = ko.observable(false); this.checkedReadyForOperations = ko.computed(function () { var aItems = this.selector.listCheckedAndSelected() || []; return aItems.every(function (oItem) { return !(oItem.uploaded !== undefined && oItem.uploaded() === false || oItem.downloading !== undefined && oItem.downloading() === true); }); }, this); this.renameCommand = Utils.createCommand(this, this.executeRename, function () { return this.checkedReadyForOperations() && this.selector.listCheckedAndSelected().length === 1 && !this.isDisabledRenameButton(); }); this.deleteCommand = Utils.createCommand(this, this.executeDelete, function () { return this.checkedReadyForOperations() && this.selector.listCheckedAndSelected().length > 0 && !this.isDisabledDeleteButton(); }); this.downloadCommand = Utils.createCommand(this, this.executeDownload, function () { if (this.checkedReadyForOperations()) { var oFile = this.getFileIfOnlyOneSelected(); return !!oFile && oFile.hasAction('download'); } return false; }); this.shareCommand = Utils.createCommand(this, this.executeShare, function () { var aItems = this.selector.listCheckedAndSelected(); return this.checkedReadyForOperations() && 1 === aItems.length && (!aItems[0].bIsLink); }); this.sendCommand = Utils.createCommand(this, this.executeSend, function () { if (this.checkedReadyForOperations()) { var aItems = this.selector.listCheckedAndSelected(), aFileItems = _.filter(aItems, function (oItem) { return oItem instanceof CFileModel; }, this) ; return (aFileItems.length > 0); } return false; }); this.uploaderButton = ko.observable(null); this.uploaderArea = ko.observable(null); this.bDragActive = ko.observable(false); this.bDragActiveComp = ko.computed(function () { var bDrag = this.bDragActive(); return bDrag && this.searchPattern() === ''; }, this); this.bAllowDragNDrop = false; this.uploadError = ko.observable(false); this.quota = ko.observable(0); this.used = ko.observable(0); this.quotaDesc = ko.observable(''); this.quotaProc = ko.observable(-1); ko.computed(function () { if (!UserSettings.ShowQuotaBar) { return true; } var iQuota = this.quota(), iUsed = this.used(), iProc = 0 < iQuota ? Math.ceil((iUsed / iQuota) * 100) : -1 ; iProc = 100 < iProc ? 100 : iProc; this.quotaProc(iProc); this.quotaDesc(-1 < iProc ? TextUtils.i18n('COREWEBCLIENT/INFO_QUOTA', { 'PROC': iProc, 'QUOTA': TextUtils.getFriendlySize(iQuota) }) : '') ; if (UserSettings.QuotaWarningPerc > 0 && iProc !== -1 && UserSettings.QuotaWarningPerc > (100 - iProc)) { Screens.showError(TextUtils.i18n('COREWEBCLIENT/WARNING_QUOTA_ALMOST_REACHED'), true); } }, this); this.dragover = ko.observable(false); this.loading = ko.observable(false); this.loadedFiles = ko.observable(false); this.fileListInfoText = ko.computed(function () { var sInfoText = ''; if (this.loading()) { sInfoText = TextUtils.i18n('COREWEBCLIENT/INFO_LOADING'); } else if (this.loadedFiles()) { if (this.collection().length === 0) { if (this.searchPattern() !== '') { sInfoText = TextUtils.i18n('%MODULENAME%/INFO_NOTHING_FOUND'); } else { if (this.currentPath() !== '' || this.bInPopup || this.bPublic) { sInfoText = TextUtils.i18n('%MODULENAME%/INFO_FOLDER_IS_EMPTY'); } else if (this.bAllowDragNDrop) { sInfoText = TextUtils.i18n('%MODULENAME%/INFO_DRAGNDROP_FILES_OR_CREATE_FOLDER'); } } } } else if (this.error()) { sInfoText = TextUtils.i18n('%MODULENAME%/ERROR_FILES_NOT_RECEIVED'); } return sInfoText; }, this); this.dragAndDropHelperBound = _.bind(this.dragAndDropHelper, this); this.bInPopup = !!bPopup; this.isCurrentStorageExternal = ko.computed(function () { var oStorage = this.getStorageByType(this.storageType()); return (oStorage && oStorage.isExternal); }, this); this.timerId = null; var oParams = { 'View': this, 'TemplateName': '%ModuleName%_ItemsView' }; this.itemsViewTemplate = ko.observable(oParams.TemplateName); App.broadcastEvent('Files::ChangeItemsView', oParams); this.addToolbarButtons = ko.observableArray([]); App.subscribeEvent('Files::ShowList', _.bind(function (oParams) { if (oParams.Item) { this.routeFiles(oParams.Item.storageType(), oParams.Item.fullPath()); } }, this)); App.broadcastEvent('%ModuleName%::ConstructView::after', {'Name': this.ViewConstructorName, 'View': this}); ConfirmPopup.opened.subscribe(_.bind(function() { if (this.shown()) { this.selector.useKeyboardKeys(true); } }, this)); this.createFolderButtonModules = ko.observableArray([]); //list of modules that disable "create folder" button this.renameButtonModules = ko.observableArray([]); //list of modules that disable "rename" button this.deleteButtonModules = ko.observableArray([]); //list of modules that disable "delete" button this.shortcutButtonModules = ko.observableArray([]); //list of modules that disable "shortcut" button this.isDisabledCreateFolderButton = ko.computed(function () { return this.createFolderButtonModules().length > 0; }, this); this.isDisabledRenameButton = ko.computed(function () { return this.renameButtonModules().length > 0; }, this); this.isDisabledDeleteButton = ko.computed(function () { return this.deleteButtonModules().length > 0; }, this); this.isDisabledShortcutButton = ko.computed(function () { return this.shortcutButtonModules().length > 0; }, this); this.createFolderCommand = Utils.createCommand(this, this.executeCreateFolder, function () { return !this.isDisabledCreateFolderButton(); }); this.createShortcutCommand = Utils.createCommand(this, this.executeCreateShortcut, function () { return !this.isDisabledShortcutButton(); }); }
this.signInButtonText = ko.computed(function () { return this.loading() ? TextUtils.i18n('COREWEBCLIENT/ACTION_SIGN_IN_IN_PROGRESS') : TextUtils.i18n('COREWEBCLIENT/ACTION_SIGN_IN'); }, this);
start: function (ModulesManager) { ModulesManager.run('SettingsWebclient', 'registerSettingsTab', [function () { return require('modules/%ModuleName%/js/views/OutlookSyncSettingsPaneView.js'); }, Settings.HashModuleName, TextUtils.i18n('%MODULENAME%/LABEL_SETTINGS_TAB')]); }
CEditEventPopup.prototype.onSaveClick = function () { if (this.subject() === '') { Popups.showPopup(AlertPopup, [TextUtils.i18n('%MODULENAME%/ERROR_SUBJECT_BLANK'), _.bind(function () { this.subjectFocus(true); }, this)]); } else { if (this.callbackSave) { var iPeriod = Types.pInt(this.repeatPeriod()), sDate = '', iUnixDate = null, iInterval = 0, oStart = moment(this.getDateTime(this.startDom(), this.startTime())), oEnd = moment(this.getDateTime(this.endDom(), this.endTime())), oEventData = { calendarId: this.calendarId(), newCalendarId: this.selectedCalendarId(), id: this.id(), uid: this.uid(), recurrenceId: this.recurrenceId(), allEvents: this.allEvents(), subject: this.subject(), title: CalendarUtils.getTitleForEvent(this.subject(), this.description()), allDay: this.allDay(), location: this.location(), description: this.description(), alarms: this.getAlarmsArray(this.displayedAlarms()), attendees: this.attendees(), owner: this.owner(), modified: this.modified, type: this.eventType(), status: this.status(), withDate: this.withDate() }, iAlways = Types.pInt(this.always()) ; if (this.allDay()) { oEnd.add(1, 'days'); } oEventData.start = oStart; oEventData.end = oEnd; if (iPeriod) { sDate = this.repeatEndDom().datepicker('getDate'); iUnixDate = sDate ? moment(sDate).unix() : null; iInterval = this.repeatInterval(); if (iPeriod === Enums.CalendarRepeatPeriod.Daily && iAlways === Enums.CalendarAlways.Disable) { oEventData.rrule = { byDays: [], count: null, end: 2, interval: 1, period: iPeriod, until: iUnixDate, weekNum: null }; } else if (iPeriod === Enums.CalendarRepeatPeriod.Weekly && iAlways === Enums.CalendarAlways.Disable) { this.setDayOfWeek(); oEventData.rrule = { byDays: this.getDays(), count: null, end: 2, interval: iInterval, period: iPeriod, until: iUnixDate, weekNum: null }; } else if (iPeriod === Enums.CalendarRepeatPeriod.Monthly) { oEventData.rrule = { byDays: [], count: null, end: 0, interval: 1, period: iPeriod, until: null, weekNum: null }; } else if (iPeriod === Enums.CalendarRepeatPeriod.Yearly) { oEventData.rrule = { byDays: [], count: null, end: 0, interval: 1, period: iPeriod, until: null, weekNum: null }; } else if (iPeriod === Enums.CalendarRepeatPeriod.Daily && iAlways === Enums.CalendarAlways.Enable) { oEventData.rrule = { byDays: [], count: null, end: 3, interval: 1, period: iPeriod, until: iUnixDate, weekNum: null }; } else if (iPeriod === Enums.CalendarRepeatPeriod.Weekly && iAlways === Enums.CalendarAlways.Enable) { this.setDayOfWeek(); oEventData.rrule = { byDays: this.getDays(), count: null, end: 3, interval: iInterval, period: iPeriod, until: iUnixDate, weekNum: null }; } } this.callbackSave(oEventData); } this.closePopup(); } };
/** * @constructor */ function CEditEventPopup() { CAbstractPopup.call(this); this.modified = false; this.isPublic = App.isPublic(); this.isEditable = ko.observable(false); this.isEditableReminders = ko.observable(false); this.selectedCalendarIsShared = ko.observable(false); this.selectedCalendarIsEditable = ko.observable(false); this.callbackSave = null; this.callbackDelete = null; this.timeFormatMoment = 'HH:mm'; this.dateFormatMoment = 'MM/DD/YYYY'; this.dateFormatDatePicker = 'mm/dd/yy'; this.ampmTimeFormat = ko.observable(false); this.calendarId = ko.observable(null); this.id = ko.observable(null); this.uid = ko.observable(null); this.recurrenceId = ko.observable(null); this.allEvents = ko.observable(Enums.CalendarEditRecurrenceEvent.AllEvents); this.isMyEvent = ko.observable(false); this.startDom = ko.observable(null); this.endDom = ko.observable(null); this.repeatEndDom = ko.observable(null); this.yearlyDayText = ko.observable(''); this.monthlyDayText = ko.observable(''); this.subject = ko.observable('').extend({'disableLinebreaks': true}); this.description = ko.observable(''); this.lockSelectStartEndDate = ko.observable(false); this.startDate = ko.observable(''); this.startTime = ko.observable(''); this.startTime.subscribe(function () { this.selectStartDate(); }, this); this.allDay = ko.observable(false); this.allDay.subscribe(function () { if (!this.allDay()) { this.setActualTime(); } }, this); this.endDate = ko.observable(''); this.endTime = ko.observable(''); this.endTime.subscribe(function () { this.selectEndDate(); }, this); this.repeatEndDate = ko.observable(''); this.isEvOneDay = ko.observable(true); this.isEvOneTime = ko.observable(true); this.isRepeat = ko.observable(false); this.location = ko.observable('').extend({'disableLinebreaks': true}); this.repeatPeriodOptions = ko.observableArray(this.getDisplayedPeriods()); this.repeatWeekIntervalOptions = ko.observableArray([1, 2, 3, 4]); this.defaultAlarms = ko.observableArray([5, 10, 15, 30, 60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 1080, 1440, 2880, 4320, 5760, 10080, 20160]); this.alarmOptions = ko.observableArray([]); this.timeOptions = ko.observableArray(CalendarUtils.getTimeListStepHalfHour((UserSettings.timeFormat() !== Enums.TimeFormat.F24) ? 'hh:mm A' : 'HH:mm')); UserSettings.timeFormat.subscribe(function () { this.timeOptions(CalendarUtils.getTimeListStepHalfHour((UserSettings.timeFormat() !== Enums.TimeFormat.F24) ? 'hh:mm A' : 'HH:mm')); }, this); this.displayedAlarms = ko.observableArray([]); this.displayedAlarms.subscribe(function () { this.disableAlarms(); }, this); this.excluded = ko.observable(false); this.repeatPeriod = ko.observable(Enums.CalendarRepeatPeriod.None); this.repeatPeriod.subscribe(function (iRepeatPeriod) { this.setDayOfWeek(); this.isRepeat(!!iRepeatPeriod); }, this); this.repeatInterval = ko.observable(1); this.repeatCount = ko.observable(null); this.repeatWeekNum = ko.observable(null); this.weekMO = ko.observable(false); this.weekTU = ko.observable(false); this.weekWE = ko.observable(false); this.weekTH = ko.observable(false); this.weekFR = ko.observable(false); this.weekSA = ko.observable(false); this.weekSU = ko.observable(false); this.always = ko.observable(1); this.appointment = ko.observable(false); this.attendees = ko.observableArray([]); this.attenderStatus = ko.observable(0); this.owner = ko.observable(''); this.ownerName = ko.observable(''); this.recivedAnim = ko.observable(false).extend({'autoResetToFalse': 500}); this.whomAnimate = ko.observable(''); this.guestAutocompleteItem = ko.observable(null); this.guestAutocomplete = ko.observable(''); this.guestEmailFocus = ko.observable(false); this.guestAutocomplete.subscribe(function (sItem) { if (sItem === '') { this.guestAutocompleteItem(null); } }, this); this.condition = ko.observable(''); this.autosizeTrigger = ko.observable(true); this.calendars = null; this.calendarsList = ko.observableArray([]); this.calendarColor = ko.observable(''); this.selectedCalendarId = ko.observable(''); this.selectedCalendarName = ko.observable(''); this.selectedCalendarId.subscribe(function (sValue) { if (sValue) { var oCalendar = this.calendars.getCalendarById(sValue); this.selectedCalendarName(oCalendar.name()); this.selectedCalendarIsShared(oCalendar.isShared()); this.selectedCalendarIsEditable(oCalendar.isEditable()); this.changeCalendarColor(sValue); } }, this); this.subjectFocus = ko.observable(false); this.descriptionFocus = ko.observable(false); this.locationFocus = ko.observable(false); this.dateEdit = ko.observable(false); this.repeatEdit = ko.observable(false); this.guestsEdit = ko.observable(false); this.isEditForm = ko.computed(function () { return !!this.id(); }, this); this.callbackAttendeeActionDecline = null; this.bAllowAppointments = Settings.AllowAppointments; this.bAllowTasks = Settings.AllowTasks; this.eventType = ko.observable('VEVENT'); this.status = ko.observable(false); this.isTask = ko.observable(false); this.isTaskApp = ko.observable(false); this.withDate = ko.observable(true); this.isTask.subscribe(function(value) { this.eventType(value ? 'VTODO' : 'VEVENT'); }, this); this.allChanges = ko.computed(function () { this.subject(); this.description(); this.location(); this.isRepeat(); this.allDay(); this.repeatPeriod(); this.repeatInterval(); this.repeatCount(); this.repeatWeekNum(); this.startDate(); this.startTime(); this.endDate(); this.endTime(); this.repeatEndDate(); this.displayedAlarms(); this.weekMO(); this.weekTU(); this.weekWE(); this.weekTH(); this.weekFR(); this.weekSA(); this.weekSU(); this.always(); this.attendees(); this.selectedCalendarId(); this.status(); this.isTask(); this.withDate(); this.modified = true; }, this); this.aReminderPhrase = TextUtils.i18n('%MODULENAME%/INFO_REMINDER').split('%'); this.isAppointmentButtonsVisible = ko.observable(false); }
CSignatureSettingsFormView.prototype.init = function () { this.oHtmlEditor.setInactive(this.useSignatureRadio() === Enums.UseSignature.Off); this.oHtmlEditor.init(this.signature(), false, '', TextUtils.i18n('%MODULENAME%/LABEL_ENTER_SIGNATURE_HERE')); this.enableImageDragNDrop(this.oHtmlEditor.isDragAndDropSupported() && !Browser.ie10AndAbove); };