Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
custom:menu_files [2013/10/03 00:01] – [Menu Files] digital mancustom:menu_files [2024/10/24 13:56] (current) – [Optional] Clarify that group/lib/section numbering is 1-based for menu files digital man
Line 2: Line 2:
  
 Menu files displayed to the remote terminal client / user are stored in the ''[[dir:text]]/menu'' directory. Menu files displayed to the remote terminal client / user are stored in the ''[[dir:text]]/menu'' directory.
 +
 +Menu files that have been translated to alternate languages (represented by ''[[dir:ctrl]]/text.//lang//.ini'' files) are stored in their ''[[dir:text]]/menu///lang//'' directory.
 +
 +Other display files (mainly used during the terminal server's //new user// registration process), are stored in the ''[[dir:text]]'' directory.
  
 Menu files may have one of the following file suffixes / extensions: Menu files may have one of the following file suffixes / extensions:
  
-^Extension       ^Description^ +^Extension       ^Description of expected contents
-|''.asc''        |[[Ctrl-A Codes]] for ANSI X3.64-subset and Dumb ASCII/TTY Terminals+|''.asc''        |ASCII characters (CP437 characters, optionally)| 
-|''.ans''        |ANSI X3.64 Color Terminals (only)+|''.msg''        |ASCII/CP437 characters ((the main difference between .asc and .msg files are their selection priority, with .asc files targeting plain-ASCII terminals)) | 
-|''.mon''        |ANSI X3.64 Monochrome Terminals+|''.seq''        |PETSCII characters and control-sequences 
-|''.rip''        |RIPscrip Terminals+|''.ans''        |ASCII/CP437 characters and ANSI X3.64 Terminal control-sequences
-|''.wip''        |WIP Terminals (deprecated)+|''.mon''        |ASCII/CP437 characters and ANSI X3.64 Terminal control-sequences suited for monochrome displays 
-|''.html''       |Experimental HTMLterm|+|''.rip''        |ASCII/CP437 characters and RIPscrip Terminal control-sequences
 + 
 +//All// of these file types may contain [[Ctrl-A Codes]] color/attribute codes and/or [[atcodes|@-Codes]]. 
 + 
 +Although you may have multiple menu files with the same base filename and different suffixes/extensions, only one menu file will be selected and displayed to the terminal user based on their configured or auto-detected terminal type/capabilities. The menu/display file selection priority is as follows (the highest-priority file type that exists on disk will be displayed to the user): 
 + 
 +|          |^ ANSI / CP437((ANSI/CP437 would be the most common BBS terminal-type encountered))         ^^ ANSI / ASCII       ^|   ||| 
 +^ Priority ^     RIP    ^ Color    ^ Mono      ^  Color   ^ Mono      PETSCII  ^ TTY / CP437    TTY / ASCII     ^ 
 +| 1        | ''.rip''   ''.ans'' | ''.mon'' | ''.ans'' | ''.mon''  | ''.seq''  | ''.msg''      | ''.asc''       
 +| 2        | ''.ans''   | ''.msg'' | ''.ans'' | ''.asc'' | ''.ans''  | ''.msg''  | ''.asc''      | ''.msg''       | 
 +3        | ''.msg''   | ''.asc'' | ''.msg'' | ''.msg'' | ''.asc''  | ''.asc''  |                              | 
 +| 4        | ''.asc''            | ''.asc'' |          | ''.msg''  |                                        | 
 + 
 +Each of these file types may be preempted by a terminal-width specific file with a name ending in ''.//X//col//.ext//'' where ''//X//'' is the **exact** number of screen columns required to display the file correctly (e.g. 40, 80, 132) and ''//.ext//'' is one of the supported file extensions from the above list. To specify a **minimum** number of screen columns for a display file, use filenames ending in ''.c//X.ext//'' where //X// is the minimum number of screen columns to display the file correctly.
  
-See the [[http://cvs.synchro.net/cgi-bin/viewcvs.cgi/text/menu/|Menu Directory]] in [[dev:CVS]] for default menu files and their contents.+If you only have **one** display file for any particular base filename, it should have either a ''.msg'' or ''.asc'' extension and contain no terminal-control sequences (e.g. ANSI, PETSCII, or RIP).
  
-All of these file types may contain [[Ctrl-A Codes]] and/or [[atcodes|@-Codes]].+See the [[https://gitlab.synchro.net/main/sbbs/-/tree/master/text/menu|Menu Directory]] in [[dev:git]] for default menu files and their contents.
  
 Most menu files are loaded/displayed by a [[custom:command shell]], so the name and location (e.g. sub-directory) of those files may depend on which command shell is in use by the users of your [[server:terminal]] server. Most menu files are loaded/displayed by a [[custom:command shell]], so the name and location (e.g. sub-directory) of those files may depend on which command shell is in use by the users of your [[server:terminal]] server.
Line 58: Line 75:
 ===== Optional ===== ===== Optional =====
  
-Optional menu file names and descriptions (do not exist by default):+Optional menu file names and descriptions (these file do not exist by default):
  
 ^Base filename ^Displayed By^Description^ ^Base filename ^Displayed By^Description^
Line 66: Line 83:
 |dlprot        |str.cpp     |Download transfer protocols (displayed instead of dynamically generated list)| |dlprot        |str.cpp     |Download transfer protocols (displayed instead of dynamically generated list)|
 |ulprot        |str.cpp     |Upload transfer protocols (displayed instead of dynamically generated list)| |ulprot        |str.cpp     |Upload transfer protocols (displayed instead of dynamically generated list)|
 +|upload        |shell_lib.js | Displayed before the prompt for user-supplied filename to upload |
 |grps          |execmsg.cpp |Message Group listing (displayed instead of dynamically generated list)| |grps          |execmsg.cpp |Message Group listing (displayed instead of dynamically generated list)|
-|subsx         |execmsg.cpp |Message Sub-board listing, 'xis the group number|+|subs//<x>//         |execmsg.cpp |Message Sub-board listing, //<x>// is the (one-based) group number|
 |libs          |execfile.cpp|File Library listing (displayed instead of dynamically generated list)| |libs          |execfile.cpp|File Library listing (displayed instead of dynamically generated list)|
-|dirsx         |execfile.cpp|File Directory listing, 'xis the library number|+|msglist | msglist.js|Used by [[module:msglist|Message List]]| 
 +|msgview | msglist.js|Used by [[module:msglist|Message List]]| 
 +|msgtabs       |writemsg.cpp|Internal message editor tab bar| 
 +|dirs//<x>//         |execfile.cpp|File Directory listing, //<x>// is the (one-based) library number
 +|xtrn_sec_head      |xtrn_sec.js |External Program Sections header|
 |xtrn_sec      |xtrn_sec.js |External Program Sections (displayed instead of dynamically generated list)| |xtrn_sec      |xtrn_sec.js |External Program Sections (displayed instead of dynamically generated list)|
-|xtrnx         |xtrn_sec.js |External Program listing, 'xis the section number|+|xtrn_sec_tail      |xtrn_sec.js |External Program Sections footer| 
 +|xtrn//<x>//_head    |xtrn_sec.js |External Program list header, //<x>// is the (one-based) section number| 
 +|xtrn//<code>//_head    |xtrn_sec.js |External Program list header, //<code>// is the section code| 
 +|xtrn_head | xtrn_sec.js | External Program list header (global)| 
 +|xtrn//<x>//         |xtrn_sec.js |External Program listing, //<x>// is the (one-based) section number
 +|xtrn//<code>//         |xtrn_sec.js |External Program listing, //<code>// is the section code| 
 +|xtrn///<code>//|xtrn_sec.js|Message displayed just before executing the external program represented by //<code>//
 +|xtrn//<x>//_tail    |xtrn_sec.js |External Program list footer, //<x>// is the (one-based) section number| 
 +|xtrn//<code>//_tail    |xtrn_sec.js |External Program list footer, //<code>// is the section code| 
 +|xtrn_tail | xtrn_sec.js | External Program list footer (global)|
 |text_sec      |text_sec.cpp|Text File Section listing (displayed instead of dynamically generated list)| |text_sec      |text_sec.cpp|Text File Section listing (displayed instead of dynamically generated list)|
-|textx         |text_sec.cpp|Text File listing, 'xis the text file section number|+|text//<x>//         |text_sec.cpp|Text File listing, //<x>// is the (one-based) text file section number|
 |chan          |chat.cpp    |Multinode Chat Channels (displayed instead of dynamically generated list)| |chan          |chat.cpp    |Multinode Chat Channels (displayed instead of dynamically generated list)|
 |tmessage      |default.src |Displays when the user enters the transfer section| |tmessage      |default.src |Displays when the user enters the transfer section|
 |tpolicy       |str.cpp     |File transfer policy (displayed instead of ''[[custom:text.dat]]'' strings: TransferPolicyHdr, TpUpload, TpDownload)| |tpolicy       |str.cpp     |File transfer policy (displayed instead of ''[[custom:text.dat]]'' strings: TransferPolicyHdr, TpUpload, TpDownload)|
-|randomx       |logon.js    |Random logon screen (random1, random2, random3, etc.)|+|random//<x>//       |logon.js    |Random logon screen (e.g. ''random1''''random2''''random3'', etc.)|
  
 ===== See Also ===== ===== See Also =====
Line 85: Line 116:
   * [[util:ASC2ANS]] utility   * [[util:ASC2ANS]] utility
   * [[util:ANS2ASC]] utility   * [[util:ANS2ASC]] utility
 +  * [[resource:ANSI Editors]]
  
 {{tag>}} {{tag>}}