v0.9.59
- code cleanup and refactoring - implement max post size on pc services - add box account transfer system - create directory indexer for pc services - fix catchall for pc services - pc services not respects `disabled: true` if sharing the same port - new wtv-tricks:/info from WebTV Redialed - Added missing Pagebuilder themes - Fixed various PageBuilder bugs, pages should work correctly (republish your page if needed) - various security and bug fixes
This commit is contained in:
@@ -46,9 +46,17 @@ function shutdown(signal = 'SIGTERM') {
|
||||
};
|
||||
}
|
||||
|
||||
function getServiceEnabled(service) {
|
||||
if (minisrv_config.services[service]) {
|
||||
if (minisrv_config.services[service].disabled) return false;
|
||||
else return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function getServiceByPort(port) {
|
||||
var service_name = null;
|
||||
Object.keys(minisrv_config.services).forEach(function(k) {
|
||||
Object.keys(minisrv_config.services).forEach(function (k) {
|
||||
if (service_name) return;
|
||||
if (minisrv_config.services[k].port) {
|
||||
if (port == parseInt(minisrv_config.services[k].port))
|
||||
@@ -58,6 +66,18 @@ function getServiceByPort(port) {
|
||||
return service_name;
|
||||
}
|
||||
|
||||
function getServiceByVHost(vhost) {
|
||||
var service_name = null;
|
||||
Object.keys(minisrv_config.services).forEach(function (k) {
|
||||
if (service_name) return;
|
||||
if (minisrv_config.services[k].vhost) {
|
||||
if (vhost.toLowerCase() == minisrv_config.services[k].vhost.toLowerCase())
|
||||
service_name = k;
|
||||
}
|
||||
})
|
||||
return service_name;
|
||||
}
|
||||
|
||||
function getPortByService(service) {
|
||||
if (minisrv_config.services[service]) return minisrv_config.services[service].port;
|
||||
else return null;
|
||||
@@ -211,6 +231,7 @@ var runScriptInVM = function (script_data, user_contextObj = {}, privileged = fa
|
||||
// node core variables and functions
|
||||
"console": console, // needed for per-script debugging
|
||||
"__dirname": __dirname, // needed by services such as wtv-flashrom and wtv-disk
|
||||
"__filename": (filename) ? filename : null, // path to the script file
|
||||
|
||||
// Our modules
|
||||
"wtvmime": wtvmime,
|
||||
@@ -241,7 +262,7 @@ var runScriptInVM = function (script_data, user_contextObj = {}, privileged = fa
|
||||
"service_deps": service_deps,
|
||||
"ssid_sessions": ssid_sessions,
|
||||
"moveArrayKey": moveArrayKey,
|
||||
"cwd": __dirname, // current working directory
|
||||
"cwd": (filename) ? path.dirname(filename) : __dirname, // current working directory
|
||||
|
||||
// Our prototype overrides
|
||||
"Buffer": Buffer,
|
||||
@@ -483,6 +504,7 @@ async function processPath(socket, service_vault_file_path, request_headers = ne
|
||||
|
||||
if (pc_services) {
|
||||
var pc_service_name = getServiceByVaultDir(service_name)
|
||||
contextObj.pc_service_name = pc_service_name;
|
||||
if (minisrv_config.services[pc_service_name].service_vaults) {
|
||||
vaults_to_scan = vaults_to_scan.concat(minisrv_config.services[pc_service_name].service_vaults);
|
||||
}
|
||||
@@ -744,7 +766,7 @@ async function processPath(socket, service_vault_file_path, request_headers = ne
|
||||
}
|
||||
} else {
|
||||
// look for a catchall in the current path and all parent paths up until the service root
|
||||
var service_config = minisrv_config.services[service_name] || {};
|
||||
var service_config = ((pc_services) ? minisrv_config.services[pc_service_name] : minisrv_config.services[service_name]) || {};
|
||||
if (minisrv_config.config.catchall_file_name || service_config['catchall_file_name']) {
|
||||
var minisrv_catchall_file_name = service_config['catchall_file_name'] || minisrv_config.config.catchall_file_name || null;
|
||||
if (minisrv_catchall_file_name) {
|
||||
@@ -1057,7 +1079,9 @@ minisrv-no-mail-count: true`;
|
||||
if ((shortURL.indexOf(":/ROMCache/") != -1 || shortURL.indexOf("://ROMCache/") != -1) && minisrv_config.config.enable_shared_romcache) {
|
||||
shared_romcache = wtvshared.fixPathSlashes(minisrv_config.config.SharedROMCache + path.sep + shortURL.split(':/')[1]);
|
||||
}
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Incoming headers on socket ID", socket.id, (await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers)))));
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Incoming", (pc_services) ? "HTTP" : "WTVP", "headers on", (pc_services) ? "HTTP" : "WTVP", "socket ID", socket.id, await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers))));
|
||||
else debug(" * Incoming", (pc_services) ? "HTTP" : "WTVP", "headers on", (pc_services) ? "HTTP" : "WTVP", "socket ID", socket.id, await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers))));
|
||||
|
||||
socket_sessions[socket.id].request_headers = request_headers;
|
||||
processPath(socket, urlToPath, request_headers, service_name, shared_romcache, pc_services);
|
||||
} else if (shortURL.indexOf('http://') >= 0 || shortURL.indexOf('https://') >= 0 || (use_external_proxy == true && shortURL.indexOf(service_name + "://") >= 0) && !pc_services) {
|
||||
@@ -1078,16 +1102,20 @@ minisrv-no-mail-count: true`;
|
||||
} else {
|
||||
if (request_headers.request.indexOf("HTTP/1.0") > 0) {
|
||||
// webtv in HTTP/1.0 mode, try to kick it back to WTVP
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Incoming headers (HTTP/1.0) on socket ID", socket.id, (await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers)))));
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Incoming HTTP/1.0 headers on WTVP socket ID", socket.id, await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers))));
|
||||
else debug(" * Incoming HTTP/1.0 headers on WTVP socket ID", socket.id, await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers))));
|
||||
|
||||
var errpage = wtvshared.doErrorPage(500, null, null, false, true);
|
||||
headers = errpage[0];
|
||||
data = ''
|
||||
socket_sessions[socket.id].close_me = true;
|
||||
sendToClient(socket, headers, data);
|
||||
} else {
|
||||
// error reading headers (no request_url provided)
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Incoming headers (INVALID) on socket ID", socket.id, (await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers)))));
|
||||
var errpage = wtvshared.doErrorPage(400, null, null, false, true);
|
||||
// error reading headers (no request_url provided, or PC on WTVP port)
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Incoming Invalid headers on WTVP socket ID", socket.id, await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers))));
|
||||
else debug(" * Incoming Invalid headers on WTVP socket ID", socket.id, await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers))));
|
||||
|
||||
var errpage = wtvshared.doErrorPage(500, null, null, true, false);
|
||||
headers = errpage[0];
|
||||
data = ''
|
||||
socket_sessions[socket.id].close_me = true;
|
||||
@@ -1179,6 +1207,8 @@ async function doHTTPProxy(socket, request_headers) {
|
||||
|
||||
var request_type = request_headers.request_url.substring(0, idx);
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(request_type.toUpperCase() + " Proxy: Client Request Headers on socket ID", socket.id, (await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers)))));
|
||||
else debug(request_type.toUpperCase() + " Proxy: Client Request Headers on socket ID", socket.id, (await wtvshared.decodePostData(await wtvshared.filterRequestLog(await wtvshared.filterSSID(request_headers)))));
|
||||
|
||||
switch (request_type) {
|
||||
case "https":
|
||||
var proxy_agent = https;
|
||||
@@ -1336,9 +1366,10 @@ function headerStringToObj(headers, response = false) {
|
||||
if (/^SECURE ON/.test(d) && !response) {
|
||||
headers_obj.secure = true;
|
||||
} else if (/^([0-9]{3}) $/.test(d.substring(0, 4)) && response && !headers_obj.Status) {
|
||||
headers_obj.Status = d.replace("\r", "");
|
||||
d.s
|
||||
headers_obj.Status = d.trim("\r");
|
||||
} else if (/^(GET |PUT |POST)$/.test(d.substring(0, 4)) && !response) {
|
||||
headers_obj.request = d.replace("\r", "");
|
||||
headers_obj.request = d.trim("\r");
|
||||
var request_url = d.split(' ');
|
||||
if (request_url.length > 2) {
|
||||
request_url.shift();
|
||||
@@ -1350,7 +1381,7 @@ function headerStringToObj(headers, response = false) {
|
||||
} else {
|
||||
request_url = request_url[1];
|
||||
}
|
||||
headers_obj.request_url = decodeURI(request_url).replace("\r", "");
|
||||
headers_obj.request_url = decodeURI(request_url).trim("\r");
|
||||
} else if (d.indexOf(":") > 0) {
|
||||
var d_split = d.split(':');
|
||||
var header_name = d_split[0];
|
||||
@@ -1360,7 +1391,7 @@ function headerStringToObj(headers, response = false) {
|
||||
}
|
||||
d_split.shift();
|
||||
d = d_split.join(':');
|
||||
headers_obj[header_name] = (d).replace("\r", "");
|
||||
headers_obj[header_name] = (d).trim("\r");
|
||||
if (headers_obj[header_name].substring(0, 1) == " ") {
|
||||
headers_obj[header_name] = headers_obj[header_name].substring(1);
|
||||
}
|
||||
@@ -1581,7 +1612,7 @@ async function sendToClient(socket, headers_obj, data = null) {
|
||||
} else {
|
||||
// delete if webtv
|
||||
if (socket.ssid) delete headers_obj[xpower];
|
||||
else {
|
||||
if (socket.service_name) {
|
||||
if (minisrv_config.services[socket.service_name].hide_minisrv_version) {
|
||||
// Don't report version
|
||||
if (!socket.ssid) headers_obj[xpower] = headers_obj[xpower] + "; NodeJS; minisrv";
|
||||
@@ -1597,6 +1628,8 @@ async function sendToClient(socket, headers_obj, data = null) {
|
||||
if (!socket.res) {
|
||||
// header object to string
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Outgoing headers on socket ID", socket.id, headers_obj);
|
||||
else debug(" * Outgoing headers on socket ID", socket.id, headers_obj);
|
||||
|
||||
Object.keys(headers_obj).forEach(function (k) {
|
||||
if (k == "Status") {
|
||||
headers += headers_obj[k] + eol;
|
||||
@@ -1624,12 +1657,16 @@ async function sendToClient(socket, headers_obj, data = null) {
|
||||
}
|
||||
});
|
||||
|
||||
console.log(headers_obj);
|
||||
|
||||
// send to client
|
||||
if (socket.res) {
|
||||
var resCode = parseInt(headers_obj.Status.substr(0, 3));
|
||||
socket.res.writeHead(resCode, headers_obj);
|
||||
socket.res.end(data);
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Outgoing PC headers on " + socket.service_name + " socket ID", socket.id, headers_obj);
|
||||
else debug(" * Outgoing PC headers on " + socket.service_name + " socket ID", socket.id, headers_obj);
|
||||
|
||||
if (minisrv_config.config.debug_flags.quiet) console.debug(" * Sent response " + headers_obj.Status + " to PC client (Content-Type:", headers_obj['Content-type'], "~", headers_obj['Content-length'], "bytes)");
|
||||
} else {
|
||||
var toClient = null;
|
||||
@@ -2454,23 +2491,36 @@ pc_bind_ports.every(function (v) {
|
||||
server.get('*', (req, res) => {
|
||||
var ssl = (req.socket.ssl) ? true : false;
|
||||
var service_name = getServiceByPort(v);
|
||||
var request_headers = {};
|
||||
|
||||
request_headers['request'] = "GET " + req.originalUrl + " HTTP/1.1";
|
||||
request_headers.request_url = req.originalUrl;
|
||||
request_headers.raw_headers = "Request: " + request_headers['request'] + "\r\n";
|
||||
Object.keys(req.headers).forEach(function (k) {
|
||||
request_headers[k] = req.headers[k];
|
||||
request_headers.raw_headers += k + ": " + req.headers[k] + "\r\n";
|
||||
});
|
||||
request_headers.query = req.query;
|
||||
|
||||
var host_name = (request_headers['host']) ? request_headers['host'] : null;
|
||||
|
||||
if (host_name) {
|
||||
if (host_name.indexOf(":") != -1) host_name = host_name.substring(0, host_name.indexOf(":"));
|
||||
debug(host_name)
|
||||
service_name = (getServiceByVHost(host_name)) ? getServiceByVHost(host_name) : service_name
|
||||
}
|
||||
|
||||
req.socket.minisrv_pc_mode = true;
|
||||
req.socket.res = res;
|
||||
req.socket.service_name = service_name;
|
||||
req.socket.id = parseInt(crc16('CCITT-FALSE', Buffer.from(String(req.socket.remoteAddress) + String(req.socket.remotePort), "utf8")).toString(16), 16);
|
||||
socket_sessions[req.socket.id] = [];
|
||||
|
||||
var request_headers = {};
|
||||
request_headers['request'] = "GET " + req.originalUrl + " HTTP/1.1";
|
||||
request_headers.request_url = req.originalUrl;
|
||||
request_headers.raw_headers = "Request: "+request_headers['request']+"\r\n";
|
||||
Object.keys(req.headers).forEach(function (k) {
|
||||
request_headers[k] = req.headers[k];
|
||||
request_headers.raw_headers += k+": "+req.headers[k] + "\r\n";
|
||||
});
|
||||
request_headers.query = req.query;
|
||||
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.log(" * Incoming " + ((ssl) ? "HTTPS" : "HTTP") + " PC GET Headers on", service_name, "socket ID", req.socket.id, wtvshared.filterRequestLog(request_headers));
|
||||
if (getServiceEnabled(service_name)) {
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Incoming " + ((ssl) ? "HTTPS" : "HTTP") + " PC GET Headers on", service_name, "socket ID", req.socket.id, wtvshared.filterRequestLog(request_headers));
|
||||
else debug(" * Incoming " + ((ssl) ? "HTTPS" : "HTTP") + " PC GET Headers on", service_name, "socket ID", req.socket.id, wtvshared.filterRequestLog(request_headers));
|
||||
|
||||
if (!ssl && minisrv_config.services[service_name].force_https && minisrv_config.services[service_name].https_cert) {
|
||||
var headers = `302 Moved
|
||||
Location: https://${(minisrv_config.services[service_name].https_cert.domain) ? minisrv_config.services[service_name].https_cert.domain : minisrv_config.services[service_name].host}:${minisrv_config.services[service_name].port}${req.originalUrl}
|
||||
@@ -2479,8 +2529,13 @@ Content-type: text/html`;
|
||||
} else {
|
||||
processURL(req.socket, request_headers, true)
|
||||
}
|
||||
} else {
|
||||
var errpage = wtvshared.doErrorPage(404, "Service Not Found");
|
||||
sendToClient(req.socket, errpage[0], errpage[1]);
|
||||
}
|
||||
})
|
||||
server.post('*', (req, res) => {
|
||||
var errpage = null;
|
||||
var ssl = (req.socket.ssl) ? true : false;
|
||||
var service_name = getServiceByPort(v);
|
||||
req.socket.minisrv_pc_mode = true;
|
||||
@@ -2498,31 +2553,52 @@ Content-type: text/html`;
|
||||
request_headers.raw_headers += k+": "+req.headers[k] + "\r\n";
|
||||
});
|
||||
request_headers.query = req.query;
|
||||
|
||||
|
||||
var host_name = (request_headers['host']) ? request_headers['host'] : null;
|
||||
|
||||
if (host_name) {
|
||||
if (host_name.indexOf(":") != -1) host_name = host_name.substring(0, host_name.indexOf(":"));
|
||||
debug(host_name)
|
||||
service_name = (getServiceByVHost(host_name)) ? getServiceByVHost(host_name) : service_name
|
||||
}
|
||||
|
||||
if (getServiceEnabled(service_name)) {
|
||||
if (req.body) {
|
||||
if (typeof(req.body) == "string") {
|
||||
if (typeof (req.body) == "string") {
|
||||
request_headers.post_data = req.body;
|
||||
} else if (req.body.length) {
|
||||
if (req.body.length > (minisrv_config.config.max_post_length * 1024 * 1024)) {
|
||||
errpage = wtvshared.doErrorPage("400", "POST size too large");
|
||||
} else {
|
||||
var data = "";
|
||||
for (var i=0; i<req.body.length; i++) {
|
||||
for (var i = 0; i < req.body.length; i++) {
|
||||
data += String.fromCharCode(req.body[i]);
|
||||
}
|
||||
request_headers.post_data = data;
|
||||
} else {
|
||||
request_headers.post_data = "";
|
||||
}
|
||||
} else {
|
||||
request_headers.post_data = "";
|
||||
}
|
||||
}
|
||||
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.debug(" * Incoming " + ((ssl) ? "HTTPS" : "HTTP") + " PC POST Headers on", service_name, "socket ID", req.socket.id, wtvshared.filterRequestLog(request_headers));
|
||||
else debug(" * Incoming " + ((ssl) ? "HTTPS" : "HTTP") + " PC POST Headers on", service_name, "socket ID", req.socket.id, wtvshared.filterRequestLog(request_headers));
|
||||
|
||||
if (minisrv_config.config.debug_flags.show_headers) console.log(" * Incoming " + ((ssl) ? "HTTPS" : "HTTP") + " PC POST Headers on", service_name, "socket ID", req.socket.id, wtvshared.filterRequestLog(request_headers));
|
||||
if (!ssl && minisrv_config.services[service_name].force_https && minisrv_config.services[service_name].https_cert) {
|
||||
var headers = `302 Moved
|
||||
Location: https://${(minisrv_config.services[service_name].https_cert.domain) ? minisrv_config.services[service_name].https_cert.domain : minisrv_config.services[service_name].host}:${minisrv_config.services[service_name].port}${req.originalUrl}
|
||||
Content-type: text/html`;
|
||||
sendToClient(req.socket, headers);
|
||||
} else if (errpage) {
|
||||
sendToClient(req.socket, errpage[0], errpage[1]);
|
||||
} else {
|
||||
processURL(req.socket, request_headers, true)
|
||||
}
|
||||
} else {
|
||||
var errpage = wtvshared.doErrorPage(404, "Service Not Found");
|
||||
sendToClient(req.socket, errpage[0], errpage[1]);
|
||||
}
|
||||
})
|
||||
return true;
|
||||
} catch (e) {
|
||||
|
||||
@@ -2,45 +2,53 @@ class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
var styledata = {};
|
||||
this.styledata.text = "#000000"
|
||||
this.styledata.link = "#180d4b"
|
||||
this.styledata.vlink = "#660000"
|
||||
this.styledata.headcol = this.styledata.text
|
||||
this.styledata.listcol1 = "#ff7c76"
|
||||
this.styledata.listcol2 = "#81c2d0"
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/us_flag.gif", "/clipart/Flags/fl00050_.gif"];
|
||||
this.styledata.text = "#000000";
|
||||
this.styledata.link = "#180d4b";
|
||||
this.styledata.vlink = "#660000";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = "#ff7c76";
|
||||
this.styledata.listcol2 = "#81c2d0";
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/styleMedia/us_flag.gif",
|
||||
"/clipart/Flags/fl00050_.gif",
|
||||
];
|
||||
this.styledata.headerimgL = "clipart/Flags/fl00050_.gif";
|
||||
this.styledata.headerimgLheight = "68";
|
||||
this.styledata.headerimgLwidth = "66";
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html><head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body vlink="#660000" link="#180d4b" bgcolor="#eeeeee" background="clipart/styleMedia/us_flag.gif">`
|
||||
<body vlink="#660000" link="#180d4b" bgcolor="#eeeeee" background="clipart/styleMedia/us_flag.gif">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<center>
|
||||
<font size="6" color=` + this.styledata.text + `><b>${title}</b></font>
|
||||
</center>`
|
||||
this.styledata.titheader +=
|
||||
`<center>
|
||||
<font size="6" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>
|
||||
</center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += ` <p> </p>`
|
||||
this.styledata.titheader += ` <p> </p>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
@@ -56,7 +64,7 @@ to return to editing it.
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
@@ -64,8 +72,7 @@ to return to editing it.
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`
|
||||
return styledata;
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#cccc99";
|
||||
this.styledata.link = "66ff66";
|
||||
this.styledata.vlink = "#ccffcc";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/styleMedia/baseballfield.gif",
|
||||
"/clipart/styleMedia/baseball.gif",
|
||||
];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body background="clipart/styleMedia/baseballfield.gif" text="#cccc99" link="#66ff66" vlink="#ccffcc">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = `<center>
|
||||
<img src="clipart/styleMedia/baseball.gif" width="400" height="100" align="bottom">
|
||||
|
||||
</center><p>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`<CENTER><H1><font size="6" color=` +
|
||||
this.styledata.text +
|
||||
`>${title}</font></H1></CENTER>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = ``;
|
||||
|
||||
this.styledata.footerstart = `<p>
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -12,42 +12,48 @@ class PBTemplate {
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body text="#7ac2d5" bgcolor="#11144c" link="#a5a033" vlink="#25a51f">`
|
||||
<body text="#7ac2d5" bgcolor="#11144c" link="#a5a033" vlink="#25a51f">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.header += `
|
||||
<center>
|
||||
<font size="+3" color="#66ff66"><b>
|
||||
<table width="100%" cellspacing="4" cellpadding="4" border="0">
|
||||
<tbody><tr>
|
||||
<td>`
|
||||
this.styledata.titheader = ``
|
||||
<td>`;
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<font size="+4" color=` + this.styledata.text + `>${title}</font></td>
|
||||
<td>`
|
||||
this.styledata.titheader +=
|
||||
`<font size="+4" color=` +
|
||||
this.styledata.text +
|
||||
`>${title}</font></td>
|
||||
<td>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = `</tr>
|
||||
</table>
|
||||
</b></font></center>`
|
||||
</b></font></center>`;
|
||||
|
||||
this.styledata.tabstart = ``;
|
||||
|
||||
@@ -60,13 +66,13 @@ to return to editing it.
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
|
||||
@@ -2,23 +2,26 @@ class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#faf3ed"
|
||||
this.styledata.link = "#fa9d46"
|
||||
this.styledata.vlink = "#fa7474"
|
||||
this.styledata.headcol = this.styledata.text
|
||||
this.styledata.text = "#faf3ed";
|
||||
this.styledata.link = "#fa9d46";
|
||||
this.styledata.vlink = "#fa7474";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/tile5.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html><head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt by JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body vlink="#fa7474" text="#faf3ed" link="#fa9d46" background="clipart/styleMedia/tile5.gif">`
|
||||
<body vlink="#fa7474" text="#faf3ed" link="#fa9d46" background="clipart/styleMedia/tile5.gif">`;
|
||||
// Do some templating here for some fucking reason
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `
|
||||
@@ -27,20 +30,21 @@ class PBTemplate {
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<center><h1><font color=` + this.styledata.text + `>`
|
||||
this.styledata.titheader +=
|
||||
`<center><h1><font color=` + this.styledata.text + `>`;
|
||||
|
||||
this.styledata.titheader += `
|
||||
${title}
|
||||
</font></h1></center>`
|
||||
</font></h1></center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
@@ -57,7 +61,7 @@ ${title}
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
@@ -65,7 +69,8 @@ ${title}
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>` }
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
|
||||
@@ -5,40 +5,43 @@ class PBTemplate {
|
||||
this.styledata.link = "#0000EE";
|
||||
this.styledata.vlink = "#551A8B";
|
||||
this.styledata.text = "#000000";
|
||||
this.styledata.headcol = "#eeeeee"
|
||||
this.styledata.listcol1 = "#eeeeee"
|
||||
this.styledata.headcol = "#eeeeee";
|
||||
this.styledata.listcol1 = "#eeeeee";
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/CAT.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html><head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt by JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="#eeeeee">`
|
||||
<body bgcolor="#eeeeee">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.header += `
|
||||
<table width="100%" cellspacing="4" cellpadding="4" border="0">
|
||||
<tbody>`
|
||||
<tbody>`;
|
||||
|
||||
this.styledata.titheader = ``
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<center>
|
||||
<font size="7" color="#000000"><b>${title}</b></font></center>`
|
||||
<font size="7" color="#000000"><b>${title}</b></font></center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
@@ -59,14 +62,14 @@ to return to editing it.
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#14122f";
|
||||
this.styledata.link = "#ae1b27";
|
||||
this.styledata.vlink = "#4e4397";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/styleMedia/so00511w_.gif",
|
||||
"/clipart/Special_Occasions/Holidays/so00470_.gif",
|
||||
];
|
||||
this.styledata.headerimgL =
|
||||
"clipart/Special_Occasions/Holidays/so00470_.gif";
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="#464de3" text="#14122f" link="#ae1b27" vlink="#4e4397">
|
||||
<center>
|
||||
<table border="0" cellpadding="8" cellspacing="0" frame>`;
|
||||
this.styledata.previewheader = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="black" text="#e68a34" link="#e64045">
|
||||
<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>
|
||||
<center>
|
||||
<table border="0" cellpadding="8" cellspacing="0" frame>
|
||||
`;
|
||||
this.styledata.titheader = `<tr bgcolor="#464de3">
|
||||
<td bgcolor="#464de3">
|
||||
<img height="63" width="54" src="clipart/styleMedia/so00511w_.gif">
|
||||
</td>
|
||||
<td bgcolor="#464de3" >
|
||||
<center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<b><font size="7" color="#e6e1e1">${title}</font></b></center>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `</td>
|
||||
<td bgcolor="#464de3">
|
||||
<img height="63" width="54" src="clipart/styleMedia/so00511w_.gif">
|
||||
</td>
|
||||
</tr>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<tr>
|
||||
<td bgcolor="#464de3"> <p> </td>
|
||||
<td bgcolor="#e1dee3">`;
|
||||
|
||||
this.styledata.footerstart = `<p>
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,95 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#ffffff";
|
||||
this.styledata.link = "#D26E81";
|
||||
this.styledata.vlink = "#CC3333";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/styleMedia/so00483_.gif",
|
||||
"/clipart/styleMedia/so00482_.gif",
|
||||
"/clipart/styleMedia/so00130_.gif",
|
||||
];
|
||||
this.styledata.headerimgL = "clipart/styleMedia/so00130_.gif";
|
||||
this.styledata.headerimgLheight = "68";
|
||||
this.styledata.headerimgLwidth = "74";
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body background="#255126" text="#ffffff" link="#D26E81" vlink="#CC3333" bgcolor="#255126">`;
|
||||
this.styledata.previewheader = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="black" text="#e68a34" link="#e64045">
|
||||
<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>
|
||||
`;
|
||||
this.styledata.titheader = `<center>
|
||||
<table border="0" cellpadding="0" cellspacing="2" frame width="90%">
|
||||
<tr>
|
||||
<td><img src="clipart/styleMedia/so00483_.gif"></td>
|
||||
<td >
|
||||
<center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font></center>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `</td>
|
||||
<td><img src="clipart/styleMedia/so00483_.gif"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = ``;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,82 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#000000";
|
||||
this.styledata.link = "#180d4b";
|
||||
this.styledata.vlink = "#660000";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = "#e5f4ff";
|
||||
this.styledata.listcol2 = "#81c2d0";
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/styleMedia/stars.gif",
|
||||
"/clipart/Animals/Wildlife/an00348_.gif",
|
||||
"/clipart/Animals/Wildlife/an00974_.gif",
|
||||
];
|
||||
this.styledata.headerimgL = "clipart/Animals/Wildlife/an00974_.gif";
|
||||
this.styledata.headerimgLheight = "75";
|
||||
this.styledata.headerimgLwidth = "88";
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="white" link="#180d4b" vlink="#660000" background="clipart/styleMedia/stars.gif">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`<center><font size="6" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `<p><img src="clipart/Animals/Wildlife/an00348_.gif" width="277" height="273" align="bottom"> </p>
|
||||
<p> </p>
|
||||
</center>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<blockquote>`;
|
||||
|
||||
this.styledata.footerstart = `</blockquote>
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,104 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#000000";
|
||||
this.styledata.link = "#000000";
|
||||
this.styledata.vlink = "#000000";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/Animations/AG00397_.gif",
|
||||
"/clipart/styleMedia/easter.gif",
|
||||
"/clipart/Animations/AG00398_.gif",
|
||||
];
|
||||
this.styledata.headerimgL = "clipart/Animations/AG00397_.gif";
|
||||
this.styledata.headerimgLheight = "163";
|
||||
this.styledata.headerimgLwidth = "102";
|
||||
this.styledata.headerimgR = "clipart/Animations/AG00398_.gif";
|
||||
this.styledata.headerimgRheight = "163";
|
||||
this.styledata.headerimgRwidth = "102";
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="#66cccc">
|
||||
<center>`;
|
||||
this.styledata.previewheader = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="#66cccc">
|
||||
<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>
|
||||
<center>
|
||||
`;
|
||||
this.styledata.titheader = `<table border="0">
|
||||
<tr>
|
||||
<td width="102">
|
||||
<center>
|
||||
<img src="clipart/Animations/AG00397_.gif" width="102" height="163" align="bottom"></center>
|
||||
</td>
|
||||
<td>
|
||||
<center>
|
||||
<font size="7"><img src="clipart/styleMedia/easter.gif" width="239" height="75" align="bottom"></font></center>
|
||||
</td>
|
||||
<td width="102">
|
||||
<center>
|
||||
<img src="clipart/Animations/AG00398_.gif" width="102" height="163" align="bottom"></center>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=3 >
|
||||
<center>
|
||||
`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<font size="6" color="#000000"><b>${title}</b></font></center>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `</tr>
|
||||
</table>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<P>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,77 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "black";
|
||||
this.styledata.link = "#09021e";
|
||||
this.styledata.vlink = "#2f0001";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/tile9.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body background="clipart/styleMedia/tile9.gif" text="black" link="#09021e" vlink="#2f0001">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,96 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#7eecf7";
|
||||
this.styledata.link = "#c5c1ca";
|
||||
this.styledata.vlink = "#b4c1fa";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/Animations/AG00219_.gif",
|
||||
"/clipart/Animations/AG00220_.gif",
|
||||
];
|
||||
this.styledata.headerimgL = "clipart/Animations/AG00220_.gif";
|
||||
this.styledata.headerimgLheight = "100";
|
||||
this.styledata.headerimgLwidth = "100";
|
||||
this.styledata.headerimgR = "clipart/Animations/AG00219_.gif";
|
||||
this.styledata.headerimgRheight = "100";
|
||||
this.styledata.headerimgRwidth = "100";
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body text="#ccffcc" bgcolor="#003300" link="#ffcc00" vlink="#ccb699">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = `<table border="0">
|
||||
<tr>
|
||||
<td width="100">
|
||||
<center>
|
||||
<img src="clipart/Animations/AG00219_.gif" width="100" height="100" align="bottom"></center>
|
||||
</td>
|
||||
<td >
|
||||
<center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="6" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font></center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `</td>
|
||||
<td width="100">
|
||||
<center>
|
||||
<img src="clipart/Animations/AG00220_.gif" width="100" height="100" align="bottom"></center>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p> </p>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<P>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,80 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#000000";
|
||||
this.styledata.link = "#180d4b";
|
||||
this.styledata.vlink = "#660000";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = "#ffcc00";
|
||||
this.styledata.listcol2 = "#ffcc00";
|
||||
this.styledata.stylemedia = ["/clipart/Nature/Flowers/na00140_.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<BODY bgcolor=#ffffcc link=#006600 vlink=#660000>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = `<TABLE cellpadding=8 width=100%>
|
||||
<TR>
|
||||
<TD><IMG src=clipart/Nature/Flowers/na00140_.gif width=253 height=273 align=left> </TD>
|
||||
<TD>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<FONT size=+3 color=#003300>${title}</FONT>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `<P></TD>
|
||||
</TR>
|
||||
</TABLE>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `
|
||||
<CENTER>
|
||||
<P>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,78 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#ffffcc";
|
||||
this.styledata.link = "yellow";
|
||||
this.styledata.vlink = "#ffcc99";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/styleMedia/footballfield.gif",
|
||||
"/clipart/styleMedia/football.gif",
|
||||
];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body background="clipart/styleMedia/footballfield.gif" text="#ffffcc" bgcolor="white" link="yellow" alink="#ccffcc" vlink="#ffcc99">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = `<img src="clipart/styleMedia/football.gif" width="283" height="55" align="bottom"><p>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`<H1><font size="6" color=` +
|
||||
this.styledata.text +
|
||||
`>${title}</font></H1>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `</center>
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -12,43 +12,49 @@ class PBTemplate {
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body text="#97e373" bgcolor="#003300" link="#ccc63f" vlink="#22cc17">`
|
||||
<body text="#97e373" bgcolor="#003300" link="#ccc63f" vlink="#22cc17">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.header += `
|
||||
<center>
|
||||
<font size="+3" color="#66ff66"><b>
|
||||
<table border=0 cellspacing="4" cellpadding="4" width=100%>
|
||||
<tbody><tr>
|
||||
<td>`
|
||||
<td>`;
|
||||
|
||||
this.styledata.titheader = ``
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<font size="+4" color=` + this.styledata.text + `>${title}</font></td>
|
||||
<td>`
|
||||
this.styledata.titheader +=
|
||||
`<font size="+4" color=` +
|
||||
this.styledata.text +
|
||||
`>${title}</font></td>
|
||||
<td>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = `</tr>
|
||||
</table>
|
||||
</b></font></center>`
|
||||
</b></font></center>`;
|
||||
|
||||
this.styledata.tabstart = ``;
|
||||
|
||||
@@ -61,13 +67,13 @@ to return to editing it.
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#261373";
|
||||
this.styledata.link = "blue";
|
||||
this.styledata.vlink = "#2a6e73";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/tile6.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body text="#261373" link="blue" vlink="#2a6e73" background="clipart/styleMedia/tile6.gif">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = ``;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,77 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "black";
|
||||
this.styledata.link = "blue";
|
||||
this.styledata.vlink = "#ff00ff";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="silver" text="black" link="blue" alink="red" vlink="#ff00ff">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `</center>
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -3,23 +3,31 @@ class PBTemplate {
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#e68a34";
|
||||
this.styledata.link = "#e64045";
|
||||
this.styledata.vlink = "#e64045";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/Animations/j0205352.gif", "/clipart/Animations/j0205350.gif", "/clipart/Special_Occasions/Holidays/so00430_.gif"];
|
||||
this.styledata.headerimgL = "clipart/Special_Occasions/Holidays/so00430_.gif";
|
||||
this.styledata.headerimgLheight = "94";
|
||||
this.styledata.headerimgLwidth = "119";
|
||||
this.styledata.header = `<html>
|
||||
this.styledata.link = "#e64045";
|
||||
this.styledata.vlink = "#e64045";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/Animations/j0205352.gif",
|
||||
"/clipart/Animations/j0205350.gif",
|
||||
"/clipart/Special_Occasions/Holidays/so00430_.gif",
|
||||
];
|
||||
this.styledata.headerimgL =
|
||||
"clipart/Special_Occasions/Holidays/so00430_.gif";
|
||||
this.styledata.headerimgLheight = "94";
|
||||
this.styledata.headerimgLwidth = "119";
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="black" text="#e68a34" link="#e64045">`
|
||||
this.styledata.previewheader = `<html>
|
||||
<body bgcolor="black" text="#e68a34" link="#e64045">`;
|
||||
this.styledata.previewheader = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
@@ -32,34 +40,37 @@ You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>
|
||||
`
|
||||
this.styledata.titheader = `<center>
|
||||
`;
|
||||
this.styledata.titheader = `<center>
|
||||
<table border="0" cellpadding="0" cellspacing="2" frame width="90%">
|
||||
<tr>
|
||||
<td><img height="150" width="150" src="clipart/Animations/j0205352.gif"></td>
|
||||
<td >
|
||||
<center>`
|
||||
if (state == "editing") {
|
||||
<center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`
|
||||
}
|
||||
this.styledata.titheader += `<font size="+3" color=` + this.styledata.text + `><b>${title}</b></font></center>`
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font></center>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`
|
||||
}
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `</td>
|
||||
this.styledata.titheader += `</td>
|
||||
<td><img height="150" width="150" src="clipart/Animations/j0205350.gif"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>`
|
||||
</center>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = ``;
|
||||
this.styledata.tabstart = ``;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
this.styledata.footerstart = `
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
@@ -68,13 +79,13 @@ this.styledata.footerstart = `
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#000000";
|
||||
this.styledata.link = "#33309a";
|
||||
this.styledata.vlink = "#33309a";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = "#d6d6d6";
|
||||
this.styledata.listcol2 = "#d6d6d6";
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/AG00318_.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<BODY bgcolor="#c4dbff" link="#33309a">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = `<TABLE border=0 cellpadding=8>
|
||||
<TR>
|
||||
<TD><IMG src=clipart/styleMedia/AG00318_.gif align=left> </TD>
|
||||
<TD>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<FONT size=+3 color=#003300>${title}</FONT>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `<P></TD>
|
||||
</TR>
|
||||
</TABLE>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `
|
||||
<CENTER>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,79 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#000000";
|
||||
this.styledata.link = "#4c58b6";
|
||||
this.styledata.vlink = "#519eb6";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = "#d6d6d6";
|
||||
this.styledata.listcol2 = "#d6d6d6";
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/AG00318_.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<BODY bgcolor="#deb1b1" link="#4c58b6" vlink="#519eb6">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = `<TABLE border=0 cellpadding=8>
|
||||
<TR>
|
||||
<TD><IMG src=clipart/styleMedia/AG00318_.gif align=left> </TD>
|
||||
<TD>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<FONT size=+3 color=#003300>${title}</FONT>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `<P></TD>
|
||||
</TR>
|
||||
</TABLE>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `
|
||||
<CENTER>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,77 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#7eecf7";
|
||||
this.styledata.link = "#c5c1ca";
|
||||
this.styledata.vlink = "#b4c1fa";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/tile4.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body text="#7eecf7" link="#c5c1ca" vlink="#b4c1fa" background="clipart/styleMedia/tile4.gif">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b><i>${title}</i></b></font>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<P>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,80 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#ffffa0";
|
||||
this.styledata.link = "#fff81f";
|
||||
this.styledata.vlink = "#ffa034";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/tile1.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body background="clipart/styleMedia/tile1.gif" text="#ffffa0" link="#fff81f" vlink="#ffa034">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`<CENTER><H1>
|
||||
<font color=` +
|
||||
this.styledata.text +
|
||||
`>${title}</font>
|
||||
</H1></CENTER>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += ` `;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,102 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.link = "#00ffff";
|
||||
this.styledata.vlink = "#ccffff";
|
||||
this.styledata.text = "#ffffff";
|
||||
this.styledata.headcol = "#ffffff";
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/styleMedia/oceantile.gif",
|
||||
"/clipart/Animals/Fish_n_Sealife/an01053_.gif",
|
||||
"/clipart/Animals/Fish_n_Sealife/an00312_.gif",
|
||||
"/clipart/Animals/Fish_n_Sealife/na00299_.gif",
|
||||
];
|
||||
this.styledata.headerimgL = "/clipart/Animals/Fish_n_Sealife/an01053_.gif";
|
||||
this.styledata.headerimgLheight = "68";
|
||||
this.styledata.headerimgLwidth = "32";
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html><head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt by JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body vlink="#CCFFFF" text="#FFFFFF" link="#00FFFF" bgcolor="#7189ae" background="clipart/styleMedia/oceantile.gif">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `
|
||||
<center>
|
||||
<table border="0" cellpadding="0" cellspacing="2" frame width="90%">
|
||||
<tr>
|
||||
<td><img height="69" width="69" src="clipart/Animals/Fish_n_Sealife/na00299_.gif"></td>
|
||||
<td >
|
||||
<center>
|
||||
`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font></center>
|
||||
`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
this.styledata.titheader += `
|
||||
</td>
|
||||
<td><img height="69" width="78" src="clipart/Animals/Fish_n_Sealife/an00312_.gif"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center>
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,77 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "c8e7f1";
|
||||
this.styledata.link = "#fffe67";
|
||||
this.styledata.vlink = "#ff7171";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/show-tile3.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body background="clipart/styleMedia/show-tile3.gif" text="#c8e7f1" link="#fffe67" vlink="#ff7171">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -12,43 +12,49 @@ class PBTemplate {
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body text="#cabdc7" bgcolor="#660517" link="#cac534" vlink="#c8cac5">`
|
||||
<body text="#cabdc7" bgcolor="#660517" link="#cac534" vlink="#c8cac5">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.header += `
|
||||
<center>
|
||||
<font size="+3" color="#66ff66"><b>
|
||||
<table border="0" cellspacing="4" cellpadding="4" width=100%>
|
||||
<tbody><tr>
|
||||
<td>`
|
||||
<td>`;
|
||||
|
||||
this.styledata.titheader = ``
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<font size="+4" color=` + this.styledata.text + `>${title}</font></td>
|
||||
<td>`
|
||||
this.styledata.titheader +=
|
||||
`<font size="+4" color=` +
|
||||
this.styledata.text +
|
||||
`>${title}</font></td>
|
||||
<td>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = `</tr>
|
||||
</table>
|
||||
</b></font></center>`
|
||||
</b></font></center>`;
|
||||
|
||||
this.styledata.tabstart = ``;
|
||||
|
||||
@@ -61,13 +67,13 @@ to return to editing it.
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
|
||||
@@ -2,45 +2,55 @@ class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#000000"
|
||||
this.styledata.link = "#180d4b"
|
||||
this.styledata.vlink = "#660000"
|
||||
this.styledata.headcol = this.styledata.text
|
||||
this.styledata.listcol1 = "#e5f4ff"
|
||||
this.styledata.listcol2 = "#81c2d0"
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/stars.gif", "/clipart/Animals/Wildlife/an00660_.gif", "/clipart/Animals/Wildlife/an00975_.gif"];
|
||||
this.styledata.text = "#000000";
|
||||
this.styledata.link = "#180d4b";
|
||||
this.styledata.vlink = "#660000";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = "#e5f4ff";
|
||||
this.styledata.listcol2 = "#81c2d0";
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/styleMedia/stars.gif",
|
||||
"/clipart/Animals/Wildlife/an00660_.gif",
|
||||
"/clipart/Animals/Wildlife/an00975_.gif",
|
||||
];
|
||||
this.styledata.headerimgL = "clipart/Animals/Wildlife/an00975_.gif";
|
||||
this.styledata.headerimgLheight = "70";
|
||||
this.styledata.headerimgLwidth = "51";
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="white" link="#180d4b" vlink="#660000" background="clipart/styleMedia/stars.gif">`
|
||||
<body bgcolor="white" link="#180d4b" vlink="#660000" background="clipart/styleMedia/stars.gif">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<center><font size="6" color=` + this.styledata.text + `><b>${title}</b></font>`
|
||||
this.styledata.titheader +=
|
||||
`<center><font size="6" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `<p><img src="clipart/Animals/Wildlife/an00660_.gif" width="317" height="273" align="bottom"> </p>
|
||||
<p> </p>
|
||||
</center>`
|
||||
</center>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
@@ -55,13 +65,13 @@ to return to editing it.
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#000000";
|
||||
this.styledata.link = "#180d4b";
|
||||
this.styledata.vlink = "#660000";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/ringbinder.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html><head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body text="black" link="#552768" bgcolor="white" vlink="#333333" background="clipart/styleMedia/ringbinder.gif">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>
|
||||
`;
|
||||
}
|
||||
this.styledata.header += `<TABLE border=0 cellspacing=0 cellpadding=0>`;
|
||||
this.styledata.titheader = `<TR>
|
||||
<TD width=80 rowspan=2></TD>
|
||||
<TD >
|
||||
<CENTER>
|
||||
<FONT size=7>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`<font color=` + this.styledata.text + `><b>${title}</B>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `</FONT></CENTER>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD valign=top>
|
||||
<FONT size=6 color=#666666><B>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = "";
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</B></FONT></P>
|
||||
<P> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,77 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "e4ece6";
|
||||
this.styledata.link = "eceb9f";
|
||||
this.styledata.vlink = "#e1903c";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/tile12.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body text="#e4ece6" link="#eceb9f" vlink="#e1903c" background="clipart/styleMedia/tile12.gif">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,77 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "black";
|
||||
this.styledata.link = "#2a238c";
|
||||
this.styledata.vlink = "#f17075";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/tile11.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body background="clipart/styleMedia/tile11.gif" link="#2a238c" vlink="#f17075">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
@@ -6,34 +5,40 @@ class PBTemplate {
|
||||
this.styledata.link = "#ffcc00";
|
||||
this.styledata.vlink = "#ffff99";
|
||||
this.styledata.text = "#cccccc";
|
||||
this.styledata.headcol = "#cccccc"
|
||||
this.styledata.headcol = "#cccccc";
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/spacefield.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html><head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt by JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body vlink="#ffff99" text="#cccccc" link="#ffcc00" bgcolor="#333333" background="clipart/styleMedia/spacefield.gif">`
|
||||
<body vlink="#ffff99" text="#cccccc" link="#ffcc00" bgcolor="#333333" background="clipart/styleMedia/spacefield.gif">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<center>
|
||||
<font size="7" color=` + this.styledata.text + `><b>
|
||||
this.styledata.titheader +=
|
||||
`<center>
|
||||
<font size="7" color=` +
|
||||
this.styledata.text +
|
||||
`><b>
|
||||
${title}
|
||||
</b></font>
|
||||
<p>
|
||||
@@ -43,12 +48,11 @@ ${title}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</center>`
|
||||
</center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>
|
||||
@@ -67,7 +71,7 @@ ${title}
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
@@ -75,7 +79,7 @@ ${title}
|
||||
</center>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#ffffcc";
|
||||
this.styledata.link = "#00ccff";
|
||||
this.styledata.vlink = "#ccffff";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/stonesfield.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body text="#ffffcc" bgcolor="white" link="#00ccff" vlink="#ccffff" background="clipart/styleMedia/stonesfield.gif">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`<center>
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b><i>${title}</i></b></font>
|
||||
</center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `</center>
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,80 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#cccccc";
|
||||
this.styledata.link = "#50caca";
|
||||
this.styledata.vlink = "#47ca92";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/tile3.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body background="clipart/styleMedia/tile3.gif" text="#cccccc" link="#50caca" vlink="#47ca92">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`<CENTER><H1>
|
||||
<font color=` +
|
||||
this.styledata.text +
|
||||
`>${title}</font>
|
||||
</H1></CENTER>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += ` `;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<p>`;
|
||||
|
||||
this.styledata.footerstart = `</center>
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,77 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "white";
|
||||
this.styledata.link = "aqua";
|
||||
this.styledata.vlink = "#ccffff";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = ["/clipart/styleMedia/watertile.gif"];
|
||||
this.styledata.headerimgL = null;
|
||||
this.styledata.headerimgLheight = null;
|
||||
this.styledata.headerimgLwidth = null;
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<meta name="generator" content="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<meta name="description" content="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body background="clipart/styleMedia/watertile.gif" text="white" link="aqua" alink="red" vlink="#ccffff">
|
||||
<center>`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = ``;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader +=
|
||||
`
|
||||
<font size="+3" color=` +
|
||||
this.styledata.text +
|
||||
`><b>${title}</b></font>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `<P>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table width="100%" cellspacing="2" cellpadding="0" border="0">
|
||||
<tbody><tr height="0">
|
||||
<td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td><td height="0">
|
||||
<spacer type="block" width="30%" height="0">
|
||||
</spacer></td></tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
|
||||
<div style="position: static !important;"></div></body></html>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
@@ -0,0 +1,87 @@
|
||||
class PBTemplate {
|
||||
styledata = {};
|
||||
|
||||
constructor(wtvauthor, title, desc, state, docName) {
|
||||
this.styledata.text = "#3f3a89";
|
||||
this.styledata.link = "#6a298c";
|
||||
this.styledata.vlink = "#6a298c";
|
||||
this.styledata.headcol = this.styledata.text;
|
||||
this.styledata.listcol1 = null;
|
||||
this.styledata.listcol2 = null;
|
||||
this.styledata.stylemedia = [
|
||||
"/clipart/styleMedia/j0172489.gif",
|
||||
"/clipart/Special_Occasions/Wedding/so00527_.gif",
|
||||
];
|
||||
this.styledata.headerimgL =
|
||||
"clipart/Special_Occasions/Wedding/so00527_.gif";
|
||||
this.styledata.headerimgLheight = "76";
|
||||
this.styledata.headerimgLwidth = "92";
|
||||
this.styledata.headerimgR = null;
|
||||
this.styledata.headerimgRheight = null;
|
||||
this.styledata.headerimgRwidth = null;
|
||||
this.styledata.header = `<html>
|
||||
<head>
|
||||
<META NAME="generator" CONTENT="WebTV Page Builder (Rebuilt By JarHead)">
|
||||
<META NAME="description" CONTENT="${desc}">
|
||||
<title>${title}</title>
|
||||
</head>
|
||||
<body bgcolor="#97bfbb" text="#3f3a89" link="#6a298c" vlink="#6a298c">`;
|
||||
if (state == "previewing") {
|
||||
this.styledata.header += `<TABLE cellspacing=0 cellpadding=0 bgcolor=#1e4261 border=1 width=100%>
|
||||
<TR><TD valign=middle align=center><FONT color=#D1D1D1>
|
||||
You are previewing your page. Press <B>Back</B>
|
||||
to return to editing it.
|
||||
</FONT>
|
||||
</TABLE>`;
|
||||
}
|
||||
this.styledata.titheader = `<center>
|
||||
<table border="0" cellpadding="0" cellspacing="2" frame width="90%">
|
||||
<tr>
|
||||
<td><img src="clipart/styleMedia/j0172489.gif" height="122" width="123"></td>
|
||||
<td >
|
||||
<center>`;
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `<a href="wtv-author:/edit-title?docName=${docName}&titleOnly=true">
|
||||
`;
|
||||
}
|
||||
this.styledata.titheader += `<FONT size=+3 color=#${this.styledata.text}><b>${title}</b></FONT></center>`;
|
||||
|
||||
if (state == "editing") {
|
||||
this.styledata.titheader += `</a>`;
|
||||
}
|
||||
|
||||
this.styledata.titheader += `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>`;
|
||||
|
||||
this.styledata.afterblock1 = null;
|
||||
|
||||
this.styledata.tabstart = `
|
||||
<CENTER>
|
||||
<P>`;
|
||||
|
||||
this.styledata.footerstart = `
|
||||
<table border="0" cellpadding="0" cellspacing="2" width="100%">
|
||||
<tr height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
<td height=0>
|
||||
<spacer type=block width=30% height=0>
|
||||
</tr>`;
|
||||
this.styledata.webtvfooter = wtvauthor.getCommonFooter();
|
||||
this.styledata.footerend = `</td>
|
||||
</tr>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>`;
|
||||
}
|
||||
|
||||
get() {
|
||||
return this.styledata;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PBTemplate;
|
||||
162
zefie_wtvp_minisrv/includes/ServiceVault/http_pc/indexer.js
Normal file
162
zefie_wtvp_minisrv/includes/ServiceVault/http_pc/indexer.js
Normal file
@@ -0,0 +1,162 @@
|
||||
var minisrv_service_file = true;
|
||||
try {
|
||||
var relativePath = request_headers.request_url;
|
||||
if (relativePath.indexOf('?') > -1) relativePath = relativePath.split('?')[0];
|
||||
while (relativePath.endsWith('/')) relativePath = relativePath.substring(0, relativePath.length - 1);
|
||||
|
||||
var dir = service_name + relativePath;
|
||||
var num_per_page = 25;
|
||||
var dirs = ['<tr><td>Directory</td><td><a href="' + relativePath + '/..">Parent Directory</a></td><td>-</td><td>-</td></tr > '];
|
||||
var files = [];
|
||||
vault_found = false;
|
||||
|
||||
|
||||
// Iterate through each service vault to find the first occurrence
|
||||
for (let i = 0; i < service_vaults.length; i++) {
|
||||
const vaultPath = path.join(service_vaults[i], dir || '');
|
||||
if (!fs.existsSync(vaultPath)) continue;
|
||||
|
||||
try {
|
||||
vault_found = true;
|
||||
const entries = fs.readdirSync(vaultPath);
|
||||
|
||||
entries.forEach(entry => {
|
||||
if (entry === path.basename(__filename)) return;
|
||||
|
||||
// Check if entry exists in all service vaults
|
||||
let found = false;
|
||||
var checkPath = "";
|
||||
for (let j = 0; j < service_vaults.length; j++) {
|
||||
checkPath = path.join(service_vaults[j], dir || '', entry);
|
||||
if (fs.existsSync(checkPath)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Skip if not found in all
|
||||
if (!found) return;
|
||||
|
||||
const fullPath = checkPath;
|
||||
const stats = fs.statSync(fullPath);
|
||||
const isDir = stats.isDirectory();
|
||||
const mimeType = (isDir) ? "Directory" : wtvmime.getContentType(fullPath)[1];
|
||||
var readableSize = '-';
|
||||
// Get file size with unit
|
||||
if (!isDir) {
|
||||
const fileSize = stats.size;
|
||||
const units = ['Bytes', 'KB', 'MB', 'GB'];
|
||||
const unitSize = Math.floor(Math.log(fileSize) / Math.log(1024));
|
||||
readableSize = (fileSize / Math.pow(1024, unitSize)).toFixed(2) + units[unitSize];
|
||||
}
|
||||
// Get last modified time
|
||||
const mtime = stats.mtime.toLocaleString('en-US', {
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit'
|
||||
});
|
||||
|
||||
// Check if modified recently
|
||||
const currentTime = Date.now();
|
||||
const tenSecondsAgo = currentTime - 10000;
|
||||
const isModifiedRecently = stats.mtime.getTime() > tenSecondsAgo;
|
||||
|
||||
// Create clickable link
|
||||
const link = isDir ?
|
||||
`<a href="${relativePath}/${entry}">${entry}</a>` :
|
||||
`<a href="${relativePath}/${path.basename(fullPath)}">${entry}</a>`;
|
||||
|
||||
// Generate icon and timestamp display
|
||||
const icon = mimeType;
|
||||
const timestampDisplay = isModifiedRecently ?
|
||||
`<span style="color: #666;">${mtime}</span>` :
|
||||
`${mtime}`;
|
||||
|
||||
if (isDir) dirs.push(`<tr><td>${icon}</td><td>${(isModifiedRecently) ? entry : link}</td><td>${readableSize}</td><td>${timestampDisplay}</td></tr>`);
|
||||
else files.push(`<tr><td>${icon}</td><td>${(isModifiedRecently) ? entry : link}</td><td>${readableSize}</td><td>${timestampDisplay}</td></tr>`);
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Error:', err);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!vault_found) {
|
||||
var errpage = wtvshared.doErrorPage(404);
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
} else {
|
||||
|
||||
// Pagination logic
|
||||
const totalFiles = files.length;
|
||||
const max_pages = Math.ceil(totalFiles / num_per_page);
|
||||
let current_page = 1; // Default to first page
|
||||
if (totalFiles > 0) {
|
||||
current_page = parseInt(request_headers.query.page || 1);
|
||||
if (current_page < 1) current_page = 1;
|
||||
if (current_page > max_pages) current_page = max_pages;
|
||||
}
|
||||
|
||||
const start_index = (current_page - 1) * num_per_page;
|
||||
const end_index = current_page * num_per_page;
|
||||
const merged_files = dirs.concat(files);
|
||||
const paginatedFiles = merged_files.slice(start_index, end_index);
|
||||
|
||||
let paginationHtml = `
|
||||
<div style="text-align: center; margin-top: 20px;">
|
||||
<form action="" method="get" style="display: inline;">
|
||||
<input type=button onclick="window.location.href='?page=1'" ${(current_page === 1) ? 'disabled' : ''} value="First"></input>
|
||||
<input type=button onclick="window.location.href='?page=${Math.max(current_page - 1, 1)}'" ${(current_page === 1) ? 'disabled' : ''} value="Previous"></input>
|
||||
<span style="margin: 0 10px;">Page ${current_page} of ${max_pages}</span>
|
||||
<input type=button onclick="window.location.href='?page=${Math.min(current_page + 1, max_pages)}'" ${(current_page === max_pages) ? 'disabled' : ''} value="Next"></input>
|
||||
<input type=button onclick="window.location.href='?page=${max_pages}'" ${(current_page === max_pages) ? 'disabled' : ''} value="Last"></input>
|
||||
</form>
|
||||
</div>`;
|
||||
|
||||
data = `
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Directory Index</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #121212;
|
||||
color: #ffffff;
|
||||
}
|
||||
a, a:hover, a:active {
|
||||
color: #1e90ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:visited { color: #8a2be2; }
|
||||
table { width: 100%; border-collapse: collapse; }
|
||||
th, td { padding: 8px; text-align: left; border-bottom: 1px solid #333; }
|
||||
tr:hover { background-color: #2a2a2a; }
|
||||
</style>
|
||||
</head>
|
||||
<body bgcolor="#121212" text="#ffffff" link="#1e90ff" vlink="#8a2be2">
|
||||
<h2>Directory Index of ${relativePath}</h2>
|
||||
<hr>
|
||||
<table>
|
||||
<tr><th>Type</th><th>Name</th><th>Size</th><th>Last Modified</th></tr>
|
||||
${paginatedFiles.join('')}
|
||||
</table>
|
||||
${paginationHtml}
|
||||
<script>
|
||||
function toggleTheme() { ... }
|
||||
</script>
|
||||
</body>
|
||||
</html>`;
|
||||
|
||||
headers = `200 OK\nContent-Type: text/html`;
|
||||
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Error:', err);
|
||||
var err = wtvshared.doErrorPage(404);
|
||||
headers = err[0];
|
||||
data = err[1];
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,9 +8,10 @@ var oldBlockNum = request_headers.query.blockNum
|
||||
var blockType = pagedata.blocks[oldBlockNum].type
|
||||
var photo;
|
||||
var thumbnail;
|
||||
|
||||
if (pagedata.blocks[oldBlockNum].photo) {
|
||||
console.log(pagedata.blocks[oldBlockNum].photo);
|
||||
photo = wtvshared.atob(pagedata.blocks[oldBlockNum].photo)
|
||||
photo = wtvshared.btoa(pagedata.blocks[oldBlockNum].photo)
|
||||
thumbnail = photo.replace('clipart/', 'clipart/icons/');
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,281 +1,7 @@
|
||||
var minisrv_service_file = true;
|
||||
var create = true;
|
||||
var pagenums = session_data.pagestore.listPages().length;
|
||||
if (minisrv_config.services["wtv-author"].max_pages) {
|
||||
if (pagenums + 1 > minisrv_config.services["wtv-author"].max_pages) {
|
||||
create = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (create) {
|
||||
headers = `200 OK
|
||||
headers = `302 Moved
|
||||
Connection: Keep-Alive
|
||||
Content-Type: text/html`
|
||||
Location: wtv-author:/styles?tmplClass=11&docName=&styleName=&pageNum=0`;
|
||||
|
||||
data = `<HTML>
|
||||
<HEAD>
|
||||
<DISPLAY fontsize=medium>
|
||||
<TITLE>Select a page style</TITLE>
|
||||
</HEAD>
|
||||
<sidebar width=122 height=420 align=left>
|
||||
<table cellspacing=0 cellpadding=0 height=385>
|
||||
<TR>
|
||||
<td width=3>
|
||||
<td abswidth=2 bgColor=#8A99B0 rowspan=99>
|
||||
<td absHEIGHT=4>
|
||||
<td abswidth=2 bgColor=#8A99B0 rowspan=99>
|
||||
<td width=4 rowspan=99>
|
||||
<td backGround="wtv-author:/ROMCache/grad_tile.gif" width=16 rowspan=99>
|
||||
</TR>
|
||||
<tr>
|
||||
<td>
|
||||
<td align=right height=69 width=93 href="wtv-home:/home">
|
||||
<img src="${minisrv_config.config.service_logo}" width=87 height=67>
|
||||
<tr>
|
||||
<td absheight=5>
|
||||
<TR>
|
||||
<td colspan=5 absheight=2 valign=middle align=center bgcolor=#8A99B0>
|
||||
<tr>
|
||||
<td>
|
||||
<td abswidth=93 absheight=26>
|
||||
<table href="wtv-author:/documents" cellspacing=0 cellpadding=0>
|
||||
<tr>
|
||||
<td abswidth=5>
|
||||
<td abswidth=90 valign=middle align=left>
|
||||
<table cellspacing=0 cellpadding=0>
|
||||
<tr>
|
||||
<td maxlines=1>
|
||||
<font sizerange=medium color="C2CCD7">Index</font>
|
||||
</table>
|
||||
</table>
|
||||
<TR>
|
||||
<td colspan=5 absheight=2 valign=middle align=center bgcolor=#8A99B0>
|
||||
<tr>
|
||||
<td>
|
||||
<td abswidth=93 absheight=26>
|
||||
<table href="wtv-guide:/help?topic=Glossary&subtopic=P&page=pagebuilder" cellspacing=0 cellpadding=0>
|
||||
<tr>
|
||||
<td abswidth=5>
|
||||
<td abswidth=90 valign=middle align=left>
|
||||
<table cellspacing=0 cellpadding=0>
|
||||
<tr>
|
||||
<td maxlines=1>
|
||||
<font sizerange=medium color="C2CCD7">Help</font>
|
||||
</table>
|
||||
</table>
|
||||
<TR>
|
||||
<td colspan=5 absheight=2 valign=middle align=center bgcolor=#8A99B0>
|
||||
<tr>
|
||||
<td>
|
||||
<td valign=bottom align=right>
|
||||
<img src="wtv-author:/ROMCache/pagebuilder.gif" height=124 width=78>
|
||||
</table>
|
||||
</sidebar>
|
||||
<body bgcolor=#1e4261 background=wtv-author:/ROMCache/blue_tile_128.gif text=AEBFD1 link=B8BDC7 vlink=B8BDC7 hspace=0 vspace=0>
|
||||
<table cellspacing=0 cellpadding=0 width=100%>
|
||||
<tr>
|
||||
<td abswidth=10 rowspan=100>
|
||||
<tr>
|
||||
<td height=44 width=206 valign=middle colspan=2>
|
||||
<font size=+1 color=D1D1D1>
|
||||
<blackface> Choose a page style </blackface>
|
||||
</font>
|
||||
<td align=right valign=middle>
|
||||
<table valign=middle>
|
||||
<tr>
|
||||
<td>
|
||||
<table cellspacing=0 cellpadding=0>
|
||||
<tr>
|
||||
<td>
|
||||
<img src="wtv-author:/ROMCache/minus_button_dim.gif">
|
||||
</table>
|
||||
</td>
|
||||
<td align=center>
|
||||
<font color=D1D1D1>
|
||||
<B>1 of 1</B>
|
||||
</font>
|
||||
</td>
|
||||
<td>
|
||||
<table cellspacing=0 cellpadding=0 ref="wtv-author:/styles?tmplClass=11&docName=&styleName=&pageNum=1#plus" id=plus>
|
||||
<tr>
|
||||
<td>
|
||||
<img src="wtv-author:/ROMCache/plus_button_dim.gif">
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr>
|
||||
<td absheight=5>
|
||||
<tr>
|
||||
<td colspan=5>
|
||||
<font color=AEBFD1> You can change the style at any time without losing your text or images. </font>
|
||||
<tr>
|
||||
<td absheight=10>
|
||||
<tr>
|
||||
<td absheight=5>
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<TABLE border=0 cellpadding=0 cellspacing=0 width=137>
|
||||
<TR height=120>
|
||||
<TD width=128 height=120 bgcolor=#8A99B0 href="new?tmplClass=&layoutTMPL=Blue_Sands.tmpl&contentTMPL=&styleName=Blue Sands&blocksPerPage=0" name="Blue Sands">
|
||||
<spacer type=block width=4></spacer>
|
||||
<font color=0F283F> Blue Sands <BR>
|
||||
</font>
|
||||
<center>
|
||||
<img src=/images/styles/blue_sands.gif width="120" height="90" vspace=3>
|
||||
</center>
|
||||
</TD>
|
||||
<TD height=120>
|
||||
<IMG height=120 width=12 src=/ROMCache/right_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD width=128>
|
||||
<IMG height=12 width=128 src=/ROMCache/bottom_shadow.gif>
|
||||
</TD>
|
||||
<TD>
|
||||
<IMG height=12 width=12 src=/ROMCache/corner_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<TABLE border=0 cellpadding=0 cellspacing=0 width=137>
|
||||
<TR height=120>
|
||||
<TD width=128 height=120 bgcolor=#8A99B0 href="new?tmplClass=&layoutTMPL=Space.tmpl&contentTMPL=&styleName=Space&blocksPerPage=0" name="Space">
|
||||
<spacer type=block width=4></spacer>
|
||||
<font color=0F283F> Space <BR>
|
||||
</font>
|
||||
<center>
|
||||
<img src=/images/styles/space.gif width="120" height="90" vspace=3>
|
||||
</center>
|
||||
</TD>
|
||||
<TD height=120>
|
||||
<IMG height=120 width=12 src=/ROMCache/right_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD width=128>
|
||||
<IMG height=12 width=128 src=/ROMCache/bottom_shadow.gif>
|
||||
</TD>
|
||||
<TD>
|
||||
<IMG height=12 width=12 src=/ROMCache/corner_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<TABLE border=0 cellpadding=0 cellspacing=0 width=137>
|
||||
<TR height=120>
|
||||
<TD width=128 height=120 bgcolor=#8A99B0 href="new?tmplClass=&layoutTMPL=Cats.tmpl&contentTMPL=&styleName=Cats&blocksPerPage=0" name="Cats">
|
||||
<spacer type=block width=4></spacer>
|
||||
<font color=0F283F> Cats <BR>
|
||||
</font>
|
||||
<center>
|
||||
<img src=/images/styles/catz.gif width="120" height="90" vspace=3>
|
||||
</center>
|
||||
</TD>
|
||||
<TD height=120>
|
||||
<IMG height=120 width=12 src=/ROMCache/right_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD width=128>
|
||||
<IMG height=12 width=128 src=/ROMCache/bottom_shadow.gif>
|
||||
</TD>
|
||||
<TD>
|
||||
<IMG height=12 width=12 src=/ROMCache/corner_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</td>
|
||||
<tr>
|
||||
<td>
|
||||
<TABLE border=0 cellpadding=0 cellspacing=0 width=137>
|
||||
<TR height=120>
|
||||
<TD width=128 height=120 bgcolor=#8A99B0 href="new?tmplClass=&layoutTMPL=Blue.tmpl&contentTMPL=&styleName=Blue&blocksPerPage=0" name="Blue">
|
||||
<spacer type=block width=4></spacer>
|
||||
<font color=0F283F> Blue <BR>
|
||||
</font>
|
||||
<center>
|
||||
<img src=/images/styles/blue.gif width="120" height="90" vspace=3>
|
||||
</center>
|
||||
</TD>
|
||||
<TD height=120>
|
||||
<IMG height=120 width=12 src=/ROMCache/right_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD width=128>
|
||||
<IMG height=12 width=128 src=/ROMCache/bottom_shadow.gif>
|
||||
</TD>
|
||||
<TD>
|
||||
<IMG height=12 width=12 src=/ROMCache/corner_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<TABLE border=0 cellpadding=0 cellspacing=0 width=137>
|
||||
<TR height=120>
|
||||
<TD width=128 height=120 bgcolor=#8A99B0 href="new?tmplClass=&layoutTMPL=Red.tmpl&contentTMPL=&styleName=Red&blocksPerPage=0" name="Red">
|
||||
<spacer type=block width=4></spacer>
|
||||
<font color=0F283F> Red <BR>
|
||||
</font>
|
||||
<center>
|
||||
<img src=/images/styles/red.gif width="120" height="90" vspace=3>
|
||||
</center>
|
||||
</TD>
|
||||
<TD height=120>
|
||||
<IMG height=120 width=12 src=/ROMCache/right_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD width=128>
|
||||
<IMG height=12 width=128 src=/ROMCache/bottom_shadow.gif>
|
||||
</TD>
|
||||
<TD>
|
||||
<IMG height=12 width=12 src=/ROMCache/corner_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
<TABLE border=0 cellpadding=0 cellspacing=0 width=137>
|
||||
<TR height=120>
|
||||
<TD width=128 height=120 bgcolor=#8A99B0 href="new?tmplClass=&layoutTMPL=Republican.tmpl&contentTMPL=&styleName=Republican&blocksPerPage=0" name="Republican">
|
||||
<spacer type=block width=4></spacer>
|
||||
<font color=0F283F> Republican <BR>
|
||||
</font>
|
||||
<center>
|
||||
<img src=/images/styles/republican.gif width="120" height="90" vspace=3>
|
||||
</center>
|
||||
</TD>
|
||||
<TD height=120>
|
||||
<IMG height=120 width=12 src=/ROMCache/right_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD width=128>
|
||||
<IMG height=12 width=128 src=/ROMCache/bottom_shadow.gif>
|
||||
</TD>
|
||||
<TD>
|
||||
<IMG height=12 width=12 src=/ROMCache/corner_shadow.gif>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</td>
|
||||
</table>
|
||||
</BODY>
|
||||
</HTML>
|
||||
`;
|
||||
} else {
|
||||
var err = wtvshared.doErrorPage(500, "You are not allowed to create more than <b>"+minisrv_config.services["wtv-author"].max_pages+"</b> pages.");
|
||||
headers = err[0];
|
||||
data = err[1];
|
||||
}
|
||||
data = ''
|
||||
@@ -4,11 +4,48 @@ var challenge_response, challenge_header = '';
|
||||
var gourl;
|
||||
var wtvsec_login = null;
|
||||
|
||||
if (request_headers.query.hangup) {
|
||||
|
||||
hasPendingTransfer = session_data.hasPendingTransfer()
|
||||
if (hasPendingTransfer) {
|
||||
if (hasPendingTransfer.type == "target") {
|
||||
var xferSession = new WTVClientSessionData(minisrv_config, hasPendingTransfer.ssid);
|
||||
xferSession.user_id = 0
|
||||
var primary_username = xferSession.listPrimaryAccountUsers()['subscriber']['subscriber_username'];
|
||||
var transferPendingDest = new clientShowAlert({
|
||||
'image': minisrv_config.config.service_logo,
|
||||
'message': "There is a pending transfer of the account <b>" + primary_username + "</b>, would you like to complete the transfer, or cancel it?",
|
||||
'buttonlabel1': "Complete Transfer",
|
||||
'buttonaction1': "wtv-head-waiter:/complete-account-transfer",
|
||||
'buttonlabel2': "Cancel Transfer",
|
||||
'buttonaction2': "wtv-head-waiter:/cancel-account-transfer",
|
||||
'noback': true,
|
||||
}).getURL();
|
||||
var errpage = wtvshared.doRedirect(transferPendingDest);
|
||||
var headers = errpage[0];
|
||||
var data = errpage[1];
|
||||
} else if (hasPendingTransfer.type == "source") {
|
||||
var transferPendingSrc = new clientShowAlert({
|
||||
'image': minisrv_config.config.service_logo,
|
||||
'message': "There is a pending transfer of this account to <b>" + hasPendingTransfer.ssid + "</b>. In order to use this box, you need to complete or cancel the transfer.",
|
||||
'buttonlabel1': "Power Off",
|
||||
'buttonaction1': "client:poweroff",
|
||||
'buttonlabel2': "Cancel Transfer",
|
||||
'buttonaction2': "wtv-head-waiter:/cancel-account-transfer",
|
||||
'noback': true,
|
||||
}).getURL();
|
||||
var errpage = wtvshared.doRedirect(transferPendingSrc);
|
||||
var headers = errpage[0];
|
||||
var data = errpage[1];
|
||||
} else {
|
||||
console.log(hasPendingTransfer);
|
||||
}
|
||||
} else {
|
||||
|
||||
if (request_headers.query.hangup) {
|
||||
headers = `300 OK
|
||||
Location: client:gototvhome
|
||||
wtv-visit: client:hangupphone`
|
||||
} else {
|
||||
} else {
|
||||
var user_id = (request_headers.query.user_id) ? request_headers.query.user_id : session_data.user_id;
|
||||
|
||||
if (socket.ssid !== null && user_id !== null) session_data.switchUserID(user_id);
|
||||
@@ -72,7 +109,7 @@ minisrv-no-mail-count: true
|
||||
if (session_data.baddisk === true && !ssid_sessions[socket.ssid].get("bad_disk_shown")) {
|
||||
gourl = "wtv-head-waiter:/bad-disk?"
|
||||
}
|
||||
else if (session_data.getNumberOfUserAccounts() > 1 && user_id === 0 && (!session_data.isUserLoggedIn() || request_headers.query.initial_login || request_headers.query.relogin) ) {
|
||||
else if (session_data.getNumberOfUserAccounts() > 1 && user_id === 0 && (!session_data.isUserLoggedIn() || request_headers.query.initial_login || request_headers.query.relogin)) {
|
||||
gourl = "wtv-head-waiter:/choose-user?"
|
||||
} else {
|
||||
if (!session_data.getUserPasswordEnabled() && request_headers.query.user_login) session_data.setUserLoggedIn(true);
|
||||
@@ -94,4 +131,5 @@ wtv-encrypted: ${(request_headers['wtv-encrypted']) ? wtvshared.parseBool(reques
|
||||
wtv-visit: ${gourl}`;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
var minisrv_service_file = true;
|
||||
|
||||
var ssid = session_data.cancelPendingTransfer();
|
||||
var transferCanceled = new clientShowAlert({
|
||||
'image': minisrv_config.config.service_logo,
|
||||
'message': "The transfer of this account to <b>" + ssid + "</b> has been cancelled.",
|
||||
'buttonlabel1': "Okay",
|
||||
'buttonaction1': "wtv-head-waiter:/login",
|
||||
'noback': true,
|
||||
}).getURL();
|
||||
var errpage = wtvshared.doRedirect(transferCanceled);
|
||||
var headers = errpage[0];
|
||||
var data = errpage[1];
|
||||
@@ -0,0 +1,24 @@
|
||||
var minisrv_service_file = true;
|
||||
|
||||
var result = session_data.finalizePendingTransfer();
|
||||
if (result) {
|
||||
var transferCanceled = new clientShowAlert({
|
||||
'image': minisrv_config.config.service_logo,
|
||||
'message': "The transfer is complete.",
|
||||
'buttonlabel1': "Login",
|
||||
'buttonaction1': "wtv-head-waiter:/login",
|
||||
'noback': true,
|
||||
}).getURL();
|
||||
} else {
|
||||
var transferCanceled = new clientShowAlert({
|
||||
'image': minisrv_config.config.service_logo,
|
||||
'message': "The transfer failed.",
|
||||
'buttonlabel1': "Try to Login",
|
||||
'buttonaction1': "wtv-head-waiter:/login",
|
||||
'noback': true,
|
||||
}).getURL();
|
||||
}
|
||||
|
||||
var errpage = wtvshared.doRedirect(transferCanceled);
|
||||
var headers = errpage[0];
|
||||
var data = errpage[1];
|
||||
@@ -3,7 +3,6 @@ session_data.setUserLoggedIn(false);
|
||||
|
||||
var challenge_response, challenge_header = "";
|
||||
if (socket.ssid !== null) session_data.switchUserID(0);
|
||||
|
||||
var gourl = "wtv-head-waiter:/ValidateLogin?";
|
||||
if (request_headers.query.relogin) gourl += "relogin=true";
|
||||
else if (request_headers.query.reconnect) gourl += "reconnect=true";
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
var minisrv_service_file = true;
|
||||
|
||||
// security
|
||||
if (session_data.user_id != 0 && session_data.user_id != request_headers.query.user_id) {
|
||||
var errpage = wtvshared.doErrorPage(400, "You are not authorized to transfer this account. Please log in as the primary user.");
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
}
|
||||
|
||||
if (!session_data.getUserPasswordEnabled()) {
|
||||
var passwordRequired = new clientShowAlert({
|
||||
'image': minisrv_config.config.service_logo,
|
||||
'message': "For security, you must first set a password on your account before you can transfer it.",
|
||||
'buttonlabel1': "Set Password",
|
||||
'buttonaction1': "wtv-setup:/edit-password",
|
||||
'buttonlabel2': "Cancel",
|
||||
'buttonaction2': "client:donothing",
|
||||
'noback': true,
|
||||
}).getURL();
|
||||
|
||||
var errpage = wtvshared.doRedirect(passwordRequired);
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
} else if (session_data.getUserPasswordEnabled() && session_data.user_id === 0) {
|
||||
headers = `200 OK
|
||||
Connection: Keep-Alive
|
||||
Content-Type: text/html
|
||||
wtv-expire-all: wtv-setup:/transfer-account
|
||||
wtv-noback-all: wtv-setup:/transfer-account`;
|
||||
data = `<HTML>
|
||||
<HEAD>
|
||||
<TITLE>
|
||||
Transfer your account
|
||||
</TITLE>
|
||||
<DISPLAY nosave skipback noscroll>
|
||||
</HEAD>
|
||||
<sidebar width=110> <table cellspacing=0 cellpadding=0 BGCOLOR="30364D">
|
||||
<tr>
|
||||
<td colspan=3 abswidth=104 absheight=4>
|
||||
<td rowspan=99 width=6 absheight=420 valign=top align=left>
|
||||
<img src="wtv-home:/ROMCache/Shadow.gif" width=6 height=420>
|
||||
<tr>
|
||||
<td abswidth=6>
|
||||
<td abswidth=92 absheight=76>
|
||||
<table href="wtv-home:/home" absheight=76 cellspacing=0 cellpadding=0>
|
||||
<tr>
|
||||
<td align=right>
|
||||
<img src="${minisrv_config.config.service_logo}" width=87 height=67>
|
||||
</table>
|
||||
<td abswidth=6>
|
||||
<tr><td absheight=5 colspan=3>
|
||||
<table cellspacing=0 cellpadding=0>
|
||||
<tr><td abswidth=104 absheight=2 valign=middle align=center bgcolor="1C1E28">
|
||||
<img src="wtv-home:/ROMCache/Spacer.gif" width=1 height=1>
|
||||
<tr><td abswidth=104 absheight=1 valign=top align=left>
|
||||
<tr><td abswidth=104 absheight=2 valign=top align=left bgcolor="4D5573">
|
||||
<img src="wtv-home:/ROMCache/Spacer.gif" width=1 height=1>
|
||||
</table>
|
||||
<tr><td absheight=37>
|
||||
<tr><td absheight=263 align=right colspan=3>
|
||||
<img src="ROMCache/AccountBanner.gif" width=53 height=263>
|
||||
<tr><td absheight=41>
|
||||
</table>
|
||||
</sidebar>
|
||||
<BODY BGCOLOR="#191919" TEXT="#44cc55" LINK="189CD6" VLINK="189CD6" HSPACE=0 VSPACE=0 FONTSIZE="large"
|
||||
>
|
||||
<table cellspacing=0 cellpadding=0>
|
||||
<tr>
|
||||
<td abswidth=14>
|
||||
<td abswidth=416 absheight=80 valign=center>
|
||||
<font size="+2" color="E7CE4A"><blackface><shadow>
|
||||
Transfer your account
|
||||
<td abswidth=20>
|
||||
<tr>
|
||||
<td>
|
||||
<td absheight=244 valign=top align=left>
|
||||
<form
|
||||
action="wtv-setup:/validate-transfer-account"
|
||||
>
|
||||
<P>
|
||||
<table cellspacing=0 cellpadding=0 border=0>
|
||||
<tr>
|
||||
<td align=left valign=top abswidth=400 colspan=2>
|
||||
<table cellspacing=0 cellpadding=0>
|
||||
<tr>
|
||||
<td align=left>
|
||||
Enter the SSID of the target box, and the current primary user's password.
|
||||
</table>
|
||||
<tr>
|
||||
<tr>
|
||||
</td>
|
||||
<td align=left valign=top width=6>
|
||||
</td>
|
||||
<table cellspacing=0 cellpadding=0>
|
||||
<tr><td absheight=15></td></tr>
|
||||
<tr>
|
||||
<td colspan=3 align=left>
|
||||
SSID<br>
|
||||
<INPUT noSubmit name="ssid" id="ssid" Value=""
|
||||
bgcolor=#444444 text=#ffdd33 cursor=#cc9933
|
||||
TYPE="text" ASCIIONLY
|
||||
SIZE="20"
|
||||
MAXLENGTH="16">
|
||||
<tr>
|
||||
<td height=6>
|
||||
<tr>
|
||||
<td colspan=3 align=left>
|
||||
<br>Primary User Password<br>
|
||||
<INPUT noSubmit name="password" id="password" Value=""
|
||||
bgcolor=#444444 text=#ffdd33 cursor=#cc9933
|
||||
TYPE="password" ASCIIONLY
|
||||
SIZE="20"
|
||||
MAXLENGTH="${minisrv_config.config.passwords.max_length}">
|
||||
</a>
|
||||
</table>
|
||||
</table>
|
||||
<td>
|
||||
<tr>
|
||||
<td absheight=7>
|
||||
<tr>
|
||||
<td>
|
||||
<td colspan=2 absheight=2 bgcolor="2B2B2B">
|
||||
<img src="wtv-home:/ROMCache/Spacer.gif" width=426 height=1>
|
||||
<tr>
|
||||
<td absheight=1>
|
||||
<tr>
|
||||
<td>
|
||||
<td colspan=2 absheight=2 bgcolor="0D0D0D">
|
||||
<img src="wtv-home:/ROMCache/Spacer.gif" width=426 height=1>
|
||||
<tr>
|
||||
<td absheight=4>
|
||||
</table>
|
||||
<table cellspacing=0 cellpadding=0>
|
||||
<tr>
|
||||
<td abswidth=430 valign=top align=right>
|
||||
<font color="#E7CE4A" size=-1><shadow>
|
||||
<input
|
||||
selected
|
||||
type=submit borderimage="file://ROM/Borders/ButtonBorder2.bif"
|
||||
value=Continue name="Continue" usestyle width=103>
|
||||
</shadow></font></form>
|
||||
<td abswidth=20>
|
||||
</table>
|
||||
</body>
|
||||
</html>`
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
var minisrv_service_file = true;
|
||||
|
||||
var wtvr = new WTVRegister(minisrv_config);
|
||||
|
||||
// security
|
||||
if (session_data.user_id != 0 && session_data.user_id != request_headers.query.user_id) {
|
||||
var errpage = wtvshared.doErrorPage(400, "You are not authorized to transfer this account. Please log in as the primary user.");
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
}
|
||||
|
||||
if (!request_headers.query.ssid || !request_headers.query.password) {
|
||||
var errpage = wtvshared.doErrorPage(400, "Invalid Parameter");
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
}
|
||||
|
||||
if (!session_data.getUserPasswordEnabled()) {
|
||||
var passwordRequired = new clientShowAlert({
|
||||
'image': minisrv_config.config.service_logo,
|
||||
'message': "For security, you must first set a password on your account before you can transfer it.",
|
||||
'buttonlabel1': "Set Password",
|
||||
'buttonaction1': "wtv-setup:/edit-password",
|
||||
'buttonlabel2': "Cancel",
|
||||
'buttonaction2': "client:donothing",
|
||||
'noback': true,
|
||||
}).getURL();
|
||||
|
||||
var errpage = wtvshared.doRedirect(passwordRequired);
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
} else if (session_data.getUserPasswordEnabled() && session_data.user_id === 0 && request_headers.query.ssid && request_headers.query.password) {
|
||||
validPassword = session_data.validateUserPassword(request_headers.query.password);
|
||||
if (!validPassword) {
|
||||
var errpage = wtvshared.doErrorPage(400, "Incorrect Password");
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
}
|
||||
else if (!wtvshared.checkSSID(request_headers.query.ssid)) {
|
||||
var errpage = wtvshared.doErrorPage(400, "The provided SSID is not valid. Only valid CRC validated SSIDs are available as a destination. Please check your input and try again.");
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
}
|
||||
else if (!wtvr.checkSSIDAvailable(request_headers.query.ssid)) {
|
||||
var errpage = wtvshared.doErrorPage(400, "The destination already has an account registered, or a transfer is already in progress. Please delete the account associated with the target SSID, or cancel the pending transfer, then try again.");
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
} else {
|
||||
var transferInitiated = new clientShowAlert({
|
||||
'image': minisrv_config.config.service_logo,
|
||||
'message': "Your account transfer is pending. Please connect to this server with the destination box. A prompt should appear instead of registration. To cancel the transfer, select <b>Cancel Transfer</b>, or simply reconnect with this box.",
|
||||
'buttonlabel1': "Cancel Transfer",
|
||||
'buttonaction1': "wtv-head-waiter:/cancel-account-transfer",
|
||||
'buttonlabel2': "Power Off",
|
||||
'buttonaction2': "client:poweroff",
|
||||
'noback': true,
|
||||
}).getURL();
|
||||
|
||||
session_data.setPendingTransfer(request_headers.query.ssid);
|
||||
session_data.setUserLoggedIn(false);
|
||||
var errpage = wtvshared.doRedirect(transferInitiated);
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
}
|
||||
} else {
|
||||
var errpage = wtvshared.doErrorPage(400, "Invalid Parameter");
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
}
|
||||
@@ -16,12 +16,17 @@ function getLegend() {
|
||||
headers = `200 OK
|
||||
Content-Type: text/html`;
|
||||
|
||||
data = `<html><head><display allowoffline switchtowebmode>
|
||||
<script src=/ROMCache/h.js></script><script src=/ROMCache/n.js></script>
|
||||
<script src=htv-cSetup.js></script>
|
||||
</head ><form name=t><input type=hidden name=h value=&pname;></form>
|
||||
<script>head('WebTV Character Map');</script>
|
||||
<br><br>
|
||||
data = `<html>
|
||||
<body>
|
||||
<display nosave nosend>
|
||||
<title>Character Map</title>
|
||||
<sidebar width=20%>
|
||||
<img src="wtv-tricks:/images/Favorites_bg.jpg">
|
||||
</sidebar>
|
||||
<body bgcolor="#191919" text="#44cc55" link="36d5ff" vlink="36d5ff" vspace=0>
|
||||
<br>
|
||||
<br>
|
||||
<h1>WebTV Character Map</h1>
|
||||
<table border=1>`;
|
||||
|
||||
|
||||
|
||||
@@ -1,79 +1,246 @@
|
||||
var minisrv_service_file = true;
|
||||
|
||||
var client_caps = null;
|
||||
let client_caps = null;
|
||||
|
||||
if (socket.ssid != null) {
|
||||
if (session_data.capabilities) {
|
||||
client_caps = session_data.capabilities;
|
||||
}
|
||||
}
|
||||
if (client_caps) {
|
||||
headers = `200 OK
|
||||
Content-Type: text/html`
|
||||
|
||||
var service_ip = minisrv_config.config.service_ip
|
||||
var client_label = "TODO";
|
||||
var boot_client_label = "TODO";
|
||||
var wtv_system_sysconfig_str = "TODO";
|
||||
headers = `200 OK
|
||||
Content-Type: text/html`;
|
||||
|
||||
const versionMap = [
|
||||
{ build: 0, vers: `1.0` },
|
||||
{ build: 200, vers: `1.1` },
|
||||
{ build: 300, vers: `1.2` },
|
||||
{ build: 1000, vers: `1.3` },
|
||||
{ build: 1090, vers: `1.3Retail` },
|
||||
{ build: 1127, vers: `1.4Retail` },
|
||||
{ build: 1150, vers: `1.4` },
|
||||
{ build: 2000, vers: `2.0` },
|
||||
{ build: 2100, vers: `2.0J` },
|
||||
{ build: 2150, vers: `2.0.1J` },
|
||||
{ build: 2200, vers: `2.0.1` },
|
||||
{ build: 2300, vers: `2.0.3` },
|
||||
{ build: 2500, vers: `2.0.5` },
|
||||
{ build: 3000, vers: `2.1` },
|
||||
{ build: 3065, vers: `2.1.1` },
|
||||
{ build: 3070, vers: `2.1.5` },
|
||||
{ build: 3250, vers: `2.1.7` },
|
||||
{ build: 3450, vers: `Springboard2.2` },
|
||||
{ build: 3600, vers: `2.0.2J` },
|
||||
{ build: 3700, vers: `2.2.1J` },
|
||||
{ build: 3800, vers: `2.2.5` },
|
||||
{ build: 5000, vers: `2.3` },
|
||||
{ build: 5200, vers: `Fiji` },
|
||||
{ build: 5500, vers: `2.3.5` },
|
||||
{ build: 5700, vers: `2.3.7` },
|
||||
{ build: 5750, vers: `2.3.8` },
|
||||
{ build: 5759, vers: `2.3.8-NAND` },
|
||||
{ build: 6000, vers: `3.0` }, // WNI actually did this, i'm pretty sure they gave up
|
||||
{ build: 32767, vers: `Private` },
|
||||
];
|
||||
|
||||
function getVersion(givenBuild) {
|
||||
return (versionMap.at(versionMap.findIndex(({ build }) => build > givenBuild) - 1).vers);
|
||||
}
|
||||
|
||||
const serviceIP = minisrv_config.config.service_ip;
|
||||
const zTitle = `WebTV Services, (${minisrv_version_string})`;
|
||||
|
||||
const systemVersion = session_data.get("wtv-system-version");
|
||||
const bootromVersion = session_data.get("wtv-client-bootrom-version");
|
||||
const SSID = wtvshared.filterSSID(
|
||||
session_data.get("wtv-client-serial-number")
|
||||
);
|
||||
const romType = session_data.get("wtv-client-rom-type");
|
||||
const chipVersionStr =
|
||||
"0x0" + parseInt(session_data.get("wtv-system-chipversion")).toString(16);
|
||||
const sysConfigHex =
|
||||
"0x" + parseInt(session_data.get("wtv-system-sysconfig")).toString(16);
|
||||
const capabilitiesTable = new WTVClientCapabilities().capabilities_table;
|
||||
|
||||
|
||||
var wtv_system_version = session_data.get("wtv-system-version");
|
||||
var wtv_client_bootrom_version = session_data.get("wtv-client-bootrom-version");
|
||||
var wtv_client_serial_number = wtvshared.filterSSID(session_data.get("wtv-client-serial-number"));
|
||||
var wtv_client_rom_type = session_data.get("wtv-client-rom-type");
|
||||
var wtv_system_chipversion_str = session_data.get("wtv-system-chipversion");
|
||||
var wtv_system_sysconfig_hex = parseInt(session_data.get("wtv-system-sysconfig")).toString(16);
|
||||
// halen's sysconfig/chipversion stuff
|
||||
const soloVersion = (chipVersionStr & 0xf00000) >> 0x14;
|
||||
const soloFab = (chipVersionStr & 0xf0000) >> 0x10;
|
||||
const boardType = (sysConfigHex & 0x7000) >> 0xc;
|
||||
const boardRev = (sysConfigHex & 0xf00) >> 8;
|
||||
const boardRevB = (sysConfigHex & 0xf0) >> 4;
|
||||
|
||||
var capabilities_table = new WTVClientCapabilities().capabilities_table;
|
||||
// determine box ASIC type
|
||||
switch (chipVersionStr >> 0x18) {
|
||||
case 1:
|
||||
chip = "FIDO1";
|
||||
break;
|
||||
case 3:
|
||||
chip = `SOLO-${soloVersion}, fab ${soloFab}`;
|
||||
break;
|
||||
case 4:
|
||||
chip = `SOLO2-${soloVersion}, fab ${soloFab}`; // don't know much about this one
|
||||
break;
|
||||
default:
|
||||
chip = "?";
|
||||
}
|
||||
|
||||
// ========================= LC2 SYSCONFIG DECODE START =========================
|
||||
|
||||
// determine box video type
|
||||
if ((sysConfigHex & 8) == 0) video = "NTSC";
|
||||
else video = "PAL";
|
||||
|
||||
data = `<html>
|
||||
// determine box storage type
|
||||
if ((sysConfigHex & 4) == 0) storage = "disk";
|
||||
else storage = "flash";
|
||||
|
||||
// determine box CPU endianness
|
||||
if ((sysConfigHex & 0x80000) == 0) endianness = "little";
|
||||
else endianness = "big";
|
||||
|
||||
// determine box CPU type
|
||||
if ((sysConfigHex & 0x100000) == 0) cpu = 5230;
|
||||
else cpu = 4640;
|
||||
|
||||
// determine box CPU clock multiplier
|
||||
if ((sysConfigHex & 0x20000) == 0) cpuMult = 3;
|
||||
else cpuMult = 2;
|
||||
|
||||
// determine smartcard 0 support
|
||||
if ((sysConfigHex & 0x400000) == 0) sc0 = "supported";
|
||||
else sc0 = "not supported";
|
||||
|
||||
//determine smartcard 1 support
|
||||
if ((sysConfigHex & 0x200000) == 0) sc1 = "supported";
|
||||
else sc1 = "not supported";
|
||||
|
||||
// ========================= FCS SYSCONFIG DECODE START =========================
|
||||
|
||||
/* "I don't even know how it works."
|
||||
-Bruce Leak, Thursday, October 12, 1995 1:53:28 AM */
|
||||
|
||||
// determine box CPU output bufs
|
||||
if ((sysConfigHex & 0x2000) == 0) outputBufs = 100;
|
||||
else outputBufs = 50;
|
||||
|
||||
// determine box SGRAM speed
|
||||
function getSGSpeed() {
|
||||
let SGRAMand = sysConfigHex & 0xc00000;
|
||||
if (SGRAMand == 0x400000) return 66;
|
||||
else if (0x400000 < SGRAMand)
|
||||
if (SGRAMand == 0x800000) return 77;
|
||||
else if (SGRAMand == 0xc00000) return 83; // potentially incorrect but looks like it should return 83MHz on known existing hardware
|
||||
else if (SGRAMand == 0) return 100;
|
||||
}
|
||||
|
||||
// determine box audio chip type
|
||||
if ((sysConfigHex & 0xc0000) == 0xc0000) audio = "AKM4310/4309";
|
||||
else audio = "Unknown";
|
||||
|
||||
// determine box audio clock source
|
||||
if ((sysConfigHex & 0x20000) == 0) audioClk = "SPOT";
|
||||
else audioClk = "External";
|
||||
|
||||
// determine box video chip
|
||||
function getVideoChip() {
|
||||
let videoChipAnd = sysConfigHex & 0x600;
|
||||
|
||||
if (videoChipAnd == 0x200) return "Bt851";
|
||||
else if (videoChipAnd < 0x201 && videoChipAnd !== 0) return "Unknown";
|
||||
else if (videoChipAnd == 0x400) return "Bt852";
|
||||
else return "Philips7187/Bt866";
|
||||
}
|
||||
|
||||
// determine box video type
|
||||
if ((sysConfigHex & 0x800) == 0) videoB = "PAL";
|
||||
else videoB = "NTSC";
|
||||
|
||||
// determine box video clock source
|
||||
if ((sysConfigHex & 0x10000) == 0) videoClk = "External";
|
||||
else videoClk = "SPOT";
|
||||
|
||||
// determine box board type
|
||||
switch (sysConfigHex & 0xc) {
|
||||
case 8:
|
||||
boardTypeB = "Trial";
|
||||
break;
|
||||
case 0xc:
|
||||
boardTypeB = "FCS";
|
||||
break;
|
||||
default:
|
||||
boardTypeB = "Unknown Type";
|
||||
}
|
||||
|
||||
// determine bank 0 type
|
||||
if (sysConfigHex < 0) bank0Type = "Mask";
|
||||
else bank0Type = "Flash";
|
||||
|
||||
// determine bank 0 mode
|
||||
if ((sysConfigHex & 0x40000000) == 0) bank0Mode = "Normal";
|
||||
else bank0Mode = "PageMode";
|
||||
|
||||
// determine bank 1 type
|
||||
if ((sysConfigHex & 0x8000000) == 0) bank1Type = "Flash";
|
||||
else bank1Type = "Mask";
|
||||
|
||||
// determine bank 1 mode
|
||||
if ((sysConfigHex & 0x40000000) == 0) bank1Mode = "Normal";
|
||||
else bank1Mode = "PageMode";
|
||||
|
||||
data = `<html>
|
||||
<!--- *=* Copyright 1996, 1997 WebTV Networks, Inc. All rights reserved. --->
|
||||
<display nosave nosend skipback>
|
||||
<title>${minisrv_config.config.service_name} Info</title>
|
||||
|
||||
<sidebar width=20%>
|
||||
<img src="wtv-tricks:/images/About_bg.jpg">
|
||||
</sidebar>
|
||||
|
||||
<body bgcolor="#191919" text="#44cc55" link="36d5ff" vlink="36d5ff" vspace=0>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<h1>${minisrv_config.config.service_name} Info</h1>
|
||||
<table cellspacing=0 cellpadding=0><tr><td abswidth=10> <td colspan=3>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td height=20>
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Connected to:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>Mini Service
|
||||
<td valign=top>${minisrv_config.config.service_name} Service
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Host/Port:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>${service_ip}/${minisrv_config.services[service_name].port}
|
||||
<td valign=top>${serviceIP}/${minisrv_config.services[service_name].port}
|
||||
<tr>
|
||||
<td valign=top align=right width=150><shadow>Service:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>${minisrv_version_string}
|
||||
<td valign=top>${zTitle}
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Client:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>&vers; (Build ${wtv_system_version} [${client_label}])
|
||||
<td valign=top>&vers; (Build ${systemVersion} [${getVersion(systemVersion)}])
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Boot:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>&wtv-bootvers; (Build ${wtv_client_bootrom_version} [${boot_client_label}])
|
||||
<td valign=top>&wtv-bootvers; (Build ${bootromVersion} [${getVersion(bootromVersion)}])
|
||||
<tr>
|
||||
<td height=20)
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Silicon serial ID:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>${wtv_client_serial_number}
|
||||
<td valign=top>${SSID}
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Connected at:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>&rate;
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>POP Number:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>☎
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Client IP number:</shadow>
|
||||
<td width=10>
|
||||
@@ -87,16 +254,7 @@ Content-Type: text/html`
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Subscriber Username:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>${session_data.getSessionData("subscriber_username")}
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Subscriber Contact:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>${session_data.getSessionData("subscriber_contact")} (${session_data.getSessionData("subscriber_contact_method")})`;
|
||||
} else {
|
||||
data += `<tr>
|
||||
<td valign=top align=right><shadow>Unregistered Guest:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>Yes`;
|
||||
<td valign=top>${session_data.getSessionData("subscriber_username")}`;
|
||||
}
|
||||
|
||||
data += `<tr>
|
||||
@@ -104,28 +262,22 @@ Content-Type: text/html`
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>ROM type:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>${wtv_client_rom_type}
|
||||
<td valign=top>${romType}
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Modem f/w (when available):</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>&modem;
|
||||
`;
|
||||
if (session_data.get("wtv-need-upgrade")) {
|
||||
data += `<tr>
|
||||
<td valign=top align=right><shadow>Mini-browser:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>Yes
|
||||
`;
|
||||
}
|
||||
data += `
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>Chip version:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>${wtv_system_chipversion_str} (TODO)
|
||||
<td valign=top>${chipVersionStr} (${chip})`;
|
||||
if (sysConfigHex !== "0xNaN")
|
||||
data += `
|
||||
<tr>
|
||||
<td valign=top align=right><shadow>SysConfig:</shadow>
|
||||
<td width=10>
|
||||
<td valign=top>0x${wtv_system_sysconfig_hex}
|
||||
<td valign=top>${sysConfigHex}`;
|
||||
data += `
|
||||
</table>
|
||||
|
||||
<table>
|
||||
@@ -139,33 +291,39 @@ Content-Type: text/html`
|
||||
<table>
|
||||
`;
|
||||
|
||||
|
||||
// start loop
|
||||
|
||||
Object.keys(capabilities_table).forEach(function (k) {
|
||||
Object.keys(capabilitiesTable).forEach(function (k) {
|
||||
data += `<tr>
|
||||
<td valign=top align=right>${capabilities_table[k][1]}
|
||||
<td valign=top align=right>${capabilitiesTable[k][1]}
|
||||
<td width=10>
|
||||
`;
|
||||
if (client_caps[capabilities_table[k][0]]) data += "<td valign=top>True\n";
|
||||
if (client_caps[capabilitiesTable[k][0]]) data += "<td valign=top>True\n";
|
||||
else data += "<td valign=top>False\n";
|
||||
});
|
||||
|
||||
// end loop
|
||||
// end loop
|
||||
|
||||
data += `
|
||||
data += `
|
||||
</table>
|
||||
|
||||
<pre>
|
||||
|
||||
|
||||
${wtv_system_sysconfig_str}
|
||||
<pre>`
|
||||
// TODO: finish FCS decode
|
||||
if (romType == "bf0app" && sysConfigHex !== "0xNaN") {
|
||||
data += `CPU Clk Mult = 2x Bus Clk, CPU output bufs @ ${outputBufs}%
|
||||
ROM Bank 0: ${bank0Type}, ${bank0Mode}, 120ns/60ns
|
||||
ROM Bank 1: ${bank1Type}, ${bank1Mode}, 150ns/75ns
|
||||
SGRAM: ${getSGSpeed()}MHz
|
||||
Audio: ${audio}, ${audioClk} Clk
|
||||
Video: ${getVideoChip()}, ${videoB}, ${videoClk} Clk
|
||||
Board: ${boardTypeB}, Rev = ${0xf - (boardRevB)} (${boardRevB})`;
|
||||
} else if (sysConfigHex !== "0xNaN") {
|
||||
data += `Video = ${video}, storage = ${storage}
|
||||
CPU type = ${cpu}, ${endianness}-endian
|
||||
CPU clock mult = ${cpuMult}x
|
||||
SmartCard 0 ${sc0}, SmartCard 1 ${sc1}
|
||||
Board type = ${boardType}, board rev = ${boardRev}`;
|
||||
}
|
||||
data += `
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
</body> </html>`;
|
||||
} else {
|
||||
var errpage = wtvshared.doErrorPage(400);
|
||||
headers = errpage[0];
|
||||
data = errpage[1];
|
||||
}
|
||||
</body></html>`;
|
||||
@@ -274,7 +274,7 @@ ${thisblock.title}
|
||||
block += "<td>"
|
||||
|
||||
block += `<CENTER>
|
||||
<IMG SRC="wtv-author:/${btoa(thisblock.photo)}">
|
||||
<IMG SRC="wtv-author:/${atob(thisblock.photo)}">
|
||||
</CENTER>
|
||||
</TD>
|
||||
</TR>
|
||||
@@ -470,8 +470,8 @@ this.fs.writeFile(destDir + this.wtvclient.session_store.subscriber_username + '
|
||||
break;
|
||||
|
||||
case "clipart":
|
||||
this.fs.mkdirSync(destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + "/" + btoa(thisblock.photo).substr(0, btoa(thisblock.photo).lastIndexOf("/")), { recursive: true })
|
||||
this.fs.copyFile('includes/ServiceVault/wtv-author/' + btoa(thisblock.photo), destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + "/" + btoa(thisblock.photo), (err) => {
|
||||
this.fs.mkdirSync(destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + "/" + atob(thisblock.photo).substr(0, atob(thisblock.photo).lastIndexOf("/")), { recursive: true })
|
||||
this.fs.copyFile('includes/ServiceVault/wtv-author/' + atob(thisblock.photo), destDir + this.wtvclient.session_store.subscriber_username + '/' + pagedata.publishname + "/" + atob(thisblock.photo), (err) => {
|
||||
if (err) throw err;
|
||||
});
|
||||
block = `<p><TABLE nocolor width=100%>`
|
||||
@@ -486,7 +486,7 @@ ${thisblock.title}
|
||||
</TD>
|
||||
</TR>`
|
||||
block += `<TR><td><CENTER>
|
||||
<IMG SRC="${btoa(thisblock.photo)}">
|
||||
<IMG SRC="${atob(thisblock.photo)}">
|
||||
</CENTER>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
@@ -52,6 +52,7 @@ class WTVClientSessionData {
|
||||
this.loginWhitelist = Object.assign([], this.lockdownWhitelist); // clone lockdown whitelist into login whitelist
|
||||
this.loginWhitelist.push("wtv-head-waiter:/choose-user");
|
||||
this.loginWhitelist.push("wtv-head-waiter:/password");
|
||||
this.loginWhitelist.push("wtv-head-waiter:/confirm-transfer");
|
||||
}
|
||||
|
||||
assignMailStore() {
|
||||
@@ -171,7 +172,6 @@ class WTVClientSessionData {
|
||||
var master_directory = this.getUserStoreDirectory(true);
|
||||
var account_data = [];
|
||||
var self = this;
|
||||
this.debug(this.ssid)
|
||||
this.fs.readdirSync(master_directory).forEach(f => {
|
||||
if (self.fs.lstatSync(master_directory + self.path.sep + f).isDirectory()) {
|
||||
if (f.substr(0, 4) == "user") {
|
||||
@@ -234,6 +234,67 @@ class WTVClientSessionData {
|
||||
return false;
|
||||
}
|
||||
|
||||
setPendingTransfer(ssid) {
|
||||
var pending_file = this.getUserStoreDirectory(true) + this.path.sep + "pending_transfer.json";
|
||||
var ssidobj = { "ssid": ssid, "type": "source" };
|
||||
this.fs.writeFileSync(pending_file, JSON.stringify(ssidobj));
|
||||
var new_userstore = this.getAccountStoreDirectory() + this.path.sep + ssidobj.ssid;
|
||||
if (!this.fs.existsSync(new_userstore)) this.fs.mkdirSync(new_userstore);
|
||||
var dest_pending_file = new_userstore + this.path.sep + "pending_transfer.json";
|
||||
var ssidobj = { "ssid": this.ssid, "type": "target" };
|
||||
this.fs.writeFileSync(dest_pending_file, JSON.stringify(ssidobj));
|
||||
}
|
||||
|
||||
cancelPendingTransfer() {
|
||||
var pending_file = this.getUserStoreDirectory(true) + this.path.sep + "pending_transfer.json";
|
||||
if (this.fs.existsSync(pending_file)) {
|
||||
var file = this.fs.readFileSync(pending_file)
|
||||
var ssidobj = JSON.parse(file);
|
||||
var new_userstore = this.getAccountStoreDirectory() + this.path.sep + ssidobj.ssid;
|
||||
var dest_pending_file = new_userstore + this.path.sep + "pending_transfer.json";
|
||||
if (this.fs.existsSync(dest_pending_file)) this.fs.unlinkSync(dest_pending_file);
|
||||
this.fs.unlinkSync(pending_file);
|
||||
if (this.fs.existsSync(new_userstore)) this.fs.rmdirSync(new_userstore);
|
||||
return ssidobj.ssid
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
finalizePendingTransfer() {
|
||||
var pending_file = this.getUserStoreDirectory(true) + this.path.sep + "pending_transfer.json";
|
||||
var file = this.fs.readFileSync(pending_file)
|
||||
var ssidobj = JSON.parse(file);
|
||||
if (ssidobj.type != "target") return false; // Only allow completion from target
|
||||
var source_ssid = ssidobj.ssid
|
||||
var old_account = this.getAccountStoreDirectory() + this.path.sep + source_ssid
|
||||
var new_account = this.getUserStoreDirectory(true);
|
||||
this.fs.cpSync(old_account, new_account, {
|
||||
filter: (source, _destination) => {
|
||||
return source != "pending_transfer.json";
|
||||
},
|
||||
recursive: true
|
||||
});
|
||||
this.fs.rmSync(old_account, { recursive: true })
|
||||
this.fs.rmSync(pending_file);
|
||||
return true;
|
||||
}
|
||||
|
||||
hasPendingTransfer(dtype = null) {
|
||||
var pending_file = this.getUserStoreDirectory(true) + this.path.sep + "pending_transfer.json";
|
||||
if (this.fs.existsSync(pending_file)) {
|
||||
var ssidobj = JSON.parse(this.fs.readFileSync(pending_file));
|
||||
console.log(ssidobj)
|
||||
if (dtype) {
|
||||
(ssidobj.type == dtype) ? ssidobj.ssid : false;
|
||||
}
|
||||
else {
|
||||
return ssidobj;
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a file in the user's file store
|
||||
* @param {string} path Relative path to User's file store
|
||||
@@ -631,14 +692,14 @@ class WTVClientSessionData {
|
||||
}
|
||||
|
||||
setSessionData(key, value) {
|
||||
if (key === null) throw ("ClientSessionData.set(): invalid key provided");
|
||||
if (key === null) throw ("ClientSessionData.setSessionData(): invalid key provided");
|
||||
if (typeof (this.session_store) === 'undefined') this.session_store = new Array();
|
||||
this.session_store[key] = value;
|
||||
this.SaveIfRegistered();
|
||||
}
|
||||
|
||||
deleteSessionData(key) {
|
||||
if (key === null) throw ("ClientSessionData.delete(): invalid key provided");
|
||||
if (key === null) throw ("ClientSessionData.deleteSessionData(): invalid key provided");
|
||||
delete this.session_store[key];
|
||||
this.SaveIfRegistered(true);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,19 @@ class WTVRegister {
|
||||
return regex.test(username);
|
||||
}
|
||||
|
||||
checkSSIDAvailable(ssid) {
|
||||
var directory = (directory) ? directory : this.session_store_dir + this.path.sep + "accounts";
|
||||
var available = true;
|
||||
if (this.fs.existsSync(directory)) {
|
||||
this.fs.readdirSync(directory).forEach(file => {
|
||||
if (file.toLowerCase() == ssid.toLowerCase()) {
|
||||
available = false;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
return available;
|
||||
}
|
||||
|
||||
checkUsernameAvailable(username, directory = null) {
|
||||
var self = this;
|
||||
|
||||
@@ -33,8 +33,7 @@ class WTVShared {
|
||||
String.prototype.reverse = function () {
|
||||
var splitString = this.split("");
|
||||
var reverseArray = splitString.reverse();
|
||||
var joinArray = reverseArray.join("");
|
||||
return joinArray;
|
||||
return reverseArray.join("");
|
||||
}
|
||||
}
|
||||
if (!String.prototype.hexEncode) {
|
||||
@@ -80,12 +79,11 @@ class WTVShared {
|
||||
|
||||
|
||||
parseConfigVars(s) {
|
||||
if (s.indexOf("%ServiceDeps%") >= 0) {
|
||||
if (s.indexOf("%ServiceDeps%") >= 0)
|
||||
return this.getServiceDep(s.replace("%ServiceDeps%", ""), true);
|
||||
} else {
|
||||
else
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* CryptoJS implmentation of Base64 Encoder
|
||||
@@ -119,12 +117,14 @@ class WTVShared {
|
||||
return new RegExp(src);
|
||||
} else if (src instanceof Date) {
|
||||
return new Date(src.getTime());
|
||||
} else if (Array.isArray(src)) {
|
||||
return src.map(item => this.cloneObj(item));
|
||||
} else if (typeof src === 'object' && src !== null) {
|
||||
const clone = {};
|
||||
Object.keys(src).forEach(k => {
|
||||
clone[k] = this.cloneObj(src[k]);
|
||||
var clone = null;
|
||||
if (Array.isArray(src)) clone = [];
|
||||
else clone = {};
|
||||
|
||||
var self = this;
|
||||
Object.keys(src).forEach((k) => {
|
||||
clone[k] = self.cloneObj(src[k]);
|
||||
});
|
||||
return clone;
|
||||
}
|
||||
@@ -349,7 +349,7 @@ class WTVShared {
|
||||
|
||||
utf8Decode(utf8String) {
|
||||
if (typeof utf8String !== 'string') {
|
||||
throw new TypeError('parameter <EFBFBD>utf8String<EFBFBD> is not a string');
|
||||
throw new TypeError("parameter 'utf8String' is not a string");
|
||||
}
|
||||
const textDecoder = new TextDecoder('utf-8');
|
||||
const bytes = new Uint8Array(utf8String.split('').map(c => c.charCodeAt(0)));
|
||||
@@ -617,7 +617,7 @@ class WTVShared {
|
||||
* @returns {string} Random string
|
||||
*/
|
||||
generatePassword(len, simple = false) {
|
||||
return this.generateString(len, (simple) ? null : '!@#$%&()[]-_+=?.');
|
||||
return this.generateString(len, (simple) ? '' : '!@#$%&()[]-_+=?.');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -749,7 +749,7 @@ class WTVShared {
|
||||
*/
|
||||
filterSSID(obj) {
|
||||
var new_obj = false;
|
||||
if (this.minisrv_config && this.minisrv_config.config.hide_ssid_in_logs) {
|
||||
if (this.minisrv_config.config.hide_ssid_in_logs) {
|
||||
if (typeof obj === "string") {
|
||||
return this.censorSSID(obj);
|
||||
} else if (typeof obj === "object" && obj !== null) {
|
||||
@@ -765,9 +765,8 @@ class WTVShared {
|
||||
|
||||
|
||||
filterRequestLog(obj) {
|
||||
if (this.minisrv_config.config.filter_passwords_in_logs && obj.query) {
|
||||
const passwordRegex = /(^pass$|passw(or)?d)/i;
|
||||
let newobj = this.cloneObj(obj); // Clone the object once at the beginning
|
||||
var newobj = this.cloneObj(obj); // Clone the object once at the beginning
|
||||
|
||||
if (newobj.query) {
|
||||
Object.keys(newobj.query).forEach((k) => {
|
||||
@@ -777,13 +776,9 @@ class WTVShared {
|
||||
});
|
||||
}
|
||||
delete newobj.raw_headers;
|
||||
|
||||
return newobj;
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
|
||||
decodePostData(obj) {
|
||||
@@ -974,6 +969,11 @@ class WTVShared {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a 302 redirect and returns the headers/data
|
||||
* @param {any} url
|
||||
* @returns [headers, data]
|
||||
*/
|
||||
doRedirect(url) {
|
||||
var headers = []
|
||||
headers['Status'] = "302 Moved";
|
||||
@@ -984,7 +984,7 @@ class WTVShared {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an error message and sends it to the client
|
||||
* Creates an error message and returns the headers/data
|
||||
* @param {number} code HTTP Error Code
|
||||
* @param {string} data Optinal Custom Error Message
|
||||
* @param {string} details Optional extra error information
|
||||
@@ -1000,7 +1000,7 @@ class WTVShared {
|
||||
data += "<br>Details:<br>" + details;
|
||||
}
|
||||
|
||||
let headers = `${code} ${message}\n`;
|
||||
let headers = `Status: ${(pc_mode) ? 'HTTP/1.1' : ''} ${code} ${message}\n`;
|
||||
headers += "Content-Type: text/html\n";
|
||||
|
||||
if (wtv_reset && !pc_mode) {
|
||||
@@ -1075,12 +1075,16 @@ class WTVShared {
|
||||
return path;
|
||||
}
|
||||
|
||||
|
||||
unpackCompressedB64(data) {
|
||||
var data_buf = (typeof data === 'object') ? Buffer.from(data.toString('ascii'), 'base64') : Buffer.from(data, 'base64');
|
||||
return this.zlib.inflateSync(data_buf, { finishFlush: this.zlib.Z_SYNC_FLUSH }).toString('ascii');
|
||||
}
|
||||
|
||||
/**
|
||||
* Compresses data and converts it to a base64 string
|
||||
* @param {any} data
|
||||
* @returns {string} base64 string
|
||||
*/
|
||||
packCompressedB64(data) {
|
||||
return this.zlib.deflateSync(data, { 'level': 9 }).toString('base64');
|
||||
}
|
||||
@@ -1176,6 +1180,12 @@ class WTVShared {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a key in an object regardless of its case
|
||||
* @param {string} key Key to find
|
||||
* @param {obj} obj Object to search
|
||||
* @returns {string|null} The found key or null if not found
|
||||
*/
|
||||
getCaseInsensitiveKey(key, obj) {
|
||||
const foundKey = Object.keys(obj).find(k => k.toLowerCase() === key.toLowerCase());
|
||||
return foundKey || null;
|
||||
@@ -1191,6 +1201,17 @@ class clientShowAlert {
|
||||
noback = null;
|
||||
image = null;
|
||||
|
||||
/**
|
||||
* User-friendly client:showalert generation
|
||||
* @param {string} image Image URL
|
||||
* @param {string} message Alert Message (HTML Allowed)
|
||||
* @param {string} buttonlabel1 Button 1 Label
|
||||
* @param {string} buttonaction1 Button 1 Action
|
||||
* @param {string} buttonlabel2 Button 2 Label
|
||||
* @param {string} buttonaction2 Button 2 Action
|
||||
* @param {string} noback If true, disables the back button
|
||||
* @param {string} sound Sound to play
|
||||
*/
|
||||
constructor(image = null, message = null, buttonlabel1 = null, buttonaction1 = null, buttonlabel2 = null, buttonaction2 = null, noback = null, sound = null) {
|
||||
this.message = message;
|
||||
this.buttonlabel1 = buttonlabel1;
|
||||
@@ -1212,6 +1233,10 @@ class clientShowAlert {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the client:showalert URL from the helper class
|
||||
* @returns {string} client:showalert URL
|
||||
*/
|
||||
getURL() {
|
||||
var url = "client:ShowAlert?";
|
||||
if (this.message) url += "message=" + escape(this.message) + "&";
|
||||
|
||||
@@ -95,6 +95,8 @@
|
||||
"wtv-head-waiter:/login",
|
||||
"wtv-head-waiter:/ValidateLogin",
|
||||
"wtv-head-waiter:/login-stage-two",
|
||||
"wtv-head-waiter:/complete-account-transfer",
|
||||
"wtv-head-waiter:/cancel-account-transfer",
|
||||
"wtv-head-waiter:/relogin",
|
||||
"wtv-head-waiter:/ROMCache/Spacer.gif",
|
||||
"wtv-head-waiter:/ROMCache/NameStrip.gif",
|
||||
@@ -167,7 +169,6 @@
|
||||
"news": {
|
||||
// for news:group.name urls
|
||||
"port": 1605,
|
||||
"nobind": true,
|
||||
"flags": "0x00000004"
|
||||
},
|
||||
"wtv-register": {
|
||||
@@ -233,14 +234,12 @@
|
||||
"wtvchat": {
|
||||
// wtvchat://server:port/channel passthrough (wni official)
|
||||
"port": 1630,
|
||||
"nobind": true,
|
||||
"flags": "0x00000004",
|
||||
"allow_double_slash": true // allows service:// .. don't enable on http or https
|
||||
},
|
||||
"irc": {
|
||||
// irc://server:port/channel passthrough (something wni should have had...)
|
||||
"port": 1630,
|
||||
"nobind": true,
|
||||
"flags": "0x00000004",
|
||||
"servicevault_dir": "wtvchat", // share service_vault with wtvchat
|
||||
"allow_double_slash": true // allows service:// .. don't enable on http or https
|
||||
@@ -354,6 +353,7 @@
|
||||
"privileged": true,
|
||||
"use_https": false,
|
||||
"force_https": false,
|
||||
"catchall_file_name": "indexer.js",
|
||||
"https_cert": {
|
||||
/* self-signed, can be replaced with another cert */
|
||||
// "domain": "mycooldomain.com",
|
||||
|
||||
29
zefie_wtvp_minisrv/package-lock.json
generated
29
zefie_wtvp_minisrv/package-lock.json
generated
@@ -1,15 +1,16 @@
|
||||
{
|
||||
"name": "zefie_wtvp_minisrv",
|
||||
"version": "0.9.58",
|
||||
"version": "0.9.59",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "zefie_wtvp_minisrv",
|
||||
"version": "0.9.58-pre",
|
||||
"version": "0.9.59-pre",
|
||||
"license": "GPL3",
|
||||
"dependencies": {
|
||||
"adm-zip": "^0.5.12",
|
||||
"cross-env": "^7.0.3",
|
||||
"crypto-js": "^4.2.0",
|
||||
"easy-crc": "0.0.2",
|
||||
"endianness": "^8.0.2",
|
||||
@@ -520,11 +521,28 @@
|
||||
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/cross-env": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
|
||||
"integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.1"
|
||||
},
|
||||
"bin": {
|
||||
"cross-env": "src/bin/cross-env.js",
|
||||
"cross-env-shell": "src/bin/cross-env-shell.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.14",
|
||||
"npm": ">=6",
|
||||
"yarn": ">=1"
|
||||
}
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "7.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
||||
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"path-key": "^3.1.0",
|
||||
@@ -1601,7 +1619,6 @@
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
@@ -2011,7 +2028,6 @@
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -2409,7 +2425,6 @@
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"shebang-regex": "^3.0.0"
|
||||
@@ -2422,7 +2437,6 @@
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -2685,7 +2699,6 @@
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"isexe": "^2.0.0"
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
{
|
||||
"name": "zefie_wtvp_minisrv",
|
||||
"version": "0.9.58",
|
||||
"version": "0.9.59",
|
||||
"description": "WebTV Service (WTVP) Emulation Server",
|
||||
"main": "app.js",
|
||||
"homepage": "https://github.com/zefie/zefie_wtvp_minisrv",
|
||||
"license": "GPL3",
|
||||
"scripts": {
|
||||
"start": "node app.js",
|
||||
"test": "node test.js"
|
||||
"test": "node test.js",
|
||||
"debug": "cross-env DEBUG=* node app.js"
|
||||
},
|
||||
"author": {
|
||||
"name": "zefie",
|
||||
@@ -27,6 +28,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"adm-zip": "^0.5.12",
|
||||
"cross-env": "^7.0.3",
|
||||
"crypto-js": "^4.2.0",
|
||||
"easy-crc": "0.0.2",
|
||||
"endianness": "^8.0.2",
|
||||
|
||||
@@ -8,4 +8,7 @@
|
||||
</CleanCommand>
|
||||
<StartupCommand>npm start</StartupCommand>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="UserServiceVault\http_pc\content\midi\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user