2018-01-31 23:35:54 +00:00
---
layout: page
title: MCI Codes
---
2019-11-20 03:37:46 +00:00
ENiGMA½ supports a variety of MCI codes. Some **predefined** codes produce information about the current user, system,
or other statistics while others are used to instantiate a **View** . MCI codes are two characters in length and are
prefixed with a percent (%) symbol. Some MCI codes have additional options that may be set directly from the code itself
while others -- and more advanced options -- are controlled via the current theme. Standard (non-focus) and focus colors
2018-01-31 23:35:54 +00:00
are set by placing duplicate codes back to back in art files.
## Predefined MCI Codes
2019-11-20 03:37:46 +00:00
There are many predefined MCI codes that can be used anywhere on the system (placed in any art file). More are added all
the time so also check out [core/predefined_mci.js ](https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js )
2018-11-04 23:12:21 +00:00
for a full listing. Many codes attempt to pay homage to Oblivion/2, iNiQUiTY, etc.
2018-01-31 23:35:54 +00:00
| Code | Description |
|------|--------------|
| `BN` | Board Name |
2019-11-20 03:37:46 +00:00
| `VL` | Version *label* , e.g. "ENiGMA½ v0.0.11-beta" |
| `VN` | Version *number* , eg.. "0.0.11-beta" |
2018-01-31 23:35:54 +00:00
| `SN` | SysOp username |
| `SR` | SysOp real name |
| `SL` | SysOp location |
| `SA` | SysOp affiliations |
| `SS` | SysOp sex |
| `SE` | SysOp email address |
| `UN` | Current user's username |
| `UI` | Current user's user ID |
| `UG` | Current user's group membership(s) |
| `UR` | Current user's real name |
| `LO` | Current user's location |
| `UA` | Current user's age |
2019-01-05 17:49:19 +00:00
| `BD` | Current user's birthday (using theme date format) |
2018-01-31 23:35:54 +00:00
| `US` | Current user's sex |
| `UE` | Current user's email address |
| `UW` | Current user's web address |
| `UF` | Current user's affiliations |
2018-11-25 17:35:05 +00:00
| `UT` | Current user's theme name |
| `UD` | Current user's *theme ID* (e.g. "luciano_blocktronics") |
2018-01-31 23:35:54 +00:00
| `UC` | Current user's login/call count |
| `ND` | Current user's connected node number |
| `IP` | Current user's IP address |
| `ST` | Current user's connected server name (e.g. "Telnet" or "SSH") |
| `FN` | Current user's active file base filter name |
| `DN` | Current user's number of downloads |
| `DK` | Current user's download amount (formatted to appropriate bytes/megs/etc.) |
| `UP` | Current user's number of uploads |
| `UK` | Current user's upload amount (formatted to appropriate bytes/megs/etc.) |
| `NR` | Current user's upload/download ratio |
| `KR` | Current user's upload/download *bytes* ratio |
| `MS` | Current user's account creation date (using theme date format) |
| `PS` | Current user's post count |
| `PC` | Current user's post/call ratio |
| `MD` | Current user's status/viewing menu/activity |
| `MA` | Current user's active message area name |
| `MC` | Current user's active message conference name |
| `ML` | Current user's active message area description |
| `CM` | Current user's active message conference description |
| `SH` | Current user's term height |
| `SW` | Current user's term width |
2019-01-05 17:49:19 +00:00
| `AC` | Current user's total achievements |
| `AP` | Current user's total achievement points |
2019-01-06 04:17:53 +00:00
| `DR` | Current user's number of door runs |
| `DM` | Current user's total amount of time spent in doors |
2018-01-31 23:35:54 +00:00
| `DT` | Current date (using theme date format) |
| `CT` | Current time (using theme time format) |
| `OS` | System OS (Linux, Windows, etc.) |
| `OA` | System architecture (x86, x86_64, arm, etc.) |
| `SC` | System CPU model |
| `NV` | System underlying Node.js version |
| `AN` | Current active node count |
2018-11-26 03:13:48 +00:00
| `TC` | Total login/calls to the system *ever* |
| `TT` | Total login/calls to the system *today* |
2018-01-31 23:35:54 +00:00
| `RR` | Displays a random rumor |
| `SD` | Total downloads, system wide |
| `SO` | Total downloaded amount, system wide (formatted to appropriate bytes/megs/etc.) |
| `SU` | Total uploads, system wide |
2019-11-20 03:37:46 +00:00
| `SP` | Total uploaded amount, system wide (formatted to appropriate bytes/megs/etc.) |
2019-02-24 16:48:48 +00:00
| `TF` | Total number of files on the system |
| `TB` | Total amount of files on the system (formatted to appropriate bytes/megs/gigs/etc.) |
2018-11-28 05:59:26 +00:00
| `TP` | Total messages posted/imported to the system *currently* |
| `PT` | Total messages posted/imported to the system *today* |
2018-01-31 23:35:54 +00:00
2018-11-04 23:12:21 +00:00
Some additional special case codes also exist:
2018-11-17 01:42:04 +00:00
2018-11-04 23:12:21 +00:00
| Code | Description |
|--------|--------------|
| `CF##` | Moves the cursor position forward _##_ characters |
| `CB##` | Moves the cursor position back _##_ characters |
| `CU##` | Moves the cursor position up _##_ characters |
| `CD##` | Moves the cursor position down _##_ characters |
2018-11-17 01:30:44 +00:00
| `XY` | A special code that may be utilized for placement identification when creating menus or to extend an otherwise empty space in an art file down the screen. |
2018-01-31 23:35:54 +00:00
## Views
2019-11-20 03:37:46 +00:00
A **View** is a control placed on a **form** that can display variable data or collect input. One example of a View is
2018-01-31 23:35:54 +00:00
a Vertical Menu (`%VM`): Old-school BBSers may recognize this as a lightbar menu.
| Code | Name | Description |
|------|----------------------|------------------|
| `TL` | Text Label | Displays text |
| `ET` | Edit Text | Collect user input |
| `ME` | Masked Edit Text | Collect user input using a *mask* |
| `MT` | Multi Line Text Edit | Multi line edit control |
| `BT` | Button | A button |
2019-11-20 03:37:46 +00:00
| `VM` | Vertical Menu | A vertical menu aka a vertical lightbar |
| `HM` | Horizontal Menu | A horizontal menu aka a horizontal lightbar |
2018-01-31 23:35:54 +00:00
| `SM` | Spinner Menu | A spinner input control |
2019-11-20 03:37:46 +00:00
| `TM` | Toggle Menu | A toggle menu commonly used for Yes/No style input |
2018-01-31 23:35:54 +00:00
| `KE` | Key Entry | A *single* key input control |
2018-07-28 03:50:51 +00:00
2019-11-20 03:37:46 +00:00
Peek at [/core/mci_view_factory.js ](https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js ) to
2018-01-31 23:35:54 +00:00
see additional information.
## Properties & Theming
2018-11-17 01:30:44 +00:00
Predefined MCI codes and other Views can have properties set via `menu.hjson` and further *themed* via `theme.hjson` . See [Themes ](themes.md ) for more information on this subject.
2018-01-31 23:35:54 +00:00
### Common Properties
| Property | Description |
|-------------|--------------|
| `textStyle` | Sets the standard (non-focus) text style. See **Text Styles** below |
| `focusTextStyle` | Sets focus text style. See **Text Styles** below. |
| `itemSpacing` | Used to separate items in menus such as Vertical Menu and Horizontal Menu Views. |
| `height` | Sets the height of views such as menus that may be > 1 character in height |
| `width` | Sets the width of a view |
| `focus` | If set to `true` , establishes initial focus |
| `text` | (initial) text of a view |
| `submit` | If set to `true` any `accept` action upon this view will submit the encompassing **form** |
2018-07-28 03:50:51 +00:00
| `itemFormat` | Sets the format for a list entry. See **Entry Formatting** below |
| `focusItemFormat` | Sets the format for a focused list entry. See **Entry Formatting** below |
2018-01-31 23:35:54 +00:00
2019-11-20 03:37:46 +00:00
These are just a few of the properties set on various views. *Use the source Luke* , as well as taking a look at the default
2018-01-31 23:35:54 +00:00
`menu.hjson` and `theme.hjson` files!
2018-07-28 03:50:51 +00:00
### Custom Properties
2018-07-28 19:49:12 +00:00
Often a module will provide custom properties that receive format objects (See **Entry Formatting** below). Custom property formatting can be declared in the `config` block. For example, `browseInfoFormat10` ..._N_ (where _N_ is up to 99) in the `file_area_list` module received a fairly extensive format object that contains `{fileName}` , `{estReleaseYear}` , etc.
2018-01-31 23:35:54 +00:00
### Text Styles
Standard style types available for `textStyle` and `focusTextStyle` :
| Style | Description |
|----------|--------------|
2019-11-20 03:37:46 +00:00
| `normal` | Leaves text as-is. This is the default. |
2018-01-31 23:35:54 +00:00
| `upper` | ENIGMA BULLETIN BOARD SOFTWARE |
| `lower` | enigma bulletin board software |
| `title` | Enigma Bulletin Board Software |
| `first lower` | eNIGMA bULLETIN bOARD sOFTWARE |
| `small vowels` | eNiGMa BuLLeTiN BoaRD SoFTWaRe |
| `big vowels` | EniGMa bUllEtIn bOArd sOftwArE |
| `small i` | ENiGMA BULLETiN BOARD SOFTWARE |
| `mixed` | EnIGma BUlLEtIn BoaRd SOfTWarE (randomly assigned) |
2018-07-28 03:50:51 +00:00
| `l33t` | 3n1gm4 bull371n b04rd 50f7w4r3 |
2019-01-05 17:49:19 +00:00
### Entry Formatting
2018-07-28 03:50:51 +00:00
Various strings can be formatted using a syntax that allows width & precision specifiers, text styling, etc. Depending on the context, various elements can be referenced by `{name}` . Additional text styles can be supplied as well. The syntax is largely modeled after Python's [string format mini language ](https://docs.python.org/3/library/string.html#format-specification-mini-language ).
### Additional Text Styles
2019-01-06 04:17:53 +00:00
Some of the text styles mentioned above are also available in the mini format language:
| Style | Description |
|-------|-------------|
| `normal` | Leaves text as-is. This is the default. |
| `toUpperCase` or `styleUpper` | ENIGMA BULLETIN BOARD SOFTWARE |
| `toLowerCase` or `styleLower` | enigma bulletin board software |
| `styleTitle` | Enigma Bulletin Board Software |
| `styleFirstLower` | eNIGMA bULLETIN bOARD sOFTWARE |
| `styleSmallVowels` | eNiGMa BuLLeTiN BoaRD SoFTWaRe |
| `styleBigVowels` | EniGMa bUllEtIn bOArd sOftwArE |
| `styleSmallI` | ENiGMA BULLETiN BOARD SOFTWARE |
| `styleMixed` | EnIGma BUlLEtIn BoaRd SOfTWarE (randomly assigned) |
| `styleL33t` | 3n1gm4 bull371n b04rd 50f7w4r3 |
2018-07-28 03:50:51 +00:00
Additional text styles are available for numbers:
| Style | Description |
|-------------------|---------------|
| `sizeWithAbbr` | File size (converted from bytes) with abbreviation such as `1 MB` , `2.2 GB` , `34 KB` , etc. |
| `sizeWithoutAbbr` | Just the file size (converted from bytes) without the abbreviation. For example: 1024 becomes 1. |
| `sizeAbbr` | Just the abbreviation given a file size (converted from bytes) such as `MB` or `GB` . |
| `countWithAbbr` | Count with abbreviation such as `100 K` , `4.3 B` , etc. |
| `countWithoutAbbr` | Just the count |
| `countAbbr` | Just the abbreviation such as `M` for millions. |
2019-01-06 04:17:53 +00:00
| `durationHours` | Converts the provided *hours* value to something friendly such as `4 hours` , or `4 days` . |
| `durationMinutes` | Converts the provided *minutes* to something friendly such as `10 minutes` or `2 hours` |
| `durationSeconds` | Converts the provided *seconds* to something friendly such as `23 seconds` or `2 minutes` |
2018-07-28 03:50:51 +00:00
#### Examples
Suppose a format object contains the following elements: `userName` and `affils` . We could create a `itemFormat` entry that builds a item to our specifications: `|04{userName!styleFirstLower} |08- |13{affils}` . This may produce a string such as "< font color = "red" > eVIL cURRENT</ font > < font color = "grey" > -</ font > < font color = "magenta" > Razor 1911</ font > ".
Remember that a Python [string format mini language ](https://docs.python.org/3/library/string.html#format-specification-mini-language ) style syntax is available for widths, alignment, number prevision, etc. as well. A number can be made to be more human readable for example: `{byteSize:,}` may yield "1,123,456".