Commit 9aaaef9a authored by Rob Swindell's avatar Rob Swindell 💬
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
Pipeline #2760 passed with stage
in 9 minutes and 16 seconds
// $Id: automsg.js,v 1.3 2020/04/19 03:15:35 rswindell Exp $
// vi: tabstop=4
// Auto-message (ala WWIV)
// modopts.ini [automsg] options:
// prompt
// sysop_prompt
// intro
// header_fmt
// user_fmt
// line_fmt
// max_line_len
"use strict";
......@@ -7,13 +15,23 @@ require("text.js", 'AutoMsg');
require("userdefs.js", 'UFLAG_W');
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()
{
const quote_fmt=" > %.*s\r\n";
const fmt = options.line_fmt || " > %.79s\r\n";
var automsg = system.data_dir + "msgs/auto.msg";
while(bbs.online && !js.termiated && !console.aborted) {
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)) {
case 'R':
console.printfile(automsg,P_NOABORT|P_NOATCODES|P_WORDWRAP|P_NOERROR);
......@@ -25,17 +43,17 @@ function automsg()
}
bbs.action=NODE_AMSG;
bbs.nodesync();
console.print("\r\nMaximum of 3 lines:\r\n");
var str = console.getstr(str, 76, K_WRAP|K_MSG);
console.print(options.intro || "\r\nMaximum of 3 lines:\r\n");
var str = console.getstr(str, options.max_line_len, K_WRAP|K_MSG);
if(!str)
break;
var buf = format(quote_fmt, 79, str);
str = console.getstr(str, 76, K_WRAP|K_MSG);
var buf = format(fmt, str);
str = console.getstr(str, options.max_line_len, K_WRAP|K_MSG);
if(str) {
buf += format(quote_fmt, 79, str);
str = console.getstr(str, 76, K_MSG);
buf += format(fmt, str);
str = console.getstr(str, options.max_line_len, K_MSG);
if(str) {
buf += format(quote_fmt, 79, str);
buf += format(fmt, str);
}
}
if(console.yesno(bbs.text(OK))) {
......@@ -49,17 +67,17 @@ function automsg()
alert("Error " + file.error + " opening " + file.name);
return;
}
var tmp = format("%s #%d", user.alias, user.number);
var tmp = format(options.user_fmt || "%s #%d", user.alias, user.number);
if(anon)
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(buf);
file.close();
}
break;
case 'D':
if(user.is_sysop)
if(user.is_sysop && !console.noyes(format(bbs.text(DeleteTextFileQ), automsg)))
file_remove(automsg);
break;
case 'Q':
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment