Fix **, start of control methods and registration
This commit is contained in:
parent
6139db24d3
commit
83f3788b68
@ -42,7 +42,7 @@ var ERR_ROUTE ='\1n\1h\1WMISTAKE? \1GTRY AGAIN OR TELL US ON *08';
|
||||
var ERR_METHOD_NOT_EXIST ='\1n\1h\1WMISTAKE? \1GTRY AGAIN OR TELL US ON *08';
|
||||
var ACCESS_DENIED ='\1n\1h\1RACCESS DENIED. \1RMISTAKE? TRY AGAIN OR TELL US *08';
|
||||
|
||||
var NO_HISTORY_FRAMES =['98b'];
|
||||
var NO_HISTORY_FRAMES =['980a','98b','981a'];
|
||||
|
||||
var SYSTEM_FRAMES =['AWgBUkEBR04BQlMBWUkBbgE3AWt0ZXgBbg=='];
|
||||
|
||||
@ -84,7 +84,7 @@ function Frame() {
|
||||
log(LOG_DEBUG,'- FRAME User: ['+JSON.stringify(user)+']');
|
||||
|
||||
// Dont show the page number on system login page
|
||||
if (user.number || this.type != FRAME_TYPE_LOGIN) {
|
||||
if (user.number || (this.type != FRAME_TYPE_LOGIN && NO_HISTORY_FRAMES.indexOf(this.page) == -1)) {
|
||||
header = '\1n'+owner+' '.repeat(FRAME_HEADER-console.strlen(owner))+'\1n '+
|
||||
'\1W\1H'+this.page+' '.repeat(FRAME_PAGENUM-this.page.length)+' '+
|
||||
'\1G\1H'+' '.repeat(FRAME_COST-this.cost.toString().length)+this.cost+FRAME_COSTUNIT+
|
||||
@ -353,6 +353,7 @@ Frame.prototype.parse = function(text) {
|
||||
ftype: fieldtype,
|
||||
flength: fieldlen,
|
||||
fchar: fieldchar,
|
||||
fname: field,
|
||||
r: r,
|
||||
c: c,
|
||||
attribute: {i:i,f:f,b:b},
|
||||
|
55
main.js
55
main.js
@ -23,7 +23,7 @@ while(bbs.online) {
|
||||
var mode = false; // Initial mode
|
||||
|
||||
// If the user is already on, our start page is 98b
|
||||
var next_page = { frame: 98,index: user.number ? 'b' : 'a' }; // Start Frame
|
||||
var next_page = user.number ? { frame: 98,index: 'b' } : { frame: 980,index: 'a' }; // Start Frame
|
||||
|
||||
var action = ACTION_GOTO; // Initial action
|
||||
var inkey_timeout = 10000; // Timeout waiting for input @todo required? check if idle timeout occurs
|
||||
@ -31,6 +31,9 @@ while(bbs.online) {
|
||||
var fn = null; // Current Field Number for an Input Frame
|
||||
var history = []; // Page history
|
||||
|
||||
var cf = null; // Current Input Field
|
||||
var cc = null; // Current Control Method
|
||||
|
||||
var control = []; // Methods that need to process input
|
||||
|
||||
ansi.send('ext_mode','clear','cursor');
|
||||
@ -48,6 +51,14 @@ while(bbs.online) {
|
||||
|
||||
system.node_list[bbs.node_num-1].action=0xff; // to ensure our node status is updated correctly
|
||||
|
||||
if (mode != MODE_BL && control.length) {
|
||||
cc = control[control.length-1];
|
||||
log(LOG_DEBUG,'CONTROL START: ['+read+'] ('+cc+')');
|
||||
read = cc.handle(read);
|
||||
|
||||
log(LOG_DEBUG,'CONTROL END: ['+read+']');
|
||||
}
|
||||
|
||||
log(LOG_DEBUG,'MODE START: ['+read+']');
|
||||
switch (mode) {
|
||||
case false:
|
||||
@ -69,8 +80,15 @@ while(bbs.online) {
|
||||
case '7':
|
||||
case '8':
|
||||
case '9':
|
||||
if (fo.key[read]) {
|
||||
log(LOG_DEBUG,'- false: Key ['+read+'] Route ['+fo.key[read]+']');
|
||||
if (fo.key[read] !== null) {
|
||||
// If are requesting a home page
|
||||
if (fo.key[read] === 0) {
|
||||
next_page = { frame: user.number ? 1 : 98,index: 'a' };
|
||||
|
||||
} else {
|
||||
next_page = { frame: fo.key[read] };
|
||||
}
|
||||
action = ACTION_GOTO;
|
||||
log(LOG_DEBUG,'- false: Key ['+read+'] ['+pageStr(next_page)+']');
|
||||
|
||||
@ -162,7 +180,19 @@ while(bbs.online) {
|
||||
cmd = '';
|
||||
cursorOff();
|
||||
|
||||
// @todo If we are editing a field...
|
||||
if (cf) {
|
||||
// If there is a control for this field,
|
||||
if (cc)
|
||||
cc.prefield();
|
||||
|
||||
mode = MODE_FIELD;
|
||||
console.gotoxy(cf.c,cf.r);
|
||||
console.write(KEY_ESC+'['+cf.attribute.i+';'+cf.attribute.f+';'+cf.attribute.b+'m');
|
||||
console.write(cf.fchar.repeat(cf.fvalue.length));
|
||||
console.gotoxy(cf.c,cf.r);
|
||||
ansi.send('ext_mode','set','cursor');
|
||||
cf.fvalue = '';
|
||||
}
|
||||
}
|
||||
|
||||
if (read == '#' || read == '\r') {
|
||||
@ -175,7 +205,7 @@ while(bbs.online) {
|
||||
action = ACTION_BACKUP;
|
||||
|
||||
} else if (cmd == '0') {
|
||||
next_page = { frame: 1 }; // @todo specify home page in config
|
||||
next_page = { frame: user.number ? 1 : 98,index: 'a' }; // @todo specify home page in config
|
||||
action = ACTION_GOTO;
|
||||
|
||||
// Edit frame
|
||||
@ -208,14 +238,13 @@ while(bbs.online) {
|
||||
case '\r':
|
||||
log(LOG_DEBUG,'- MODE_FIELD:FRAME_TYPE_LOGIN: ['+read+'] A');
|
||||
// If we are the main login screen, see if it is a new user
|
||||
//if ($this->fo->isCUG(0)) {
|
||||
if (fo.frame_fields[fn].ftype == 't' && fo.frame_fields[fn].fvalue == 'NEW') {
|
||||
// @todo Need to make sure this is only actioned on user login
|
||||
if (cf.ftype == 't' && cf.fvalue.toUpperCase() == 'NEW') {
|
||||
action = ACTION_GOTO;
|
||||
next_page = { frame: 981,index: 'a' }; // @todo This should be in the INI.
|
||||
|
||||
break;
|
||||
}
|
||||
//}
|
||||
|
||||
break;
|
||||
}
|
||||
@ -238,6 +267,10 @@ while(bbs.online) {
|
||||
log(LOG_DEBUG,'fn:'+fn+', cf'+JSON.stringify(cf));
|
||||
|
||||
if (cf) {
|
||||
// If there is a control for this field,
|
||||
if (cc)
|
||||
cc.prefield();
|
||||
|
||||
mode = MODE_FIELD;
|
||||
console.gotoxy(cf.c,cf.r);
|
||||
console.write(KEY_ESC+'['+cf.attribute.i+';'+cf.attribute.f+';'+cf.attribute.b+'m');
|
||||
@ -654,6 +687,14 @@ while(bbs.online) {
|
||||
mode = false;
|
||||
}
|
||||
|
||||
// If this is the register page
|
||||
// @todo this needs to be configurable
|
||||
if (fo.page == '981a') {
|
||||
log(LOG_DEBUG,'Adding REGISTER to control stack');
|
||||
require('ansitex/load/register.js','CONTROL_REGISTER');
|
||||
control.push(new register());
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
// Standard Frame
|
||||
|
Loading…
Reference in New Issue
Block a user