diff --git a/exec/load/xtrnmenulib.js b/exec/load/xtrnmenulib.js index 71e6e790c4bf2278e337328dbdbddd6611a1341d..5a0bf122bbcaa96d2cb6c32b80143bdd2ea0a0ca 100644 --- a/exec/load/xtrnmenulib.js +++ b/exec/load/xtrnmenulib.js @@ -43,147 +43,208 @@ ExternalMenus.prototype.getOptions = function(menutype, menuid) { if (typeof menutype === "undefined") { menutype = 'custommenu'; } - + // Get xtrn_sec options from modopts.ini [xtrn_sec] if ((this.options = load({}, "modopts.js", "xtrn_sec")) == null) { 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) { this.xtrn_custommenu_options = { }; } - - // in all cases, we start with the xtrn_sec options as the base and set the defaults - if (this.options.multicolumn === undefined) + + // We start with the option from xtrnmenu. If it doesn't exist, + // 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; - - 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 = " "; - - 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) + } + + if (typeof this.xtrn_custommenu_options.multicolumn_fmt !== "undefined") { + this.options.multicolumn_fmt = this.xtrn_custommenu_options.multicolumn_fmt; + } else if (typeof this.options.multicolumn_fmt === "undefined") { + // 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 "; + } + + if (typeof this.xtrn_custommenu_options.singlecolumn_fmt !== "undefined") { + this.options.singlecolumn_fmt = this.xtrn_custommenu_options.singlecolumn_fmt; + } else if (typeof this.options.singlecolumn_fmt === "undefined") { + // 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 "; + } + + if (typeof this.xtrn_custommenu_options.multicolumn_fmt_inverse !== "undefined") { + this.options.multicolumn_fmt_inverse = this.xtrn_custommenu_options.multicolumn_fmt_inverse; + } else { + // cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s + this.options.multicolumn_fmt_inverse = "\x01h\x01c%3s \xb3 \x01n\x016\x01w\x01h%-32.32s \x01n\x01h"; + } + + if (typeof this.xtrn_custommenu_options.singlecolumn_fmt_inverse !== "undefined") { + this.options.singlecolumn_fmt_inverse = this.xtrn_custommenu_options.singlecolumn_fmt_inverse; + } else { + // cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s + this.options.singlecolumn_fmt_inverse = "\x01h\x01c%3s \xb3 \x01n\x016\x01w\x01h%s \x01n\x01h"; + } + + if (typeof this.xtrn_custommenu_options.return_multicolumn_fmt !== "undefined") { + 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.multicolumn_fmt_special = typeof this.xtrn_custommenu_options.multicolumn_fmt_special !== "undefined" + ? this.xtrn_custommenu_options.multicolumn_fmt_special : this.options.multicolumn_fmt; + + this.options.singlecolumn_fmt_special = typeof this.xtrn_custommenu_options.singlecolumn_fmt_special !== "undefined" + ? this.xtrn_custommenu_options.singlecolumn_fmt_special : this.options.singlecolumn_fmt; + + this.options.multicolumn_fmt_special_inverse = typeof this.xtrn_custommenu_options.multicolumn_fmt_special_inverse !== "undefined" + ? this.xtrn_custommenu_options.multicolumn_fmt_special_inverse : this.options.multicolumn_fmt_inverse; + + this.options.singlecolumn_fmt_special_inverse = typeof this.xtrn_custommenu_options.singlecolumn_fmt_special_inverse !== "undefined" + ? this.xtrn_custommenu_options.singlecolumn_fmt_special_inverse : this.options.singlecolumn_fmt_inverse; + + this.options.return_singlecolumn_special_fmt = typeof this.xtrn_custommenu_options.return_singlecolumn_special_fmt + ? this.xtrn_custommenu_options.return_singlecolumn_special_fmt : this.options.singlecolumn_fmt; + + this.options.return_multicolumn_special_fmt = typeof this.xtrn_custommenu_options.return_multicolumn_special_fmt + ? this.xtrn_custommenu_options.return_multicolumn_special_fmt : this.options.multicolumn_fmt; + + this.options.return_singlecolumn_special_fmt_inverse = typeof this.xtrn_custommenu_options.return_singlecolumn_special_fmt_inverse + ? this.xtrn_custommenu_options.return_singlecolumn_special_fmt_inverse : this.options.singlecolumn_fmt_inverse; + + this.options.return_multicolumn_special_fmt_inverse = typeof this.xtrn_custommenu_options.return_multicolumn_special_fmt_inverse + ? this.xtrn_custommenu_options.return_multicolumn_special_fmt_inverse : this.options.multicolumn_fmt_inverse_inverse; + + if (typeof this.xtrn_custommenu_options.singlecolumn_margin !== "undefined") { + this.options.singlecolumn_margin = this.xtrn_custommenu_options.singlecolumn_margin; + } else if (typeof this.options.singlecolumn_margin === "undefined") { this.options.singlecolumn_margin = 7; - - if (this.options.restricted_user_msg === undefined) + } + + if (typeof this.xtrn_custommenu_options.restricted_user_msg !== "undefined") { + 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 (this.options.no_programs_msg === undefined) - this.options.no_programs_msg = system.text(NoXtrnPrograms); - - if (this.options.header_fmt === undefined) + } + + 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 (this.options.titles === undefined) + } + + 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 (this.options.underline === undefined) - this.options.underline = system.text(XtrnProgLstUnderline); - - if (this.options.which === undefined) + } + + 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 (this.options.clear_screen === undefined) + } + + 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 (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 (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"; - // if its a custom menu, then override with custommenu_options - if (menutype == 'custommenu') { - if (typeof this.xtrn_custommenu_options.multicolumn_fmt !== "undefined") { - this.options.multicolumn_fmt = this.xtrn_custommenu_options.multicolumn_fmt; - } else { - // 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 "; - } - - if (typeof this.xtrn_custommenu_options.singlecolumn_fmt !== "undefined") { - this.options.singlecolumn_fmt = this.xtrn_custommenu_options.singlecolumn_fmt; - } else { - // 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 "; - } - - if (typeof this.xtrn_custommenu_options.multicolumn_fmt_inverse !== "undefined") { - this.options.multicolumn_fmt_inverse = this.xtrn_custommenu_options.multicolumn_fmt_inverse; - } else { - // cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s - this.options.multicolumn_fmt_inverse = "\x01h\x01c%3s \xb3 \x01n\x016\x01w\x01h%-32.32s \x01n\x01h"; - } - - if (typeof this.xtrn_custommenu_options.singlecolumn_fmt_inverse !== "undefined") { - this.options.singlecolumn_fmt_inverse = this.xtrn_custommenu_options.singlecolumn_fmt_inverse; - } else { - // cannot default to xtrn_sec multicolumn_fmt due to use of %u instead of %s - 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") - ? this.xtrn_custommenu_options.header_fmt : this.options.header_fmt; - - this.options.titles = (typeof this.xtrn_custommenu_options.titles !== "undefined") - ? this.xtrn_custommenu_options.titles : this.options.titles; - - this.options.which = (typeof this.xtrn_custommenu_options.which !== "undefined") - ? this.xtrn_custommenu_options.which : this.options.which; - - this.options.underline = (typeof this.xtrn_custommenu_options.underline !== "undefined") - ? this.xtrn_custommenu_options.underline : this.options.underline; - - this.options.multicolumn_separator = (typeof this.xtrn_custommenu_options.multicolumn_separator !== "undefined") - ? this.xtrn_custommenu_options.multicolumn_separator : this.options.multicolumn_separator; - - this.options.multicolumn = (typeof this.xtrn_custommenu_options.multicolumn !== "undefined") - ? this.xtrn_custommenu_options.multicolumn : this.options.multicolumn; - - this.options.sort = (typeof this.xtrn_custommenu_options.sort !== "undefined") - ? this.xtrn_custommenu_options.sort : this.options.sort; - - this.options.clear_screen = (typeof this.xtrn_custommenu_options.clear_screen !== "undefined") - ? this.xtrn_custommenu_options.clear_screen : this.options.clear_screen; - - this.options.singlecolumn_margin = (typeof this.xtrn_custommenu_options.singlecolumn_margin !== "undefined") - ? this.xtrn_custommenu_options.singlecolumn_margin : this.options.singlecolumn_margin; - - if (typeof bbs !== "undefined") { - // override and turn off multicolumn if terminal width is less than 80 - if (console.screen_columns < 80) - options.multicolumn = false; - } - - // no need to override restricted_user_msg or no_programs_msg - these - // will be the same for both types of menus - - // Allow overriding on a per-menu basis - var menuoptions = load({}, "modopts.js", "xtrnmenu:" + menuid); - if ((typeof menuid !== "undefined") && (menuoptions !== null)) { - for (var m in menuoptions) { - this.options[m] = menuoptions[m]; - } + 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 + var menuoptions = load({}, "modopts.js", "xtrnmenu:" + menuid); + if ((typeof menuid !== "undefined") && (menuoptions !== null)) { + for (var m in menuoptions) { + 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.xtrn_custommenu_options.json_enabled : false; @@ -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.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; return this.options; diff --git a/exec/xtrnmenu.js b/exec/xtrnmenu.js index 40e27710a7265c6f0a5d3e271f7faa64d3050b86..76ab2c42eb0bf517cc96d2ece123bb14de90001e 100644 --- a/exec/xtrnmenu.js +++ b/exec/xtrnmenu.js @@ -559,15 +559,6 @@ function external_menu_custom(menuid) 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) { console.aborted = false; @@ -609,21 +600,21 @@ function external_menu_custom(menuid) if (gamesrv && (menuid == 'main')) { menuitemsfiltered.push({ input: 'Q', - title: options.custom_logoff_msg !== undefined ? options.custom_logoff_msg : 'Logoff', + title: options.custom_logoff_msg, target: '', type: 'quit', }); } else if (menuid == 'main') { menuitemsfiltered.push({ input: 'Q', - title: options.custom.quit_msg !== undefined ? options.custom.quit_msg : 'Quit', + title: options.custom.quit_msg, target: '', type: 'quit', }); } else { menuitemsfiltered.unshift({ input: 'Q', - title: options.custom.return_msg !== undefined ? options.custom.return_msg : 'Return to Previous Menu', + title: options.custom.return_msg, target: '', type: 'quit', }); @@ -697,48 +688,34 @@ function external_menu_custom(menuid) // allow overriding format on a per-item basis // great for featuring a specific game - var checkkey = menuitemsfiltered[i].target + '-multicolumn_fmt'; - checkkey = checkkey.toLowerCase(); + var checkkey = menuitemsfiltered[i].target.toLowerCase() + '-multicolumn_fmt'; item_multicolumn_fmt = (typeof options[checkkey] !== "undefined") ? options[checkkey] : options.multicolumn_fmt; - item_multicolumn_fmt_inverse = (typeof options[checkkey + "_inverse"] !== "undefined") ? - options[checkkey + "_inverse"] : options.multicolumn_fmt_inverse; + var checkkeyinv = menuitemsfiltered[i].target.toLowerCase() + '-multicolumn_fmt_inverse'; + item_multicolumn_fmt_inverse = (typeof options[checkkeyinv] !== "undefined") ? + options[checkkeyinv] : options.multicolumn_fmt_inverse; - checkkey = menuitemsfiltered[i].target + '-singlecolumn_fmt' - checkkey = checkkey.toLowerCase(); + checkkey = menuitemsfiltered[i].target.toLowerCase() + '-singlecolumn_fmt'; + checkkeyinv = menuitemsfiltered[i].target.toLowerCase() + '-singlecolumn_fmt_inverse'; item_singlecolumn_fmt = (typeof options[checkkey] !== "undefined") ? options[checkkey] : options.singlecolumn_fmt; - item_singlecolumn_fmt_inverse = (typeof options[checkkey + "_inverse"] !== "undefined") ? - options[checkkey + "_inverse"] : options.singlecolumn_fmt_inverse; + item_singlecolumn_fmt_inverse = (typeof options[checkkeyinv] !== "undefined") ? + options[checkkeyinv] : options.singlecolumn_fmt_inverse; - if (i == selected_index) { - if (menuitemsfiltered[i].type == 'quit') { - printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, - menuitemsfiltered[i].input.toString().toUpperCase(), - menuitemsfiltered[i].title, - '' - ); - } else { - printf(multicolumn ? item_multicolumn_fmt_inverse : item_singlecolumn_fmt_inverse, - menuitemsfiltered[i].input.toString().toUpperCase(), - menuitemsfiltered[i].title, - cost - ); - } + if (selected_index == i) { + printf( + menuitemsfiltered[i].type == 'quit' ? options.return_multicolumn_fmt_inverse : item_multicolumn_fmt_inverse, + menuitemsfiltered[i].input.toString().toUpperCase(), + menuitemsfiltered[i].title, + menuitemsfiltered[i].type == 'quit' ? '' : cost + ); } else { - if (menuitemsfiltered[i].type == 'quit') { - printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt, - menuitemsfiltered[i].input.toString().toUpperCase(), - menuitemsfiltered[i].title, - '' - ); - } else { - printf(multicolumn ? item_multicolumn_fmt : item_singlecolumn_fmt, - menuitemsfiltered[i].input.toString().toUpperCase(), - menuitemsfiltered[i].title, - cost - ); - } + printf( + menuitemsfiltered[i].type == 'quit' ? options.return_multicolumn_fmt : item_multicolumn_fmt, + menuitemsfiltered[i].input.toString().toUpperCase(), + menuitemsfiltered[i].title, + menuitemsfiltered[i].type == 'quit' ? '' : cost + ); } if (multicolumn) { @@ -754,47 +731,30 @@ function external_menu_custom(menuid) // allow overriding format on a per-item basis // great for featuring a specific game - var checkkey = menuitemsfiltered[j].target + '-multicolumn_fmt'; - checkkey = checkkey.toLowerCase(); + var checkkey = menuitemsfiltered[j].target.toLowerCase() + '-multicolumn_fmt'; item_multicolumn_fmt = (typeof options[checkkey] !== "undefined") ? options[checkkey] : options.multicolumn_fmt; - item_multicolumn_fmt_inverse = (typeof options[checkkey + "_inverse"] !== "undefined") ? - options[checkkey + "_inverse"] : options.multicolumn_fmt_inverse; - - checkkey = menuitemsfiltered[j].target + '-singlecolumn_fmt' - checkkey = checkkey.toLowerCase(); + var checkkeyinv = menuitemsfiltered[j].target.toLowerCase() + '-multicolumn_fmt_inverse'; + item_multicolumn_fmt_inverse = (typeof options[checkkeyinv] !== "undefined") ? + options[checkkeyinv] : options.multicolumn_fmt_inverse; write(options.multicolumn_separator); console.add_hotspot(menuitemsfiltered[j].input.toString()); if (selected_index == j) { - if (menuitemsfiltered[j].type == 'quit') { - printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, - menuitemsfiltered[j].input.toString().toUpperCase(), - menuitemsfiltered[j].title, - '' - ); - } else { - printf(item_multicolumn_fmt_inverse, - menuitemsfiltered[j].input.toString().toUpperCase(), - menuitemsfiltered[j].title, - cost - ); - } + printf( + menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_fmt_inverse : item_multicolumn_fmt_inverse, + menuitemsfiltered[j].input.toString().toUpperCase(), + menuitemsfiltered[j].title, + 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 - ); - } + printf( + menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_fmt : item_multicolumn_fmt, + menuitemsfiltered[j].input.toString().toUpperCase(), + menuitemsfiltered[j].title, + menuitemsfiltered[j].type == 'quit' ? '' : cost + ); } } else { write(options.multicolumn_separator); @@ -830,8 +790,8 @@ function external_menu_custom(menuid) var maxkeylen = 0; var maxfirstkey = 0; var morekeys = []; - var k; - for (k in validkeys) { + + for (var k in validkeys) { if (validkeys[k] == "\x1B") { continue; } @@ -1025,25 +985,6 @@ function special_menu(menutype, title, itemcount) { 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) { console.aborted = false; @@ -1071,7 +1012,7 @@ function special_menu(menutype, title, itemcount) { // The quit item is intended to aid in the lightbar navigation menuitemsfiltered.unshift({ input: 'Q', - title: options.custom.return_msg !== undefined ? options.custom.return_msg : 'Return to Previous Menu', + title: options.custom.return_msg, target: '', type: 'quit', }); @@ -1127,74 +1068,50 @@ function special_menu(menutype, title, itemcount) { } if (i == selected_index) { - if (menuitemsfiltered[i].type == 'quit') { - printf(multicolumn ? return_multicolumn_special_fmt_inverse : return_singlecolumn_special_fmt_inverse, - menuitemsfiltered[i].input, - menuitemsfiltered[i].title, - '' - ); - } else { - printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse, - menuitemsfiltered[i].input, - menuitemsfiltered[i].title, - menuitemsfiltered[i].stats - ); - } + var itemformatret = multicolumn ? options.return_multicolumn_special_fmt_inverse : options.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].title, + 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 - ); - } + 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].title, + menuitemsfiltered[i].type == 'quit' ? '' : menuitemsfiltered[i].stats + ); } - + if (multicolumn) { if (typeof menuitemsfiltered[j] !== "undefined") { validkeys.push(menuitemsfiltered[j].input.toString()); - + if (menuitemsfiltered[j].input > keymax) { keymax = menuitemsfiltered[i].input; } - + write(options.multicolumn_separator); console.add_hotspot(menuitemsfiltered[j].input.toString()); - if (selected_index == j) { - if (menuitemsfiltered[j].type == 'quit') { - printf(multicolumn ? return_multicolumn_special_fmt_inverse : return_singlecolumn_special_fmt_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 - ); - } + if (j == selected_index) { + printf( + menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_special_fmt_inverse : options.multicolumn_fmt_special_inverse, + menuitemsfiltered[j].input, + menuitemsfiltered[j].title, + menuitemsfiltered[j].type == 'quit' ? '' : menuitemsfiltered[j].stats + ); } else { - if (menuitemsfiltered[j].type == 'quit') { - printf(multicolumn ? return_multicolumn_special_fmt : return_singlecolumn_special_fmt, - menuitemsfiltered[j].input, - menuitemsfiltered[j].title, - '' - ); - } else { - printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt, - menuitemsfiltered[j].input, - menuitemsfiltered[j].title, - menuitemsfiltered[j].stats - ); - } + printf( + menuitemsfiltered[j].type == 'quit' ? options.return_multicolumn_special_fmt : options.multicolumn_fmt_special, + menuitemsfiltered[j].input, + menuitemsfiltered[j].title, + menuitemsfiltered[j].type == 'quit' ? '' : menuitemsfiltered[j].stats + ); } } else { write(options.multicolumn_separator); @@ -1367,15 +1284,6 @@ function search_menu(title, itemcount) { 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) { console.aborted = false; @@ -1403,7 +1311,8 @@ function search_menu(title, itemcount) { if (!searchterm) { return; } else { - console.crlf(); + console.up(); + console.clearline(); printf(typeof options.custom.searchresultsheader !== "undefined" ? options.custom.searchresultsheader : "\x01n\x01cSearch Results for \x01h%s", searchterm); } @@ -1531,31 +1440,23 @@ function search_menu(title, itemcount) { } if (i == selected_index) { - if (menuitemsfiltered[i].type == 'quit') { - printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, - menuitemsfiltered[i].input.toString().toUpperCase(), - menuitemsfiltered[i].title, - '' - ); - } else { - printf(multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse, - menuitemsfiltered[i].input, - menuitemsfiltered[i].title - ); - } + var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.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].title, + '' + ); } else { - if (menuitemsfiltered[i].type == 'quit') { - printf(multicolumn ? return_multicolumn_fmt : return_singlecolumn_fmt, - menuitemsfiltered[i].input.toString().toUpperCase(), - menuitemsfiltered[i].title, - '' - ); - } else { - printf(multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt, - menuitemsfiltered[i].input, - menuitemsfiltered[i].title - ); - } + 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].title, + '' + ); } if (multicolumn) { @@ -1569,31 +1470,23 @@ function search_menu(title, itemcount) { console.add_hotspot(menuitemsfiltered[j].input.toString()); if (j == selected_index) { - if (menuitemsfiltered[j].type == 'quit') { - printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, - menuitemsfiltered[j].input.toString().toUpperCase(), - menuitemsfiltered[j].title, - '' - ); - } else { - printf(multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse, - menuitemsfiltered[j].input, - menuitemsfiltered[j].title - ); - } + var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse; + var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse; + printf( + menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat, + 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, - '' - ); - } else { - printf(multicolumn ? options.multicolumn_fmt : options.singlecolumn_fmt, - menuitemsfiltered[j].input, - menuitemsfiltered[j].title - ); - } + 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].title, + '' + ); } } else { write(options.multicolumn_separator); @@ -1798,21 +1691,6 @@ function favorites_menu(title, itemcount) { 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) { console.aborted = false; @@ -1835,21 +1713,21 @@ function favorites_menu(title, itemcount) { // The quit item is intended to aid in the lightbar navigation menuitemsfiltered.unshift({ input: 'Q', - title: options.custom.return_msg !== undefined ? options.custom.return_msg : 'Return to Previous Menu', + title: options.custom.return_msg, target: '', type: 'quit' }); menuitemsfiltered.push({ input: '+', - title: options.custom.favorite_add_item !== undefined ? options.custom.favorite_add_item : 'Add Item', + title: options.custom.favorite_add_item, target: '', type: 'add' }); menuitemsfiltered.push({ input: '-', - title: options.custom.favorite_remove_item !== undefined ? options.custom.favorite_remove_item : 'Remove Item', + title: options.custom.favorite_remove_item, target: '', type: 'remove' }); @@ -1904,29 +1782,21 @@ function favorites_menu(title, itemcount) { } if (i == selected_index) { - if (menuitemsfiltered[i].type == 'quit') { - printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, - menuitemsfiltered[i].input, - menuitemsfiltered[i].title - ); - } else { - printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse, - menuitemsfiltered[i].input, - menuitemsfiltered[i].title - ); - } + var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.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].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 - ); - } + 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].title + ); } if (multicolumn) { @@ -1940,30 +1810,22 @@ function favorites_menu(title, itemcount) { write(options.multicolumn_separator); console.add_hotspot(menuitemsfiltered[j].input.toString()); - if (selected_index == j) { - if (menuitemsfiltered[j].type == 'quit') { - printf(multicolumn ? return_multicolumn_fmt_inverse : return_singlecolumn_fmt_inverse, - menuitemsfiltered[j].input, - menuitemsfiltered[j].title - ); - } else { - printf(multicolumn ? multicolumn_fmt_inverse : singlecolumn_fmt_inverse, - menuitemsfiltered[j].input, - menuitemsfiltered[j].title - ); - } + if (j == selected_index) { + var itemformatret = multicolumn ? options.return_multicolumn_fmt_inverse : options.return_singlecolumn_fmt_inverse; + var itemformat = multicolumn ? options.multicolumn_fmt_inverse : options.singlecolumn_fmt_inverse + printf( + menuitemsfiltered[j].type == 'quit' ? itemformatret : itemformat, + 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].title - ); - } else { - printf(multicolumn ? multicolumn_fmt : singlecolumn_fmt, - menuitemsfiltered[j].input, - menuitemsfiltered[j].title - ); - } + 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].title + ); } } else { write(options.multicolumn_separator);