Skip to content
Snippets Groups Projects
Commit 13d6a62d authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Merge branch 'mlong/xtrnmenucu' into 'master'

Fix issue with overriding inv format per item, cleanup options code, fix prog menu sort, turn off pausing

See merge request !102
parents 6bdd1126 1c8cba89
No related branches found
No related tags found
2 merge requests!463MRC mods by Codefenix (2024-10-20),!102Fix issue with overriding inv format per item, cleanup options code, fix prog menu sort, turn off pausing
...@@ -49,79 +49,37 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) { ...@@ -49,79 +49,37 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) {
this.options = { multicolumn: true, sort: false }; this.options = { multicolumn: true, sort: false };
} }
// Get xtrn_custommenu options from modopts.ini [xtrn_custommenu] // Get xtrn_custommenu options from modopts.d/xtrnmenu.ini [xtrnmenu]
if ((this.xtrn_custommenu_options = load({}, "modopts.js", "xtrnmenu")) == null) { if ((this.xtrn_custommenu_options = load({}, "modopts.js", "xtrnmenu")) == null) {
this.xtrn_custommenu_options = { }; this.xtrn_custommenu_options = { };
} }
// in all cases, we start with the xtrn_sec options as the base and set the defaults // We start with the option from xtrnmenu. If it doesn't exist,
if (this.options.multicolumn === undefined) // we use the option from xtrn_sec (if applicable). And if that doesn't exist, we use the
// default (system or in code).
if (typeof this.xtrn_custommenu_options.multicolumn !== "undefined") {
this.options.multicolumn = this.xtrn_custommenu_options.multicolumn;
} else if (typeof this.options.multicolumn === "undefined") {
this.options.multicolumn = true; this.options.multicolumn = true;
}
if (this.options.multicolumn_separator === undefined) if (typeof this.xtrn_custommenu_options.multicolumn_separator !== "undefined") {
this.options.multicolumn_separator = this.xtrn_custommenu_options.multicolumn_separator;
} else if (typeof this.options.multicolumn_seperator === "undefined") {
this.options.multicolumn_separator = " "; this.options.multicolumn_separator = " ";
if (this.options.multicolumn_fmt === undefined)
this.options.multicolumn_fmt = system.text(XtrnProgLstFmt);
if (this.options.singlecolumn_fmt === undefined)
this.options.singlecolumn_fmt = "\x01h\x01c%3u \xb3 \x01n\x01c%s\x01h ";
if (this.options.multicolumn_fmt_inverse === undefined)
this.options.multicolumn_fmt_inverse = system.text(XtrnProgLstFmt);
if (this.options.singlecolumn_fmt_inverse === undefined)
this.options.singlecolumn_fmt_inverse = "\x01h\x01c%3u \xb3 \x01n\x01c%s\x01h ";
if (this.options.singlecolumn_margin == undefined)
this.options.singlecolumn_margin = 7;
if (this.options.restricted_user_msg === undefined)
this.options.restricted_user_msg = system.text(R_ExternalPrograms);
if (this.options.no_programs_msg === undefined)
this.options.no_programs_msg = system.text(NoXtrnPrograms);
if (this.options.header_fmt === undefined)
this.options.header_fmt = system.text(XtrnProgLstHdr);
if (this.options.titles === undefined)
this.options.titles = system.text(XtrnProgLstTitles);
if (this.options.underline === undefined)
this.options.underline = system.text(XtrnProgLstUnderline);
if (this.options.which === undefined)
this.options.which = system.text(WhichXtrnProg);
if (this.options.clear_screen === undefined)
this.options.clear_screen = true;
if (this.options.section_fmt === undefined)
this.options.section_fmt = "\x01y\x01g%3d:\x01n\x01g %s"
if (this.options.section_header_fmt === undefined)
this.options.section_header_fmt = "\x01-\x01gSelect \x01hExternal Program Section\x01-\x01g:"
if (this.options.section_which === undefined)
this.options.section_which = "\r\n\x01-\x01gWhich, \x01w\x01h~Q\x01n\x01guit or [1]: \x01h"
if (typeof (this.options.use_xtrn_sec) == "undefined") {
this.options.use_xtrn_sec = false;
} }
// if its a custom menu, then override with custommenu_options
if (menutype == 'custommenu') {
if (typeof this.xtrn_custommenu_options.multicolumn_fmt !== "undefined") { if (typeof this.xtrn_custommenu_options.multicolumn_fmt !== "undefined") {
this.options.multicolumn_fmt = this.xtrn_custommenu_options.multicolumn_fmt; this.options.multicolumn_fmt = this.xtrn_custommenu_options.multicolumn_fmt;
} else { } else if (typeof this.options.multicolumn_fmt === "undefined") {
// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s // cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
this.options.multicolumn_fmt = "\x01h\x01c%3s \xb3 \x01n\x01c%-32.32s\x01h "; this.options.multicolumn_fmt = "\x01h\x01c%3s \xb3 \x01n\x01c%-32.32s\x01h ";
} }
if (typeof this.xtrn_custommenu_options.singlecolumn_fmt !== "undefined") { if (typeof this.xtrn_custommenu_options.singlecolumn_fmt !== "undefined") {
this.options.singlecolumn_fmt = this.xtrn_custommenu_options.singlecolumn_fmt; this.options.singlecolumn_fmt = this.xtrn_custommenu_options.singlecolumn_fmt;
} else { } else if (typeof this.options.singlecolumn_fmt === "undefined") {
// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s // cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
this.options.singlecolumn_fmt = "\x01h\x01c%3s \xb3 \x01n\x01c%s\x01h "; this.options.singlecolumn_fmt = "\x01h\x01c%3s \xb3 \x01n\x01c%s\x01h ";
} }
...@@ -140,41 +98,142 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) { ...@@ -140,41 +98,142 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) {
this.options.singlecolumn_fmt_inverse = "\x01h\x01c%3s \xb3 \x01n\x016\x01w\x01h%s \x01n\x01h"; this.options.singlecolumn_fmt_inverse = "\x01h\x01c%3s \xb3 \x01n\x016\x01w\x01h%s \x01n\x01h";
} }
this.options.header_fmt = (typeof this.xtrn_custommenu_options.header_fmt !== "undefined") if (typeof this.xtrn_custommenu_options.return_multicolumn_fmt !== "undefined") {
? this.xtrn_custommenu_options.header_fmt : this.options.header_fmt; this.options.return_multicolumn_fmt = this.xtrn_custommenu_options.return_multicolumn_fmt;
} else if (typeof this.options.return_multicolumn_fmt === "undefined") {
// cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s
this.options.return_multicolumn_fmt = this.options.multicolumn_fmt;
}
if (typeof this.xtrn_custommenu_options.return_singlecolumn_fmt !== "undefined") {
this.options.return_singlecolumn_fmt = this.xtrn_custommenu_options.return_singlecolumn_fmt;
} else if (typeof this.options.return_singlecolumn_fmt === "undefined") {
// cannot default to xtrn_sec singlecolumn_fmt due to use of %u instead of %s
this.options.return_singlecolumn_fmt = this.options.singlecolumn_fmt;
}
if (typeof this.xtrn_custommenu_options.return_multicolumn_fmt_inverse !== "undefined") {
this.options.return_multicolumn_fmt_inverse = this.xtrn_custommenu_options.return_multicolumn_fmt_inverse;
} else if (typeof this.options.return_multicolumn_fmt_inverse === "undefined") {
this.options.return_multicolumn_fmt_inverse = this.options.multicolumn_fmt_inverse;
}
if (typeof this.xtrn_custommenu_options.return_singlecolumn_fmt_inverse !== "undefined") {
this.options.return_singlecolumn_fmt_inverse = this.xtrn_custommenu_options.return_singlecolumn_fmt_inverse;
} else if (typeof this.options.return_singlecolumn_fmt_inverse === "undefined") {
this.options.return_singlecolumn_fmt_inverse = this.options.singlecolumn_fmt_inverse;
}
this.options.titles = (typeof this.xtrn_custommenu_options.titles !== "undefined") this.options.multicolumn_fmt_special = typeof this.xtrn_custommenu_options.multicolumn_fmt_special !== "undefined"
? this.xtrn_custommenu_options.titles : this.options.titles; ? this.xtrn_custommenu_options.multicolumn_fmt_special : this.options.multicolumn_fmt;
this.options.which = (typeof this.xtrn_custommenu_options.which !== "undefined") this.options.singlecolumn_fmt_special = typeof this.xtrn_custommenu_options.singlecolumn_fmt_special !== "undefined"
? this.xtrn_custommenu_options.which : this.options.which; ? this.xtrn_custommenu_options.singlecolumn_fmt_special : this.options.singlecolumn_fmt;
this.options.underline = (typeof this.xtrn_custommenu_options.underline !== "undefined") this.options.multicolumn_fmt_special_inverse = typeof this.xtrn_custommenu_options.multicolumn_fmt_special_inverse !== "undefined"
? this.xtrn_custommenu_options.underline : this.options.underline; ? this.xtrn_custommenu_options.multicolumn_fmt_special_inverse : this.options.multicolumn_fmt_inverse;
this.options.multicolumn_separator = (typeof this.xtrn_custommenu_options.multicolumn_separator !== "undefined") this.options.singlecolumn_fmt_special_inverse = typeof this.xtrn_custommenu_options.singlecolumn_fmt_special_inverse !== "undefined"
? this.xtrn_custommenu_options.multicolumn_separator : this.options.multicolumn_separator; ? this.xtrn_custommenu_options.singlecolumn_fmt_special_inverse : this.options.singlecolumn_fmt_inverse;
this.options.multicolumn = (typeof this.xtrn_custommenu_options.multicolumn !== "undefined") this.options.return_singlecolumn_special_fmt = typeof this.xtrn_custommenu_options.return_singlecolumn_special_fmt
? this.xtrn_custommenu_options.multicolumn : this.options.multicolumn; ? this.xtrn_custommenu_options.return_singlecolumn_special_fmt : this.options.singlecolumn_fmt;
this.options.sort = (typeof this.xtrn_custommenu_options.sort !== "undefined") this.options.return_multicolumn_special_fmt = typeof this.xtrn_custommenu_options.return_multicolumn_special_fmt
? this.xtrn_custommenu_options.sort : this.options.sort; ? this.xtrn_custommenu_options.return_multicolumn_special_fmt : this.options.multicolumn_fmt;
this.options.clear_screen = (typeof this.xtrn_custommenu_options.clear_screen !== "undefined") this.options.return_singlecolumn_special_fmt_inverse = typeof this.xtrn_custommenu_options.return_singlecolumn_special_fmt_inverse
? this.xtrn_custommenu_options.clear_screen : this.options.clear_screen; ? this.xtrn_custommenu_options.return_singlecolumn_special_fmt_inverse : this.options.singlecolumn_fmt_inverse;
this.options.singlecolumn_margin = (typeof this.xtrn_custommenu_options.singlecolumn_margin !== "undefined") this.options.return_multicolumn_special_fmt_inverse = typeof this.xtrn_custommenu_options.return_multicolumn_special_fmt_inverse
? this.xtrn_custommenu_options.singlecolumn_margin : this.options.singlecolumn_margin; ? this.xtrn_custommenu_options.return_multicolumn_special_fmt_inverse : this.options.multicolumn_fmt_inverse_inverse;
if (typeof bbs !== "undefined") { if (typeof this.xtrn_custommenu_options.singlecolumn_margin !== "undefined") {
// override and turn off multicolumn if terminal width is less than 80 this.options.singlecolumn_margin = this.xtrn_custommenu_options.singlecolumn_margin;
if (console.screen_columns < 80) } else if (typeof this.options.singlecolumn_margin === "undefined") {
options.multicolumn = false; this.options.singlecolumn_margin = 7;
} }
// no need to override restricted_user_msg or no_programs_msg - these if (typeof this.xtrn_custommenu_options.restricted_user_msg !== "undefined") {
// will be the same for both types of menus this.options.restricted_user_msg = this.xtrn_custommenu_options.restricted_user_msg;
} else if (typeof this.options.restricted_user_msg === "undefined") {
this.options.restricted_user_msg = system.text(R_ExternalPrograms);
}
if (typeof this.xtrn_custommenu_options.no_programs_msg !== "undefined") {
this.options.no_programs_msg = this.xtrn_custommenu_options.no_programs_msg;
} else if (typeof this.options.no_programs_msg === "undefined") {
this.options.no_programs_msg = system.text(NoXtrnPrograms);
}
if (typeof this.xtrn_custommenu_options.header_fmt !== "undefined") {
this.options.header_fmt = this.xtrn_custommenu_options.header_fmt;
} else if (typeof this.options.header_fmt === "undefined") {
this.options.header_fmt = system.text(XtrnProgLstHdr);
}
if (typeof this.xtrn_custommenu_options.titles !== "undefined") {
this.options.titles = this.xtrn_custommenu_options.titles;
} else if (typeof this.options.title === "undefined") {
this.options.titles = system.text(XtrnProgLstTitles);
}
if (typeof this.xtrn_custommenu_options.which !== "undefined") {
this.options.which = this.xtrn_custommenu_options.which;
} else if (typeof this.options.which === "undefined") {
this.options.which = system.text(WhichXtrnProg);
}
if (typeof this.xtrn_custommenu_options.underline !== "undefined") {
this.options.underline = this.xtrn_custommenu_options.underline;
} else if (typeof this.options.underline === "undefined") {
this.options.underline = system.text(XtrnProgLstUnderline);
}
if (typeof this.xtrn_custommenu_options.clear_screen !== "undefined") {
this.options.clear_screen = this.xtrn_custommenu_options.clear_screen;
} else if (typeof this.options.clear_screen === "undefined") {
this.options.clear_screen = true;
}
if (typeof this.xtrn_custommenu_options.section_fmt !== "undefined") {
this.options.section_fmt = this.xtrn_custommenu_options.section_fmt;
} else if (typeof this.options.section_fmt === "undefined") {
this.options.section_fmt = "\x01y\x01g%3d:\x01n\x01g %s";
}
if (typeof this.xtrn_custommenu_options.section_header_fmt !== "undefined") {
this.options.section_header_fmt = this.xtrn_custommenu_options.section_header_fmt;
} else if (typeof this.options.section_header_fmt === "undefined") {
this.options.section_header_fmt = "\x01-\x01gSelect \x01hExternal Program Section\x01-\x01g:";
}
if (typeof this.xtrn_custommenu_options.section_which !== "undefined") {
this.options.section_which = this.xtrn_custommenu_options.section_which;
} else if (typeof this.options.section_which === "undefined") {
this.options.section_which = "\r\n\x01-\x01gWhich, \x01w\x01h~Q\x01n\x01guit or [1]: \x01h";
}
if (typeof this.xtrn_custommenu_options.sort !== "undefined") {
this.options.sort = this.xtrn_custommenu_options.sort;
} else if (typeof this.options.sort === "undefined") {
this.options.sort = false;
}
this.options.custom_menu_not_found_msg = (typeof this.options.custom_menu_not_found_msg !== "undefined")
? this.options.custom_menu_not_found_msg : "Menu %MENUID% not found";
this.options.custom_menu_program_not_found_msg = (typeof this.options.custom_menu_program_not_found_msg !== "undefined")
? this.options.custom_menu_program_not_found_msg : "Menu %MENUID% not found";
this.options.use_xtrn_sec = (typeof this.xtrn_custommenu_options.use_xtrn_sec !== "undefined")
? this.xtrn_custommenu_options.use_xtrn_sec : false;
this.options.custom_quit_msg = (typeof this.xtrn_custommenu_options.custom_quit_msg !== "undefined")
? this.xtrn_custommenu_options.custom_quit_msg : 'Quit';
this.options.custom_return_msg = (typeof this.xtrn_custommenu_options.custom_return_msg !== "undefined")
? this.xtrn_custommenu_options.custom_return_msg : 'Return to Previous Menu';
// Allow overriding on a per-menu basis // Allow overriding on a per-menu basis
var menuoptions = load({}, "modopts.js", "xtrnmenu:" + menuid); var menuoptions = load({}, "modopts.js", "xtrnmenu:" + menuid);
...@@ -183,7 +242,9 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) { ...@@ -183,7 +242,9 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) {
this.options[m] = menuoptions[m]; this.options[m] = menuoptions[m];
} }
} }
}
this.options.custom_logoff_msg = (typeof this.xtrn_custommenu_options.custom_logoff_msg !== "undefined")
? this.xtrn_custommenu_options.custom_logoff_msg : 'Logoff';
this.options.json_enabled = (typeof this.xtrn_custommenu_options.json_enabled !== undefined) this.options.json_enabled = (typeof this.xtrn_custommenu_options.json_enabled !== undefined)
? this.xtrn_custommenu_options.json_enabled : false; ? this.xtrn_custommenu_options.json_enabled : false;
...@@ -197,20 +258,6 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) { ...@@ -197,20 +258,6 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) {
this.options.blacklist_tracking_xtrnsec = (typeof this.xtrn_custommenu_options.blacklist_tracking_xtrnsec !== undefined) this.options.blacklist_tracking_xtrnsec = (typeof this.xtrn_custommenu_options.blacklist_tracking_xtrnsec !== undefined)
? this.xtrn_custommenu_options.blacklist_tracking_xtrnsec : ""; ? this.xtrn_custommenu_options.blacklist_tracking_xtrnsec : "";
// these options only apply to terminals/consoles
// the intention is to obtain all the mod_opts options for xtrn_sec, and
// override if a custom menu global setting is set
//// The following are used for the enhanced custom menu functionality
if (this.options.custom_menu_not_found_msg === undefined) {
this.options.custom_menu_not_found_msg = "Menu %MENUID% not found";
}
if (this.options.custom_menu_program_not_found_msg === undefined) {
this.options.custom_menu_program_not_found_msg = "Program %PROGRAMID% not found";
}
this.options.custom = this.xtrn_custommenu_options; this.options.custom = this.xtrn_custommenu_options;
return this.options; return this.options;
...@@ -288,17 +335,15 @@ ExternalMenus.prototype.getSectionMenu = function(menuid) { ...@@ -288,17 +335,15 @@ ExternalMenus.prototype.getSectionMenu = function(menuid) {
return false; return false;
} }
var i = 1;
sec.prog_list.some(function (prog) { sec.prog_list.some(function (prog) {
menuitems.push({ menuitems.push({
input : i, input : null,
target: prog.code, target: prog.code,
title: prog.name, title: prog.name,
type: 'xtrnprog', type: 'xtrnprog',
access_string: prog.ars, access_string: prog.ars,
cost: prog.cost cost: prog.cost
}); });
i++;
}); });
if (menuitems.length > 0) { if (menuitems.length > 0) {
......
...@@ -559,16 +559,11 @@ function external_menu_custom(menuid) ...@@ -559,16 +559,11 @@ function external_menu_custom(menuid)
var multicolumn_fmt_inverse = options.multicolumn_fmt_inverse; var multicolumn_fmt_inverse = options.multicolumn_fmt_inverse;
var singlecolumn_fmt_inverse = options.singlecolumn_fmt_inverse; var singlecolumn_fmt_inverse = options.singlecolumn_fmt_inverse;
var return_singlecolumn_fmt = options.custom.return_singlecolumn_fmt !== undefined
? options.custom.return_singlecolumn_fmt : singlecolumn_fmt;
var return_multicolumn_fmt = options.custom.return_multicolumn_fmt !== undefined
? options.custom.return_multicolumn_fmt : multicolumn_fmt;
var return_singlecolumn_fmt_inverse = options.custom.return_singlecolumn_fmt_inverse !== undefined
? options.custom.return_singlecolumn_fmt_inverse : singlecolumn_fmt_inverse;
var return_multicolumn_fmt_inverse = options.custom.return_multicolumn_fmt_inverse !== undefined
? options.custom.return_multicolumn_fmt_inverse : multicolumn_fmt_inverse;
while (bbs.online) { while (bbs.online) {
// Turn off pausing while displaying the menu. If it pauses, the kb nav
// will not be able to work properly
bbs.sys_status|=SS_PAUSEOFF;
console.aborted = false; console.aborted = false;
if (typeof menuobj === "undefined") { if (typeof menuobj === "undefined") {
...@@ -609,21 +604,21 @@ function external_menu_custom(menuid) ...@@ -609,21 +604,21 @@ function external_menu_custom(menuid)
if (gamesrv && (menuid == 'main')) { if (gamesrv && (menuid == 'main')) {
menuitemsfiltered.push({ menuitemsfiltered.push({
input: 'Q', input: 'Q',
title: options.custom_logoff_msg !== undefined ? options.custom_logoff_msg : 'Logoff', title: options.custom_logoff_msg,
target: '', target: '',
type: 'quit', type: 'quit',
}); });
} else if (menuid == 'main') { } else if (menuid == 'main') {
menuitemsfiltered.push({ menuitemsfiltered.push({
input: 'Q', input: 'Q',
title: options.custom.quit_msg !== undefined ? options.custom.quit_msg : 'Quit', title: options.custom.quit_msg,
target: '', target: '',
type: 'quit', type: 'quit',
}); });
} else { } else {
menuitemsfiltered.unshift({ menuitemsfiltered.unshift({
input: 'Q', input: 'Q',
title: options.custom.return_msg !== undefined ? options.custom.return_msg : 'Return to Previous Menu', title: options.custom.return_msg,
target: '', target: '',
type: 'quit', type: 'quit',
}); });
...@@ -697,49 +692,35 @@ function external_menu_custom(menuid) ...@@ -697,49 +692,35 @@ function external_menu_custom(menuid)
// allow overriding format on a per-item basis // allow overriding format on a per-item basis
// great for featuring a specific game // great for featuring a specific game
var checkkey = menuitemsfiltered[i].target + '-multicolumn_fmt'; var checkkey = menuitemsfiltered[i].target.toLowerCase() + '-multicolumn_fmt';
checkkey = checkkey.toLowerCase();
item_multicolumn_fmt = (typeof options[checkkey] !== "undefined") ? item_multicolumn_fmt = (typeof options[checkkey] !== "undefined") ?
options[checkkey] : options.multicolumn_fmt; options[checkkey] : options.multicolumn_fmt;
item_multicolumn_fmt_inverse = (typeof options[checkkey + "_inverse"] !== "undefined") ? var checkkeyinv = menuitemsfiltered[i].target.toLowerCase() + '-multicolumn_fmt_inverse';
options[checkkey + "_inverse"] : options.multicolumn_fmt_inverse; item_multicolumn_fmt_inverse = (typeof options[checkkeyinv] !== "undefined") ?
options[checkkeyinv] : options.multicolumn_fmt_inverse;
checkkey = menuitemsfiltered[i].target + '-singlecolumn_fmt' checkkey = menuitemsfiltered[i].target.toLowerCase() + '-singlecolumn_fmt';
checkkey = checkkey.toLowerCase(); checkkeyinv = menuitemsfiltered[i].target.toLowerCase() + '-singlecolumn_fmt_inverse';
item_singlecolumn_fmt = (typeof options[checkkey] !== "undefined") ? item_singlecolumn_fmt = (typeof options[checkkey] !== "undefined") ?
options[checkkey] : options.singlecolumn_fmt; options[checkkey] : options.singlecolumn_fmt;
item_singlecolumn_fmt_inverse = (typeof options[checkkey + "_inverse"] !== "undefined") ? item_singlecolumn_fmt_inverse = (typeof options[checkkeyinv] !== "undefined") ?
options[checkkey + "_inverse"] : options.singlecolumn_fmt_inverse; options[checkkeyinv] : options.singlecolumn_fmt_inverse;
if (i == selected_index) { if (selected_index == i) {
if (menuitemsfiltered[i].type == 'quit') { printf(
printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, menuitemsfiltered[i].type == 'quit' ? options.return_multicolumn_fmt_inverse : item_multicolumn_fmt_inverse,
menuitemsfiltered[i].input.toString().toUpperCase(), menuitemsfiltered[i].input.toString().toUpperCase(),
menuitemsfiltered[i].title, menuitemsfiltered[i].title,
'' menuitemsfiltered[i].type == 'quit' ? '' : cost
);
} else {
printf(multicolumn ? item_multicolumn_fmt_inverse : item_singlecolumn_fmt_inverse,
menuitemsfiltered[i].input.toString().toUpperCase(),
menuitemsfiltered[i].title,
cost
);
}
} else {
if (menuitemsfiltered[i].type == 'quit') {
printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
menuitemsfiltered[i].input.toString().toUpperCase(),
menuitemsfiltered[i].title,
''
); );
} else { } else {
printf(multicolumn ? item_multicolumn_fmt : item_singlecolumn_fmt, printf(
menuitemsfiltered[i].type == 'quit' ? options.return_multicolumn_fmt : item_multicolumn_fmt,
menuitemsfiltered[i].input.toString().toUpperCase(), menuitemsfiltered[i].input.toString().toUpperCase(),
menuitemsfiltered[i].title, menuitemsfiltered[i].title,
cost menuitemsfiltered[i].type == 'quit' ? '' : cost
); );
} }
}
if (multicolumn) { if (multicolumn) {
if (typeof menuitemsfiltered[j] !== "undefined") { if (typeof menuitemsfiltered[j] !== "undefined") {
...@@ -754,48 +735,31 @@ function external_menu_custom(menuid) ...@@ -754,48 +735,31 @@ function external_menu_custom(menuid)
// allow overriding format on a per-item basis // allow overriding format on a per-item basis
// great for featuring a specific game // great for featuring a specific game
var checkkey = menuitemsfiltered[j].target + '-multicolumn_fmt'; var checkkey = menuitemsfiltered[j].target.toLowerCase() + '-multicolumn_fmt';
checkkey = checkkey.toLowerCase();
item_multicolumn_fmt = (typeof options[checkkey] !== "undefined") ? item_multicolumn_fmt = (typeof options[checkkey] !== "undefined") ?
options[checkkey] : options.multicolumn_fmt; options[checkkey] : options.multicolumn_fmt;
item_multicolumn_fmt_inverse = (typeof options[checkkey + "_inverse"] !== "undefined") ? var checkkeyinv = menuitemsfiltered[j].target.toLowerCase() + '-multicolumn_fmt_inverse';
options[checkkey + "_inverse"] : options.multicolumn_fmt_inverse; item_multicolumn_fmt_inverse = (typeof options[checkkeyinv] !== "undefined") ?
options[checkkeyinv] : options.multicolumn_fmt_inverse;
checkkey = menuitemsfiltered[j].target + '-singlecolumn_fmt'
checkkey = checkkey.toLowerCase();
write(options.multicolumn_separator); write(options.multicolumn_separator);
console.add_hotspot(menuitemsfiltered[j].input.toString()); console.add_hotspot(menuitemsfiltered[j].input.toString());
if (selected_index == j) { if (selected_index == j) {
if (menuitemsfiltered[j].type == 'quit') { printf(
printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_fmt_inverse : item_multicolumn_fmt_inverse,
menuitemsfiltered[j].input.toString().toUpperCase(), menuitemsfiltered[j].input.toString().toUpperCase(),
menuitemsfiltered[j].title, menuitemsfiltered[j].title,
'' menuitemsfiltered[j].type == 'quit' ? '' : cost
); );
} else { } else {
printf(item_multicolumn_fmt_inverse, printf(
menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_fmt : item_multicolumn_fmt,
menuitemsfiltered[j].input.toString().toUpperCase(), menuitemsfiltered[j].input.toString().toUpperCase(),
menuitemsfiltered[j].title, menuitemsfiltered[j].title,
cost menuitemsfiltered[j].type == 'quit' ? '' : cost
); );
} }
} else {
if (menuitemsfiltered[j].type == 'quit') {
printf(return_multicolumn_fmt,
menuitemsfiltered[j].input.toString().toUpperCase(),
menuitemsfiltered[j].title,
''
);
} else {
printf(item_multicolumn_fmt,
menuitemsfiltered[j].input.toString().toUpperCase(),
menuitemsfiltered[j].title,
cost
);
}
}
} else { } else {
write(options.multicolumn_separator); write(options.multicolumn_separator);
} }
...@@ -816,6 +780,9 @@ function external_menu_custom(menuid) ...@@ -816,6 +780,9 @@ function external_menu_custom(menuid)
bbs.node_sync(); bbs.node_sync();
console.mnemonics(options.which); console.mnemonics(options.which);
// turn back on pausing
bbs.sys_status&=~SS_PAUSEOFF;
} }
validkeys.push('q'); validkeys.push('q');
...@@ -830,8 +797,8 @@ function external_menu_custom(menuid) ...@@ -830,8 +797,8 @@ function external_menu_custom(menuid)
var maxkeylen = 0; var maxkeylen = 0;
var maxfirstkey = 0; var maxfirstkey = 0;
var morekeys = []; var morekeys = [];
var k;
for (k in validkeys) { for (var k in validkeys) {
if (validkeys[k] == "\x1B") { if (validkeys[k] == "\x1B") {
continue; continue;
} }
...@@ -1025,25 +992,6 @@ function special_menu(menutype, title, itemcount) { ...@@ -1025,25 +992,6 @@ function special_menu(menutype, title, itemcount) {
var options = ExternalMenus.getOptions('custommenu', menuid); var options = ExternalMenus.getOptions('custommenu', menuid);
// Allow overriding auto-format on a per-menu basis
var multicolumn_fmt = options.custom.multicolumn_fmt_special !== undefined
? options.custom.multicolumn_fmt_special : options.multicolumn_fmt;
var singlecolumn_fmt = options.custom.singlecolumn_fmt_special !== undefined
? options.custom.singlecolumn_fmt_special : options.singlecolumn_fmt;
var multicolumn_fmt_inverse = options.custom.multicolumn_fmt_special_inverse !== undefined
? options.custom.multicolumn_fmt_special_inverse : options.multicolumn_fmt_inverse;
var singlecolumn_fmt_inverse = options.custom.singlecolumn_fmt_special_inverse !== undefined
? options.custom.singlecolumn_fmt_special_inverse : options.singlecolumn_fmt_inverse;
var return_singlecolumn_special_fmt = options.custom.return_singlecolumn_special_fmt !== undefined
? options.custom.return_singlecolumn_special_fmt : singlecolumn_fmt;
var return_multicolumn_special_fmt = options.custom.return_multicolumn_special_fmt !== undefined
? options.custom.return_multicolumn_special_fmt : multicolumn_fmt;
var return_singlecolumn_special_fmt_inverse = options.custom.return_singlecolumn_special_fmt_inverse !== undefined
? options.custom.return_singlecolumn_special_fmt_inverse : singlecolumn_fmt_inverse;
var return_multicolumn_special_fmt_inverse = options.custom.return_multicolumn_special_fmt_inverse !== undefined
? options.custom.return_multicolumn_special_fmt_inverse : multicolumn_fmt_inverse;
while (bbs.online) { while (bbs.online) {
console.aborted = false; console.aborted = false;
...@@ -1071,7 +1019,7 @@ function special_menu(menutype, title, itemcount) { ...@@ -1071,7 +1019,7 @@ function special_menu(menutype, title, itemcount) {
// The quit item is intended to aid in the lightbar navigation // The quit item is intended to aid in the lightbar navigation
menuitemsfiltered.unshift({ menuitemsfiltered.unshift({
input: 'Q', input: 'Q',
title: options.custom.return_msg !== undefined ? options.custom.return_msg : 'Return to Previous Menu', title: options.custom.return_msg,
target: '', target: '',
type: 'quit', type: 'quit',
}); });
...@@ -1127,34 +1075,24 @@ function special_menu(menutype, title, itemcount) { ...@@ -1127,34 +1075,24 @@ function special_menu(menutype, title, itemcount) {
} }
if (i == selected_index) { if (i == selected_index) {
if (menuitemsfiltered[i].type == 'quit') { var itemformatret = multicolumn ? options.return_multicolumn_special_fmt_inverse : options.return_singlecolumn_special_fmt_inverse;
printf(multicolumn ? return_multicolumn_special_fmt_inverse : return_singlecolumn_special_fmt_inverse, var itemformat = multicolumn ? options.multicolumn_fmt_special_inverse : options.singlecolumn_fmt_special_inverse
printf(
menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
menuitemsfiltered[i].input, menuitemsfiltered[i].input,
menuitemsfiltered[i].title, menuitemsfiltered[i].title,
'' menuitemsfiltered[i].type == 'quit' ? '' : menuitemsfiltered[i].stats
); );
} else { } else {
printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse, var itemformatret = multicolumn ? options.return_multicolumn_special_fmt : options.return_singlecolumn_special_fmt;
var itemformat = multicolumn ? options.multicolumn_fmt_special : options.singlecolumn_fmt_special
printf(
menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
menuitemsfiltered[i].input, menuitemsfiltered[i].input,
menuitemsfiltered[i].title, menuitemsfiltered[i].title,
menuitemsfiltered[i].stats menuitemsfiltered[i].type == 'quit' ? '' : menuitemsfiltered[i].stats
); );
} }
} else {
if (menuitemsfiltered[i].type == 'quit') {
printf(multicolumn ? return_multicolumn_special_fmt : return_singlecolumn_special_fmt,
menuitemsfiltered[i].input,
menuitemsfiltered[i].title,
''
);
} else {
printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt,
menuitemsfiltered[i].input,
menuitemsfiltered[i].title,
menuitemsfiltered[i].stats
);
}
}
if (multicolumn) { if (multicolumn) {
if (typeof menuitemsfiltered[j] !== "undefined") { if (typeof menuitemsfiltered[j] !== "undefined") {
...@@ -1167,35 +1105,21 @@ function special_menu(menutype, title, itemcount) { ...@@ -1167,35 +1105,21 @@ function special_menu(menutype, title, itemcount) {
write(options.multicolumn_separator); write(options.multicolumn_separator);
console.add_hotspot(menuitemsfiltered[j].input.toString()); console.add_hotspot(menuitemsfiltered[j].input.toString());
if (selected_index == j) { if (j == selected_index) {
if (menuitemsfiltered[j].type == 'quit') { printf(
printf(multicolumn ? return_multicolumn_special_fmt_inverse : return_singlecolumn_special_fmt_inverse, menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_special_fmt_inverse : options.multicolumn_fmt_special_inverse,
menuitemsfiltered[j].input,
menuitemsfiltered[j].title,
''
);
} else {
printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse,
menuitemsfiltered[j].input,
menuitemsfiltered[j].title,
menuitemsfiltered[j].stats
);
}
} else {
if (menuitemsfiltered[j].type == 'quit') {
printf(multicolumn ? return_multicolumn_special_fmt : return_singlecolumn_special_fmt,
menuitemsfiltered[j].input, menuitemsfiltered[j].input,
menuitemsfiltered[j].title, menuitemsfiltered[j].title,
'' menuitemsfiltered[j].type == 'quit' ? '' : menuitemsfiltered[j].stats
); );
} else { } else {
printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt, printf(
menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_special_fmt : options.multicolumn_fmt_special,
menuitemsfiltered[j].input, menuitemsfiltered[j].input,
menuitemsfiltered[j].title, menuitemsfiltered[j].title,
menuitemsfiltered[j].stats menuitemsfiltered[j].type == 'quit' ? '' : menuitemsfiltered[j].stats
); );
} }
}
} else { } else {
write(options.multicolumn_separator); write(options.multicolumn_separator);
} }
...@@ -1367,15 +1291,6 @@ function search_menu(title, itemcount) { ...@@ -1367,15 +1291,6 @@ function search_menu(title, itemcount) {
var options = ExternalMenus.getOptions('custommenu', menuid); var options = ExternalMenus.getOptions('custommenu', menuid);
var return_multicolumn_fmt = options.custom.return_multicolumn_fmt !== undefined
? options.custom.return_multicolumn_fmt : multicolumn_fmt;
var return_singlecolumn_fmt = options.custom.return_singlecolumn_fmt !== undefined
? options.custom.return_singlecolumn_fmt : singlecolumn_fmt;
var return_singlecolumn_fmt_inverse = options.custom.return_singlecolumn_fmt_inverse !== undefined
? options.custom.return_singlecolumn_fmt_inverse : singlecolumn_fmt_inverse;
var return_multicolumn_fmt_inverse = options.custom.return_multicolumn_fmt_inverse !== undefined
? options.custom.return_multicolumn_fmt_inverse : multicolumn_fmt_inverse;
while (bbs.online) { while (bbs.online) {
console.aborted = false; console.aborted = false;
...@@ -1403,7 +1318,8 @@ function search_menu(title, itemcount) { ...@@ -1403,7 +1318,8 @@ function search_menu(title, itemcount) {
if (!searchterm) { if (!searchterm) {
return; return;
} else { } else {
console.crlf(); console.up();
console.clearline();
printf(typeof options.custom.searchresultsheader !== "undefined" printf(typeof options.custom.searchresultsheader !== "undefined"
? options.custom.searchresultsheader : "\x01n\x01cSearch Results for \x01h%s", searchterm); ? options.custom.searchresultsheader : "\x01n\x01cSearch Results for \x01h%s", searchterm);
} }
...@@ -1531,31 +1447,23 @@ function search_menu(title, itemcount) { ...@@ -1531,31 +1447,23 @@ function search_menu(title, itemcount) {
} }
if (i == selected_index) { if (i == selected_index) {
if (menuitemsfiltered[i].type == 'quit') { var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse;
printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse;
menuitemsfiltered[i].input.toString().toUpperCase(), printf(
menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
menuitemsfiltered[i].input,
menuitemsfiltered[i].title, menuitemsfiltered[i].title,
'' ''
); );
} else { } else {
printf(multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse, var itemformatret = multicolumn ? options.return_multicolumn_fmt : options.return_singlecolumn_fmt;
var itemformat = multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt;
printf(
menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
menuitemsfiltered[i].input, menuitemsfiltered[i].input,
menuitemsfiltered[i].title
);
}
} else {
if (menuitemsfiltered[i].type == 'quit') {
printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
menuitemsfiltered[i].input.toString().toUpperCase(),
menuitemsfiltered[i].title, menuitemsfiltered[i].title,
'' ''
); );
} else {
printf(multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt,
menuitemsfiltered[i].input,
menuitemsfiltered[i].title
);
}
} }
if (multicolumn) { if (multicolumn) {
...@@ -1569,31 +1477,23 @@ function search_menu(title, itemcount) { ...@@ -1569,31 +1477,23 @@ function search_menu(title, itemcount) {
console.add_hotspot(menuitemsfiltered[j].input.toString()); console.add_hotspot(menuitemsfiltered[j].input.toString());
if (j == selected_index) { if (j == selected_index) {
if (menuitemsfiltered[j].type == 'quit') { var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse;
printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse;
menuitemsfiltered[j].input.toString().toUpperCase(), printf(
menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat,
menuitemsfiltered[j].input,
menuitemsfiltered[j].title, menuitemsfiltered[j].title,
'' ''
); );
} else { } else {
printf(multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse, var itemformatret = multicolumn ? options.return_multicolumn_fmt : options.return_singlecolumn_fmt;
var itemformat = multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt;
printf(
menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat,
menuitemsfiltered[j].input, menuitemsfiltered[j].input,
menuitemsfiltered[j].title
);
}
} else {
if (menuitemsfiltered[j].type == 'quit') {
printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
menuitemsfiltered[j].input.toString().toUpperCase(),
menuitemsfiltered[j].title, menuitemsfiltered[j].title,
'' ''
); );
} else {
printf(multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt,
menuitemsfiltered[j].input,
menuitemsfiltered[j].title
);
}
} }
} else { } else {
write(options.multicolumn_separator); write(options.multicolumn_separator);
...@@ -1798,21 +1698,6 @@ function favorites_menu(title, itemcount) { ...@@ -1798,21 +1698,6 @@ function favorites_menu(title, itemcount) {
var options = ExternalMenus.getOptions('custommenu', menuid); var options = ExternalMenus.getOptions('custommenu', menuid);
// Allow overriding auto-format on a per-menu basis
var multicolumn_fmt = options.multicolumn_fmt;
var singlecolumn_fmt = options.singlecolumn_fmt;
var multicolumn_fmt_inverse = options.multicolumn_fmt_inverse;
var singlecolumn_fmt_inverse = options.singlecolumn_fmt_inverse;
var return_singlecolumn_fmt = options.custom.return_singlecolumn_fmt !== undefined
? options.custom.return_singlecolumn_fmt : singlecolumn_fmt;
var return_multicolumn_fmt = options.custom.return_multicolumn_fmt !== undefined
? options.custom.return_multicolumn_fmt : multicolumn_fmt;
var return_singlecolumn_fmt_inverse = options.custom.return_singlecolumn_fmt_inverse !== undefined
? options.custom.return_singlecolumn_fmt_inverse : singlecolumn_fmt_inverse;
var return_multicolumn_fmt_inverse = options.custom.return_multicolumn_fmt_inverse !== undefined
? options.custom.return_multicolumn_fmt_inverse : multicolumn_fmt_inverse;
while (bbs.online) { while (bbs.online) {
console.aborted = false; console.aborted = false;
...@@ -1835,21 +1720,21 @@ function favorites_menu(title, itemcount) { ...@@ -1835,21 +1720,21 @@ function favorites_menu(title, itemcount) {
// The quit item is intended to aid in the lightbar navigation // The quit item is intended to aid in the lightbar navigation
menuitemsfiltered.unshift({ menuitemsfiltered.unshift({
input: 'Q', input: 'Q',
title: options.custom.return_msg !== undefined ? options.custom.return_msg : 'Return to Previous Menu', title: options.custom.return_msg,
target: '', target: '',
type: 'quit' type: 'quit'
}); });
menuitemsfiltered.push({ menuitemsfiltered.push({
input: '+', input: '+',
title: options.custom.favorite_add_item !== undefined ? options.custom.favorite_add_item : 'Add Item', title: options.custom.favorite_add_item,
target: '', target: '',
type: 'add' type: 'add'
}); });
menuitemsfiltered.push({ menuitemsfiltered.push({
input: '-', input: '-',
title: options.custom.favorite_remove_item !== undefined ? options.custom.favorite_remove_item : 'Remove Item', title: options.custom.favorite_remove_item,
target: '', target: '',
type: 'remove' type: 'remove'
}); });
...@@ -1904,30 +1789,22 @@ function favorites_menu(title, itemcount) { ...@@ -1904,30 +1789,22 @@ function favorites_menu(title, itemcount) {
} }
if (i == selected_index) { if (i == selected_index) {
if (menuitemsfiltered[i].type == 'quit') { var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse;
printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse
printf(
menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
menuitemsfiltered[i].input, menuitemsfiltered[i].input,
menuitemsfiltered[i].title menuitemsfiltered[i].title
); );
} else { } else {
printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse, var itemformatret = multicolumn ? options.return_multicolumn_fmt : options.return_singlecolumn_fmt;
var itemformat = multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt
printf(
menuitemsfiltered[i].type == 'quit' ? itemformatret : itemformat,
menuitemsfiltered[i].input, menuitemsfiltered[i].input,
menuitemsfiltered[i].title menuitemsfiltered[i].title
); );
} }
} else {
if (menuitemsfiltered[i].type == 'quit') {
printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
menuitemsfiltered[i].input,
menuitemsfiltered[i].title
);
} else {
printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt,
menuitemsfiltered[i].input,
menuitemsfiltered[i].title
);
}
}
if (multicolumn) { if (multicolumn) {
if (typeof menuitemsfiltered[j] !== "undefined") { if (typeof menuitemsfiltered[j] !== "undefined") {
...@@ -1940,31 +1817,23 @@ function favorites_menu(title, itemcount) { ...@@ -1940,31 +1817,23 @@ function favorites_menu(title, itemcount) {
write(options.multicolumn_separator); write(options.multicolumn_separator);
console.add_hotspot(menuitemsfiltered[j].input.toString()); console.add_hotspot(menuitemsfiltered[j].input.toString());
if (selected_index == j) { if (j == selected_index) {
if (menuitemsfiltered[j].type == 'quit') { var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse;
printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse
menuitemsfiltered[j].input, printf(
menuitemsfiltered[j].title menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat,
);
} else {
printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse,
menuitemsfiltered[j].input,
menuitemsfiltered[j].title
);
}
} else {
if (menuitemsfiltered[j].type == 'quit') {
printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt,
menuitemsfiltered[j].input, menuitemsfiltered[j].input,
menuitemsfiltered[j].title menuitemsfiltered[j].title
); );
} else { } else {
printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt, var itemformatret = multicolumn ? options.return_multicolumn_fmt : options.return_singlecolumn_fmt;
var itemformat = multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt
printf(
menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat,
menuitemsfiltered[j].input, menuitemsfiltered[j].input,
menuitemsfiltered[j].title menuitemsfiltered[j].title
); );
} }
}
} else { } else {
write(options.multicolumn_separator); write(options.multicolumn_separator);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment