home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / comm / bbs / 4d-bbsdemo / docs / text / 08.menus < prev    next >
Encoding:
Text File  |  1993-12-28  |  28.3 KB  |  854 lines

  1. Chapter 8:
  2.  
  3.         Menus and Menu Commands
  4.  
  5.  
  6.  
  7.  
  8.  
  9. 8.1.1  Overview
  10.  
  11. The menus are the heart of the BBS.  They direct the user around the BBS,
  12. and act as a guide.  Whether the menus are simple and plain, or complicated
  13. and fancy, the SsyOp has complete control over every aspect of the menus.
  14. This is a powerful feature enabling the SsyOp to personalize and create a
  15. BBS which is very unique.
  16.  
  17.  
  18. 8.2.1  Menu Formats
  19.  
  20. All menu files are plain ascii files located in the MENU: directory.
  21. Editing and creating menus should be done with a text editor like MEMACS,
  22. or QED.
  23.  
  24. The first line of the menu file should be the help file for the menu. This
  25. filename is appended either a .ASCII or .ANSI automatically by the BBS,
  26. depending on the on-line user's mode.
  27.  
  28. The second line is the prompt for the menu. This can include EIC codes and
  29. color codes.  If color codes are encountered and the user is in ASCII mode,
  30. they will simply be ingnored.  Max of 80 characters.
  31.  
  32. The third line is the type of entry for the menu, and they are listed
  33. below.
  34.  
  35. Type  Description
  36.  
  37.  
  38.  0    Hotkey-User Enters one character without enerting return.
  39.  
  40. #>0   User can enter UP TO # characters, and must hit return at end.
  41.       IE: 10 means the user can enter up to 10 characters.
  42.  
  43.  #    The number sign means that a user can enter one character without/
  44.       having to hit return, but can enter up to a 3 digit number and must
  45.       hit return.  This is must often used in a menu to allow the user to
  46.       enter hot keys, and full numbers (ie: in a message bases menu to
  47.       change sections.
  48.  
  49.  -1   No user entry for this menu, and the first command will be executed
  50.       automatically, irrelevant of the keypress code.  If the second, third
  51.       and so on commands also have the same keypress, they will be executed
  52.       also.  This mode is designed for Command Menus. (see 8.4.2)
  53.  
  54. From the fourth line on, each line represents one function.  Everything on
  55. the line before the : represents the keypress for that function, the : is
  56. the seperator, everything on the right side of the colon is assumed to be
  57. the command.  The command can be split up into one to four parts seperated
  58. by spaces.
  59.  
  60. If a keystroke has more characters than alotted in line three, the function
  61. WILL NOT be accessible by the user.  Multiple lines CAN HAVE the same
  62. keystroke, and all lines will be executed BUT they must ALL be consecutive
  63. lines in the menu file.
  64.  
  65. An example line would be:
  66.  
  67. p:p p 0
  68.  
  69. This means the keystroke is a single p, and the command is :p with
  70. parameters of p 0.  An example of multiple lines would be:
  71.  
  72. o:2 TEXT:LOGOFF.TXT
  73. o:0 q
  74.  
  75. This would display the file "TEXT:LOGOFF.TXT" to the user, then do a quick
  76. logoff.  The following would NOT execute the third line:
  77.  
  78. o:2 TEXT:LOGOFF.TXT
  79. o:2 TEXT:LEAVE.TXT
  80. p:p p 0
  81. o:0 q
  82.  
  83. In this example, the BBS would execute the first two commands, but upon
  84. seeing that p (line 4) is different from the o (line 2) the BBS would
  85. return to the prompt, and NOT execute the fourth line.
  86.  
  87.  
  88. 8.2.2 Layouts
  89.  
  90. 4D-BBS uses menu locks to control user access to menus.  These menu locks
  91. can be unique to each user, and are system specific.  When designing your
  92. menus, it is best to first list all menus which you will be using, and give
  93. a unique lock to each menu.  If some menus are similar in function, you can
  94. give the same lock to them, to cut down on the number of menu locks used.
  95. See Section 8.5.1 for more information.
  96.  
  97. There are two types of menu layouts which can be used. The first is a
  98. hirechy method which means a menu is called, and when finished, the calling
  99. menu regains control.  You can stack menus in this method up to 16 times,
  100. so keep this in mind when designing your menus.
  101.  
  102. The second method is a basic goto or jump.  In this method, the calling
  103. menu is NOT remembered.  This is ideal if you wish to setup a maze or
  104. setting type BBS since menus do not have to be remembered.
  105.  
  106. Below is two examples of menus:
  107.  
  108.  
  109.                           Main Menu
  110.                ________________|___________________
  111.               |                |                   |
  112.         Message Bases      File Transfers      Game Room
  113.               |
  114.       Electronic Mail
  115.  
  116.  
  117. In the above setting, a user starts out at the main menu, an can go to one
  118. of the three menus.  If they choose the message bases, they can not go into
  119. the game room unless they exit the message bases and go back to the main
  120. menu.  If they are in the file transfers, and want to go to electronic
  121. mail, they must go to the main menu, then the message bases, then finally
  122. to electronic mail.
  123.  
  124.  
  125.                       +-  Main Menu     -+
  126.                      /        |           \
  127.       Message Bases +---------+------------+-  Game Room
  128.         |            \        |           /
  129.       E-Mail          +- File Transfers -+
  130.  
  131.  
  132. In the above example, A user can jump from any section they wish to, to
  133. another section EXCEPT for the E-Mail section. To go to or from the E-Mail
  134. section, they must go through the Message Bases.
  135.  
  136. Remember the two above examples are ONLY examples, and the SYSOP can setup
  137. the BBS using one of them, a combination, or design their own layout.
  138.  
  139.  
  140. 8.2.3  Menu Move Commands
  141.  
  142. The 0 and 1 menu command cover most basic menu move operations. They are:
  143.  
  144. Command    Description
  145.  
  146. 0 e        Exits the current menu, and returs to the calling menu.  Can
  147.            Only be used if the calling menu used the 1 command.
  148.  
  149. 0 M        Returns to the main menu and clears all hierachy stacks.
  150.  
  151. 0 * NAME   Enters a new menu WITHOUT saving the previous menu.  The * is
  152.            the lock for the new menu.  The new menu does NOT know who the
  153.            calling menu was.
  154.  
  155.  
  156. 1 * Name   Enter a name menu saving the previous menu.  The * is the lock
  157.            for the new menu.  The new menu DOES know who the calling menu
  158.            is and can use the 0 e command to return to the calling menu.
  159.  
  160.  
  161. The two basic commands for moving between menus can be mixed (as in the
  162. second example of section 8.2.2, but caution should be exercised when doing
  163. so.  A loop like this can cause stack limit problems:
  164.  
  165.          Menu --+
  166.           |     |
  167.       Sub-Menu  |
  168.           |     |
  169.      Sub-Menu2 -+
  170.  
  171. If a jump was used to go from sub-menu 2 back to menu, the stack would not
  172. be cleared.  Doing this two many times would bring upon a maximum sub-menus
  173. encountered error to the user.
  174.  
  175. 8.3.1  Menu Commands
  176.  
  177. When a user hits a key in a menu, the BBS will scan the menu file, to see
  178. if any matching keypresses are found.  If none are found, and the menu is
  179. in kotkey mode, nothing will happen, and the BBS will get another
  180. character.  If the menu is multi-character input and the BBS does not find
  181. a match, it will display "Unknown menu function" and redisplay the prompt.
  182.  
  183. If the BBS does find a match, it will execute the command after the : in
  184. the line, and then check to see if the next line is the same. If it is,
  185. then that line will also be executed, and this cycle is continued until
  186. either a match is not found, or the last command is executed.
  187.  
  188. Once a command is finished the BBS displays the prompt again, and starts
  189. this process all over again.  If the command which was executed goes to
  190. another menu, this process is continued on THAT menu.  If the command logs
  191. the user off, the process of course, stops.
  192.  
  193.  
  194. 8.4.1  Types of Menu
  195.  
  196. Currently there are four types of menus which you can setup. These four
  197. types of menus are command menus, personal menus, access menus, and
  198. default menus.
  199.  
  200. 8.4.2  Command Menus
  201.  
  202. A command menu is a menu that directly executes the first command without
  203. displaying the logon/stats screen, or bulletins.  An example of using
  204. this type of menu would be if you wanted to spawn a serial based program
  205. when a certain account logged on.  UUCP's UUCICO could be used this way.
  206.  
  207. The format for this type of menu is the "Cmd." plus the account name
  208. plus ".menu". So, if you were running UUCP, and your feeds logon account
  209. was called UUCP, you would make a menu called Cmd.UUCP.Menu, which is a
  210. normal menu, with the first command as "a:4 UUCICO" and the second command
  211. as "a:q".  Although the keypress for the commands are irelavant, they MUST
  212. be the same.
  213.  
  214. 8.4.3  Personal Menus
  215.  
  216. A personal menu is the same as a main menu, except it is used INSTEAD of
  217. the default access or main menu.  This allows you to give a different menu
  218. set to a certain user.  The filename is comprised of be putting the
  219. user's names between "main." and ".menu".  (ie: "Main.John_doe.Menu)
  220.  
  221. The difference between a command menu and a personal menu is that a
  222. personal menu will display the logon/stats screens, and check for new
  223. bulletins.
  224.  
  225. 8.4.4  Access Menus
  226.  
  227. You can create a different MAIN menu for each access group.  These replace
  228. the default main.menu, and are only used if found.  The filename format of
  229. these menus are MAIN.[ACCESS GROUP].Menu.  Valid filenames are
  230. Main.NoAccess.Menu, Main.NewUsers.Menu, Main.Members.Menu, and
  231. Main.Sysop.Menu.
  232.  
  233.  
  234. 8.4.5  The Global Menus
  235.  
  236. If all of your menus have one same function, instead of having to define
  237. it for every menu, you could define it only once by entering it into
  238. "global.menu"! Below is an example of "global.menu".
  239.  
  240. --------------------
  241. !:0 H        ; Logs off
  242. X:A          ; Toggle the expert mode
  243. A:B          ; Toggle the ANSI mode
  244. =:0 M        ; Returns to the main menu
  245. --------------------
  246.  
  247. The four functions defined above would work in ALL menus on the system.
  248.  
  249. The format of "global.menu" is just like a regular menu but without the
  250. first three lines. In other words, no display file, no prompt or input
  251. type lines.
  252.  
  253. But, please note that if there is already a keystroke defined in a regular
  254. menu, the function associated with that keystroke will override the one
  255. defined in the file "global.menu." For example, if one regular menu has
  256. the key "!" defined for, say, reading mail, the user who hit "!" would
  257. read mail instead of be logged off.
  258.  
  259.  
  260. 8.5.1 Function Locks
  261.  
  262. Any function in 4D-BBS can be "locked" from a user. For example, if a user
  263. has a lock of "T", this means that the user can not use function T (the
  264. file-downloading function). If a user has a lock string of "tuxyz", then
  265. the use can not use the following functions: "T", "U", "V", "W", "X",
  266. "Y", and "Z".
  267.  
  268.  
  269. 8.5.1 Menu Locks
  270.  
  271. It is also possible to lock a user from a menu.  The menu functions (0 and
  272. 1) have  a paramater which determines which locks the menu uses. Those
  273. lock characters are "!@#$%^&*()". If a menu uses a lock of "$", and a user
  274. has that lock in his lock string, then he will not be able to enter that
  275. menu.  Example:  "f:1 $ file.menu". If a menu uses "^", and the user
  276. doesn't have that in his lock string, then he WILL be able to enter that
  277. menu.
  278.  
  279.  
  280. 8.6.1  An Example Menu
  281.  
  282. Below is an example of a menu file, called "main.menu".
  283.  
  284.         --------------------------------
  285.     mainmenu.txt
  286.     MAIN MENU: 
  287.     0
  288.     ?:0 ?
  289.     o:1 ! off.menu
  290.     z:0 q
  291.     m:1 % base.menu
  292.     d:1 $ file.menu
  293.     y:3 echo "^GChat requested!!!"
  294.     u:5 a 0
  295.     w:5 s 0
  296.     l:6
  297.     e:7
  298.     x:a
  299.     j:q
  300.     v:v
  301.     f:1 % feed.menu
  302.     r:m r 0
  303.     s:m s 0
  304.     !:m m 0
  305.     g:j 0 0       
  306.     a:d a
  307.     b:d s
  308.     p:b
  309.     {:H MeSoCool
  310.     {:1 ^ sysop.menu
  311.         -------------------------------- 
  312.  
  313. The first line of the above example is the name to use for the display
  314. file. There are two versions of the display file, one with the extension
  315. ".ansi" for the ANSI version, and one with the extension ".ascii" for the
  316. ASCII version. (For the above example, there would be two files called
  317. "mainmenu.txt.ansi" and "mainmenu.txt.ascii".)
  318.  
  319. The second line contains a string (up to 80 characters long) that will be
  320. used as the menu prompt. It may contain ANSI sequences or embedded codes.
  321.  
  322. The third is the input type.  A 0 here in this example means hotkeys.
  323.  
  324. The rest is the actual menu. The keys before the ":" will do whatever
  325. function is after the ":".
  326.  
  327.  
  328. 8.7.1  Menu Functions
  329.  
  330. Functions listed in a menu file must follow a strict format. This format
  331. is as follows: the first character of a line is the keypress or word
  332. (depending on the 3rd line #) that you want to represent that function. 
  333. The second character is a delimiter and can be anything but a carriage return. 
  334. The above example uses a colon (":") for this. The third character in a line 
  335. is the actual function call itself. All the functions are listed below.
  336.  
  337. Some functions require one or two parameters. Each parameter must be
  338. seprated by at least a space. A few functions require a string as the
  339. parameter -- this is anything immediately after the function and a space,
  340. and ended by a carriage return.
  341.  
  342.  
  343. **NOTE** If you plan on using a control char like <CTRL>M (enter key) for
  344. your hotkey identifier (EX: If user hits enter <CTRL>M your menu option
  345. could be "^M:0 ?" to show the menu again) you need to place this someplace
  346. HALFWAY in your menu.  If you have this command at the end of your menu you
  347. may get a menu read error warrning. This is not a big deal, and will not
  348. happen if its in the middle of your commands list...
  349.  
  350. Here is a list of all available 4D-BBS functions and a description of each:
  351.  
  352. Function        Description
  353.    0        This function requires a paramater, one of the following:
  354.  
  355.         If an "H" is given, the BBS will send the "logoff.txt"
  356.         file and then hang up.
  357.  
  358.         If a "Q" is given, the BBS will do a QUICK LOGOFF, and
  359.         NOT send the "logoff.txt" message.
  360.  
  361.         If a "E" is given, the bbs will exit to the menu that
  362.         called this menu. If this is placed in the main menu, 
  363.         the effect is the same as the "Q" option.
  364.  
  365.         If a "?" is given, the current menu display will be
  366.         shown.
  367.  
  368.         If a "M" is given, the bbs will return to the main menu
  369.         from anywhere in the menu system.
  370.  
  371.         If the secondary paramater is a menu lock (i.e., one of
  372.         the following: "!,@,#,$,%,^,&,*,(,)"), followed by the
  373.         name of a menu, the bbs will call up a new menu WITHOUT
  374.         saving the current menu. Please use this with caution,
  375.         because if the function "0 E" was executed from such
  376.         a menu, it would have unpredictable results. See the next
  377.         function ("1") for more information.
  378.  
  379.         Examples:
  380.            "g:0 h"     ; log off normally with the "g" key.
  381.            "z:0 q"     ; Instant logoff!
  382.            "?:0 ?"     ; Show the current menu.
  383.            "=:0 M"     ; Return to the main menu
  384.            "t:0 % new.main"     ; Jump to new menu
  385.  
  386.  
  387.     1    This function forces the BBS to call up a new menu file.
  388.         (Also, the previous menu is saved, so when the user exits
  389.         the new menu, he/she will be returned to the previous menu.)
  390.  
  391.         A paramater (one of the following: "!,@,#,$,%,^,&,*,(, )")
  392.         is given and used as a lock to prevent some users from
  393.         accessing this menu. (See Section 6.3 for more information
  394.         locks.)
  395.  
  396.         The second parameter is the name of the new menu which will
  397.         be called from the MENU: directory.
  398.  
  399.         Examples:
  400.             "f:1 ^ file.menu"     ; Load and use file.menu
  401.             "m:1 & mbases"        ; Load and use mbases
  402.  
  403.  
  404.     2    This function will send a text file with page breaks.
  405.         The parameter here is the name of the file to be sent.
  406.         (You need to use the file's full pathname here.) But if
  407.         an "0" is given instead, the user will be prompted for
  408.         the name of a file. (It's a good idea to keep this use
  409.         of the "0" out of most users' reach, since you may not
  410.         want them to "spy" everything on your disks. This is
  411.         intended mostly for sysops' use.)
  412.  
  413.         For example:
  414.             "t:2 TEXT:readme.doc"
  415.  
  416.  
  417.     3    This function will page the sysop for chat. It takes in a string
  418.          parameter some AmigaDos command that you may want to use to
  419.         alert you that the user wants to chat with you, such as playing
  420.         some sound file. However, if the sysop is not available for
  421.         chatting, this command won't be executed -- instead, the user
  422.         will get a message stating that the sysop isn't available for
  423.         chatting. If the string parameter happens to be left out,
  424.         nothing will happen except that the status window will state
  425.         that the user has requested a chat.
  426.  
  427.         Example: 
  428.             "c:3"             ; Page the sysop for chat but doesn't do much
  429.             "c:3 play sound"  ; Plays a sound file
  430.  
  431.  
  432.     4    This function will execute an external DOS command. It
  433.         requires a string containing some DOS command as it's
  434.         parameter.
  435.  
  436.         Example: 
  437.             "e:4 dh0:jrcomm/jrcomm"
  438.  
  439.         The above example will cause the BBS to execute the DOS
  440.         command "dh0:jrcomm/jrcomm" just as if it were typed from
  441.         the CLI.  The BBS will remain dormant until the execution
  442.         of this command is complete. Unless it's pointed to the
  443.         NIL: (Note: if the parameter is    "0", the user will be 
  444.         prompted to enter a DOS command.
  445.  
  446.  
  447.     5    This funtion will show the user list.
  448.  
  449.         If a paramater of "A" is given, the entire user list will
  450.         be shown.
  451.  
  452.         If a "S" is given, the user is prompted for a search string.
  453.         This string will be checked with each entry in the user
  454.         list, and if a match is found, that entry will be shown.
  455.  
  456.         If a "W" is given, then the profile of that user (name,
  457.         phone number, interests, et cetera) will be displayed.
  458.         (Note: it won't be displayed if the user has set his data
  459.         to be private.)
  460.  
  461.         This function requires a second parameter, which is either
  462.         an "0" (which will prompt the user to enter a string) or
  463.         a string. If the string is used, only entries consisting
  464.         of that string will be used.
  465.  
  466.         Examples:
  467.             "s:5 s 0"     ; Will allow you to enter the string
  468.             "s:5 s WA"    ; will automaticaly search for "WA"
  469.             "s:5 w Sysop" ; Will display profile of "Sysop"
  470.             "u:5 A"       ; Complete user list No "0"            
  471.  
  472.  
  473.     6    This funtion will show the daily user log. No parameters
  474.         needed. Example: "l:6"
  475.  
  476.  
  477.     7    This function will activate the user editor to allow an
  478.         user to modify his own personal data. (Not to be confused
  479.         with the sysop user editor accessible from the waiting
  480.         screen.) No parameters needed here.
  481.  
  482.         Example: 
  483.             "e:7"         ; Edit a users stats.
  484.  
  485.  
  486.     8    This function will show the current time and date.
  487.         Example:
  488.             "t:8"         ; Show the current time and date
  489.  
  490.  
  491.     9    Displays the bulletins. (Bulletins are automatically
  492.         displayed upon each user's login, but this function is
  493.         provided here in case the user wishes to see the bulletins
  494.         again. No parameters needed.
  495.  
  496.         Example:
  497.             "b:9"        ; Show the bulletins
  498.  
  499.  
  500.     A    This function will toggle a user's EXPERT mode either
  501.         ON or OFF. No paramaters used.
  502.  
  503.         Example:
  504.             "x:a"         ; Xpert menu toggle
  505.     
  506.  
  507.     B    This function will toggle the ANSI mode. If a user has
  508.         the ANSI mode toggled to OFF, all ANSI color codes will be
  509.         filtered out and the altername ".ASCII" menus will be shown.
  510.         No parameters needed.
  511.  
  512.             "a:b"       ; Toggle ansi filter on/off
  513.  
  514.  
  515.     C    This function executes a Paragon game or door from the
  516.         DOORS: directory  It takes a string as its parameter.
  517.         
  518.         OR
  519.         
  520.         If a paramater of "A" is given, then the string(name)
  521.         4D will execute an AREXX script (Game or whatever it is).
  522.  
  523.             "g:c adv"     ; Run a game called "adv"
  524.             "r:c A rexx:games/cool.rexx"   ; Runs arexx script
  525.  
  526.     D    This function deals with the online BBS listing.
  527.  
  528.         If a paramater of "A" is given, you will be prompted to
  529.         add a BBS entry to the list.
  530.  
  531.         If "S" is given, the entire BBS list will be shown.
  532.  
  533.         Examples: 
  534.             "b:d s"       ; Show the BBS list
  535.             "b:d a"       ; Add a new entry to the list.
  536.  
  537.  
  538.     E    This displays a line of text. Example:
  539.  
  540.             "z:e Hiya world!"   ; Displays "Hiya world!"
  541.  
  542.  
  543.     F    This lets you edit any text file, using the built-in text
  544.         editor. (This is a very good idea to keep this function
  545.         out of users' reach! It is intended mostly for sysops' use
  546.         in case they log on their BBS's remotely and need to fix
  547.         something.) For example:
  548.  
  549.             "e:f 0"               ; Prompts the user for filename
  550.             "e:f text:junk.txt"   ; Edits the file named "text:junk.txt"
  551.  
  552.  
  553.     G    This is a logging function that you can put anywhere in a menu
  554.             function. Basically, it adds a user's name and time to the file.
  555.         For example:
  556.  
  557.                     C:G text:log.txt
  558.             C:1 % new.menu
  559.  
  560.         In the above example, each user who goes to the menu "new.menu"
  561.         will be recorded in the file "log.txt". (NOTE: this file can get
  562.         BIG if updated many times, so be sure to delete it now and then!)
  563.  
  564.  
  565.     H    This prompts the user for a password. The string parameter
  566.         is the actual password. if the password that the user
  567.         typed in does not match this, the bbs will skip all the
  568.         subsequent functions associated with that keystroke. For
  569.         example:
  570.             "x:h EXOTIC"       ; Prompts the user for password
  571.             "x:1 % adult.menu  ; If the password is correct
  572.                                ; then user goes to this menu
  573.  
  574.         (The password is case-insensitive; it doesn't matter to
  575.         the bbs whether the user typed the password in upper or
  576.         lower case.)
  577.  
  578.  
  579.     I    This function will allow you to change the current file
  580.         library.
  581.             
  582.         If a paramater of "G" is given, the current sub will become
  583.         "ALL" and not have a current sub (Good for starting a
  584.         search from the first sub instead of the current sub)
  585.  
  586.         If any other number from 0 to 99 is given, the current
  587.         file library is changed to that number.
  588.  
  589.         Examples:
  590.             "c:i G"        ; Now in "ALL"
  591.             "c:i 12"       ; change to sub 12
  592.  
  593.  
  594.     J    This function will start a "Global Q-Scan" of non-masked
  595.         message sub-boards. No parameters needed.
  596.  
  597.         Example:
  598.             "g:j"     ; Will global scan ALL bases
  599.  
  600.  
  601.     K    This function will change the current message sub-board. It
  602.         works just like the function I. (See the function I above.)
  603.         ** However the "G" param will not work!
  604.  
  605.  
  606.  
  607.     L    This function will show a listing of all available message
  608.         sub-boards. If a parameter of "0" is given, then the entire
  609.         list will be shown. If a 1 to 99 is given, then ONLY that
  610.         sub-board will be listed.
  611.  
  612.         Examples:
  613.             "l:l 0"          ; list all subs
  614.             "l:l 23"         ; list only sub 23
  615.  
  616.  
  617.     M    This is the E-Mail function. 
  618.  
  619.         If a paramater of "S" is given, then the SEND mail function
  620.         will be executed.
  621.  
  622.         If an "R" is given, then the READ mail function will be
  623.         executed.
  624.  
  625.         If an "M" is given, the MULTI-SEND mail function will be
  626.         executed. This function allows you to send one piece of
  627.         mail to up to 10 different users.
  628.  
  629.         This function requires a second parameter, which is "0" or
  630.         the name of a user. If "0" is used, then the user will be
  631.         prompted to enter the name of a user while sending mail.
  632.         Otherwise, the name given as the string parameter will be
  633.         used.
  634.  
  635.         If a name is given in the string parameter of a READ mail
  636.         function, you will be able to READ another user's private
  637.         E-Mail, so it is suggested that this feature not be given
  638.         to the general user.
  639.             
  640.         If the "S" is given followed by "SYSOP" the message will
  641.         be sent to the systems sysop (Feedback).        
  642.  
  643.         The MULTI-MAIL function doesn't require a second parameter.
  644.  
  645.         Examples:
  646.             "s:m s 0"        ; Send mail, prompt for name
  647.             "s:m s JOE BLOW" ; Send mail to joe blow
  648.             "r:m r 0"        ; Read YOUR E-mail.
  649.             "r:m r DON"      ; Read E-mail to DON
  650.             "s:m m 0"        ; Send MULTI-Mail
  651.  
  652.  
  653.     N    This function will display the file catalog. All files
  654.         cataloged under the current file-sub number will be shown.
  655.         If the current sub-number is 0, then ALL files will be shown
  656.         regardless.
  657.  
  658.         If a parameter of "0" is given, the user will be prompted for
  659.         a search string.  The BBS will then show only filenames or
  660.         file descriptions that contain a match to the search string.
  661.  
  662.         If a "1" is given, all files in the current catagory will be
  663.         shown.
  664.  
  665.         If a "2" is given, then all files that have been uploaded
  666.         since the users last call will be shown.
  667.  
  668.         Examples:
  669.             "l:n 0"            ; List whole file catalog
  670.             "l:n 1"            ; Prompt for keyword
  671.             "l:n 2"            ; List new files 
  672.  
  673.  
  674.     O    This function will display all the available file-sub
  675.         directories. No paremeters needed.
  676.         Example: 
  677.             "l:o"                ; List sub's
  678.  
  679.  
  680.     P    This function will let you post, read and scan a message
  681.         sub-board.
  682.  
  683.         If a parameter of "P" is given, the POST function will be
  684.         executed.
  685.  
  686.                If a "R" is given, the READ function will be executed.
  687.  
  688.         If a "S" is given, the SCAN function will be executed.
  689.  
  690.         A second parameter is required here. Normally, "0" is used
  691.         (for the current message baord). But if a number from 1 to
  692.         50 is given, then the function will be performed on the
  693.         board of that number only.
  694.  
  695.         Examples:
  696.             "p:p p 0"    ; Post on current sub.
  697.             "r:p r 0"    ; Read on current sub.
  698.             "r:p r 23"   ; Read on sub 23 only.
  699.             "s:p s 3"    ; Scan sub 3.
  700.             "s:p s 0"    ; Scan the current sub.
  701.  
  702.  
  703.     Q    This function will invoke the MACRO editor. No parameters
  704.         needed. Example:
  705.  
  706.             "m:q"            ; Edit your macros
  707.            
  708.  
  709.     R    This function allows the user to mask out any message
  710.         sub-board or file library from the Global Q-Scan.
  711.         If an "M" is given, the Message base mask editor will be
  712.         called, If an "F" is given the file mask editor will be
  713.         called up. If no param is given the user will be prompted.
  714.  
  715.         Example:
  716.             "y:r f"          ; Files mask editor
  717.             "m:r"            ; Prompt 
  718.  
  719.  
  720.     T    This function will allow a user to DOWNLOAD a file.
  721.  
  722.         If a parameter of "1" is used, the XMODEM transfer protocol
  723.         will be used.
  724.  
  725.         If a "2" is given, then the YMODEM protocol is used.
  726.  
  727.         If a "3" is given, then the ZMODEM protocol is used.
  728.  
  729.         If a "0" is given, the BBS prompts the user for which protocol
  730.         (ASCII, XMODEM, YMODEM, ZMODEM) he/she would like to use.
  731.  
  732.         This function requires a second parameter. If the second
  733.         parameter is a "0", the user will be prompted to enter
  734.         one or more filenames (which should be available in the
  735.         current file library. On the other hand, if parameter
  736.         is a filename (can be any pathname on any device -- it
  737.         needn't be in the file libraries), that file will be
  738.         downloaded.
  739.  
  740.         Examples:
  741.             "d:t 3 0"              ; Download using zmodem
  742.             "d:t 2 file:demo.arc"  ; Download with ymodem, demo.arc
  743.             "d:t 0 0"              ; Prompts user for protocol
  744.  
  745.  
  746.     U    This function will allow a user to UPLOAD a file to the
  747.         current file library. This function works exactly the same
  748.         as the T funtion mentioned above (except that the ASCII
  749.         protocol isn't supported).
  750.  
  751.  
  752.     V    This has to do with the users ability to Mark, view, and
  753.         clear file lists. It needs to have a second param.
  754.  
  755.         If a "C" is given, The mark list will be cleared. If a "L" is 
  756.         given, the mark names will be listed. If a "A" is given,
  757.         one can add a name to the mark list. If a "G" is given, 
  758.         the user is prompted for as many names as he wants.
  759.  
  760.         Examples:
  761.             "y:v c"            ;Clear
  762.             "h:v l"            ;List
  763.             "l:v a file:cool.dat"    ;Tag this file
  764.             "y:v a"            ;Prompt for name
  765.             "f:v g"            ;prompt for LOTS of names
  766.  
  767.  
  768.     W    Catalog Editor **Not available for Demo
  769.  
  770.  
  771.     X    This is the SYSOP'S user editor. No parameters needed.
  772.         Example:
  773.             "u:x"           ; Edit a user
  774.  
  775.  
  776.     Y    Allows you to edit system defaults. However if you give a
  777.         second param, you may enter many editors.
  778.         If there is no second param you will be prompted for which
  779.         editor you wish to run.
  780.  
  781.         If an "F" is given, enter the FileEditor.
  782.         If an "S" is given, enter the system editor.
  783.         If a "B" is given, enter the Boards Editor.
  784.         If a "U" is given, enter the User Defaults editor.
  785.         If a "C" is given, enter the catalog editor  ** !nDemo *
  786.  
  787.         Example:
  788.             "s:y"           ; Be prompted for editor
  789.             "d:y b"        ; enter the Boards editor
  790.  
  791.  
  792.  
  793.  
  794.     Z    This is the system BULLETINS editor. No paramters needed.
  795.         Example:
  796.             "b:z"           ; Edit the bulletin dates.
  797.  
  798.  
  799.     !    This will allow the reloading of system, user and etc. data
  800.         files (Can be used in an arexx script, for example in a
  801.         fido script, if user is on-line or not, update the bbs's
  802.         pointers to show new mail that was just recieved.)
  803.         
  804.         This requires a second paramater, however if none is given
  805.         the message boards pointers will be reloaded.
  806.  
  807.         If an "S" is given, the system data will be reloaded.
  808.         If an "R" is given, the Fido-net data will be reloaded.
  809.         If a "G" is given, the global.menu data will be reloaded.
  810.         If a "U" is given, the user defaults data will be reloaded.
  811.         If an "F" is given, the file/trans data will be reloaded.
  812.     
  813.         If a "W" is given, you NEED to then have a third param.
  814.             the third is the name of the new "Def_say.dat"
  815.             file, this will allow the user to change the
  816.             strings they see (change to a diff. language)
  817.  
  818.         If a "D" is given, same as above "W", this allows you to
  819.             change the paths 4d uses (like the -D CLP switch on 
  820.             the fly) this could allow you to change to a
  821.             completely separate menus directory) It can work
  822.             in conjuction with the "W" command and load in a diff. 
  823.             language menu.
  824.  
  825.         
  826.         The "W" and the "D" commands are extremely handy, a
  827.         language menu can be setup to allow the on-line user the
  828.         ability to change your bbs to suit his needs!
  829.  
  830.         Example:
  831.  
  832.             f:! w BBS:Startrek.lingo    ;load the new strings
  833.             f:! d BBS:Startrek.newpaths    ;load new paths
  834.             g:! g                ;load global menu
  835.  
  836.  
  837.  
  838.         If you changed the global menu or ANY data file and would
  839.         like the bbs to recognize the change NOW, you have these
  840.         menu commands and the pulldown menu to do it.
  841.  
  842.     
  843.     @    This will toggle the QuickListing ability.
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.