diff --git a/core/client_term.js b/core/client_term.js index e3e5f7a5..179d83f1 100644 --- a/core/client_term.js +++ b/core/client_term.js @@ -4,6 +4,7 @@ // ENiGMA½ var Log = require('./logger.js').log; var enigmaToAnsi = require('./color_codes.js').enigmaToAnsi; +var renegadeToAnsi = require('./color_codes.js').renegadeToAnsi; var iconv = require('iconv-lite'); var assert = require('assert'); @@ -137,8 +138,15 @@ ClientTerminal.prototype.rawWrite = function(s) { this.output.write(s); }; -ClientTerminal.prototype.pipeWrite = function(s) { - this.write(enigmaToAnsi(s, this)); +ClientTerminal.prototype.pipeWrite = function(s, spec) { + spec = spec || 'enigma'; + + var conv = { + enigma : enigmaToAnsi, + renegade : renegadeToAnsi, + }[spec] || enigmaToAnsi; + + this.write(conv(s, this)); }; ClientTerminal.prototype.encode = function(s, convertLineFeeds) { diff --git a/core/user_config.js b/core/user_config.js index 4248e840..0b93a35f 100644 --- a/core/user_config.js +++ b/core/user_config.js @@ -7,6 +7,7 @@ var ViewController = require('./view_controller.js').ViewController; var async = require('async'); var assert = require('assert'); var _ = require('lodash'); +var moment = require('moment'); exports.getModule = UserConfigModule; @@ -16,11 +17,30 @@ exports.moduleInfo = { author : 'NuSkooler', }; +var MciCodeIds = { + Email : 1, + Loc : 2, + Web : 3, + Affils : 4, + + BirthDate : 5, + Sex : 6, + + Theme : 10, + ScreenSize : 11, +}; + function UserConfigModule(options) { MenuModule.call(this, options); var self = this; + self.setViewText = function(viewId, text) { + var v = self.viewControllers.menu.getView(viewId); + if(v) { + v.setText(text); + } + }; } @@ -28,12 +48,26 @@ require('util').inherits(UserConfigModule, MenuModule); UserConfigModule.prototype.mciReady = function(mciData, cb) { var self = this; - var vc = self.viewControllers.allViews = new ViewController( { client : self.client} ); + var vc = self.viewControllers.menu = new ViewController( { client : self.client} ); async.series( [ function callParentMciReady(callback) { UserConfigModule.super_.prototype.mciReady.call(self, mciData, callback); + }, + function loadFromConfig(callback) { + vc.loadFromMenuConfig( { callingMenu : self, mciMap : mciData.menu }, callback); + }, + function populateViews(callback) { + var user = self.client.user; + + self.setViewText(MciCodeIds.Email, user.properties.email_address); + self.setViewText(MciCodeIds.Loc, user.properties.location); + self.setViewText(MciCodeIds.Web, user.properties.web_address); + self.setViewText(MciCodeIds.Affils, user.properties.affiliation); + self.setViewText(MciCodeIds.BirthDate, moment(user.properties.birthdate).format('YYYYMMDD')); + self.setViewText(MciCodeIds.Sex, user.properties.sex); + } ] ); diff --git a/core/view_controller.js b/core/view_controller.js index f08652e2..16deb4a8 100644 --- a/core/view_controller.js +++ b/core/view_controller.js @@ -559,7 +559,7 @@ ViewController.prototype.loadFromMenuConfig = function(options, cb) { if(err) { // non-fatal self.client.log.trace( - { error : err, mci : Object.keys(options.mciMap), formId : formIdKey }, + { error : err.toString(), mci : Object.keys(options.mciMap), formId : formIdKey }, 'Unable to find matching form configuration'); } diff --git a/mods/menu.hjson b/mods/menu.hjson index ae30e309..98ff2646 100644 --- a/mods/menu.hjson +++ b/mods/menu.hjson @@ -460,6 +460,32 @@ mainMenuUserConfig: { module: @systemModule:user_config art: CONFSCR + form: { + 0: { + mci: { + ET1: { + argName: email + } + ET2: { + argName: location + } + ET3: { + argName: webAddress + } + ET4: { + argName: affils + } + ME5: { + maskPattern: "####/##/##" + argName: birthdate + } + ME11: { + maskPattern: "##x##" + argName: termSize + } + } + } + } } /////////////////////////////////////////////////////////////////////// // Message Area Related diff --git a/mods/themes/luciano_blocktronics/CONFSCR.ANS b/mods/themes/luciano_blocktronics/CONFSCR.ANS index f43c59a6..0e9dc5c4 100644 Binary files a/mods/themes/luciano_blocktronics/CONFSCR.ANS and b/mods/themes/luciano_blocktronics/CONFSCR.ANS differ