sbbs/load/control/echomail.js

83 lines
2.1 KiB
JavaScript

/**
* This control renders echomail
*
* The system echomail prefix is *1, with echomail pages built from the following page number:
* zzzzEEpppp, where:
* + zzzz is the zone, zero padded, the zone identifies the message groups
* + EE is the echomail area, ie: the message areas
* + pppp is the message number, identified by the tag attached to the message header
*
* (Tags are added to the messages via an external process.)
*/
// All controls need a unique variable so that require() can know if the control has already been loaded
var CONTROL_ECHOMAIL = '1';
// Optional debug message so we can see that it is loaded
log(LOG_DEBUG,'+ Control ECHOMAIL loaded');
// A unique method name (same as the control name that is called as new method() on initialisation
function echomail(session,pagenum) {
log(LOG_DEBUG,' - Loading echomail page:'+pagenum);
// has this control completed
var complete = false;
var ready = false;
function init(session,pagenum) {
log(LOG_DEBUG,' - Echomail init('+pagenum+')');
ready = session.loadMessage(pagenum);
}
Object.defineProperty(this, 'getName', {
get: function () {
return 'ECHOMAIL';
}
});
Object.defineProperty(this, 'isComplete', {
get: function () {
return complete;
}
});
// Handle the keyboard responses as we receive them.
this.handle = function(read) {
log(LOG_DEBUG,'Control ECHOMAIL handle() start. ('+read+')');
switch(read) {
case KEY_DOWN:
session.page.scroll(0,1);
read = '';
break;
case KEY_UP:
session.page.scroll(0,-1);
read = '';
break;
}
session.render();
return read;
}
/**
* ready() is called after a control has been initialised, to determine if the control will take the input
* or if it is unable to do so
*
* If ready() returns:
* + false, the main programming will return ERR_ROUTE to the user,
* + true, the main programming will continue to load the frame, and then pass input to on the next loop handle()
*
* @returns {boolean}
*/
this.ready = function() {
log(LOG_DEBUG,'echomail:ready = '+JSON.stringify(ready));
return ready;
}
init.apply(this,arguments);
}