コード例 #1
0
	AbstractApp.prototype.bootstart = function ()
	{
		Events.pub('rl.bootstart');

		var ssm = require('ssm');

		Utils.initOnStartOrLangChange(function () {
			Utils.initNotificationLanguage();
		}, null);

		_.delay(function () {
			Utils.windowResize();
		}, 1000);

		ssm.addState({
			'id': 'mobile',
			'maxWidth': 767,
			'onEnter': function() {
				Globals.$html.addClass('ssm-state-mobile');
				Events.pub('ssm.mobile-enter');
			},
			'onLeave': function() {
				Globals.$html.removeClass('ssm-state-mobile');
				Events.pub('ssm.mobile-leave');
			}
		});

		ssm.addState({
			'id': 'tablet',
			'minWidth': 768,
			'maxWidth': 999,
			'onEnter': function() {
				Globals.$html.addClass('ssm-state-tablet');
			},
			'onLeave': function() {
				Globals.$html.removeClass('ssm-state-tablet');
			}
		});

		ssm.addState({
			'id': 'desktop',
			'minWidth': 1000,
			'maxWidth': 1400,
			'onEnter': function() {
				Globals.$html.addClass('ssm-state-desktop');
			},
			'onLeave': function() {
				Globals.$html.removeClass('ssm-state-desktop');
			}
		});

		ssm.addState({
			'id': 'desktop-large',
			'minWidth': 1400,
			'onEnter': function() {
				Globals.$html.addClass('ssm-state-desktop-large');
			},
			'onLeave': function() {
				Globals.$html.removeClass('ssm-state-desktop-large');
			}
		});

		Events.sub('ssm.mobile-enter', function () {
			Globals.leftPanelDisabled(true);
		});

		Events.sub('ssm.mobile-leave', function () {
			Globals.leftPanelDisabled(false);
		});

		Globals.leftPanelDisabled.subscribe(function (bValue) {
			Globals.$html.toggleClass('rl-left-panel-disabled', bValue);
		});

		ssm.ready();
	};
コード例 #2
0
	/**
	 * @constructor
	 * @extends KnoinAbstractViewModel
	 */
	function MailBoxMessageListViewModel()
	{
		KnoinAbstractViewModel.call(this, 'Right', 'MailMessageList');

		this.sLastUid = null;
		this.bPrefetch = false;
		this.emptySubjectValue = '';

		this.hideDangerousActions = !!Settings.settingsGet('HideDangerousActions');

		this.popupVisibility = Globals.popupVisibility;

		this.message = Data.message;
		this.messageList = Data.messageList;
		this.folderList = Data.folderList;
		this.currentMessage = Data.currentMessage;
		this.isMessageSelected = Data.isMessageSelected;
		this.messageListSearch = Data.messageListSearch;
		this.messageListError = Data.messageListError;
		this.folderMenuForMove = Data.folderMenuForMove;

		this.useCheckboxesInList = Data.useCheckboxesInList;

		this.mainMessageListSearch = Data.mainMessageListSearch;
		this.messageListEndFolder = Data.messageListEndFolder;

		this.messageListChecked = Data.messageListChecked;
		this.messageListCheckedOrSelected = Data.messageListCheckedOrSelected;
		this.messageListCheckedOrSelectedUidsWithSubMails = Data.messageListCheckedOrSelectedUidsWithSubMails;
		this.messageListCompleteLoadingThrottle = Data.messageListCompleteLoadingThrottle;

		Utils.initOnStartOrLangChange(function () {
			this.emptySubjectValue = Utils.i18n('MESSAGE_LIST/EMPTY_SUBJECT_TEXT');
		}, this);

		this.userQuota = Data.userQuota;
		this.userUsageSize = Data.userUsageSize;
		this.userUsageProc = Data.userUsageProc;

		this.moveDropdownTrigger = ko.observable(false);
		this.moreDropdownTrigger = ko.observable(false);

		// append drag and drop
		this.dragOver = ko.observable(false).extend({'throttle': 1});
		this.dragOverEnter = ko.observable(false).extend({'throttle': 1});
		this.dragOverArea = ko.observable(null);
		this.dragOverBodyArea = ko.observable(null);

		this.messageListItemTemplate = ko.computed(function () {
			return Enums.Layout.NoPreview !== Data.layout() ?
				'MailMessageListItem' : 'MailMessageListItemNoPreviewPane';
		});

		this.messageListSearchDesc = ko.computed(function () {
			var sValue = Data.messageListEndSearch();
			return '' === sValue ? '' : Utils.i18n('MESSAGE_LIST/SEARCH_RESULT_FOR', {'SEARCH': sValue});
		});

		this.messageListPagenator = ko.computed(Utils.computedPagenatorHelper(Data.messageListPage, Data.messageListPageCount));

		this.checkAll = ko.computed({
			'read': function () {
				return 0 < Data.messageListChecked().length;
			},

			'write': function (bValue) {
				bValue = !!bValue;
				_.each(Data.messageList(), function (oMessage) {
					oMessage.checked(bValue);
				});
			}
		});

		this.inputMessageListSearchFocus = ko.observable(false);

		this.sLastSearchValue = '';
		this.inputProxyMessageListSearch = ko.computed({
			'read': this.mainMessageListSearch,
			'write': function (sValue) {
				this.sLastSearchValue = sValue;
			},
			'owner': this
		});

		this.isIncompleteChecked = ko.computed(function () {
			var
				iM = Data.messageList().length,
				iC = Data.messageListChecked().length
			;
			return 0 < iM && 0 < iC && iM > iC;
		}, this);

		this.hasMessages = ko.computed(function () {
			return 0 < this.messageList().length;
		}, this);

		this.hasCheckedOrSelectedLines = ko.computed(function () {
			return 0 < this.messageListCheckedOrSelected().length;
		}, this);

		this.isSpamFolder = ko.computed(function () {
			return Data.spamFolder() === this.messageListEndFolder() &&
				'' !== Data.spamFolder();
		}, this);

		this.isSpamDisabled = ko.computed(function () {
			return Consts.Values.UnuseOptionValue === Data.spamFolder();
		}, this);

		this.isTrashFolder = ko.computed(function () {
			return Data.trashFolder() === this.messageListEndFolder() &&
				'' !== Data.trashFolder();
		}, this);

		this.isDraftFolder = ko.computed(function () {
			return Data.draftFolder() === this.messageListEndFolder() &&
				'' !== Data.draftFolder();
		}, this);

		this.isSentFolder = ko.computed(function () {
			return Data.sentFolder() === this.messageListEndFolder() &&
				'' !== Data.sentFolder();
		}, this);

		this.isArchiveFolder = ko.computed(function () {
			return Data.archiveFolder() === this.messageListEndFolder() &&
				'' !== Data.archiveFolder();
		}, this);

		this.isArchiveDisabled = ko.computed(function () {
			return Consts.Values.UnuseOptionValue === Data.archiveFolder();
		}, this);

		this.canBeMoved = this.hasCheckedOrSelectedLines;

		this.clearCommand = Utils.createCommand(this, function () {
			kn.showScreenPopup(require('View:Popup:FolderClear'), [Data.currentFolder()]);
		});

		this.multyForwardCommand = Utils.createCommand(this, function () {
			kn.showScreenPopup(require('View:Popup:Compose'), [
				Enums.ComposeType.ForwardAsAttachment, Data.messageListCheckedOrSelected()]);
		}, this.canBeMoved);

		this.deleteWithoutMoveCommand = Utils.createCommand(this, function () {
			require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
				Data.currentFolderFullNameRaw(),
				Data.messageListCheckedOrSelectedUidsWithSubMails(), false);
		}, this.canBeMoved);

		this.deleteCommand = Utils.createCommand(this, function () {
			require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Trash,
				Data.currentFolderFullNameRaw(),
				Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
		}, this.canBeMoved);

		this.archiveCommand = Utils.createCommand(this, function () {
			require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Archive,
				Data.currentFolderFullNameRaw(),
				Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
		}, this.canBeMoved);

		this.spamCommand = Utils.createCommand(this, function () {
			require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.Spam,
				Data.currentFolderFullNameRaw(),
				Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
		}, this.canBeMoved);

		this.notSpamCommand = Utils.createCommand(this, function () {
			require('App:RainLoop').deleteMessagesFromFolder(Enums.FolderType.NotSpam,
				Data.currentFolderFullNameRaw(),
				Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
		}, this.canBeMoved);

		this.moveCommand = Utils.createCommand(this, Utils.emptyFunction, this.canBeMoved);

		this.reloadCommand = Utils.createCommand(this, function () {
			if (!Data.messageListCompleteLoadingThrottle())
			{
				require('App:RainLoop').reloadMessageList(false, true);
			}
		});

		this.quotaTooltip = _.bind(this.quotaTooltip, this);

		this.selector = new Selector(this.messageList, this.currentMessage,
			'.messageListItem .actionHandle', '.messageListItem.selected', '.messageListItem .checkboxMessage',
				'.messageListItem.focused');

		this.selector.on('onItemSelect', _.bind(function (oMessage) {
			if (oMessage)
			{
				Data.message(Data.staticMessageList.populateByMessageListItem(oMessage));
				this.populateMessageBody(Data.message());

				if (Enums.Layout.NoPreview === Data.layout())
				{
					kn.setHash(LinkBuilder.messagePreview(), true);
					Data.message.focused(true);
				}
			}
			else
			{
				Data.message(null);
			}
		}, this));

		this.selector.on('onItemGetUid', function (oMessage) {
			return oMessage ? oMessage.generateUid() : '';
		});

		Data.messageListEndHash.subscribe(function () {
			this.selector.scrollToTop();
		}, this);

		Data.layout.subscribe(function (mValue) {
			this.selector.autoSelect(Enums.Layout.NoPreview !== mValue);
		}, this);

		Data.layout.valueHasMutated();

		Events
			.sub('mailbox.message-list.selector.go-down', function () {
				this.selector.goDown(true);
			}, this)
			.sub('mailbox.message-list.selector.go-up', function () {
				this.selector.goUp(true);
			}, this)
		;

		kn.constructorEnd(this);
	}