enigma-bbs/art/mci.html

3004 lines
47 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/png" sizes="16x16" href="/enigma-bbs/assets/images/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/enigma-bbs/assets/images/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="32x32" href="/enigma-bbs/assets/images/favicon-32x32.png">
<link rel="stylesheet" href="/enigma-bbs/assets/css/style.css?v=">
<!-- Begin Jekyll SEO tag v2.7.1 -->
<title>MCI Codes | ENiGMA½ BBS Software</title>
<meta name="generator" content="Jekyll v4.2.1" />
<meta property="og:title" content="MCI Codes" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="MCI Codes 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." />
<meta property="og:description" content="MCI Codes 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." />
<meta property="og:site_name" content="ENiGMA½ BBS Software" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2022-04-08T23:19:12+00:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="MCI Codes" />
<script type="application/ld+json">
{"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"description":"MCI Codes 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.","url":"/enigma-bbs/art/mci.html","@type":"BlogPosting","headline":"MCI Codes","dateModified":"2022-04-08T23:19:12+00:00","datePublished":"2022-04-08T23:19:12+00:00","mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/mci.html"},"@context":"https://schema.org"}</script>
<!-- End Jekyll SEO tag -->
</head>
<body>
<div id="container">
<div class="sidebar" id="sidebar">
<hr class="mobile-divide">
<div class="container">
<a href="/enigma-bbs/"><img src="/enigma-bbs/assets/images/enigma-logo.png" class="logo" alt="Enigma logo"></a>
</div>
<ul>
<li>Installation</li>
<ul>
<li><a href="/enigma-bbs/installation/installation-methods.html">Installation Methods</a></li>
<li><a href="/enigma-bbs/installation/install-script.html">Install Script</a></li>
<li><a href="/enigma-bbs/installation/docker.html">Docker</a></li>
<li><a href="/enigma-bbs/installation/manual.html">Manual Installation</a></li>
<li>OS / Hardware Specific</li>
<ul>
<li><a href="/enigma-bbs/installation/hardware/rpi.html">Raspberry Pi</a></li>
<li><a href="/enigma-bbs/installation/hardware/windows.html">Installation Under Windows</a></li>
</ul>
<li><a href="/enigma-bbs/installation/network.html">Network Setup</a></li>
<li><a href="/enigma-bbs/installation/testing.html">Testing Your Installation</a></li>
<li><a href="/enigma-bbs/installation/production.html">Production Installation</a></li>
</ul>
<li>Configuration</li>
<ul>
<li><a href="/enigma-bbs/configuration/creating-config.html">Creating Initial Config Files</a></li>
<li><a href="/enigma-bbs/configuration/sysop-setup.html">SysOp Setup</a></li>
<li><a href="/enigma-bbs/configuration/config-files.html">Configuration Files</a></li>
<li><a href="/enigma-bbs/configuration/config-hjson.html">System Configuration</a></li>
<li><a href="/enigma-bbs/configuration/hjson.html">HJSON Config Files</a></li>
<li><a href="/enigma-bbs/configuration/menu-hjson.html">Menu HSJON</a></li>
<li><a href="/enigma-bbs/configuration/directory-structure.html">Directory Structure</a></li>
<li><a href="/enigma-bbs/configuration/external-binaries.html">External Support Binaries</a></li>
<li><a href="/enigma-bbs/configuration/archivers.html">Archivers</a></li>
<li><a href="/enigma-bbs/configuration/file-transfer-protocols.html">File Transfer Protocols</a></li>
<li><a href="/enigma-bbs/configuration/email.html">Email</a></li>
<li><a href="/enigma-bbs/configuration/colour-codes.html">Colour Codes</a></li>
<li><a href="/enigma-bbs/configuration/event-scheduler.html">Event Scheduler</a></li>
<li><a href="/enigma-bbs/configuration/acs.html">Access Condition System (ACS)</a></li>
<li><a href="/enigma-bbs/configuration/security.html">Security</a></li>
</ul>
<li>Miscellaneous</li>
<ul>
<li><a href="/enigma-bbs/misc/user-interrupt.html">User Interruptions</a></li>
</ul>
<li>File Base</li>
<ul>
<li><a href="/enigma-bbs/filebase/index.html">About File Areas</a></li>
<li><a href="/enigma-bbs/filebase/first-file-area.html">Configuring a File Base</a></li>
<li><a href="/enigma-bbs/filebase/acs.html">ACS</a></li>
<li><a href="/enigma-bbs/filebase/uploads.html">Uploads</a></li>
<li><a href="/enigma-bbs/filebase/web-access.html">Web Access</a></li>
<li><a href="/enigma-bbs/filebase/tic-support.html">TIC Support</a></li>
<li><a href="/enigma-bbs/filebase/network-mounts-and-symlinks.html">Network Mounts &amp; Symlinks</a></li>
</ul>
<li>Message Areas</li>
<ul>
<li><a href="/enigma-bbs/messageareas/configuring-a-message-area.html">Message Base</a></li>
<li><a href="/enigma-bbs/messageareas/message-networks.html">Message Networks</a></li>
<li><a href="/enigma-bbs/messageareas/bso-import-export.html">BSO Import / Export</a></li>
<li><a href="/enigma-bbs/messageareas/netmail.html">Netmail</a></li>
<li><a href="/enigma-bbs/messageareas/qwk.html">QWK Support</a></li>
<li><a href="/enigma-bbs/messageareas/ftn.html">FidoNet-Style Networks (FTN)</a></li>
</ul>
<li>Art</li>
<ul>
<li><a href="/enigma-bbs/art/general.html">General Art Information</a></li>
<li><a href="/enigma-bbs/art/themes.html">Themes</a></li>
<li class="active-nav">MCI Codes</li>
<li>Views</li>
<ul>
<li><a href="/enigma-bbs/art/views/button_view.html">Button View</a></li>
<li><a href="/enigma-bbs/art/views/edit_text_view.html">Edit Text View</a></li>
<li><a href="/enigma-bbs/art/views/full_menu_view.html">Full Menu View</a></li>
<li><a href="/enigma-bbs/art/views/horizontal_menu_view.html">Horizontal Menu View</a></li>
<li><a href="/enigma-bbs/art/views/mask_edit_text_view.html">Mask Edit Text View</a></li>
<li><a href="/enigma-bbs/art/views/multi_line_edit_text_view.html">Multi Line Edit Text View</a></li>
<li><a href="/enigma-bbs/art/views/predefined_label_view.html">Predefined Label View</a></li>
<li><a href="/enigma-bbs/art/views/spinner_menu_view.html">Spinner Menu View</a></li>
<li><a href="/enigma-bbs/art/views/text_view.html">Text View</a></li>
<li><a href="/enigma-bbs/art/views/toggle_menu_view.html">Toggle Menu View</a></li>
<li><a href="/enigma-bbs/art/views/vertical_menu_view.html">Vertical Menu View</a></li>
</ul>
</ul>
<li>Servers</li>
<ul>
<li>Login Servers</li>
<ul>
<li><a href="/enigma-bbs/servers/loginservers/telnet.html">Telnet Server</a></li>
<li><a href="/enigma-bbs/servers/loginservers/ssh.html">SSH Server</a></li>
<li><a href="/enigma-bbs/servers/loginservers/websocket.html">Web Socket / Web Interface Server</a></li>
</ul>
<li>Content Servers</li>
<ul>
<li><a href="/enigma-bbs/servers/contentservers/web-server.html">Web Server</a></li>
<li><a href="/enigma-bbs/servers/contentservers/gopher.html">Gopher Server</a></li>
<li><a href="/enigma-bbs/servers/contentservers/nntp.html">NNTP Server</a></li>
</ul>
</ul>
<li>Modding</li>
<ul>
<li><a href="/enigma-bbs/modding/local-doors.html">Local Doors</a></li>
<li><a href="/enigma-bbs/modding/door-servers.html">Door Servers</a></li>
<li><a href="/enigma-bbs/modding/telnet-bridge.html">Telnet Bridge</a></li>
<li><a href="/enigma-bbs/modding/existing-mods.html">Existing Mods</a></li>
<li><a href="/enigma-bbs/modding/file-area-list.html">File Area List</a></li>
<li><a href="/enigma-bbs/modding/last-callers.html">Last Callers</a></li>
<li><a href="/enigma-bbs/modding/whos-online.html">Who's Online</a></li>
<li><a href="/enigma-bbs/modding/user-list.html">User List</a></li>
<li><a href="/enigma-bbs/modding/msg-conf-list.html">Message Conference List</a></li>
<li><a href="/enigma-bbs/modding/msg-area-list.html">Message Area List</a></li>
<li><a href="/enigma-bbs/modding/bbs-list.html">BBS List</a></li>
<li><a href="/enigma-bbs/modding/rumorz.html">Rumorz</a></li>
<li><a href="/enigma-bbs/modding/file-transfer-protocol-select.html">File Transfer Protocol Select</a></li>
<li><a href="/enigma-bbs/modding/onelinerz.html">Onelinerz</a></li>
<li><a href="/enigma-bbs/modding/show-art.html">The Show Art Module</a></li>
<li><a href="/enigma-bbs/modding/file-base-download-manager.html">File Base Download Manager</a></li>
<li><a href="/enigma-bbs/modding/file-base-web-download-manager.html">File Base Web Download Manager</a></li>
<li><a href="/enigma-bbs/modding/set-newscan-date.html">Set Newscan Date Module</a></li>
<li><a href="/enigma-bbs/modding/node-msg.html">Node to Node Messaging</a></li>
<li><a href="/enigma-bbs/modding/top-x.html">TopX</a></li>
<li><a href="/enigma-bbs/modding/user-2fa-otp-config.html">2FA/OTP Config</a></li>
<li><a href="/enigma-bbs/modding/autosig-edit.html">Auto Signature Editor</a></li>
<li><a href="/enigma-bbs/modding/menu-modules.html">Menu Modules</a></li>
</ul>
<li>Administration</li>
<ul>
<li><a href="/enigma-bbs/admin/administration.html">Administration</a></li>
<li><a href="/enigma-bbs/admin/oputil.html">oputil</a></li>
<li><a href="/enigma-bbs/admin/updating.html">Updating</a></li>
</ul>
<li>Troubleshooting</li>
<ul>
<li><a href="/enigma-bbs/troubleshooting/monitoring-logs.html">Monitoring Logs</a></li>
</ul>
</ul>
</div>
<div class="main_area">
<div class="container">
<section id="main_content">
<div class="PageNavigation">
<a class="btn" style="float:left;margin-right: 20px;" href="/enigma-bbs/art/themes.html">« Themes</a>
<a href="#sidebar" class="btn menu_button">MENU</a>
<a class="btn" style="float: right;margin-left: 20px" href="/enigma-bbs/art/views/button_view.html">Button View »</a>
<br clear="both">
</div>
<div class="page">
<h1 class="page-title">MCI Codes</h1>
<h2 id="mci-codes">MCI Codes</h2>
<p>ENiGMA½ supports a variety of MCI codes. Some <strong>predefined</strong> codes produce information about the current user, system, or other statistics while others are used to instantiate a <strong>View</strong>.</p>
<h2 id="general-information">General Information</h2>
<p>MCI codes are composed of two characters and are prefixed with a percent (%) symbol.</p>
<p><img class="emoji" title=":information_source:" alt=":information_source:" src="https://github.githubassets.com/images/icons/emoji/unicode/2139.png" height="20" width="20"> To explicitly tie a MCI to a specific View ID, suffix the MCI code with a number. For example: <code class="language-plaintext highlighter-rouge">%BN1</code>.</p>
<p><img class="emoji" title=":information_source:" alt=":information_source:" src="https://github.githubassets.com/images/icons/emoji/unicode/2139.png" height="20" width="20"> Standard (non-focus) and focus colors are set by placing duplicate codes back to back in art files:</p>
<p><img src="../assets/images/mci-example1.png" alt="Example" title="MCI Colors"></p>
<p>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.</p>
<h2 id="relationship-with-menus-art-and-themes">Relationship with Menus, Art, and Themes</h2>
<p>A MCI code that appears in a <code class="language-plaintext highlighter-rouge">menu.hjson</code> entry corresponds to that found in its associated art file. This same MCI code can be referenced in the <code class="language-plaintext highlighter-rouge">theme.hjson</code> in order to apply a theme.</p>
<p>See <a href="../docs/configuration/menu-hjson.md">Menus</a> and <a href="/enigma-bbs/art/themes.html">Themes</a> for more information.</p>
<h2 id="predefined-codes">Predefined Codes</h2>
<p>There are many predefined MCI codes that can be used anywhere on the system (placed in any art file).</p>
<table>
<thead>
<tr>
<th>Code</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">BN</code></td>
<td>Board Name</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">VL</code></td>
<td>Version <em>label</em>, e.g. “ENiGMA½ v0.0.12-beta”</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">VN</code></td>
<td>Version <em>number</em>, eg.. “0.0.12-beta”</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SN</code></td>
<td>SysOp username</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SR</code></td>
<td>SysOp real name</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SL</code></td>
<td>SysOp location</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SA</code></td>
<td>SysOp affiliations</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SS</code></td>
<td>SysOp sex</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SE</code></td>
<td>SysOp email address</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UN</code></td>
<td>Current users username</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UI</code></td>
<td>Current users user ID</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UG</code></td>
<td>Current users group membership(s)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UR</code></td>
<td>Current users real name</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">LO</code></td>
<td>Current users location</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UA</code></td>
<td>Current users age</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">BD</code></td>
<td>Current users birthday (using theme date format)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">US</code></td>
<td>Current users sex</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UE</code></td>
<td>Current users email address</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UW</code></td>
<td>Current users web address</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UF</code></td>
<td>Current users affiliations</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UT</code></td>
<td>Current users theme name</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UD</code></td>
<td>Current users <em>theme ID</em> (e.g. “luciano_blocktronics”)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UC</code></td>
<td>Current users login/call count</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">ND</code></td>
<td>Current users connected node number</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">IP</code></td>
<td>Current users IP address</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">ST</code></td>
<td>Current users connected server name (e.g. “Telnet” or “SSH”)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">FN</code></td>
<td>Current users active file base filter name</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">DN</code></td>
<td>Current users number of downloads</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">DK</code></td>
<td>Current users download amount (formatted to appropriate bytes/megs/etc.)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UP</code></td>
<td>Current users number of uploads</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">UK</code></td>
<td>Current users upload amount (formatted to appropriate bytes/megs/etc.)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">NR</code></td>
<td>Current users upload/download ratio</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">KR</code></td>
<td>Current users upload/download <em>bytes</em> ratio</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">MS</code></td>
<td>Current users account creation date (using theme date format)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">PS</code></td>
<td>Current users post count</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">PC</code></td>
<td>Current users post/call ratio</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">MD</code></td>
<td>Current users status/viewing menu/activity</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">MA</code></td>
<td>Current users active message area name</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">MC</code></td>
<td>Current users active message conference name</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">ML</code></td>
<td>Current users active message area description</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">CM</code></td>
<td>Current users active message conference description</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SH</code></td>
<td>Current users term height</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SW</code></td>
<td>Current users term width</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">AC</code></td>
<td>Current users total achievements</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">AP</code></td>
<td>Current users total achievement points</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">DR</code></td>
<td>Current users number of door runs</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">DM</code></td>
<td>Current users total amount of time spent in doors</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">DT</code></td>
<td>Current date (using theme date format)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">CT</code></td>
<td>Current time (using theme time format)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">OS</code></td>
<td>System OS (Linux, Windows, etc.)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">OA</code></td>
<td>System architecture (x86, x86_64, arm, etc.)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SC</code></td>
<td>System CPU model</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">NV</code></td>
<td>System underlying Node.js version</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">AN</code></td>
<td>Current active node count</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">TC</code></td>
<td>Total login/calls to the system <em>ever</em>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">TT</code></td>
<td>Total login/calls to the system <em>today</em>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">RR</code></td>
<td>Displays a random rumor</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SD</code></td>
<td>Total downloads, system wide</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SO</code></td>
<td>Total downloaded amount, system wide (formatted to appropriate bytes/megs/etc.)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SU</code></td>
<td>Total uploads, system wide</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SP</code></td>
<td>Total uploaded amount, system wide (formatted to appropriate bytes/megs/etc.)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">TF</code></td>
<td>Total number of files on the system</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">TB</code></td>
<td>Total amount of files on the system (formatted to appropriate bytes/megs/gigs/etc.)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">TP</code></td>
<td>Total messages posted/imported to the system <em>currently</em>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">PT</code></td>
<td>Total messages posted/imported to the system <em>today</em>
</td>
</tr>
</tbody>
</table>
<p>Some additional special case codes also exist:</p>
<table>
<thead>
<tr>
<th>Code</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">CF##</code></td>
<td>Moves the cursor position forward <em>##</em> characters</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">CB##</code></td>
<td>Moves the cursor position back <em>##</em> characters</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">CU##</code></td>
<td>Moves the cursor position up <em>##</em> characters</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">CD##</code></td>
<td>Moves the cursor position down <em>##</em> characters</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">XY</code></td>
<td>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.</td>
</tr>
</tbody>
</table>
<p><img class="emoji" title=":information_source:" alt=":information_source:" src="https://github.githubassets.com/images/icons/emoji/unicode/2139.png" height="20" width="20"> More are added all
the time so also check out <a href="https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js">core/predefined_mci.js</a>
for a full listing.</p>
<p><img class="emoji" title=":memo:" alt=":memo:" src="https://github.githubassets.com/images/icons/emoji/unicode/1f4dd.png" height="20" width="20"> Many codes attempt to pay homage to Oblivion/2, iNiQUiTY, etc.</p>
<h2 id="views">Views</h2>
<p>A <strong>View</strong> is a control placed on a <strong>form</strong> that can display variable data or collect input. One example of a View is
a Vertical Menu (<code class="language-plaintext highlighter-rouge">%VM</code>): Old-school BBSers may recognize this as a lightbar menu.</p>
<table>
<thead>
<tr>
<th>Code</th>
<th>Name</th>
<th>Description</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">TL</code></td>
<td>Text Label</td>
<td>Displays text</td>
<td>Static content. See <a href="/enigma-bbs/art/views/text_view.html">Text View</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">ET</code></td>
<td>Edit Text</td>
<td>Collect user input</td>
<td>Single line entry. See <a href="/enigma-bbs/art/views/edit_text_view.html">Edit Text</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">ME</code></td>
<td>Masked Edit Text</td>
<td>Collect user input using a <em>mask</em>
</td>
<td>See <a href="/enigma-bbs/art/views/mask_edit_text_view.html">Masked Edit</a> and <strong>Mask Edits</strong> below.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">MT</code></td>
<td>Multi Line Text Edit</td>
<td>Multi line edit control</td>
<td>Used for FSE, display of FILE_ID.DIZ, etc. See <a href="/enigma-bbs/art/views/multi_line_edit_text_view.html">Multiline Text Edit</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">BT</code></td>
<td>Button</td>
<td>A button</td>
<td>…its a button. See <a href="/enigma-bbs/art/views/button_view.html">Button</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">VM</code></td>
<td>Vertical Menu</td>
<td>A vertical menu</td>
<td>AKA a vertical lightbar; Useful for lists. See <a href="/enigma-bbs/art/views/vertical_menu_view.html">Vertical Menu</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">HM</code></td>
<td>Horizontal Menu</td>
<td>A horizontal menu</td>
<td>AKA a horizontal lightbar. See <a href="/enigma-bbs/art/views/horizontal_menu_view.html">Horizontal Menu</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">FM</code></td>
<td>Full Menu</td>
<td>A menu that can go both vertical and horizontal.</td>
<td>See <a href="/enigma-bbs/art/views/full_menu_view.html">Full Menu</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">SM</code></td>
<td>Spinner Menu</td>
<td>A spinner input control</td>
<td>Select <em>one</em> from multiple options. See <a href="/enigma-bbs/art/views/spinner_menu_view.html">Spinner Menu</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">TM</code></td>
<td>Toggle Menu</td>
<td>A toggle menu</td>
<td>Commonly used for Yes/No style input. See <a href="/enigma-bbs/art/views/toggle_menu_view.html">Toggle Menu</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">PL</code></td>
<td>Predefined Label</td>
<td>Show environment information</td>
<td>See <a href="/enigma-bbs/art/views/predefined_label_view.html">Predefined Label</a>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">KE</code></td>
<td>Key Entry</td>
<td>A <em>single</em> key input control</td>
<td>Think hotkeys</td>
</tr>
</tbody>
</table>
<p><img class="emoji" title=":information_source:" alt=":information_source:" src="https://github.githubassets.com/images/icons/emoji/unicode/2139.png" height="20" width="20"> Peek at <a href="https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js">/core/mci_view_factory.js</a> to see additional information.</p>
<h3 id="mask-edits">Mask Edits</h3>
<p>Mask Edits (<code class="language-plaintext highlighter-rouge">%ME</code>) use the special <code class="language-plaintext highlighter-rouge">maskPattern</code> property to control a <em>mask</em>. This can be useful for gathering dates, phone numbers, so on.</p>
<p><code class="language-plaintext highlighter-rouge">maskPattern</code>s can be composed of the following characters:</p>
<ul>
<li>
<code class="language-plaintext highlighter-rouge">#</code>: Numeric 0-9</li>
<li>
<code class="language-plaintext highlighter-rouge">A</code>: Alpha a-z, A-Z</li>
<li>
<code class="language-plaintext highlighter-rouge">@</code>: Alphanumeric (combination of the previous patterns)</li>
<li>
<code class="language-plaintext highlighter-rouge">&amp;</code>: Any “printable” character</li>
</ul>
<p>Any other characters are literals.</p>
<p>An example of a mask for a date may look like this: <code class="language-plaintext highlighter-rouge">##/##/####</code>.</p>
<p>Additionally, the following theme stylers can be applied:</p>
<ul>
<li>
<code class="language-plaintext highlighter-rouge">styleSGR1</code>: Controls literal character colors for non-focused controls</li>
<li>
<code class="language-plaintext highlighter-rouge">styleSGR2</code>: Controls literal character colors for focused controls</li>
<li>
<code class="language-plaintext highlighter-rouge">styleSGR3</code>: Controls fill colors (characters that have not yet received input).</li>
</ul>
<p>All of the style properties can take pipe codes such as <code class="language-plaintext highlighter-rouge">|00|08</code>.</p>
<h3 id="view-identifiers">View Identifiers</h3>
<p>As mentioned above, MCI codes can (and often should) be explicitly tied to a <em>View Identifier</em>. Simply speaking this is a number representing the particular view. These can be useful to reference in code, apply themes, etc.</p>
<p>A view ID is tied to a MCI code by specifying it after the code. For example: <code class="language-plaintext highlighter-rouge">%VM1</code> or <code class="language-plaintext highlighter-rouge">%SM10</code>.</p>
<h2 id="properties--theming">Properties &amp; Theming</h2>
<p>Predefined MCI codes and other Views can have properties set via <code class="language-plaintext highlighter-rouge">menu.hjson</code> and further <em>themed</em> via <code class="language-plaintext highlighter-rouge">theme.hjson</code>. See <a href="/enigma-bbs/art/themes.html">Themes</a> for more information on this subject.</p>
<h3 id="common-properties">Common Properties</h3>
<table>
<thead>
<tr>
<th>Property</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">textStyle</code></td>
<td>Sets the standard (non-focus) text style. See <strong>Text Styles</strong> below</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">focusTextStyle</code></td>
<td>Sets focus text style. See <strong>Text Styles</strong> below.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">itemSpacing</code></td>
<td>Used to separate items in menus such as Vertical Menu and Horizontal Menu Views.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">height</code></td>
<td>Sets the height of views such as menus that may be &gt; 1 character in height</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">width</code></td>
<td>Sets the width of a view</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">focus</code></td>
<td>If set to <code class="language-plaintext highlighter-rouge">true</code>, establishes initial focus</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">text</code></td>
<td>(initial) text of a view</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">submit</code></td>
<td>If set to <code class="language-plaintext highlighter-rouge">true</code> any <code class="language-plaintext highlighter-rouge">accept</code> action upon this view will submit the encompassing <strong>form</strong>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">itemFormat</code></td>
<td>Sets the format for a list entry. See <strong>Entry Formatting</strong> below</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">focusItemFormat</code></td>
<td>Sets the format for a focused list entry. See <strong>Entry Formatting</strong> below</td>
</tr>
</tbody>
</table>
<p>These are just a few of the properties set on various views. <em>Use the source Luke</em>, as well as taking a look at the default <code class="language-plaintext highlighter-rouge">menu.hjson</code> and <code class="language-plaintext highlighter-rouge">theme.hjson</code> files!</p>
<h3 id="custom-properties">Custom Properties</h3>
<p>Often a module will provide custom properties that receive format objects (See <strong>Entry Formatting</strong> below). Custom property formatting can be declared in the <code class="language-plaintext highlighter-rouge">config</code> block. For example, <code class="language-plaintext highlighter-rouge">browseInfoFormat10</code><em>N</em> (where <em>N</em> is up to 99) in the <code class="language-plaintext highlighter-rouge">file_area_list</code> module received a fairly extensive format object that contains <code class="language-plaintext highlighter-rouge">{fileName}</code>, <code class="language-plaintext highlighter-rouge">{estReleaseYear}</code>, etc.</p>
<h3 id="text-styles">Text Styles</h3>
<p>Standard style types available for <code class="language-plaintext highlighter-rouge">textStyle</code> and <code class="language-plaintext highlighter-rouge">focusTextStyle</code>:</p>
<table>
<thead>
<tr>
<th>Style</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">normal</code></td>
<td>Leaves text as-is. This is the default.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">upper</code></td>
<td>ENIGMA BULLETIN BOARD SOFTWARE</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">lower</code></td>
<td>enigma bulletin board software</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">title</code></td>
<td>Enigma Bulletin Board Software</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">first lower</code></td>
<td>eNIGMA bULLETIN bOARD sOFTWARE</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">small vowels</code></td>
<td>eNiGMa BuLLeTiN BoaRD SoFTWaRe</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">big vowels</code></td>
<td>EniGMa bUllEtIn bOArd sOftwArE</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">small i</code></td>
<td>ENiGMA BULLETiN BOARD SOFTWARE</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">mixed</code></td>
<td>EnIGma BUlLEtIn BoaRd SOfTWarE (randomly assigned)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">l33t</code></td>
<td>3n1gm4 bull371n b04rd 50f7w4r3</td>
</tr>
</tbody>
</table>
<h3 id="entry-formatting">Entry Formatting</h3>
<p>Various strings can be formatted using a syntax that allows width &amp; precision specifiers, text styling, etc. Depending on the context, various elements can be referenced by <code class="language-plaintext highlighter-rouge">{name}</code>. Additional text styles can be supplied as well. The syntax is largely modeled after Pythons <a href="https://docs.python.org/3/library/string.html#format-specification-mini-language">string format mini language</a>.</p>
<h3 id="additional-text-styles">Additional Text Styles</h3>
<p>Some of the text styles mentioned above are also available in the mini format language:</p>
<table>
<thead>
<tr>
<th>Style</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">normal</code></td>
<td>Leaves text as-is. This is the default.</td>
</tr>
<tr>
<td>
<code class="language-plaintext highlighter-rouge">toUpperCase</code> or <code class="language-plaintext highlighter-rouge">styleUpper</code>
</td>
<td>ENIGMA BULLETIN BOARD SOFTWARE</td>
</tr>
<tr>
<td>
<code class="language-plaintext highlighter-rouge">toLowerCase</code> or <code class="language-plaintext highlighter-rouge">styleLower</code>
</td>
<td>enigma bulletin board software</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">styleTitle</code></td>
<td>Enigma Bulletin Board Software</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">styleFirstLower</code></td>
<td>eNIGMA bULLETIN bOARD sOFTWARE</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">styleSmallVowels</code></td>
<td>eNiGMa BuLLeTiN BoaRD SoFTWaRe</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">styleBigVowels</code></td>
<td>EniGMa bUllEtIn bOArd sOftwArE</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">styleSmallI</code></td>
<td>ENiGMA BULLETiN BOARD SOFTWARE</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">styleMixed</code></td>
<td>EnIGma BUlLEtIn BoaRd SOfTWarE (randomly assigned)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">styleL33t</code></td>
<td>3n1gm4 bull371n b04rd 50f7w4r3</td>
</tr>
</tbody>
</table>
<p>Additional text styles are available for numbers:</p>
<table>
<thead>
<tr>
<th>Style</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">sizeWithAbbr</code></td>
<td>File size (converted from bytes) with abbreviation such as <code class="language-plaintext highlighter-rouge">1 MB</code>, <code class="language-plaintext highlighter-rouge">2.2 GB</code>, <code class="language-plaintext highlighter-rouge">34 KB</code>, etc.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">sizeWithoutAbbr</code></td>
<td>Just the file size (converted from bytes) without the abbreviation. For example: 1024 becomes 1.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">sizeAbbr</code></td>
<td>Just the abbreviation given a file size (converted from bytes) such as <code class="language-plaintext highlighter-rouge">MB</code> or <code class="language-plaintext highlighter-rouge">GB</code>.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">countWithAbbr</code></td>
<td>Count with abbreviation such as <code class="language-plaintext highlighter-rouge">100 K</code>, <code class="language-plaintext highlighter-rouge">4.3 B</code>, etc.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">countWithoutAbbr</code></td>
<td>Just the count</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">countAbbr</code></td>
<td>Just the abbreviation such as <code class="language-plaintext highlighter-rouge">M</code> for millions.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">durationHours</code></td>
<td>Converts the provided <em>hours</em> value to something friendly such as <code class="language-plaintext highlighter-rouge">4 hours</code>, or <code class="language-plaintext highlighter-rouge">4 days</code>.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">durationMinutes</code></td>
<td>Converts the provided <em>minutes</em> to something friendly such as <code class="language-plaintext highlighter-rouge">10 minutes</code> or <code class="language-plaintext highlighter-rouge">2 hours</code>
</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">durationSeconds</code></td>
<td>Converts the provided <em>seconds</em> to something friendly such as <code class="language-plaintext highlighter-rouge">23 seconds</code> or <code class="language-plaintext highlighter-rouge">2 minutes</code>
</td>
</tr>
</tbody>
</table>
<h4 id="examples">Examples</h4>
<p>Suppose a format object contains the following elements: <code class="language-plaintext highlighter-rouge">userName</code> and <code class="language-plaintext highlighter-rouge">affils</code>. We could create a <code class="language-plaintext highlighter-rouge">itemFormat</code> entry that builds a item to our specifications: <code class="language-plaintext highlighter-rouge">|04{userName!styleFirstLower} |08- |13{affils}</code>. This may produce a string such as this:</p>
<p><img src="../assets/images/text-format-example1.png" alt="Example" title="Text Format"></p>
<p><img class="emoji" title=":bulb:" alt=":bulb:" src="https://github.githubassets.com/images/icons/emoji/unicode/1f4a1.png" height="20" width="20"> Remember that a Python <a href="https://docs.python.org/3/library/string.html#format-specification-mini-language">string format mini language</a> style syntax is available for widths, alignment, number prevision, etc. as well. A number can be made to be more human readable for example: <code class="language-plaintext highlighter-rouge">{byteSize:,}</code> may yield “1,123,456”.</p>
</div>
<div class="PageNavigation">
<a class="btn" style="float:left;margin-right: 20px;" href="/enigma-bbs/art/themes.html">« Themes</a>
<a class="btn" style="float: right;margin-left: 20px" href="/enigma-bbs/art/views/button_view.html">Button View »</a>
<br clear="both">
</div>
</section>
</div>
</div>
</div>
</body>
</html>