Skip to content
Snippets Groups Projects
Commit 9aaaef9a authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Display a different prompt for sysops (that includes the [D]elete option)

This addresses the gitlab issue #130.

Also, prompt for confirmation when [D]eleting the file.

Also, allow modopts.ini customization of this script via keys
in the new (optional) [automsg] section:

prompt (defaults to text.dat AutoMsg)
sysop_prompt (defaults to hard-coded string)
intro (defaults to hard-coded string)
header_fmt (defaults to text.dat AutoMsgBy)
user_fmt (defaults to hard-coded string)
line_fmt (defaults to hard-coded string)
max_line_len (defaults to 76)
parent 9d359582
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #2760 passed
// $Id: automsg.js,v 1.3 2020/04/19 03:15:35 rswindell Exp $ // Auto-message (ala WWIV)
// vi: tabstop=4
// modopts.ini [automsg] options:
// prompt
// sysop_prompt
// intro
// header_fmt
// user_fmt
// line_fmt
// max_line_len
"use strict"; "use strict";
...@@ -7,13 +15,23 @@ require("text.js", 'AutoMsg'); ...@@ -7,13 +15,23 @@ require("text.js", 'AutoMsg');
require("userdefs.js", 'UFLAG_W'); require("userdefs.js", 'UFLAG_W');
require("sbbsdefs.js", 'P_NOABORT'); require("sbbsdefs.js", 'P_NOABORT');
var options = load('modopts.js', "automsg");
if(!options)
options = {};
if(!options.max_line_len)
options.max_line_len = 76;
function automsg() function automsg()
{ {
const quote_fmt=" > %.*s\r\n"; const fmt = options.line_fmt || " > %.79s\r\n";
var automsg = system.data_dir + "msgs/auto.msg"; var automsg = system.data_dir + "msgs/auto.msg";
while(bbs.online && !js.termiated && !console.aborted) { while(bbs.online && !js.termiated && !console.aborted) {
bbs.nodesync(); bbs.nodesync();
console.mnemonics(bbs.text(AutoMsg)); if(user.is_sysop)
console.mnemonics(options.sysop_prompt
|| "\r\nAuto Message - ~Read, ~Write, ~Delete or ~Quit: ");
else
console.mnemonics(options.prompt || bbs.text(AutoMsg));
switch(console.getkeys("RWQD",0)) { switch(console.getkeys("RWQD",0)) {
case 'R': case 'R':
console.printfile(automsg,P_NOABORT|P_NOATCODES|P_WORDWRAP|P_NOERROR); console.printfile(automsg,P_NOABORT|P_NOATCODES|P_WORDWRAP|P_NOERROR);
...@@ -25,17 +43,17 @@ function automsg() ...@@ -25,17 +43,17 @@ function automsg()
} }
bbs.action=NODE_AMSG; bbs.action=NODE_AMSG;
bbs.nodesync(); bbs.nodesync();
console.print("\r\nMaximum of 3 lines:\r\n"); console.print(options.intro || "\r\nMaximum of 3 lines:\r\n");
var str = console.getstr(str, 76, K_WRAP|K_MSG); var str = console.getstr(str, options.max_line_len, K_WRAP|K_MSG);
if(!str) if(!str)
break; break;
var buf = format(quote_fmt, 79, str); var buf = format(fmt, str);
str = console.getstr(str, 76, K_WRAP|K_MSG); str = console.getstr(str, options.max_line_len, K_WRAP|K_MSG);
if(str) { if(str) {
buf += format(quote_fmt, 79, str); buf += format(fmt, str);
str = console.getstr(str, 76, K_MSG); str = console.getstr(str, options.max_line_len, K_MSG);
if(str) { if(str) {
buf += format(quote_fmt, 79, str); buf += format(fmt, str);
} }
} }
if(console.yesno(bbs.text(OK))) { if(console.yesno(bbs.text(OK))) {
...@@ -49,17 +67,17 @@ function automsg() ...@@ -49,17 +67,17 @@ function automsg()
alert("Error " + file.error + " opening " + file.name); alert("Error " + file.error + " opening " + file.name);
return; return;
} }
var tmp = format("%s #%d", user.alias, user.number); var tmp = format(options.user_fmt || "%s #%d", user.alias, user.number);
if(anon) if(anon)
tmp = bbs.text(Anonymous); tmp = bbs.text(Anonymous);
str = format(bbs.text(AutoMsgBy), tmp, system.timestr()); str = format(options.header_fmt || bbs.text(AutoMsgBy), tmp, system.timestr());
file.write(str); file.write(str);
file.write(buf); file.write(buf);
file.close(); file.close();
} }
break; break;
case 'D': case 'D':
if(user.is_sysop) if(user.is_sysop && !console.noyes(format(bbs.text(DeleteTextFileQ), automsg)))
file_remove(automsg); file_remove(automsg);
break; break;
case 'Q': case 'Q':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment