From ddc806bd394a96960393baf4e978a72ed4c6cb52 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Fri, 4 Sep 2015 00:02:28 -0600 Subject: [PATCH] * Varous fixes for FSE. ...WIP on separation of editorMode vs editor/menu/etc. focus --- core/fse.js | 35 ++++++++++++++++++++++++++++------- core/message_area.js | 1 + mods/menu.json | 3 ++- mods/msg_list.js | 28 +++++++++++++++++++++++++--- 4 files changed, 56 insertions(+), 11 deletions(-) diff --git a/core/fse.js b/core/fse.js index 621560bc..af819a2d 100644 --- a/core/fse.js +++ b/core/fse.js @@ -44,6 +44,15 @@ exports.moduleInfo = { */ + +var MCICodeIds = { + Header : { + From : 1, + To : 2, + Subject : 3, + } +}; + function FullScreenEditorModule(options) { MenuModule.call(this, options); @@ -63,11 +72,15 @@ function FullScreenEditorModule(options) { this.editorType = config.editorType; this.editorMode = config.editorMode; + console.log('editorMode=' + this.editorMode) + + if(_.isObject(options.extraArgs)) { this.messageAreaName = options.extraArgs.messageAreaName || Message.WellKnownAreaNames.Private; } this.isEditMode = function() { + console.log(self.editorMode) return 'edit' === self.editorMode; }; @@ -107,6 +120,7 @@ function FullScreenEditorModule(options) { message : self.viewControllers.body.getFormData().value.message, }; + console.log(msgOpts) self.message = new Message(msgOpts); }; @@ -117,7 +131,9 @@ function FullScreenEditorModule(options) { }; this.getMessage = function() { + console.log('getMessage') if(self.isEditMode()) { + console.log('want build msg') self.buildMessage(); } @@ -210,6 +226,8 @@ function FullScreenEditorModule(options) { this.switchFooter = function(cb) { var footerName = self.getFooterName(); + + console.log('footerName=' + footerName) self.redrawFooter( { footerName : footerName, clear : true }, function artDisplayed(err, artData) { if(err) { @@ -369,6 +387,7 @@ function FullScreenEditorModule(options) { switch(self.editorMode) { case 'edit' : + self.editModeFocus = 'editor'; self.switchToHeader(); break; @@ -435,6 +454,7 @@ function FullScreenEditorModule(options) { v.setText(text); } } + /* TL1 - From TL2 - To TL3 - Subject @@ -447,9 +467,9 @@ function FullScreenEditorModule(options) { TL10 - Message ID TL11 - Reply to message ID*/ - setHeaderText(1, self.message.fromUserName); - setHeaderText(2, self.message.toUserName); - setHeaderText(3, self.message.subject); + setHeaderText(MCICodeIds.Header.From, self.message.fromUserName); + setHeaderText(MCICodeIds.Header.To, self.message.toUserName); + setHeaderText(MCICodeIds.Subject, self.message.subject); setHeaderText(5, moment(self.message.modTimestamp).format(self.client.currentTheme.helpers.getDateTimeFormat())); setHeaderText(6, '1'); // :TODO: Message number @@ -503,15 +523,16 @@ function FullScreenEditorModule(options) { self.switchToBody(); }, editModeEscPressed : function(formData, extraArgs) { - self.editorMode = 'edit' === self.editorMode ? 'editMenu' : 'edit'; + self.editModeFocus = 'editor' === self.editModeFocus ? 'editMenu' : 'editor'; + //self.editorMode = 'edit' === self.editorMode ? 'editMenu' : 'edit'; self.switchFooter(function next(err) { if(err) { // :TODO:... what now? console.log(err) } else { - switch(self.editorMode) { - case 'edit' : + switch(self.editModeFocus) { + case 'editor' : if(!_.isUndefined(self.viewControllers.footerEditMenu)) { self.viewControllers.footerEditMenu.setFocus(false); } @@ -544,7 +565,7 @@ function FullScreenEditorModule(options) { } }; - if(_.isObject(options.extraArgs.message)) { + if(_.has(options, 'extraArgs.message')) { this.setMessage(options.extraArgs.message); } } diff --git a/core/message_area.js b/core/message_area.js index 698aa36d..cde84661 100644 --- a/core/message_area.js +++ b/core/message_area.js @@ -14,6 +14,7 @@ exports.changeMessageArea = changeMessageArea; exports.getMessageListForArea = getMessageListForArea; function getAvailableMessageAreas() { + // example: [ { "name" : "local_music", "desc" : "Music Discussion", "groups" : ["somegroup"] }, ... ] return Config.messages.areas; } diff --git a/mods/menu.json b/mods/menu.json index b92621b0..ec33d5dd 100644 --- a/mods/menu.json +++ b/mods/menu.json @@ -323,7 +323,7 @@ "options" : { "cls" : true }, "fallback" : "messageArea", "config" : { - + "listType" : "private" }, "form" : { "0" : { @@ -469,6 +469,7 @@ "footerView" : "demo_fse_netmail_footer_view.ans", "help" : "demo_fse_netmail_help.ans" }, + "editorMode" : "edit", "editorType" : "area" }, "form" : { diff --git a/mods/msg_list.js b/mods/msg_list.js index d5b81253..4769b32f 100644 --- a/mods/msg_list.js +++ b/mods/msg_list.js @@ -46,6 +46,11 @@ function MessageListModule(options) { var self = this; + var config = this.menuConfig.config; + // config.listType : public | private + + this.listType = config.listType || 'public'; + this.messageList = []; this.menuMethods = { @@ -80,6 +85,17 @@ function MessageListModule(options) { require('util').inherits(MessageListModule, MenuModule); +MessageListModule.prototype.enter = function(client) { + + if('private' === this.listType) { + this.messageAreaName = Message.WellKnownAreaNames.Private; + } else { + this.messageAreaName = client.user.properties.message_area_name; + } + + MessageListModule.super_.prototype.enter.call(this, client); +}; + MessageListModule.prototype.mciReady = function(mciData, cb) { var self = this; @@ -99,9 +115,13 @@ MessageListModule.prototype.mciReady = function(mciData, cb) { vc.loadFromMenuConfig(loadOpts, callback); }, function fetchMessagesInArea(callback) { - messageArea.getMessageListForArea( { client : self.client }, self.client.user.properties.message_area_name, function msgs(err, msgList) { - self.messageList = msgList; - callback(err); + messageArea.getMessageListForArea( { client : self.client }, self.messageAreaName, function msgs(err, msgList) { + if(msgList && 0 === msgList.length) { + callback(new Error('No messages in area')); + } else { + self.messageList = msgList; + callback(err); + } }); }, function populateList(callback) { @@ -125,6 +145,8 @@ MessageListModule.prototype.mciReady = function(mciData, cb) { ], function complete(err) { if(err) { + // :TODO: log this properly + self.client.gotoMenuModule( { name : self.menuConfig.fallback } ); console.log(err) } cb(err);