2016-06-27 07:29:17 +00:00
{
2015-09-09 04:08:45 +00:00
/*
2017-02-12 21:03:29 +00:00
./\/\.' ENiGMA½ Menu Configuration -/--/-------- - -- -
2015-09-09 04:08:45 +00:00
2017-02-12 21:03:29 +00:00
_____________________ _____ ____________________ __________\_ /
\__ ____/\_ ____ \ /____/ / _____ __ \ / ______/ // /___jp!
// __|___// | \// |// | \// | | \// \ /___ /_____
/____ _____| __________ ___|__| ____| \ / _____ \
---- \______\ -- |______\ ------ /______/ ---- |______\ - |______\ /__/ // ___/
/__ _\
<*> ENiGMA½ // HTTPS://GITHUB.COM/NUSKOOLER/ENIGMA-BBS <*> /__/
2015-09-11 03:01:04 +00:00
2018-11-14 04:25:46 +00:00
*-----------------------------------------------------------------------------*
2017-02-12 21:03:29 +00:00
2018-11-14 04:25:46 +00:00
General Information
------------------------------- - -
This configuration is in HJSON (http://hjson.org/) format. Strict to-spec
JSON is also perfectly valid. Use 'hjson' from npm to convert to/from JSON.
2017-02-12 21:03:29 +00:00
2018-11-14 04:25:46 +00:00
See http://hjson.org/ for more information and syntax.
2017-02-12 21:03:29 +00:00
2018-11-14 04:25:46 +00:00
Various editors and IDEs such as Sublime Text 3, Visual Studio Code, and so
on have syntax highlighting for the HJSON format which are highly recommended.
------------------------------- -- - -
Menu Configuration
------------------------------- - -
ENiGMA½ makes no assumptions about specific menu types (main, doors, etc.),
but instead allows full customization of all menus throughout the system.
Some menus such as a main menu are considered "standard" while others are
backed by a specific module. SysOps can tweak various settings about these
modules (look & feel, keyboard interation, and so on) or even fully replace
the module with something else.
This file starts out as an example setup. Look at the examples, change
settings, menu ordering/flow, add/remove menus, implement ACS control,
etc.!
Remember you can *live edit* this file. That is, make a change and save
while you're logged into the system and it will take effect on the next
menu change or screen refresh.
Please see RTFM ...er, uh... see the documentation for more information, and
don't be shy to ask for help:
BBS : Xibalba @ xibalba.l33t.codes
FTN : BBS Discussion on fsxNet
IRC : #enigma-bbs / FreeNode
Email : bryan@l33t.codes
2015-03-26 05:23:14 +00:00
*/
2015-09-12 23:17:00 +00:00
menus: {
2015-10-22 16:36:08 +00:00
//
// Send telnet connections to matrix where users can login, apply, etc.
//
telnetConnected: {
art: CONNECT
next: matrix
2018-08-05 20:06:30 +00:00
config: { nextTimeout: 1500 }
2015-10-22 16:36:08 +00:00
}
//
// SSH connections are pre-authenticated via the SSH server itself.
// Jump directly to the login sequence
//
sshConnected: {
art: CONNECT
next: fullLoginSequenceLoginArt
2018-08-05 20:06:30 +00:00
config: { nextTimeout: 1500 }
2015-09-12 23:17:00 +00:00
}
2015-10-22 18:22:03 +00:00
//
// Another SSH specialization: If the user logs in with a new user
2016-06-27 07:29:17 +00:00
// name (e.g. "new", "apply", ...) they will be directed to the
2015-10-22 18:22:03 +00:00
// application process.
//
sshConnectedNewUser: {
art: CONNECT
2017-02-13 02:42:18 +00:00
next: newUserApplicationPreSsh
2018-08-05 20:06:30 +00:00
config: { nextTimeout: 1500 }
2015-10-22 18:22:03 +00:00
}
2015-10-28 02:21:58 +00:00
// Ye ol' standard matrix
2015-09-12 23:17:00 +00:00
matrix: {
art: matrix
form: {
2015-10-28 02:21:58 +00:00
0: {
2015-09-12 23:17:00 +00:00
VM: {
mci: {
VM1: {
submit: true
focus: true
2017-02-28 04:17:01 +00:00
argName: navSelect
2018-01-28 19:59:20 +00:00
//
// To enable forgot password, you will need to have the web server
// enabled and mail/SMTP configured. Once that is in place, swap out
// the commented lines below as well as in the submit block
//
items: [
{
text: login
data: login
}
{
text: apply
data: apply
}
{
text: forgot pass
data: forgot
}
{
text: log off
data: logoff
}
]
2015-05-16 05:02:58 +00:00
}
2015-09-12 23:17:00 +00:00
}
submit: {
*: [
2015-05-16 05:02:58 +00:00
{
2018-01-28 19:59:20 +00:00
value: { navSelect: "login" }
2015-10-28 02:21:58 +00:00
action: @menu:login
}
2015-05-16 05:02:58 +00:00
{
2018-01-28 19:59:20 +00:00
value: { navSelect: "apply" }
2017-02-13 02:42:18 +00:00
action: @menu:newUserApplicationPre
2015-10-28 02:21:58 +00:00
}
2015-05-16 05:02:58 +00:00
{
2018-01-28 19:59:20 +00:00
value: { navSelect: "forgot" }
2017-02-28 04:17:01 +00:00
action: @menu:forgotPassword
}
{
2018-01-28 19:59:20 +00:00
value: { navSelect: "logoff" }
2015-09-12 23:17:00 +00:00
action: @menu:logoff
2015-05-16 05:02:58 +00:00
}
]
2015-04-02 04:13:29 +00:00
}
2015-05-16 05:02:58 +00:00
}
}
}
2015-09-12 23:17:00 +00:00
}
2015-10-28 02:21:58 +00:00
login: {
2015-09-27 21:35:24 +00:00
art: USERLOG
2016-06-29 05:53:30 +00:00
next: fullLoginSequenceLoginArt
2015-10-16 05:41:24 +00:00
config: {
2015-12-11 04:46:08 +00:00
tooNodeMenu: loginAttemptTooNode
2018-11-23 06:07:37 +00:00
inactive: loginAttemptAccountInactive
disabled: loginAttemptAccountDisabled
locked: loginAttemptAccountLocked
2015-10-16 05:41:24 +00:00
}
2015-09-27 21:35:24 +00:00
form: {
0: {
mci: {
ET1: {
maxLength: @config:users.usernameMax
argName: username
focus: true
2015-09-08 03:18:09 +00:00
}
2015-09-27 21:35:24 +00:00
ET2: {
password: true
maxLength: @config:users.passwordMax
argName: password
submit: true
}
}
submit: {
*: [
2015-09-08 03:18:09 +00:00
{
2015-09-27 21:35:24 +00:00
value: { password: null }
action: @systemMethod:login
2015-09-08 03:18:09 +00:00
}
]
2015-09-27 21:35:24 +00:00
}
actionKeys: [
2015-09-08 03:18:09 +00:00
{
2015-09-27 21:35:24 +00:00
keys: [ "escape" ]
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-09-08 03:18:09 +00:00
}
]
}
}
2015-09-27 21:35:24 +00:00
}
2015-12-11 04:46:08 +00:00
loginAttemptTooNode: {
art: TOONODE
2018-08-05 20:06:30 +00:00
config: {
2015-12-11 04:46:08 +00:00
cls: true
nextTimeout: 2000
}
2018-11-22 02:51:03 +00:00
next: logoff
2015-12-11 04:46:08 +00:00
}
2018-11-23 06:07:37 +00:00
loginAttemptAccountLocked: {
art: ACCOUNTLOCKED
config: {
cls: true
nextTimeout: 2000
}
next: logoff
}
loginAttemptAccountDisabled: {
art: ACCOUNTDISABLED
config: {
cls: true
nextTimeout: 2000
}
next: logoff
}
loginAttemptAccountInactive: {
art: ACCOUNTINACTIVE
config: {
cls: true
nextTimeout: 2000
}
next: logoff
}
2017-02-28 04:17:01 +00:00
forgotPassword: {
desc: Forgot password
prompt: forgotPasswordPrompt
submit: [
{
value: { username: null }
action: @systemMethod:sendForgotPasswordEmail
extraArgs: { next: "forgotPasswordSubmitted" }
}
]
}
forgotPasswordSubmitted: {
desc: Forgot password
art: FORGOTPWSENT
2018-08-05 20:06:30 +00:00
config: {
2017-02-28 04:17:01 +00:00
cls: true
pause: true
}
next: @systemMethod:logoff
}
2015-12-23 23:42:38 +00:00
// :TODO: Prompt Yes/No for logoff confirm
fullLogoffSequence: {
desc: Logging Off
prompt: logoffConfirmation
submit: [
{
value: { promptValue: 0 }
action: @menu:fullLogoffSequencePreAd
}
{
value: { promptValue: 1 }
action: @systemMethod:prevMenu
}
]
}
fullLogoffSequencePreAd: {
art: PRELOGAD
desc: Logging Off
next: fullLogoffSequenceRandomBoardAd
2018-08-05 20:06:30 +00:00
config: {
2015-12-23 23:42:38 +00:00
cls: true
nextTimeout: 1500
}
}
fullLogoffSequenceRandomBoardAd: {
art: OTHRBBS
desc: Logging Off
next: logoff
2018-08-05 20:06:30 +00:00
config: {
2015-12-23 23:42:38 +00:00
baudRate: 57600
pause: true
cls: true
}
}
2016-06-27 07:29:17 +00:00
logoff: {
2015-10-28 02:21:58 +00:00
art: LOGOFF
2015-12-23 23:42:38 +00:00
desc: Logging Off
2015-10-28 02:21:58 +00:00
next: @systemMethod:logoff
}
2017-02-12 21:03:29 +00:00
// A quick preamble - defaults to warning about broken terminals
newUserApplicationPre: {
art: NEWUSER1
next: newUserApplication
desc: Applying
2018-08-05 20:06:30 +00:00
config: {
2017-02-12 21:03:29 +00:00
pause: true
2017-12-03 02:06:07 +00:00
cls: true
menuFlags: [ "noHistory" ]
2017-02-12 21:03:29 +00:00
}
}
2015-09-21 02:23:55 +00:00
newUserApplication: {
2017-12-01 00:15:18 +00:00
module: nua
2015-09-21 02:23:55 +00:00
art: NUA
2015-11-21 00:49:37 +00:00
next: [
{
// Initial SysOp does not send feedback to themselves
acs: ID1
next: fullLoginSequenceLoginArt
}
{
// ...everyone else does
next: newUserFeedbackToSysOpPreamble
}
]
2015-09-21 02:23:55 +00:00
form: {
0: {
mci: {
ET1: {
focus: true
argName: username
maxLength: @config:users.usernameMax
2015-12-11 04:46:08 +00:00
validate: @systemMethod:validateUserNameAvail
2015-09-21 02:23:55 +00:00
}
ET2: {
argName: realName
2015-12-24 18:56:25 +00:00
maxLength: @config:users.realNameMax
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-09-21 02:23:55 +00:00
}
MET3: {
argName: birthdate
maskPattern: "####/##/##"
2015-12-11 04:46:08 +00:00
validate: @systemMethod:validateBirthdate
2015-09-21 02:23:55 +00:00
}
2015-09-23 03:31:56 +00:00
ME4: {
2015-09-21 02:23:55 +00:00
argName: sex
2015-09-23 03:31:56 +00:00
maskPattern: A
2015-09-23 05:13:06 +00:00
textStyle: upper
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-09-21 02:23:55 +00:00
}
ET5: {
argName: location
2015-12-24 18:56:25 +00:00
maxLength: @config:users.locationMax
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-09-21 02:23:55 +00:00
}
ET6: {
argName: affils
2015-12-24 18:56:25 +00:00
maxLength: @config:users.affilsMax
2015-09-21 02:23:55 +00:00
}
ET7: {
argName: email
2015-12-24 18:56:25 +00:00
maxLength: @config:users.emailMax
2015-12-11 04:46:08 +00:00
validate: @systemMethod:validateEmailAvail
2015-09-21 02:23:55 +00:00
}
ET8: {
argName: web
2015-12-24 18:56:25 +00:00
maxLength: @config:users.webMax
2015-09-21 02:23:55 +00:00
}
ET9: {
argName: password
password: true
maxLength: @config:users.passwordMax
2015-12-11 04:46:08 +00:00
validate: @systemMethod:validatePasswordSpec
2015-09-21 02:23:55 +00:00
}
ET10: {
argName: passwordConfirm
password: true
maxLength: @config:users.passwordMax
2015-12-11 04:46:08 +00:00
validate: @method:validatePassConfirmMatch
2015-09-21 02:23:55 +00:00
}
2015-09-23 03:31:56 +00:00
TM12: {
argName: submission
2015-09-28 04:05:40 +00:00
items: [ "apply", "cancel" ]
2015-09-21 02:23:55 +00:00
submit: true
}
}
2015-09-23 03:31:56 +00:00
submit: {
*: [
{
value: { "submission" : 0 }
2015-12-12 22:57:56 +00:00
action: @method:submitApplication
2015-09-23 03:31:56 +00:00
extraArgs: {
inactive: userNeedsActivated
error: newUserCreateError
}
}
2015-09-23 05:13:06 +00:00
{
value: { "submission" : 1 }
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-09-23 05:13:06 +00:00
}
2015-09-23 03:31:56 +00:00
]
}
2015-09-23 05:13:06 +00:00
actionKeys: [
{
keys: [ "escape" ]
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-10-22 18:22:03 +00:00
}
]
2016-06-27 07:29:17 +00:00
}
2015-10-22 18:22:03 +00:00
}
}
2017-02-12 21:03:29 +00:00
// A quick preamble - defaults to warning about broken terminals (SSH version)
newUserApplicationPreSsh: {
art: NEWUSER1
next: newUserApplicationSsh
desc: Applying
2018-08-05 20:06:30 +00:00
config: {
2017-02-12 21:03:29 +00:00
pause: true
cls: true
2017-12-03 02:06:07 +00:00
menuFlags: [ "noHistory" ]
2017-02-12 21:03:29 +00:00
}
}
2015-12-23 23:42:38 +00:00
//
2015-10-22 18:22:03 +00:00
// SSH specialization of NUA
2015-12-23 23:42:38 +00:00
// Canceling this form logs off vs falling back to matrix
//
2015-10-22 18:22:03 +00:00
newUserApplicationSsh: {
2017-12-01 00:15:18 +00:00
module: nua
2015-10-22 18:22:03 +00:00
art: NUA
fallback: logoff
next: newUserFeedbackToSysOpPreamble
form: {
0: {
mci: {
ET1: {
focus: true
argName: username
maxLength: @config:users.usernameMax
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateUserNameAvail
2015-10-22 18:22:03 +00:00
}
ET2: {
argName: realName
2015-12-24 18:56:25 +00:00
maxLength: @config:users.realNameMax
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-10-22 18:22:03 +00:00
}
MET3: {
argName: birthdate
maskPattern: "####/##/##"
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateBirthdate
2015-10-22 18:22:03 +00:00
}
ME4: {
argName: sex
maskPattern: A
textStyle: upper
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-10-22 18:22:03 +00:00
}
ET5: {
argName: location
2015-12-24 18:56:25 +00:00
maxLength: @config:users.locationMax
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-10-22 18:22:03 +00:00
}
ET6: {
argName: affils
2015-12-24 18:56:25 +00:00
maxLength: @config:users.affilsMax
2015-10-22 18:22:03 +00:00
}
ET7: {
argName: email
2015-12-24 18:56:25 +00:00
maxLength: @config:users.emailMax
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateEmailAvail
2015-10-22 18:22:03 +00:00
}
ET8: {
argName: web
2015-12-24 18:56:25 +00:00
maxLength: @config:users.webMax
2015-10-22 18:22:03 +00:00
}
ET9: {
argName: password
password: true
maxLength: @config:users.passwordMax
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validatePasswordSpec
2015-10-22 18:22:03 +00:00
}
ET10: {
argName: passwordConfirm
password: true
maxLength: @config:users.passwordMax
2015-12-12 22:52:56 +00:00
validate: @method:validatePassConfirmMatch
2015-10-22 18:22:03 +00:00
}
TM12: {
argName: submission
items: [ "apply", "cancel" ]
submit: true
}
}
submit: {
*: [
{
value: { "submission" : 0 }
2015-12-12 22:57:56 +00:00
action: @method:submitApplication
2015-10-22 18:22:03 +00:00
extraArgs: {
inactive: userNeedsActivated
error: newUserCreateError
}
}
{
value: { "submission" : 1 }
2017-02-13 02:42:18 +00:00
action: @systemMethod:logoff
2015-10-22 18:22:03 +00:00
}
]
}
actionKeys: [
{
keys: [ "escape" ]
2017-02-13 02:42:18 +00:00
action: @systemMethod:logoff
2015-09-23 05:13:06 +00:00
}
]
2016-06-27 07:29:17 +00:00
}
2015-09-21 02:23:55 +00:00
}
}
2015-09-23 05:13:06 +00:00
2015-09-24 05:41:06 +00:00
newUserFeedbackToSysOpPreamble: {
2015-10-16 05:41:24 +00:00
art: LETTER
2018-08-05 20:06:30 +00:00
config: { pause: true }
2015-09-24 05:41:06 +00:00
next: newUserFeedbackToSysOp
}
2015-09-23 05:13:06 +00:00
newUserFeedbackToSysOp: {
2016-07-25 07:03:07 +00:00
desc: Feedback to SysOp
2017-12-01 00:15:18 +00:00
module: msg_area_post_fse
2015-11-14 19:22:21 +00:00
next: [
2016-06-27 07:29:17 +00:00
{
2015-11-14 19:22:21 +00:00
acs: AS2
next: fullLoginSequenceLoginArt
2016-06-27 07:29:17 +00:00
}
2015-11-14 19:22:21 +00:00
{
next: newUserInactiveDone
}
]
2015-09-23 05:13:06 +00:00
config: {
art: {
header: MSGEHDR
body: MSGBODY
footerEditor: MSGEFTR
footerEditorMenu: MSGEMFT
help: MSGEHLP
},
editorMode: edit
2016-01-04 02:40:34 +00:00
editorType: email
2016-02-03 04:35:59 +00:00
messageAreaTag: private_mail
2016-01-04 02:40:34 +00:00
toUserId: 1 /* always to +op */
2015-09-24 05:41:06 +00:00
}
form: {
0: {
2015-09-23 05:13:06 +00:00
mci: {
TL1: {
2017-08-19 22:55:25 +00:00
argName: from
2015-09-23 05:13:06 +00:00
}
ET2: {
2015-10-16 05:41:24 +00:00
argName: to
focus: true
2016-08-04 03:46:38 +00:00
text: @sysStat:sysop_username
2015-09-23 05:13:06 +00:00
// :TODO: readOnly: true
}
2015-09-24 05:41:06 +00:00
ET3: {
argName: subject
maxLength: 72
submit: true
text: New user feedback
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateMessageSubject
2015-09-23 05:13:06 +00:00
}
2015-09-24 05:41:06 +00:00
}
submit: {
3: [
2015-09-23 05:13:06 +00:00
{
2015-10-16 05:41:24 +00:00
value: { subject: null }
action: @method:headerSubmit
2015-09-23 05:13:06 +00:00
}
]
}
2015-09-24 05:41:06 +00:00
}
2015-10-16 05:41:24 +00:00
1: {
mci: {
2015-09-23 05:13:06 +00:00
MT1: {
2015-10-16 05:41:24 +00:00
width: 79
argName: message
mode: edit
2015-09-23 05:13:06 +00:00
}
}
submit: {
2015-10-16 05:41:24 +00:00
*: [ { value: "message", action: "@method:editModeEscPressed" } ]
}
actionKeys: [
2015-09-23 05:13:06 +00:00
{
2015-10-16 05:41:24 +00:00
keys: [ "escape" ]
viewId: 1
2015-09-23 05:13:06 +00:00
}
]
},
2015-10-16 05:41:24 +00:00
2: {
TLTL: {
mci: {
TL1: {
width: 5
}
TL2: {
width: 4
2015-09-23 05:13:06 +00:00
}
}
}
2015-09-24 05:41:06 +00:00
}
3: {
HM: {
mci: {
HM1: {
2015-10-16 05:41:24 +00:00
// :TODO: clear
items: [ "save", "help" ]
2015-04-02 04:13:29 +00:00
}
2015-09-24 05:41:06 +00:00
}
submit: {
*: [
2015-09-23 05:13:06 +00:00
{
2015-09-24 05:41:06 +00:00
value: { 1: 0 }
action: @method:editModeMenuSave
}
2015-05-16 05:02:58 +00:00
{
2015-09-24 05:41:06 +00:00
value: { 1: 1 }
action: @method:editModeMenuHelp
2015-05-16 05:02:58 +00:00
}
]
2015-09-24 05:41:06 +00:00
}
actionKeys: [
2015-09-20 07:29:07 +00:00
{
keys: [ "escape" ]
2015-09-23 05:13:06 +00:00
action: @method:editModeEscPressed
}
{
keys: [ "?" ]
action: @method:editModeMenuHelp
2015-09-20 07:29:07 +00:00
}
]
2015-03-30 03:47:48 +00:00
}
2015-04-02 04:13:29 +00:00
}
2015-03-27 04:58:22 +00:00
}
2015-09-23 05:13:06 +00:00
}
2015-10-18 02:03:51 +00:00
2015-11-14 19:22:21 +00:00
newUserInactiveDone: {
desc: Finished with NUA
art: DONE
2018-08-05 20:06:30 +00:00
config: { pause: true }
2015-11-14 19:22:21 +00:00
next: @menu:logoff
}
2015-10-16 05:41:24 +00:00
fullLoginSequenceLoginArt: {
2015-10-18 02:03:51 +00:00
desc: Logging In
2015-10-22 19:01:16 +00:00
art: WELCOME
2018-08-05 20:06:30 +00:00
config: { pause: true }
2015-10-16 05:41:24 +00:00
next: fullLoginSequenceLastCallers
}
2016-01-04 02:40:34 +00:00
2015-10-16 05:41:24 +00:00
fullLoginSequenceLastCallers: {
2015-10-18 02:03:51 +00:00
desc: Last Callers
2017-12-01 00:15:18 +00:00
module: last_callers
2015-10-16 05:41:24 +00:00
art: LASTCALL
2018-08-05 20:06:30 +00:00
config: {
2016-07-25 07:03:07 +00:00
pause: true
font: cp437
}
2016-06-27 07:29:17 +00:00
next: fullLoginSequenceWhosOnline
2015-12-11 04:46:08 +00:00
}
fullLoginSequenceWhosOnline: {
desc: Who's Online
2017-12-01 00:15:18 +00:00
module: whos_online
2015-12-11 04:46:08 +00:00
art: WHOSON
2018-08-05 20:06:30 +00:00
config: { pause: true }
2016-07-01 04:30:46 +00:00
next: fullLoginSequenceOnelinerz
2016-01-04 02:40:34 +00:00
}
2016-07-01 04:30:46 +00:00
fullLoginSequenceOnelinerz: {
desc: Viewing Onelinerz
2017-12-01 00:15:18 +00:00
module: onelinerz
2017-09-24 15:58:57 +00:00
next: [
{
// calls >= 2
acs: NC2
next: fullLoginSequenceNewScanConfirm
}
{
// new users - skip new scan
next: fullLoginSequenceUserStats
}
]
2016-07-01 04:30:46 +00:00
config: {
2018-08-05 20:06:30 +00:00
cls: true
2016-07-01 04:30:46 +00:00
art: {
2018-07-11 01:00:02 +00:00
view: ONELINER
2016-07-01 04:30:46 +00:00
add: ONEADD
}
}
form: {
0: {
mci: {
VM1: {
focus: false
height: 10
}
TM2: {
argName: addOrExit
items: [ "yeah!", "nah" ]
"hotKeys" : { "Y" : 0, "N" : 1, "Q" : 1 }
submit: true
focus: true
}
}
submit: {
*: [
{
value: { addOrExit: 0 }
action: @method:viewAddScreen
}
{
value: { addOrExit: null }
action: @systemMethod:nextMenu
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:nextMenu
}
]
},
1: {
mci: {
ET1: {
focus: true
maxLength: 70
argName: oneliner
}
TL2: {
width: 60
}
TM3: {
argName: addOrCancel
items: [ "add", "cancel" ]
"hotKeys" : { "A" : 0, "C" : 1, "Q" : 1 }
submit: true
}
}
submit: {
*: [
{
value: { addOrCancel: 0 }
action: @method:addEntry
}
{
value: { addOrCancel: 1 }
action: @method:cancelAdd
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @method:cancelAdd
}
]
}
}
}
2016-01-04 02:40:34 +00:00
fullLoginSequenceNewScanConfirm: {
desc: Logging In
prompt: loginGlobalNewScan
submit: [
{
value: { promptValue: 0 }
action: @menu:fullLoginSequenceNewScan
}
{
value: { promptValue: 1 }
action: @menu:fullLoginSequenceUserStats
}
]
}
fullLoginSequenceNewScan: {
desc: Performing New Scan
2017-12-01 00:15:18 +00:00
module: new_scan
2016-01-04 02:40:34 +00:00
art: NEWSCAN
2015-12-11 04:46:08 +00:00
next: fullLoginSequenceSysStats
2016-01-04 02:40:34 +00:00
config: {
messageListMenu: newScanMessageList
}
2015-10-16 05:41:24 +00:00
}
2016-01-04 02:40:34 +00:00
2015-10-16 05:41:24 +00:00
fullLoginSequenceSysStats: {
2015-10-18 02:03:51 +00:00
desc: System Stats
2015-10-16 05:41:24 +00:00
art: SYSSTAT
2018-08-05 20:06:30 +00:00
config: { pause: true }
2015-10-16 05:41:24 +00:00
next: fullLoginSequenceUserStats
}
fullLoginSequenceUserStats: {
2015-10-18 02:03:51 +00:00
desc: User Stats
2015-09-27 21:35:24 +00:00
art: STATUS
2018-08-05 20:06:30 +00:00
config: { pause: true }
2015-10-16 05:41:24 +00:00
next: mainMenu
2015-10-28 02:21:58 +00:00
}
2016-01-04 02:40:34 +00:00
newScanMessageList: {
2017-08-19 22:55:25 +00:00
desc: New Messages
2017-12-01 00:15:18 +00:00
module: msg_list
2016-01-04 02:40:34 +00:00
art: NEWMSGS
config: {
menuViewPost: messageAreaViewPost
}
form: {
0: {
mci: {
VM1: {
focus: true
submit: true
argName: message
}
2016-09-09 04:04:27 +00:00
TL6: {
// theme me!
}
2016-01-04 02:40:34 +00:00
}
submit: {
*: [
{
value: { message: null }
action: @method:selectMessage
}
]
}
actionKeys: [
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
2016-08-31 03:32:57 +00:00
{
keys: [ "x", "shift + x" ]
action: @method:fullExit
}
2018-07-08 02:04:51 +00:00
{
keys: [ "m", "shift + m" ]
action: @method:markAllRead
}
2016-01-04 02:40:34 +00:00
]
}
}
}
2017-09-04 02:45:00 +00:00
newScanFileBaseList: {
2017-12-01 00:15:18 +00:00
module: file_area_list
2017-09-04 02:45:00 +00:00
desc: New Files
config: {
art: {
browse: FNEWBRWSE
details: FDETAIL
detailsGeneral: FDETGEN
detailsNfo: FDETNFO
detailsFileList: FDETLST
help: FBHELP
}
}
form: {
0: {
mci: {
MT1: {
mode: preview
ansiView: true
}
HM2: {
focus: true
submit: true
argName: navSelect
items: [
"prev", "next", "details", "toggle queue", "rate", "help", "quit"
]
focusItemIndex: 1
}
}
submit: {
*: [
{
value: { navSelect: 0 }
action: @method:prevFile
}
{
value: { navSelect: 1 }
action: @method:nextFile
}
{
value: { navSelect: 2 }
action: @method:viewDetails
}
{
value: { navSelect: 3 }
action: @method:toggleQueue
}
{
value: { navSelect: 4 }
action: @menu:fileBaseGetRatingForSelectedEntry
}
{
value: { navSelect: 5 }
action: @method:displayHelp
}
{
value: { navSelect: 6 }
action: @systemMethod:prevMenu
}
]
}
actionKeys: [
{
keys: [ "w", "shift + w" ]
action: @method:showWebDownloadLink
}
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
{
keys: [ "t", "shift + t" ]
action: @method:toggleQueue
}
{
keys: [ "v", "shift + v" ]
action: @method:viewDetails
}
{
keys: [ "r", "shift + r" ]
action: @menu:fileBaseGetRatingForSelectedEntry
}
{
keys: [ "?" ]
action: @method:displayHelp
}
]
}
1: {
mci: {
HM1: {
focus: true
submit: true
argName: navSelect
items: [
"general", "nfo/readme", "file listing"
]
}
}
actionKeys: [
{
keys: [ "escape", "q", "shift + q" ]
action: @method:detailsQuit
}
]
}
2: {
// details - general
mci: {}
}
3: {
// details - nfo/readme
mci: {
MT1: {
mode: preview
}
}
}
4: {
// details - file listing
mci: {
VM1: {
}
}
}
}
}
2015-10-28 02:21:58 +00:00
///////////////////////////////////////////////////////////////////////
// Main Menu
///////////////////////////////////////////////////////////////////////
2015-09-27 21:35:24 +00:00
mainMenu: {
art: MMENU
desc: Main Menu
prompt: menuCommand
2018-08-05 20:06:30 +00:00
config: {
2016-07-25 07:03:07 +00:00
font: cp437
2018-12-01 06:20:44 +00:00
interrupt: realtime
2016-07-25 07:03:07 +00:00
}
2015-10-18 02:34:39 +00:00
submit: [
2018-12-01 06:20:44 +00:00
{
value: { command: "MSG" }
action: @menu:nodeMessage
}
2015-08-07 05:08:10 +00:00
{
2015-11-14 19:22:21 +00:00
value: { command: "G" }
2015-12-23 23:42:38 +00:00
action: @menu:fullLogoffSequence
2015-10-18 02:34:39 +00:00
}
{
value: { command: "D" }
action: @menu:doorMenu
}
2017-02-12 21:03:29 +00:00
{
value: { command: "F" }
2017-02-13 02:42:18 +00:00
action: @menu:fileBase
2017-02-12 21:03:29 +00:00
}
2015-10-18 17:48:08 +00:00
{
value: { command: "U" }
action: @menu:mainMenuUserList
}
2015-10-15 05:09:10 +00:00
{
2015-11-14 19:22:21 +00:00
value: { command: "L" }
action: @menu:mainMenuLastCallers
2015-10-15 05:09:10 +00:00
}
2015-11-26 01:03:47 +00:00
{
value: { command: "W" }
action: @menu:mainMenuWhosOnline
}
2015-09-08 03:18:09 +00:00
{
2015-11-14 19:22:21 +00:00
value: { command: "Y" }
action: @menu:mainMenuUserStats
}
2015-08-10 01:32:38 +00:00
{
2015-11-14 19:22:21 +00:00
value: { command: "M" }
action: @menu:messageArea
}
2016-07-25 07:03:07 +00:00
{
value: { command: "E" }
action: @menu:mailMenu
}
2015-10-12 05:26:27 +00:00
{
value: { command: "C" }
action: @menu:mainMenuUserConfig
}
2015-10-18 02:03:51 +00:00
{
value: { command: "S" }
action: @menu:mainMenuSystemStats
}
2016-01-15 05:48:42 +00:00
{
value: { command: "!" }
action: @menu:mainMenuGlobalNewScan
}
{
value: { command: "K" }
action: @menu:mainMenuFeedbackToSysOp
}
2016-07-01 04:30:46 +00:00
{
value: { command: "O" }
action: @menu:mainMenuOnelinerz
}
2016-08-27 04:34:37 +00:00
{
value: { command: "R" }
action: @menu:mainMenuRumorz
}
2016-07-10 05:08:33 +00:00
{
value: { command: "BBS"}
action: @menu:bbsList
}
2015-08-07 05:08:10 +00:00
{
2015-11-14 19:22:21 +00:00
value: 1
action: @menu:mainMenu
2015-08-07 05:08:10 +00:00
}
]
2015-10-18 02:34:39 +00:00
}
2017-09-24 15:58:57 +00:00
2018-12-01 06:20:44 +00:00
nodeMessage: {
desc: Node Messaging
module: node_msg
art: NODEMSG
config: {
cls: true
art: {
header: NODEMSGHDR
footer: NODEMSGFTR
}
}
form: {
0: {
mci: {
SM1: {
argName: node
}
ET2: {
argName: message
submit: true
}
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
submit: {
*: [
{
value: { message: null }
action: @method:sendMessage
}
]
}
}
}
}
2015-09-27 21:35:24 +00:00
mainMenuLastCallers: {
2015-10-18 17:48:08 +00:00
desc: Last Callers
2017-12-01 00:15:18 +00:00
module: last_callers
2015-09-27 21:35:24 +00:00
art: LASTCALL
2018-08-05 20:06:30 +00:00
config: { pause: true }
2015-09-27 21:35:24 +00:00
}
2017-09-24 15:58:57 +00:00
2015-11-26 01:03:47 +00:00
mainMenuWhosOnline: {
desc: Who's Online
2017-12-01 00:15:18 +00:00
module: whos_online
2015-11-26 01:03:47 +00:00
art: WHOSON
2018-08-05 20:06:30 +00:00
config: { pause: true }
2015-11-26 01:03:47 +00:00
}
2017-09-24 15:58:57 +00:00
2015-09-27 21:35:24 +00:00
mainMenuUserStats: {
2015-10-18 17:48:08 +00:00
desc: User Stats
2015-09-27 21:35:24 +00:00
art: STATUS
2018-08-05 20:06:30 +00:00
config: { pause: true }
2015-10-12 05:26:27 +00:00
}
2017-09-24 15:58:57 +00:00
2015-10-18 02:03:51 +00:00
mainMenuSystemStats: {
2015-10-18 17:48:08 +00:00
desc: System Stats
2015-10-18 02:03:51 +00:00
art: SYSSTAT
2018-08-05 20:06:30 +00:00
config: { pause: true }
2015-10-18 02:03:51 +00:00
}
2017-09-24 15:58:57 +00:00
2015-10-18 17:48:08 +00:00
mainMenuUserList: {
desc: User Listing
2017-12-01 00:15:18 +00:00
module: user_list
2015-10-18 17:48:08 +00:00
art: USERLST
form: {
0: {
mci: {
VM1: {
focus: true
submit: true
}
}
actionKeys: [
{
2015-10-19 03:24:13 +00:00
keys: [ "escape", "q", "shift + q" ]
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-10-18 17:48:08 +00:00
}
]
}
}
}
2015-12-24 18:56:25 +00:00
2015-10-12 05:26:27 +00:00
mainMenuUserConfig: {
2017-12-01 00:15:18 +00:00
module: user_config
2015-10-12 05:26:27 +00:00
art: CONFSCR
2015-10-13 06:35:37 +00:00
form: {
0: {
mci: {
ET1: {
2015-12-24 18:56:25 +00:00
argName: realName
maxLength: @config:users.realNameMax
validate: @systemMethod:validateNonEmpty
focus: true
2015-10-13 06:35:37 +00:00
}
2015-12-24 18:56:25 +00:00
ME2: {
argName: birthdate
maskPattern: "####/##/##"
2015-10-13 06:35:37 +00:00
}
2015-12-24 18:56:25 +00:00
ME3: {
argName: sex
maskPattern: A
textStyle: upper
validate: @systemMethod:validateNonEmpty
2015-10-13 06:35:37 +00:00
}
ET4: {
2015-12-24 18:56:25 +00:00
argName: location
maxLength: @config:users.locationMax
validate: @systemMethod:validateNonEmpty
}
ET5: {
2015-10-13 06:35:37 +00:00
argName: affils
2015-12-24 18:56:25 +00:00
maxLength: @config:users.affilsMax
2015-10-13 06:35:37 +00:00
}
2015-12-24 18:56:25 +00:00
ET6: {
argName: email
maxLength: @config:users.emailMax
validate: @method:validateEmailAvail
}
ET7: {
argName: web
maxLength: @config:users.webMax
}
ME8: {
maskPattern: "##"
argName: termHeight
validate: @systemMethod:validateNonEmpty
}
SM9: {
argName: theme
}
ET10: {
argName: password
maxLength: @config:users.passwordMax
password: true
validate: @method:validatePassword
2015-10-13 06:35:37 +00:00
}
2015-12-24 18:56:25 +00:00
ET11: {
argName: passwordConfirm
maxLength: @config:users.passwordMax
password: true
validate: @method:validatePassConfirmMatch
}
TM25: {
argName: submission
items: [ "save", "cancel" ]
submit: true
2015-10-13 06:35:37 +00:00
}
}
2015-12-24 18:56:25 +00:00
submit: {
*: [
{
value: { submission: 0 }
action: @method:saveChanges
}
{
value: { submission: 1 }
action: @systemMethod:prevMenu
}
]
}
2015-10-18 02:03:51 +00:00
actionKeys: [
{
keys: [ "escape" ]
2015-12-24 18:56:25 +00:00
action: @systemMethod:prevMenu
2015-10-18 02:03:51 +00:00
}
]
2015-10-13 06:35:37 +00:00
}
}
2015-09-27 21:35:24 +00:00
}
2016-01-15 05:48:42 +00:00
mainMenuGlobalNewScan: {
desc: Performing New Scan
2017-12-01 00:15:18 +00:00
module: new_scan
2016-01-15 05:48:42 +00:00
art: NEWSCAN
config: {
messageListMenu: newScanMessageList
}
}
mainMenuFeedbackToSysOp: {
2016-07-25 07:03:07 +00:00
desc: Feedback to SysOp
2017-12-01 00:15:18 +00:00
module: msg_area_post_fse
2016-01-15 05:48:42 +00:00
config: {
art: {
header: MSGEHDR
body: MSGBODY
footerEditor: MSGEFTR
footerEditorMenu: MSGEMFT
help: MSGEHLP
},
editorMode: edit
editorType: email
2016-02-03 04:35:59 +00:00
messageAreaTag: private_mail
2016-01-15 05:48:42 +00:00
toUserId: 1 /* always to +op */
}
form: {
0: {
mci: {
TL1: {
argName: from
}
ET2: {
argName: to
focus: true
2016-08-04 03:46:38 +00:00
text: @sysStat:sysop_username
2016-01-15 05:48:42 +00:00
// :TODO: readOnly: true
}
ET3: {
argName: subject
maxLength: 72
submit: true
validate: @systemMethod:validateMessageSubject
}
}
submit: {
3: [
{
value: { subject: null }
action: @method:headerSubmit
}
]
}
2016-07-25 16:47:57 +00:00
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
2016-01-15 05:48:42 +00:00
}
1: {
mci: {
MT1: {
width: 79
argName: message
mode: edit
}
}
submit: {
*: [ { value: "message", action: "@method:editModeEscPressed" } ]
}
actionKeys: [
{
keys: [ "escape" ]
viewId: 1
}
]
},
2: {
TLTL: {
mci: {
TL1: {
width: 5
}
TL2: {
width: 4
}
}
}
}
3: {
HM: {
mci: {
HM1: {
// :TODO: clear
items: [ "save", "discard", "help" ]
}
}
submit: {
*: [
{
value: { 1: 0 }
action: @method:editModeMenuSave
}
{
value: { 1: 1 }
action: @systemMethod:prevMenu
}
{
value: { 1: 2 }
action: @method:editModeMenuHelp
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @method:editModeEscPressed
}
{
keys: [ "?" ]
action: @method:editModeMenuHelp
}
]
}
}
}
}
2016-07-01 04:30:46 +00:00
mainMenuOnelinerz: {
desc: Viewing Onelinerz
2017-12-01 00:15:18 +00:00
module: onelinerz
2016-07-01 04:30:46 +00:00
config: {
2018-08-05 20:06:30 +00:00
cls: true
2016-07-01 04:30:46 +00:00
art: {
2018-07-11 00:57:52 +00:00
view: ONELINER
2016-07-01 04:30:46 +00:00
add: ONEADD
}
}
form: {
0: {
mci: {
VM1: {
focus: false
height: 10
}
TM2: {
argName: addOrExit
items: [ "yeah!", "nah" ]
"hotKeys" : { "Y" : 0, "N" : 1, "Q" : 1 }
submit: true
focus: true
}
}
submit: {
*: [
{
value: { addOrExit: 0 }
action: @method:viewAddScreen
}
{
value: { addOrExit: null }
action: @systemMethod:nextMenu
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:nextMenu
}
]
},
1: {
mci: {
ET1: {
focus: true
maxLength: 70
argName: oneliner
}
TL2: {
width: 60
}
TM3: {
argName: addOrCancel
items: [ "add", "cancel" ]
"hotKeys" : { "A" : 0, "C" : 1, "Q" : 1 }
submit: true
}
}
submit: {
*: [
{
value: { addOrCancel: 0 }
action: @method:addEntry
}
{
value: { addOrCancel: 1 }
action: @method:cancelAdd
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @method:cancelAdd
}
]
}
}
}
2016-08-27 04:34:37 +00:00
mainMenuRumorz: {
desc: Rumorz
2017-12-01 00:15:18 +00:00
module: rumorz
2016-08-27 04:34:37 +00:00
config: {
2018-08-05 20:06:30 +00:00
cls: true
2016-08-27 04:34:37 +00:00
art: {
entries: RUMORS
add: RUMORADD
}
}
form: {
0: {
mci: {
VM1: {
focus: false
height: 10
}
TM2: {
argName: addOrExit
items: [ "yeah!", "nah" ]
"hotKeys" : { "Y" : 0, "N" : 1, "Q" : 1 }
submit: true
focus: true
}
}
submit: {
*: [
{
value: { addOrExit: 0 }
action: @method:viewAddScreen
}
{
value: { addOrExit: null }
action: @systemMethod:nextMenu
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:nextMenu
}
]
},
1: {
mci: {
ET1: {
focus: true
maxLength: 70
argName: rumor
}
TL2: {
width: 60
}
TM3: {
argName: addOrCancel
items: [ "add", "cancel" ]
"hotKeys" : { "A" : 0, "C" : 1, "Q" : 1 }
submit: true
}
}
submit: {
*: [
{
value: { addOrCancel: 0 }
action: @method:addEntry
}
{
value: { addOrCancel: 1 }
action: @method:cancelAdd
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @method:cancelAdd
}
]
}
}
}
2016-07-10 05:08:33 +00:00
bbsList: {
desc: Viewing BBS List
2017-12-01 00:15:18 +00:00
module: bbs_list
2016-07-10 05:08:33 +00:00
config: {
2018-08-05 20:06:30 +00:00
cls: true
2016-07-10 05:08:33 +00:00
art: {
entries: BBSLIST
add: BBSADD
}
}
form: {
0: {
mci: {
VM1: { maxLength: 32 }
TL2: { maxLength: 32 }
TL3: { maxLength: 32 }
TL4: { maxLength: 32 }
TL5: { maxLength: 32 }
TL6: { maxLength: 32 }
TL7: { maxLength: 32 }
TL8: { maxLength: 32 }
TL9: { maxLength: 32 }
}
actionKeys: [
{
keys: [ "a" ]
action: @method:addBBS
}
{
// :TODO: add delete key
keys: [ "d" ]
action: @method:deleteBBS
}
{
keys: [ "q", "escape" ]
2016-07-25 20:35:58 +00:00
action: @systemMethod:prevMenu
2016-07-10 05:08:33 +00:00
}
]
}
1: {
mci: {
ET1: {
argName: name
maxLength: 32
validate: @systemMethod:validateNonEmpty
}
ET2: {
argName: sysop
maxLength: 32
validate: @systemMethod:validateNonEmpty
}
ET3: {
argName: telnet
maxLength: 32
validate: @systemMethod:validateNonEmpty
}
ET4: {
argName: www
maxLength: 32
}
ET5: {
argName: location
maxLength: 32
}
ET6: {
argName: software
maxLength: 32
}
ET7: {
argName: notes
maxLength: 32
}
TM17: {
argName: submission
items: [ "save", "cancel" ]
submit: true
}
}
2016-07-25 16:47:57 +00:00
2016-07-10 05:08:33 +00:00
actionKeys: [
{
keys: [ "escape" ]
action: @method:cancelSubmit
}
2016-07-25 16:47:57 +00:00
]
2016-07-10 05:08:33 +00:00
submit: {
*: [
{
value: { "submission" : 0 }
action: @method:submitBBS
}
{
value: { "submission" : 1 }
action: @method:cancelSubmit
}
]
}
}
}
}
2015-10-28 02:21:58 +00:00
///////////////////////////////////////////////////////////////////////
// Doors Menu
///////////////////////////////////////////////////////////////////////
2015-10-18 02:34:39 +00:00
doorMenu: {
desc: Doors Menu
art: DOORMNU
prompt: menuCommand
2018-12-01 06:20:44 +00:00
config: {
interrupt: realtime
}
2015-10-18 02:34:39 +00:00
submit: [
{
value: { command: "G" }
action: @menu:logoff
}
{
value: { command: "Q" }
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-10-18 02:34:39 +00:00
}
2018-11-14 02:59:56 +00:00
//
// The system supports many ways of launching doors including
// modules for DoorParty!, BBSLink, etc.
//
// Below are some examples. See the documentation for more info.
//
2015-10-18 02:34:39 +00:00
{
2018-11-14 02:59:56 +00:00
value: { command: "ABRACADABRA" }
action: @menu:doorAbracadabraExample
2015-10-18 02:34:39 +00:00
}
{
2018-12-03 02:31:27 +00:00
value: { command: "TWBBSLINK" }
2018-11-14 02:59:56 +00:00
action: @menu:doorTradeWars2002BBSLinkExample
2016-01-04 02:40:34 +00:00
}
2016-06-20 03:09:45 +00:00
{
value: { command: "DP" }
2018-11-14 02:59:56 +00:00
action: @menu:doorPartyExample
2016-06-20 03:09:45 +00:00
}
2016-06-29 04:38:29 +00:00
{
2017-11-02 00:41:20 +00:00
value: { command: "CN" }
2018-11-14 02:59:56 +00:00
action: @menu:doorCombatNetExample
2017-11-02 00:41:20 +00:00
}
{
2018-11-14 02:59:56 +00:00
value: { command: "EXODUS" }
action: @menu:doorExodusCataclysm
2016-06-29 04:38:29 +00:00
}
2015-10-18 02:34:39 +00:00
]
}
2015-12-11 04:46:08 +00:00
2017-09-24 15:58:57 +00:00
//
2018-11-14 02:59:56 +00:00
// Local Door Example via abracadabra module
2017-09-24 15:58:57 +00:00
//
2018-11-14 02:59:56 +00:00
// This example assumes launch_door.sh (which is passed args)
// launches the door.
//
doorAbracadabraExample: {
desc: Abracadabra Example
2017-12-01 00:15:18 +00:00
module: abracadabra
2015-10-28 02:21:58 +00:00
config: {
2018-11-14 02:59:56 +00:00
name: Example Door
2015-10-28 02:21:58 +00:00
dropFileType: DORINFO
2018-11-14 02:59:56 +00:00
cmd: /home/enigma/DOS/scripts/launch_door.sh
2016-06-27 07:29:17 +00:00
args: [
2015-12-11 04:46:08 +00:00
"{node}",
"{dropFile}",
"{srvPort}",
2015-10-28 02:21:58 +00:00
],
nodeMax: 1
2015-10-28 03:12:55 +00:00
tooManyArt: DOORMANY
2015-12-11 04:46:08 +00:00
io: socket
2015-10-28 02:21:58 +00:00
}
2015-12-11 04:46:08 +00:00
}
2016-01-04 02:40:34 +00:00
2015-12-11 04:46:08 +00:00
//
2018-11-14 02:59:56 +00:00
// BBSLink Example (TradeWars 2000)
2015-12-11 04:46:08 +00:00
//
2018-11-14 02:59:56 +00:00
// Register @ https://bbslink.net/
2015-12-11 04:46:08 +00:00
//
2018-11-14 02:59:56 +00:00
doorTradeWars2002BBSLinkExample: {
2015-12-11 04:46:08 +00:00
desc: Playing TW 2002 (BBSLink)
2017-12-01 00:15:18 +00:00
module: bbs_link
2015-12-11 04:46:08 +00:00
config: {
sysCode: XXXXXXXX
authCode: XXXXXXXX
schemeCode: XXXXXXXX
door: tw
}
}
2016-06-20 03:09:45 +00:00
2018-11-14 02:59:56 +00:00
//
// DoorParty! Example
//
// Register @ http://throwbackbbs.com/
//
doorPartyExample: {
2016-06-20 03:09:45 +00:00
desc: Using DoorParty!
2017-12-01 00:15:18 +00:00
module: door_party
2016-06-20 03:09:45 +00:00
config: {
username: XXXXXXXX
password: XXXXXXXX
bbsTag: XX
}
}
2016-06-29 04:38:29 +00:00
2018-11-14 02:59:56 +00:00
//
// CombatNet Example
//
// Register @ http://combatnet.us/
//
doorCombatNetExample: {
2017-11-02 00:41:20 +00:00
desc: Using CombatNet
2017-12-01 00:15:18 +00:00
module: combatnet
2017-11-02 00:41:20 +00:00
config: {
bbsTag: CBNxxx
password: XXXXXXXXX
}
}
2018-11-14 02:59:56 +00:00
//
// Exodus Example (cataclysm)
// Register @ https://oddnetwork.org/exodus/
//
doorExodusCataclysm: {
desc: Cataclysm
module: exodus
2016-06-29 04:38:29 +00:00
config: {
2018-11-14 02:59:56 +00:00
rejectUnauthorized: false
board: XXX
key: XXXXXXXX
door: cataclysm
2016-06-29 04:38:29 +00:00
}
}
2015-08-10 01:32:38 +00:00
///////////////////////////////////////////////////////////////////////
2015-10-28 02:21:58 +00:00
// Message Area Menu
2015-08-10 01:32:38 +00:00
///////////////////////////////////////////////////////////////////////
2015-10-15 05:09:10 +00:00
messageArea: {
art: MSGMNU
desc: Message Area
2016-08-04 02:59:10 +00:00
prompt: messageMenuCommand
2018-12-01 06:20:44 +00:00
config: {
interrupt: realtime
}
2015-10-15 05:09:10 +00:00
submit: [
2015-08-12 03:36:08 +00:00
{
2015-10-15 05:09:10 +00:00
value: { command: "P" }
action: @menu:messageAreaNewPost
}
2016-02-03 04:35:59 +00:00
{
value: { command: "J" }
action: @menu:messageAreaChangeCurrentConference
}
2015-08-18 03:45:11 +00:00
{
2015-10-15 05:09:10 +00:00
value: { command: "C" }
action: @menu:messageAreaChangeCurrentArea
}
2015-08-27 05:04:04 +00:00
{
2015-10-15 05:09:10 +00:00
value: { command: "L" }
action: @menu:messageAreaMessageList
}
2015-08-16 19:35:34 +00:00
{
2015-10-15 05:09:10 +00:00
value: { command: "Q" }
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-10-15 05:09:10 +00:00
}
2015-10-16 05:41:24 +00:00
{
value: { command: "G" }
2016-07-25 07:03:07 +00:00
action: @menu:fullLogoffSequence
}
{
value: { command: "<" }
action: @systemMethod:prevConf
}
{
value: { command: ">" }
action: @systemMethod:nextConf
}
{
value: { command: "[" }
action: @systemMethod:prevArea
}
{
value: { command: "]" }
action: @systemMethod:nextArea
2015-10-16 05:41:24 +00:00
}
2018-01-15 00:09:23 +00:00
{
value: { command: "D" }
action: @menu:messageAreaSetNewScanDate
}
2018-07-06 00:39:35 +00:00
{
value: { command: "S" }
action: @menu:messageSearch
}
2015-09-06 21:58:58 +00:00
{
2015-10-15 05:09:10 +00:00
value: 1
action: @menu:messageArea
2016-06-27 07:29:17 +00:00
}
2015-08-12 03:36:08 +00:00
]
2015-10-15 05:09:10 +00:00
}
2016-02-03 04:35:59 +00:00
2018-07-06 00:39:35 +00:00
messageSearch: {
desc: Message Search
module: message_base_search
art: MSEARCH
config: {
messageListMenu: messageAreaSearchMessageList
}
form: {
0: {
mci: {
ET1: {
focus: true
argName: searchTerms
}
BT2: {
argName: search
text: search
submit: true
}
SM3: {
argName: confTag
}
SM4: {
argName: areaTag
}
ET5: {
argName: toUserName
maxLength: @config:users.usernameMax
}
ET6: {
argName: fromUserName
maxLength: @config:users.usernameMax
}
BT7: {
argName: advancedSearch
text: advanced search
submit: true
}
}
submit: {
*: [
{
value: { search: null }
action: @method:search
}
{
value: { advancedSearch: null }
action: @method:search
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
}
}
}
messageAreaSearchMessageList: {
desc: Message Search
module: msg_list
art: MSRCHLST
config: {
menuViewPost: messageAreaViewPost
}
form: {
0: {
mci: {
VM1: {
focus: true
submit: true
argName: message
}
TL6: {
// theme me!
}
}
submit: {
*: [
{
value: { message: null }
action: @method:selectMessage
}
]
}
actionKeys: [
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
]
}
}
}
messageSearchNoResults: {
desc: Message Search
art: MSRCNORES
2018-08-05 20:06:30 +00:00
config: {
2018-07-06 00:39:35 +00:00
pause: true
}
}
2016-02-03 04:35:59 +00:00
messageAreaChangeCurrentConference: {
art: CCHANGE
2017-12-01 00:15:18 +00:00
module: msg_conf_list
2016-02-03 04:35:59 +00:00
form: {
0: {
mci: {
VM1: {
focus: true
submit: true
argName: conf
}
}
submit: {
*: [
{
value: { conf: null }
action: @method:changeConference
}
]
}
actionKeys: [
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
]
}
}
}
2018-01-15 00:09:23 +00:00
messageAreaSetNewScanDate: {
module: set_newscan_date
desc: Message Base
art: SETMNSDATE
config: {
target: message
scanDateFormat: YYYYMMDD
}
form: {
0: {
mci: {
ME1: {
focus: true
submit: true
argName: scanDate
maskPattern: "####/##/##"
}
SM2: {
argName: targetSelection
submit: false
}
}
submit: {
*: [
{
value: { scanDate: null }
action: @method:scanDateSubmit
}
]
}
actionKeys: [
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
]
}
}
}
2018-07-23 01:06:43 +00:00
changeMessageConfPreArt: {
2018-07-22 21:59:00 +00:00
module: show_art
config: {
method: messageConf
key: confTag
pause: true
cls: true
menuFlags: [ "popParent", "noHistory" ]
}
}
2015-10-15 05:09:10 +00:00
messageAreaChangeCurrentArea: {
2016-02-03 04:35:59 +00:00
// :TODO: rename this art to ACHANGE
2015-10-15 05:09:10 +00:00
art: CHANGE
2017-12-01 00:15:18 +00:00
module: msg_area_list
2015-10-28 02:21:58 +00:00
form: {
0: {
mci: {
VM1: {
focus: true
submit: true
argName: area
}
}
submit: {
*: [
2015-08-19 05:11:13 +00:00
{
2015-10-28 02:21:58 +00:00
value: { area: null }
action: @method:changeArea
2015-08-19 05:11:13 +00:00
}
]
2015-10-28 02:21:58 +00:00
}
actionKeys: [
2015-10-15 05:09:10 +00:00
{
keys: [ "escape", "q", "shift + q" ]
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-10-15 05:09:10 +00:00
}
]
2015-08-18 21:27:14 +00:00
}
}
2015-10-28 02:21:58 +00:00
}
2016-02-03 04:35:59 +00:00
2018-07-23 02:14:50 +00:00
changeMessageAreaPreArt: {
module: show_art
config: {
method: messageArea
key: areaTag
pause: true
cls: true
menuFlags: [ "popParent", "noHistory" ]
}
}
2015-10-11 22:05:45 +00:00
messageAreaMessageList: {
2017-12-01 00:15:18 +00:00
module: msg_list
2015-10-11 22:05:45 +00:00
art: MSGLIST
config: {
2015-10-28 02:21:58 +00:00
menuViewPost: messageAreaViewPost
2015-10-11 22:05:45 +00:00
}
form: {
0: {
mci: {
VM1: {
focus: true
submit: true
argName: message
}
}
submit: {
*: [
2015-08-31 03:42:24 +00:00
{
2015-10-11 22:05:45 +00:00
value: { message: null }
action: @method:selectMessage
2015-08-31 03:42:24 +00:00
}
]
2015-08-27 05:04:04 +00:00
}
2015-10-11 22:05:45 +00:00
actionKeys: [
{
keys: [ "escape", "q", "shift + q" ]
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-10-11 22:05:45 +00:00
}
]
2015-08-27 05:04:04 +00:00
}
}
2015-10-11 22:05:45 +00:00
}
2015-09-10 03:55:16 +00:00
messageAreaViewPost: {
2017-12-01 00:15:18 +00:00
module: msg_area_view_fse
2015-09-10 03:55:16 +00:00
config: {
art: {
2015-10-28 02:21:58 +00:00
header: MSGVHDR
body: MSGBODY
footerView: MSGVFTR
help: MSGVHLP
2015-09-01 05:18:46 +00:00
},
2015-09-10 03:55:16 +00:00
editorMode: view
editorType: area
2015-10-10 01:27:43 +00:00
}
2015-10-07 03:21:13 +00:00
form: {
0: {
mci: {
// :TODO: ensure this block isn't even req. for theme to apply...
2015-09-01 05:18:46 +00:00
}
2015-10-07 03:21:13 +00:00
}
1: {
mci: {
MT1: {
width: 79
mode: preview
2015-09-12 23:17:00 +00:00
}
2015-10-07 03:21:13 +00:00
}
submit: {
*: [
2015-09-01 05:18:46 +00:00
{
2015-10-28 02:21:58 +00:00
value: message
action: @method:editModeEscPressed
2015-09-01 05:18:46 +00:00
}
]
2015-10-10 01:27:43 +00:00
}
actionKeys: [
2015-09-12 23:17:00 +00:00
{
2015-10-10 01:27:43 +00:00
keys: [ "escape" ]
viewId: 1
2015-09-12 23:17:00 +00:00
}
]
2015-10-10 01:27:43 +00:00
}
2: {
TLTL: {
mci: {
TL1: { width: 5 }
TL2: { width: 4 }
2015-09-01 05:18:46 +00:00
}
}
2015-10-10 01:27:43 +00:00
}
2015-09-20 04:55:09 +00:00
4: {
mci: {
HM1: {
// :TODO: (#)Jump/(L)Index (msg list)/Last
2015-10-10 01:27:43 +00:00
items: [ "prev", "next", "reply", "quit", "help" ]
2017-02-12 21:03:29 +00:00
focusItemIndex: 1
2015-09-08 03:18:09 +00:00
}
2015-10-10 01:27:43 +00:00
}
submit: {
*: [
2015-09-01 05:18:46 +00:00
{
2015-09-20 04:55:09 +00:00
value: { 1: 0 }
2015-10-05 04:04:56 +00:00
action: @method:prevMessage
2016-03-20 03:07:47 +00:00
}
2015-09-08 03:18:09 +00:00
{
2015-09-20 04:55:09 +00:00
value: { 1: 1 }
action: @method:nextMessage
}
2015-09-13 00:18:46 +00:00
{
2015-09-15 04:40:00 +00:00
value: { 1: 2 }
2015-09-13 00:18:46 +00:00
action: @method:replyMessage
extraArgs: {
menu: messageAreaReplyPost
}
2015-09-20 04:55:09 +00:00
}
2015-09-07 06:12:01 +00:00
{
2015-09-20 04:55:09 +00:00
value: { 1: 3 }
2015-12-11 04:46:08 +00:00
action: @systemMethod:prevMenu
2015-09-20 04:55:09 +00:00
}
{
value: { 1: 4 }
action: @method:viewModeMenuHelp
2015-09-01 05:18:46 +00:00
}
]
2015-10-10 01:27:43 +00:00
}
actionKeys: [
2015-09-08 03:18:09 +00:00
{
2015-09-18 05:17:15 +00:00
keys: [ "p", "shift + p" ]
action: @method:prevMessage
}
2015-09-08 03:18:09 +00:00
{
2015-09-15 04:40:00 +00:00
keys: [ "n", "shift + n" ]
action: @method:nextMessage
2016-06-27 07:29:17 +00:00
}
2015-09-14 03:15:55 +00:00
{
2015-09-18 05:17:15 +00:00
keys: [ "r", "shift + r" ]
2015-09-14 03:15:55 +00:00
action: @method:replyMessage
extraArgs: {
menu: messageAreaReplyPost
}
2015-09-18 05:17:15 +00:00
}
2015-09-20 04:55:09 +00:00
{
keys: [ "escape", "q", "shift + q" ]
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-09-20 04:55:09 +00:00
}
{
keys: [ "?" ]
action: @method:viewModeMenuHelp
2016-06-27 07:29:17 +00:00
}
2015-09-08 03:18:09 +00:00
{
2015-10-10 01:27:43 +00:00
keys: [ "down arrow", "up arrow", "page up", "page down" ]
action: @method:movementKeyPressed
2015-09-08 03:18:09 +00:00
}
]
2015-09-01 05:18:46 +00:00
}
}
2016-07-25 16:47:57 +00:00
}
2015-09-13 00:18:46 +00:00
messageAreaReplyPost: {
2017-12-01 00:15:18 +00:00
module: msg_area_post_fse
2015-09-13 00:18:46 +00:00
config: {
art: {
header: MSGEHDR
2015-10-28 02:21:58 +00:00
body: MSGBODY
2015-09-13 00:18:46 +00:00
quote: MSGQUOT
footerEditor: MSGEFTR
footerEditorMenu: MSGEMFT
2015-09-20 04:55:09 +00:00
help: MSGEHLP
2015-09-13 00:18:46 +00:00
}
editorMode: edit
editorType: area
}
form: {
0: {
mci: {
2015-10-28 02:21:58 +00:00
// :TODO: use appropriate system properties for max lengths
2015-09-13 00:18:46 +00:00
TL1: {
argName: from
}
ET2: {
argName: to
focus: true
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-09-13 00:18:46 +00:00
}
ET3: {
2016-06-27 07:29:17 +00:00
argName: subject
2015-09-13 00:18:46 +00:00
maxLength: 72
submit: true
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-09-13 00:18:46 +00:00
}
TL4: {
2015-09-20 04:55:09 +00:00
// :TODO: this is for RE: line (NYI)
2015-10-06 21:22:49 +00:00
//width: 27
//textOverflow: ...
2015-09-13 00:18:46 +00:00
}
}
2015-09-13 01:18:08 +00:00
submit: {
2016-07-25 16:47:57 +00:00
3: [
{
value: { subject: null }
action: @method:headerSubmit
}
]
2015-09-13 01:18:08 +00:00
}
2016-07-25 16:47:57 +00:00
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
2015-09-13 00:18:46 +00:00
}
2015-09-13 01:18:08 +00:00
1: {
mci: {
MT1: {
2015-10-10 02:46:28 +00:00
width: 79
height: 14
argName: message
mode: edit
2015-09-13 01:18:08 +00:00
}
}
submit: {
*: [ { "value": "message", "action": "@method:editModeEscPressed" } ]
}
actionKeys: [
{
keys: [ "escape" ],
viewId: 1
}
]
2015-09-14 03:15:55 +00:00
}
2015-09-15 04:40:00 +00:00
3: {
2017-09-24 15:58:57 +00:00
mci: {
HM1: {
items: [ "save", "discard", "quote", "help" ]
2015-09-15 04:40:00 +00:00
}
2017-09-24 15:58:57 +00:00
}
2015-09-15 04:40:00 +00:00
2017-08-19 22:55:25 +00:00
submit: {
*: [
2015-09-20 04:55:09 +00:00
{
2017-08-19 22:55:25 +00:00
value: { 1: 0 }
2015-09-20 07:29:07 +00:00
action: @method:editModeMenuSave
2015-09-20 04:55:09 +00:00
}
{
2017-08-19 22:55:25 +00:00
value: { 1: 1 }
2015-11-04 06:15:49 +00:00
action: @systemMethod:prevMenu
2015-09-20 04:55:09 +00:00
}
{
2017-08-19 22:55:25 +00:00
value: { 1: 2 },
2015-09-20 04:55:09 +00:00
action: @method:editModeMenuQuote
}
{
2017-08-19 22:55:25 +00:00
value: { 1: 3 }
2015-09-20 04:55:09 +00:00
action: @method:editModeMenuHelp
}
2015-09-15 04:40:00 +00:00
]
}
2017-08-19 22:55:25 +00:00
actionKeys: [
{
keys: [ "escape" ]
action: @method:editModeEscPressed
}
{
keys: [ "s", "shift + s" ]
action: @method:editModeMenuSave
}
{
keys: [ "d", "shift + d" ]
action: @systemMethod:prevMenu
}
{
keys: [ "q", "shift + q" ]
action: @method:editModeMenuQuote
}
{
keys: [ "?" ]
action: @method:editModeMenuHelp
}
]
2015-09-15 04:40:00 +00:00
}
2015-09-20 04:55:09 +00:00
// Quote builder
2015-09-15 04:40:00 +00:00
5: {
mci: {
MT1: {
width: 79
height: 7
}
VM3: {
width: 79
height: 4
2015-09-16 04:44:31 +00:00
argName: quote
2016-06-27 07:29:17 +00:00
}
2015-09-14 03:15:55 +00:00
}
2015-09-16 04:44:31 +00:00
submit: {
*: [
{
value: { quote: null }
action: @method:appendQuoteEntry
}
]
}
2015-09-17 04:31:09 +00:00
actionKeys: [
{
keys: [ "escape" ]
action: @method:quoteBuilderEscPressed
}
]
2015-09-14 03:15:55 +00:00
}
2015-09-13 00:18:46 +00:00
}
}
2015-08-18 03:45:11 +00:00
// :TODO: messageAreaSelect (change msg areas -> call @systemMethod -> fallback to menu
2015-10-16 05:41:24 +00:00
messageAreaNewPost: {
2016-07-25 07:03:07 +00:00
desc: Posting message,
2017-12-01 00:15:18 +00:00
module: msg_area_post_fse
2015-09-11 05:09:45 +00:00
config: {
art: {
header: MSGEHDR
2015-09-12 23:17:00 +00:00
body: MSGBODY
2015-09-11 05:09:45 +00:00
footerEditor: MSGEFTR
footerEditorMenu: MSGEMFT
2015-09-20 04:55:09 +00:00
help: MSGEHLP
2015-10-16 05:41:24 +00:00
}
2015-09-11 05:09:45 +00:00
editorMode: edit
editorType: area
2015-10-16 05:41:24 +00:00
}
2015-10-07 03:21:13 +00:00
form: {
0: {
2015-09-11 05:09:45 +00:00
mci: {
TL1: {
2015-10-07 03:21:13 +00:00
argName: from
2015-09-11 05:09:45 +00:00
}
ET2: {
2015-10-07 03:21:13 +00:00
argName: to
focus: true
2015-09-21 01:10:09 +00:00
text: All
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-09-11 05:09:45 +00:00
}
2015-10-07 03:21:13 +00:00
ET3: {
argName: subject
maxLength: 72
submit: true
2015-12-12 22:52:56 +00:00
validate: @systemMethod:validateNonEmpty
2015-12-11 04:46:08 +00:00
// :TODO: Validate -> close/cancel if empty
2015-08-14 04:30:55 +00:00
}
2015-10-07 03:21:13 +00:00
}
2015-10-28 02:21:58 +00:00
submit: {
3: [
2015-09-11 05:09:45 +00:00
{
2015-10-28 02:21:58 +00:00
value: { subject: null }
action: @method:headerSubmit
2015-09-11 05:09:45 +00:00
}
]
2015-08-13 04:08:33 +00:00
}
2016-07-25 16:47:57 +00:00
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
2015-10-07 03:21:13 +00:00
}
1: {
2015-09-12 23:17:00 +00:00
"mci" : {
MT1: {
2015-10-07 03:21:13 +00:00
width: 79
argName: message
mode: edit
2015-09-12 23:17:00 +00:00
}
2015-08-13 22:05:17 +00:00
}
2015-09-12 23:17:00 +00:00
submit: {
*: [ { "value": "message", "action": "@method:editModeEscPressed" } ]
2015-10-28 02:21:58 +00:00
}
2015-10-07 03:21:13 +00:00
actionKeys: [
2015-09-12 23:17:00 +00:00
{
2015-10-28 02:21:58 +00:00
keys: [ "escape" ]
viewId: 1
2015-09-12 23:17:00 +00:00
}
]
2015-10-28 02:21:58 +00:00
}
2: {
TLTL: {
mci: {
TL1: { width: 5 }
TL2: { width: 4 }
2015-08-14 04:30:55 +00:00
}
}
2015-10-28 02:21:58 +00:00
}
3: {
HM: {
mci: {
HM1: {
2015-10-07 03:21:13 +00:00
// :TODO: clear
"items" : [ "save", "discard", "help" ]
2015-08-14 04:30:55 +00:00
}
2015-10-28 02:21:58 +00:00
}
submit: {
*: [
2015-08-14 04:30:55 +00:00
{
2015-10-28 02:21:58 +00:00
value: { 1: 0 }
action: @method:editModeMenuSave
}
2015-08-14 04:30:55 +00:00
{
2015-10-28 02:21:58 +00:00
value: { 1: 1 }
2015-11-05 06:04:55 +00:00
action: @systemMethod:prevMenu
2015-10-07 03:21:13 +00:00
}
2015-08-14 04:30:55 +00:00
{
2015-10-28 02:21:58 +00:00
value: { 1: 2 }
action: @method:editModeMenuHelp
2015-09-13 00:18:46 +00:00
}
2015-08-14 04:30:55 +00:00
]
2015-10-28 02:21:58 +00:00
}
actionKeys: [
2015-08-14 04:30:55 +00:00
{
2015-09-21 01:10:09 +00:00
keys: [ "escape" ]
action: @method:editModeEscPressed
}
{
keys: [ "?" ]
action: @method:editModeMenuHelp
2015-08-14 04:30:55 +00:00
}
]
// :TODO: something like the following for overriding keymap
// this should only override specified entries. others will default
/*
"keyMap" : {
"accept" : [ "return" ]
}
*/
}
2015-08-13 04:08:33 +00:00
}
2015-08-12 03:36:08 +00:00
}
2015-10-15 05:09:10 +00:00
}
2016-07-25 07:03:07 +00:00
//
// User to User mail aka Email Menu
//
mailMenu: {
art: MAILMNU
desc: Mail Menu
prompt: menuCommand
2018-12-01 06:20:44 +00:00
config: {
interrupt: realtime
}
2016-07-25 07:03:07 +00:00
submit: [
{
value: { command: "C" }
action: @menu:mailMenuCreateMessage
}
{
value: { command: "I" }
action: @menu:mailMenuInbox
}
{
value: { command: "Q" }
action: @systemMethod:prevMenu
}
{
value: { command: "G" }
action: @menu:fullLogoffSequence
}
{
value: 1
action: @menu:mailMenu
}
]
}
mailMenuCreateMessage: {
desc: Mailing Someone
2017-12-01 00:15:18 +00:00
module: msg_area_post_fse
2016-07-25 07:03:07 +00:00
config: {
art: {
header: MSGEHDR
body: MSGBODY
footerEditor: MSGEFTR
footerEditorMenu: MSGEMFT
help: MSGEHLP
},
editorMode: edit
editorType: email
messageAreaTag: private_mail
}
form: {
0: {
mci: {
TL1: {
argName: from
}
ET2: {
argName: to
focus: true
2018-01-13 16:08:17 +00:00
validate: @systemMethod:validateGeneralMailAddressedTo
2016-07-25 07:03:07 +00:00
}
ET3: {
argName: subject
maxLength: 72
submit: true
validate: @systemMethod:validateMessageSubject
}
}
submit: {
3: [
{
value: { subject: null }
action: @method:headerSubmit
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
}
1: {
mci: {
MT1: {
width: 79
argName: message
mode: edit
}
}
submit: {
*: [ { value: "message", action: "@method:editModeEscPressed" } ]
}
actionKeys: [
{
keys: [ "escape" ]
viewId: 1
}
]
},
2: {
TLTL: {
mci: {
TL1: {
width: 5
}
TL2: {
width: 4
}
}
}
}
3: {
HM: {
mci: {
HM1: {
// :TODO: clear
items: [ "save", "discard", "help" ]
}
}
submit: {
*: [
{
value: { 1: 0 }
action: @method:editModeMenuSave
}
{
value: { 1: 1 }
action: @systemMethod:prevMenu
}
{
value: { 1: 2 }
action: @method:editModeMenuHelp
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @method:editModeEscPressed
}
{
keys: [ "?" ]
action: @method:editModeMenuHelp
}
]
}
}
}
}
mailMenuInbox: {
2017-12-01 00:15:18 +00:00
module: msg_list
2018-01-27 04:41:53 +00:00
art: PRVMSGLIST
2016-07-25 07:03:07 +00:00
config: {
menuViewPost: messageAreaViewPost
messageAreaTag: private_mail
}
form: {
2018-07-06 00:39:35 +00:00
0: { // main list
2016-07-25 07:03:07 +00:00
mci: {
VM1: {
focus: true
submit: true
argName: message
}
}
submit: {
*: [
{
value: { message: null }
action: @method:selectMessage
}
]
}
actionKeys: [
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
2018-07-06 00:39:35 +00:00
{
keys: [ "delete", "d", "shift + d" ]
action: @method:deleteSelected
}
2016-07-25 07:03:07 +00:00
]
}
2018-07-06 00:39:35 +00:00
1: { // delete prompt form
submit: {
*: [
{
value: { promptValue: 0 }
action: @method:deleteMessageYes
}
{
value: { promptValue: 1 }
action: @method:deleteMessageNo
}
]
}
}
2016-07-25 07:03:07 +00:00
}
}
2017-02-12 21:03:29 +00:00
////////////////////////////////////////////////////////////////////////
2017-02-28 04:17:01 +00:00
// File Base
2017-02-12 21:03:29 +00:00
////////////////////////////////////////////////////////////////////////
2017-02-13 02:59:00 +00:00
fileBase: {
desc: File Base
2017-02-12 21:03:29 +00:00
art: FMENU
prompt: fileMenuCommand
2018-12-01 06:20:44 +00:00
config: {
interrupt: realtime
}
2017-02-12 21:03:29 +00:00
submit: [
{
2017-09-04 02:45:00 +00:00
value: { menuOption: "L" }
2017-02-12 21:03:29 +00:00
action: @menu:fileBaseListEntries
}
2017-09-04 02:45:00 +00:00
{
value: { menuOption: "B" }
action: @menu:fileBaseBrowseByAreaSelect
}
2017-02-12 21:03:29 +00:00
{
value: { menuOption: "F" }
action: @menu:fileAreaFilterEditor
}
{
value: { menuOption: "Q" }
action: @systemMethod:prevMenu
}
{
value: { menuOption: "G" }
action: @menu:fullLogoffSequence
}
{
value: { menuOption: "D" }
action: @menu:fileBaseDownloadManager
}
2018-01-15 02:40:40 +00:00
{
value: { menuOption: "W" }
action: @menu:fileBaseWebDownloadManager
}
2017-02-12 21:03:29 +00:00
{
value: { menuOption: "U" }
action: @menu:fileBaseUploadFiles
}
{
value: { menuOption: "S" }
action: @menu:fileBaseSearch
}
2018-01-15 00:09:23 +00:00
{
value: { menuOption: "P" }
action: @menu:fileBaseSetNewScanDate
}
2018-07-06 00:39:35 +00:00
{
value: { menuOption: "E" }
action: @menu:fileBaseExportListFilter
}
2017-02-12 21:03:29 +00:00
]
}
2018-07-06 00:39:35 +00:00
fileBaseExportListFilter: {
module: file_base_search
// :TODO: fixme:
art: FSEARCH
config: {
fileBaseListEntriesMenu: fileBaseExportList
}
form: {
0: {
mci: {
ET1: {
focus: true
argName: searchTerms
}
BT2: {
argName: search
text: search
submit: true
}
ET3: {
maxLength: 64
argName: tags
}
SM4: {
maxLength: 64
argName: areaIndex
}
SM5: {
items: [
"upload date",
"uploaded by",
"downloads",
"rating",
"estimated year",
"size",
"filename"
]
argName: sortByIndex
}
SM6: {
items: [
"decending",
"ascending"
]
argName: orderByIndex
}
BT7: {
argName: advancedSearch
text: advanced search
submit: true
}
}
submit: {
*: [
{
value: { search: null }
action: @method:search
}
{
value: { advancedSearch: null }
action: @method:search
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
}
}
}
fileBaseExportList: {
module: file_base_user_list_export
art: FBLISTEXP
config: {
2018-08-05 20:06:30 +00:00
pause: true
2018-07-06 00:39:35 +00:00
templates: {
entry: file_list_entry.asc
}
}
form: {
0: {
mci: {
TL1: { }
TL2: { }
}
}
}
}
fileBaseExportListNoResults: {
desc: Browsing Files
art: FBNORES
2018-08-05 20:06:30 +00:00
config: {
2018-07-06 00:39:35 +00:00
pause: true
menuFlags: [ "noHistory", "popParent" ]
}
}
2018-01-15 00:09:23 +00:00
fileBaseSetNewScanDate: {
module: set_newscan_date
desc: File Base
art: SETFNSDATE
config: {
target: file
scanDateFormat: YYYYMMDD
}
form: {
0: {
mci: {
ME1: {
focus: true
submit: true
argName: scanDate
maskPattern: "####/##/##"
}
}
submit: {
*: [
{
value: { scanDate: null }
action: @method:scanDateSubmit
}
]
}
actionKeys: [
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
]
}
}
}
2017-02-12 21:03:29 +00:00
fileBaseListEntries: {
2017-12-01 00:15:18 +00:00
module: file_area_list
2017-02-12 21:03:29 +00:00
desc: Browsing Files
config: {
art: {
browse: FBRWSE
details: FDETAIL
detailsGeneral: FDETGEN
detailsNfo: FDETNFO
detailsFileList: FDETLST
help: FBHELP
}
}
form: {
0: {
mci: {
MT1: {
mode: preview
}
HM2: {
focus: true
submit: true
argName: navSelect
items: [
"prev", "next", "details", "toggle queue", "rate", "change filter", "help", "quit"
]
focusItemIndex: 1
}
}
submit: {
*: [
{
value: { navSelect: 0 }
action: @method:prevFile
}
{
value: { navSelect: 1 }
action: @method:nextFile
}
{
value: { navSelect: 2 }
action: @method:viewDetails
}
{
value: { navSelect: 3 }
action: @method:toggleQueue
}
{
value: { navSelect: 4 }
action: @menu:fileBaseGetRatingForSelectedEntry
}
{
value: { navSelect: 5 }
action: @menu:fileAreaFilterEditor
}
{
value: { navSelect: 6 }
action: @method:displayHelp
}
{
value: { navSelect: 7 }
action: @systemMethod:prevMenu
}
]
}
actionKeys: [
{
keys: [ "w", "shift + w" ]
action: @method:showWebDownloadLink
}
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
{
keys: [ "t", "shift + t" ]
action: @method:toggleQueue
}
{
keys: [ "f", "shift + f" ]
action: @menu:fileAreaFilterEditor
}
{
keys: [ "v", "shift + v" ]
action: @method:viewDetails
}
{
keys: [ "r", "shift + r" ]
action: @menu:fileBaseGetRatingForSelectedEntry
}
{
keys: [ "?" ]
action: @method:displayHelp
}
]
}
1: {
mci: {
HM1: {
focus: true
submit: true
argName: navSelect
items: [
"general", "nfo/readme", "file listing"
]
}
}
actionKeys: [
{
keys: [ "escape", "q", "shift + q" ]
action: @method:detailsQuit
}
]
}
2: {
// details - general
mci: {}
}
3: {
// details - nfo/readme
mci: {
MT1: {
mode: preview
}
}
}
4: {
// details - file listing
mci: {
VM1: {
}
}
}
}
}
2017-09-04 02:45:00 +00:00
fileBaseBrowseByAreaSelect: {
desc: Browsing File Areas
2017-12-01 00:15:18 +00:00
module: file_base_area_select
2017-09-04 02:45:00 +00:00
art: FAREASEL
form: {
0: {
mci: {
VM1: {
focus: true
2018-01-28 20:02:24 +00:00
argName: areaTag
2017-09-04 02:45:00 +00:00
}
}
submit: {
*: [
{
2018-01-28 20:02:24 +00:00
value: { areaTag: null }
2017-09-04 02:45:00 +00:00
action: @method:selectArea
}
]
}
actionKeys: [
{
2018-07-06 00:39:35 +00:00
keys: [ "escape", "q", "shift + q" ]
2017-09-04 02:45:00 +00:00
action: @systemMethod:prevMenu
}
]
}
}
}
2017-02-12 21:03:29 +00:00
fileBaseGetRatingForSelectedEntry: {
desc: Rating a File
prompt: fileBaseRateEntryPrompt
2018-08-05 20:06:30 +00:00
config: {
2017-02-12 21:03:29 +00:00
cls: true
}
submit: [
// :TODO: handle esc/q
{
// pass data back to caller
value: { rating: null }
action: @systemMethod:prevMenu
}
]
}
fileBaseListEntriesNoResults: {
desc: Browsing Files
art: FBNORES
2018-08-05 20:06:30 +00:00
config: {
2017-02-12 21:03:29 +00:00
pause: true
2017-12-03 02:06:07 +00:00
menuFlags: [ "noHistory", "popParent" ]
2017-02-12 21:03:29 +00:00
}
}
fileBaseSearch: {
2017-12-01 00:15:18 +00:00
module: file_base_search
2017-02-12 21:03:29 +00:00
desc: Searching Files
art: FSEARCH
form: {
0: {
mci: {
ET1: {
focus: true
argName: searchTerms
}
BT2: {
argName: search
text: search
submit: true
}
ET3: {
maxLength: 64
argName: tags
}
SM4: {
maxLength: 64
argName: areaIndex
}
SM5: {
items: [
"upload date",
"uploaded by",
"downloads",
"rating",
"estimated year",
"size",
2017-09-15 02:54:35 +00:00
"filename",
2017-02-12 21:03:29 +00:00
]
argName: sortByIndex
}
SM6: {
items: [
"decending",
"ascending"
]
argName: orderByIndex
}
BT7: {
argName: advancedSearch
text: advanced search
submit: true
}
}
submit: {
*: [
{
value: { search: null }
action: @method:search
}
{
value: { advancedSearch: null }
action: @method:search
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
}
}
}
fileAreaFilterEditor: {
desc: File Filter Editor
2017-12-01 00:15:18 +00:00
module: file_area_filter_edit
2017-02-12 21:03:29 +00:00
art: FFILEDT
form: {
0: {
mci: {
ET1: {
argName: searchTerms
}
ET2: {
maxLength: 64
argName: tags
}
SM3: {
maxLength: 64
argName: areaIndex
}
SM4: {
items: [
"upload date",
"uploaded by",
"downloads",
"rating",
"estimated year",
"size",
]
argName: sortByIndex
}
SM5: {
items: [
"decending",
"ascending"
]
argName: orderByIndex
}
ET6: {
maxLength: 64
argName: name
validate: @systemMethod:validateNonEmpty
}
HM7: {
focus: true
items: [
"prev", "next", "make active", "save", "new", "delete"
]
argName: navSelect
focusItemIndex: 1
}
}
submit: {
*: [
{
value: { navSelect: 0 }
action: @method:prevFilter
}
{
value: { navSelect: 1 }
action: @method:nextFilter
}
{
value: { navSelect: 2 }
action: @method:makeFilterActive
}
{
value: { navSelect: 3 }
action: @method:saveFilter
}
{
value: { navSelect: 4 }
action: @method:newFilter
}
{
value: { navSelect: 5 }
action: @method:deleteFilter
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
}
}
}
fileBaseDownloadManager: {
desc: Download Manager
2017-12-01 00:15:18 +00:00
module: file_base_download_manager
2017-02-12 21:03:29 +00:00
config: {
art: {
queueManager: FDLMGR
/*
NYI
details: FDLDET
*/
}
emptyQueueMenu: fileBaseDownloadManagerEmptyQueue
}
form: {
0: {
mci: {
VM1: {
argName: queueItem
}
HM2: {
focus: true
items: [ "download all", "quit" ]
argName: navSelect
}
}
submit: {
*: [
{
value: { navSelect: 0 }
action: @method:downloadAll
}
{
value: { navSelect: 1 }
action: @systemMethod:prevMenu
}
]
}
actionKeys: [
{
keys: [ "a", "shift + a" ]
action: @method:downloadAll
}
{
keys: [ "delete", "r", "shift + r" ]
action: @method:removeItem
}
{
2017-09-29 03:34:58 +00:00
keys: [ "c", "shift + c" ]
action: @method:clearQueue
}
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
]
}
}
}
fileBaseWebDownloadManager: {
desc: Web D/L Manager
2017-12-01 00:15:18 +00:00
module: file_base_web_download_manager
2017-09-29 03:34:58 +00:00
config: {
art: {
queueManager: FWDLMGR
batchList: BATDLINF
}
emptyQueueMenu: fileBaseDownloadManagerEmptyQueue
}
form: {
0: {
mci: {
VM1: {
argName: queueItem
}
HM2: {
focus: true
items: [ "get batch link", "quit", "help" ]
argName: navSelect
}
}
submit: {
*: [
{
value: { navSelect: 0 }
action: @method:getBatchLink
}
{
value: { navSelect: 1 }
action: @systemMethod:prevMenu
}
]
}
actionKeys: [
{
keys: [ "b", "shift + b" ]
action: @method:getBatchLink
}
{
keys: [ "delete", "r", "shift + r" ]
action: @method:removeItem
}
{
2017-02-12 21:03:29 +00:00
keys: [ "c", "shift + c" ]
action: @method:clearQueue
}
{
keys: [ "escape", "q", "shift + q" ]
action: @systemMethod:prevMenu
}
]
}
}
}
fileBaseDownloadManagerEmptyQueue: {
desc: Empty Download Queue
art: FEMPTYQ
2018-08-05 20:06:30 +00:00
config: {
2017-02-12 21:03:29 +00:00
pause: true
2017-12-03 02:06:07 +00:00
menuFlags: [ "noHistory", "popParent" ]
2017-02-12 21:03:29 +00:00
}
}
fileTransferProtocolSelection: {
desc: Protocol selection
2017-12-01 00:15:18 +00:00
module: file_transfer_protocol_select
2017-02-12 21:03:29 +00:00
art: FPROSEL
form: {
0: {
mci: {
VM1: {
focus: true
argName: protocol
}
}
submit: {
*: [
{
value: { protocol: null }
action: @method:selectProtocol
}
]
}
actionKeys: [
{
keys: [ "escape" ]
action: @systemMethod:prevMenu
}
]
}
}
}
fileBaseUploadFiles: {
desc: Uploading
2017-12-01 00:15:18 +00:00
module: upload
2017-02-12 21:03:29 +00:00
config: {
art: {
options: ULOPTS
fileDetails: ULDETAIL
processing: ULCHECK
dupes: ULDUPES
}
}
form: {
// options
0: {
mci: {
SM1: {
argName: areaSelect
focus: true
}
TM2: {
argName: uploadType
items: [ "blind", "supply filename" ]
}
ET3: {
argName: fileName
maxLength: 255
validate: @method:validateNonBlindFileName
}
HM4: {
argName: navSelect
items: [ "continue", "cancel" ]
submit: true
}
}
submit: {
*: [
{
value: { navSelect: 0 }
action: @method:optionsNavContinue
}
{
value: { navSelect: 1 }
action: @systemMethod:prevMenu
}
]
}
"actionKeys" : [
{
"keys" : [ "escape" ],
action: @systemMethod:prevMenu
}
]
}
1: {
2018-06-26 00:10:43 +00:00
mci: { }
2017-02-12 21:03:29 +00:00
}
// file details entry
2: {
mci: {
MT1: {
argName: shortDesc
tabSwitchesView: true
focus: true
}
ET2: {
argName: tags
}
ME3: {
argName: estYear
maskPattern: "####"
}
BT4: {
argName: continue
text: continue
submit: true
}
}
submit: {
*: [
{
value: { continue: null }
action: @method:fileDetailsContinue
}
]
}
}
// dupes
3: {
mci: {
VM1: {
/*
Use 'dupeInfoFormat' to custom format:
areaDesc
areaName
areaTag
desc
descLong
fileId
fileName
fileSha256
storageTag
uploadTimestamp
*/
mode: preview
}
}
}
}
}
fileBaseNoUploadAreasAvail: {
desc: File Base
art: ULNOAREA
2018-08-05 20:06:30 +00:00
config: {
2017-02-12 21:03:29 +00:00
pause: true
2018-01-15 02:40:40 +00:00
menuFlags: [ "noHistory", "popParent" ]
2017-02-12 21:03:29 +00:00
}
}
sendFilesToUser: {
desc: Downloading
2017-12-01 00:15:18 +00:00
module: file_transfer
2017-02-12 21:03:29 +00:00
config: {
// defaults - generally use extraArgs
protocol: zmodem8kSexyz
direction: send
}
}
recvFilesFromUser: {
desc: Uploading
2017-12-01 00:15:18 +00:00
module: file_transfer
2017-02-12 21:03:29 +00:00
config: {
// defaults - generally use extraArgs
protocol: zmodem8kSexyz
direction: recv
}
}
2015-07-31 15:11:57 +00:00
////////////////////////////////////////////////////////////////////////
2015-10-28 02:21:58 +00:00
// Required entries
2015-07-31 15:11:57 +00:00
////////////////////////////////////////////////////////////////////////
2015-09-12 23:17:00 +00:00
idleLogoff: {
art: IDLELOG
next: @systemMethod:logoff
2015-10-28 02:21:58 +00:00
}
2015-07-31 15:11:57 +00:00
////////////////////////////////////////////////////////////////////////
// Demo Section
2015-10-28 02:21:58 +00:00
// :TODO: This entire section needs updated!!!
2015-07-31 15:11:57 +00:00
////////////////////////////////////////////////////////////////////////
2015-05-16 05:02:58 +00:00
"demoMain" : {
"art" : "demo_selection_vm.ans",
"form" : {
"0" : {
2015-07-22 05:52:20 +00:00
"VM" : {
2015-05-16 05:02:58 +00:00
"mci" : {
"VM1" : {
"items" : [
2016-06-27 07:29:17 +00:00
"Single Line Text Editing Views",
2015-05-16 05:02:58 +00:00
"Spinner & Toggle Views",
"Mask Edit Views",
2015-05-16 20:39:14 +00:00
"Multi Line Text Editor",
2015-05-16 05:02:58 +00:00
"Vertical Menu Views",
"Horizontal Menu Views",
"Art Display",
2015-08-26 05:17:09 +00:00
"Full Screen Editor"
2015-05-16 05:02:58 +00:00
],
"height" : 10,
"itemSpacing" : 1,
"justify" : "center",
"focusTextStyle" : "small i"
}
2015-04-10 04:49:56 +00:00
},
2015-05-16 05:02:58 +00:00
"submit" : {
"*" : [
{
"value" : { "1" : 0 },
"action" : "@menu:demoEditTextView"
},
{
"value" : { "1" : 1 },
"action" : "@menu:demoSpinAndToggleView"
},
{
"value" : { "1" : 2 },
"action" : "@menu:demoMaskEditView"
},
{
2015-05-16 20:39:14 +00:00
"value" : { "1" : 3 },
"action" : "@menu:demoMultiLineEditTextView"
},
2015-08-26 05:17:09 +00:00
{
"value" : { "1" : 4 },
"action" : "@menu:demoVerticalMenuView"
},
2015-07-01 04:45:27 +00:00
{
"value" : { "1" : 5 },
"action" : "@menu:demoHorizontalMenuView"
},
2015-05-16 20:39:14 +00:00
{
"value" : { "1" : 6 },
2015-05-16 05:02:58 +00:00
"action" : "@menu:demoArtDisplay"
2015-06-25 04:45:21 +00:00
},
{
"value" : { "1" : 7 },
2015-06-25 22:33:17 +00:00
"action" : "@menu:demoFullScreenEditor"
2015-05-16 05:02:58 +00:00
}
]
2015-04-07 04:29:45 +00:00
}
}
}
}
2015-04-10 04:49:56 +00:00
},
2015-05-16 05:02:58 +00:00
"demoEditTextView" : {
"art" : "demo_edit_text_view1.ans",
"form" : {
"0" : {
2015-07-22 05:52:20 +00:00
"BTETETETET" : {
2015-05-16 05:02:58 +00:00
"mci" : {
"ET1" : {
"width" : 20,
"maxLength" : 20
},
"ET2" : {
"width" : 20,
"maxLength" : 40,
"textOverflow" : "..."
2015-04-29 03:15:36 +00:00
},
2015-05-16 05:02:58 +00:00
"ET3" : {
"width" : 20,
"fillChar" : "-",
"styleSGR1" : "|00|36",
"maxLength" : 20
2015-05-03 23:35:55 +00:00
},
2015-05-16 05:02:58 +00:00
"ET4" : {
"width" : 20,
"maxLength" : 20,
"password" : true
2015-05-15 05:01:00 +00:00
},
2015-05-16 05:02:58 +00:00
"BT5" : {
"width" : 8,
2015-07-10 05:23:37 +00:00
"text" : "< Back"
2015-04-25 20:44:48 +00:00
}
2015-04-27 23:27:23 +00:00
},
2015-05-16 05:02:58 +00:00
"submit" : {
"*" : [
{
"value" : 5,
"action" : "@menu:demoMain"
}
]
2015-07-10 05:23:37 +00:00
},
"actionKeys" : [
{
"keys" : [ "escape" ],
"viewId" : 5
}
]
2015-04-29 03:15:36 +00:00
}
}
}
2015-05-16 05:02:58 +00:00
},
"demoSpinAndToggleView" : {
"art" : "demo_spin_and_toggle.ans",
"form" : {
"0" : {
2015-07-22 05:52:20 +00:00
"BTSMSMTM" : {
2015-05-16 05:02:58 +00:00
"mci" : {
"SM1" : {
"items" : [ "Henry Morgan", "François l'Ollonais", "Roche Braziliano", "Black Bart", "Blackbeard" ]
},
"SM2" : {
"items" : [ "Razor 1911", "DrinkOrDie", "TRSI" ]
},
"TM3" : {
"items" : [ "Yarly", "Nowaii" ],
"styleSGR1" : "|00|30|01",
2015-06-05 22:20:26 +00:00
"hotKeys" : { "Y" : 0, "N" : 1 }
2015-05-16 05:02:58 +00:00
},
"BT8" : {
2015-07-10 05:23:37 +00:00
"text" : "< Back"
2015-05-16 05:02:58 +00:00
}
2015-04-29 03:15:36 +00:00
},
2015-05-16 05:02:58 +00:00
"submit" : {
"*" : [
{
"value" : 8,
"action" : "@menu:demoMain"
}
]
2015-07-10 05:23:37 +00:00
},
"actionKeys" : [
{
"keys" : [ "escape" ],
"viewId" : 8
}
]
2015-04-27 23:27:23 +00:00
}
}
}
2015-05-16 05:02:58 +00:00
},
"demoMaskEditView" : {
"art" : "demo_mask_edit_text_view1.ans",
"form" : {
"0" : {
2015-07-22 05:52:20 +00:00
"BTMEME" : {
2015-05-16 05:02:58 +00:00
"mci" : {
"ME1" : {
"maskPattern" : "##/##/##",
"styleSGR1" : "|00|30|01",
2015-07-22 05:52:20 +00:00
//"styleSGR2" : "|00|45|01",
"styleSGR3" : "|00|30|35",
"fillChar" : "#"
2015-05-16 20:39:14 +00:00
},
"BT5" : {
2015-07-10 05:23:37 +00:00
"text" : "< Back"
2015-05-16 20:39:14 +00:00
}
2015-05-18 03:33:27 +00:00
},
"submit" : {
"*" : [
{
"value" : 5,
"action" : "@menu:demoMain"
}
]
2015-07-10 05:23:37 +00:00
},
"actionKeys" : [
{
"keys" : [ "escape" ],
"viewId" : 5
}
]
2015-05-16 20:39:14 +00:00
}
}
}
},
"demoMultiLineEditTextView" : {
"art" : "demo_multi_line_edit_text_view1.ans",
"form" : {
"0" : {
2015-07-22 05:52:20 +00:00
"BTMT" : {
2016-06-27 07:29:17 +00:00
"mci" : {
2015-05-16 20:39:14 +00:00
"MT1" : {
2015-06-20 21:15:37 +00:00
"width" : 70,
2015-05-18 03:33:27 +00:00
"height" : 17,
2015-07-22 05:52:20 +00:00
//"text" : "@art:demo_multi_line_edit_text_view_text.txt",
// "text" : "@systemMethod:textFromFile"
2015-09-11 05:09:45 +00:00
text: "Hints:\n\t* Insert / CTRL-V toggles overtype mode\n\t* CTRL-Y deletes the current line\n\t* Try Page Up / Page Down\n\t* Home goes to the start of line text\n\t* End goes to the end of a line\n\n\nTab handling:\n-------------------------------------------------\n\tA\tB\tC\tD\tE\tF\nA\tB\tC\tD\tE\tF\tG\tH\n\tA\tB\tC\tD\tE\tF\nA\tB\tC\tD\tE\tF\tG\tH\nA0\tBB\t1\tCCC\t2\tDDD\t3EEEE\nW\t\tX\t\tY\t\tZ\n\nAn excerpt from A Clockwork Orange:\n\"What sloochatted then, of course, was that my cellmates woke up and started joining in, tolchocking a bit wild in the near-dark, and the shoom seemed to wake up the whole tier, so that you could slooshy a lot of creeching and banging about with tin mugs on the wall, as though all the plennies in all the cells thought a big break was about to commence, O my brothers.\n",
2015-05-18 03:33:27 +00:00
"focus" : true
2015-05-16 20:39:14 +00:00
},
"BT5" : {
2015-07-10 05:23:37 +00:00
"text" : "< Back"
2015-05-16 05:02:58 +00:00
}
2015-05-18 03:33:27 +00:00
},
"submit" : {
"*" : [
{
"value" : 5,
"action" : "@menu:demoMain"
}
]
2015-07-10 05:23:37 +00:00
},
"actionKeys" : [
{
"keys" : [ "escape" ],
"viewId" : 5
}
]
2015-05-15 05:01:00 +00:00
}
}
}
2015-05-16 05:02:58 +00:00
},
2015-07-01 04:45:27 +00:00
"demoHorizontalMenuView" : {
"art" : "demo_horizontal_menu_view1.ans",
"form" : {
"0" : {
2015-07-22 05:52:20 +00:00
"BTHMHM" : {
2015-07-01 04:45:27 +00:00
"mci" : {
"HM1" : {
2015-07-02 02:18:34 +00:00
"items" : [ "One", "Two", "Three" ],
"hotKeys" : { "1" : 0, "2" : 1, "3" : 2 }
},
"HM2" : {
"items" : [ "Uno", "Dos", "Tres" ],
"hotKeys" : { "U" : 0, "D" : 1, "T" : 2 }
2015-07-01 04:45:27 +00:00
},
"BT5" : {
2015-07-10 05:23:37 +00:00
"text" : "< Back"
2015-07-01 04:45:27 +00:00
}
2015-07-02 02:18:34 +00:00
},
"submit" : {
"*" : [
{
"value" : 5,
"action" : "@menu:demoMain"
}
]
2015-07-10 05:23:37 +00:00
},
"actionKeys" : [
{
"keys" : [ "escape" ],
"viewId" : 5
}
]
2015-07-01 04:45:27 +00:00
}
}
}
},
2015-08-26 05:17:09 +00:00
"demoVerticalMenuView" : {
"art" : "demo_vertical_menu_view1.ans",
"form" : {
"0" : {
"BTVM" : {
"mci" : {
"VM1" : {
"items" : [
"|33Oblivion/2",
"|33iNiQUiTY",
"|33ViSiON/X"
],
"focusItems" : [
"|33Oblivion|01/|00|332",
"|01|33i|00|33N|01i|00|33QU|01i|00|33TY",
"|33ViSiON/X"
]
//
// :TODO: how to do the following:
// 1) Supply a view a string for a standard vs focused item
// "items" : [...], "focusItems" : [ ... ] ?
// "draw" : "@method:drawItemX", then items: [...]
},
"BT5" : {
"text" : "< Back"
}
},
"submit" : {
"*" : [
{
"value" : 5,
"action" : "@menu:demoMain"
}
]
},
"actionKeys" : [
{
"keys" : [ "escape" ],
"viewId" : 5
}
]
}
}
}
},
2015-05-16 05:02:58 +00:00
"demoArtDisplay" : {
"art" : "demo_selection_vm.ans",
"form" : {
"0" : {
2015-07-22 05:52:20 +00:00
"VM" : {
2015-05-16 05:02:58 +00:00
"mci" : {
"VM1" : {
"items" : [
"Defaults - DOS ANSI",
2015-07-20 03:49:48 +00:00
"bw_mindgames.ans - DOS",
"test.ans - DOS",
2015-05-16 05:02:58 +00:00
"Defaults - Amiga",
"Pause at Term Height"
],
// :TODO: justify not working??
"focusTextStyle" : "small i"
}
},
"submit" : {
"*" : [
{
"value" : { "1" : 0 },
"action" : "@menu:demoDefaultsDosAnsi"
2015-07-20 03:49:48 +00:00
},
{
"value" : { "1" : 1 },
"action" : "@menu:demoDefaultsDosAnsi_bw_mindgames"
},
{
"value" : { "1" : 2 },
"action" : "@menu:demoDefaultsDosAnsi_test"
}
2015-05-16 05:02:58 +00:00
]
2015-05-03 23:35:55 +00:00
}
}
}
}
2015-05-16 05:02:58 +00:00
},
"demoDefaultsDosAnsi" : {
2015-09-09 04:08:45 +00:00
"art" : "DM-ENIG2.ANS"
2015-07-20 03:49:48 +00:00
},
"demoDefaultsDosAnsi_bw_mindgames" : {
2015-09-09 04:08:45 +00:00
"art" : "bw_mindgames.ans"
2015-07-20 03:49:48 +00:00
},
"demoDefaultsDosAnsi_test" : {
2015-09-09 04:08:45 +00:00
"art" : "test.ans"
2015-06-25 04:45:21 +00:00
},
2015-06-25 22:33:17 +00:00
"demoFullScreenEditor" : {
2017-12-01 00:15:18 +00:00
"module" : "fse",
2015-06-26 04:34:33 +00:00
"config" : {
2015-07-04 18:02:37 +00:00
"editorType" : "netMail",
"art" : {
"header" : "demo_fse_netmail_header.ans",
"body" : "demo_fse_netmail_body.ans",
2015-09-04 20:28:05 +00:00
"footerEditor" : "demo_fse_netmail_footer_edit.ans",
"footerEditorMenu" : "demo_fse_netmail_footer_edit_menu.ans",
2015-07-11 22:39:42 +00:00
"footerView" : "demo_fse_netmail_footer_view.ans",
"help" : "demo_fse_netmail_help.ans"
2015-07-04 18:02:37 +00:00
}
2015-06-27 21:32:29 +00:00
},
2015-07-04 18:02:37 +00:00
"form" : {
"0" : {
2015-07-22 05:52:20 +00:00
"ETETET" : {
2015-07-04 18:02:37 +00:00
"mci" : {
"ET1" : {
// :TODO: from/to may be set by args
// :TODO: focus may change dep on view vs edit
"width" : 36,
2015-07-13 04:56:33 +00:00
"focus" : true,
"argName" : "to"
2015-07-04 18:02:37 +00:00
},
"ET2" : {
2015-07-13 04:56:33 +00:00
"width" : 36,
"argName" : "from"
2015-07-04 18:02:37 +00:00
},
"ET3" : {
"width" : 65,
"maxLength" : 72,
2015-07-13 04:56:33 +00:00
"submit" : [ "enter" ],
"argName" : "subject"
2015-07-04 18:02:37 +00:00
}
},
"submit" : {
"3" : [
{
2015-07-13 19:41:21 +00:00
"value" : { "subject" : null },
2015-07-04 18:02:37 +00:00
"action" : "@method:headerSubmit"
}
]
}
}
},
"1" : {
2015-07-22 05:52:20 +00:00
"MT" : {
2015-07-04 18:02:37 +00:00
"mci" : {
"MT1" : {
"width" : 79,
2015-07-06 01:05:55 +00:00
"height" : 17,
2015-07-13 04:56:33 +00:00
"text" : "", // :TODO: should not be req.
"argName" : "message"
2015-07-04 18:02:37 +00:00
}
},
"submit" : {
"*" : [
{
2015-07-13 19:41:21 +00:00
"value" : "message",
2015-07-09 04:49:22 +00:00
"action" : "@method:editModeEscPressed"
2015-07-04 18:02:37 +00:00
}
]
2015-07-10 05:23:37 +00:00
},
"actionKeys" : [
{
"keys" : [ "escape" ],
"viewId" : 1
}
]
2015-07-04 18:02:37 +00:00
}
2015-07-06 01:05:55 +00:00
},
"2" : {
2015-07-22 05:52:20 +00:00
"TLTL" : {
2015-07-06 01:05:55 +00:00
"mci" : {
"TL1" : {
"width" : 5
},
"TL2" : {
"width" : 4
}
}
}
2015-07-09 04:07:25 +00:00
},
"3" : {
2015-07-22 05:52:20 +00:00
"HM" : {
2015-07-09 04:07:25 +00:00
"mci" : {
"HM1" : {
2015-07-12 06:32:31 +00:00
// :TODO: Continue, Save, Discard, Clear, Quote, Help
"items" : [ "Save", "Discard", "Quote", "Help" ]
2015-07-09 04:07:25 +00:00
}
2015-07-09 04:49:22 +00:00
},
"submit" : {
"*" : [
{
2015-07-09 23:06:09 +00:00
"value" : { "1" : 0 },
2015-07-12 06:32:31 +00:00
"action" : "@method:editModeMenuSave"
2015-07-09 04:49:22 +00:00
},
2015-07-10 05:23:37 +00:00
{
"value" : { "1" : 1 },
2015-07-12 02:12:07 +00:00
"action" : "@menu:demoMain"
2015-07-10 05:23:37 +00:00
},
{
"value" : { "1" : 2 },
2015-07-12 06:32:31 +00:00
"action" : "@method:editModeMenuQuote"
2015-07-10 05:23:37 +00:00
},
{
"value" : { "1" : 3 },
2015-07-12 02:12:07 +00:00
"action" : "@method:editModeMenuHelp"
2015-07-10 05:23:37 +00:00
},
2015-07-09 04:49:22 +00:00
{
"value" : 1,
"action" : "@method:editModeEscPressed"
}
]
2015-07-10 05:23:37 +00:00
},
"actionKeys" : [ // :TODO: Need better name
{
"keys" : [ "escape" ],
"action" : "@method:editModeEscPressed"
}
]
2015-04-27 02:46:16 +00:00
}
2015-04-25 20:44:48 +00:00
}
}
2016-06-27 07:29:17 +00:00
}
2015-03-24 05:12:19 +00:00
}
2016-06-27 07:29:17 +00:00
}