Menus sections: Global File areas Message areas User settings Onliners BBS lists ANSI Control Codes
One of the most powerfull features of the BBS is it's menu system. You have complete control over each individual menu item which can be restricted according to criteria such as security levels.
For the menus to work properly you must also draw ANSI screens, this is what the users will see. For Linux there is "Duh DRAW" written by Ben Fowler, see sunsite.unc.edu /pub/Lunux/docs. If you can't find it or have no internet access, you can also use THEDRAW. This utility can be found on many BBS'es around the world. Unfortunatly it is a DOS program so you will need dosemu on your Linux box or a seperate DOS computer. You can define main screens and include screens for each menu, the include screen may for example show the keys that you have available in every menu. See the list of control codes.
A menu function is usually executed when a user presses the hot-key assigned to that particular menu item. But menu functions can also be executed automatically. Each menu item contains an AutoExec field. By default this field is set to No, but by toggling it to Yes, the menu item can be made to execute when it is played back (displayed) by the BBS.
As you read through the menu function types outlined in this chapter, you may come to realize that this is a very powerfull feature. For example, when used with the menu function that displays a text file, you can design very elaborate, graphical text file menus that you wouldn't normally be able to display in a line-by-line menu.
Automatic menu execution can be used in many other instances as well. Just to give you some ideas, it might be used to display a text file to users who have a security level equal to or greater than a certain level. Yet another use is to execute multiple function menus which are used to execute several functions when a single command is entered.
For each language you can define a set of menus. Only for the default language all menus must exist. It makes sense to make the filenames of your menus for each language the same and not to translate them. If a menu is missing for a non default language, the menu from the default language path is used.
At this moment it is not possible to change the order of the menu entries. As the menus the user sees are shown using ANSI screens this is not important. However, the autoexec menus must be placed in the right order from start, ie. begin with the menu specific screen display, then the global include display and finally show the prompt. To create new menus you need to place an empty menu file in the right directory, you can do that using the command touch mymenu.mnu
If a submenu is missing, the BBS falls back to the main menu. This menu must be called "main" (or else set another name in the global setup) or your BBS won't start and complain. Submenus may be nested 50 levels deep.