profoundjs 6.1.0 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/htdocs/profoundui/proddata/js/designer.js +3679 -3609
- package/htdocs/profoundui/proddata/js/key_management.js +16 -22
- package/htdocs/profoundui/proddata/js/rich-display-react-component.js +42 -42
- package/htdocs/profoundui/proddata/js/rich-display-vue-component.js +27 -27
- package/htdocs/profoundui/proddata/js/runtime.js +1385 -1384
- package/htdocs/profoundui/proddata/js/soapclient.js +389 -396
- package/package.json +8 -1
- package/profound.jse +1 -1
- package/setup/lic_client.js +9 -0
- package/setup/modules/puiscreens.json +6 -5
- package/setup/pjsdist.savf +0 -0
- package/setup/setup.js +80 -70
- package/views/cloud.css +19 -6
- package/views/key.ejs +32 -2
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{
|
|
5
5
|
"screen": {
|
|
6
6
|
"record format name": "signonscrn",
|
|
7
|
-
"onload": "if(window.puiMobileClient == null){\n if(window.device != null){\n if(window.device.platform != null){\n if(window.device.platform == \"iOS\"){\n applyProperty(\"btnBack\", \"visibility\", \"hidden\");\n applyProperty(\"btnBack\", \"field type\", \"
|
|
7
|
+
"onload": "if(window.puiMobileClient == null){\n if(window.device != null){\n if(window.device.platform != null){\n if(window.device.platform == \"iOS\"){\n applyProperty(\"btnBack\", \"visibility\", \"hidden\");\n applyProperty(\"btnBack\", \"field type\", \"graphic button\");\n applyProperty(\"SignOnButton\", \"width\", \"340px\");\n applyProperty(\"SignOnButton\", \"field type\", \"graphic button\");\n }\n } \n }\n}\npui.confirmOnClose = false;"
|
|
8
8
|
},
|
|
9
9
|
"items": [
|
|
10
10
|
{
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
"screen": {
|
|
167
167
|
"record format name": "errscrn",
|
|
168
168
|
"disable enter key": "true",
|
|
169
|
-
"onload": "\nif (pui[\"errorScreen\"] && pui[\"errorScreen\"][\"onload\"]) {\n pui[\"errorScreen\"][\"onload\"]();\n}\nelse {\n // Backwards compatibility code for when pui[\"errorScreen\"][\"onload\"]() is not available\n if ((window[\"puiMobileClient\"] == null && window[\"device\"] != null &&\n window[\"device\"][\"platform\"] == \"iOS\") ||\n pui.genie != null) {\n applyProperty(\"btnBack\", \"visibility\", \"hidden\");\n applyProperty(\"btnBack\", \"field type\", \"
|
|
169
|
+
"onload": "\nif (pui[\"errorScreen\"] && pui[\"errorScreen\"][\"onload\"]) {\n pui[\"errorScreen\"][\"onload\"]();\n}\nelse {\n // Backwards compatibility code for when pui[\"errorScreen\"][\"onload\"]() is not available\n if ((window[\"puiMobileClient\"] == null && window[\"device\"] != null &&\n window[\"device\"][\"platform\"] == \"iOS\") ||\n pui.genie != null) {\n applyProperty(\"btnBack\", \"visibility\", \"hidden\");\n applyProperty(\"btnBack\", \"field type\", \"graphic button\");\n }\n if (pui.genie != null) {\n applyProperty(\"NewSessionButton\", \"value\", pui.getLanguageText(\"runtimeText\", \"ok\"));\n applyProperty(\"NewSessionButton\", \"onclick\", \"pui.click();\");\n }\n pui.formatErrorText();\n pui.confirmOnClose = false;\n pui.shutdownOnClose = false;\n}\n"
|
|
170
170
|
},
|
|
171
171
|
"items": [
|
|
172
172
|
{
|
|
@@ -704,7 +704,7 @@
|
|
|
704
704
|
{
|
|
705
705
|
"screen": {
|
|
706
706
|
"record format name": "eojscrn",
|
|
707
|
-
"onload": "if(window.device != null){\n if(window.device.platform != null){\n if(window.device.platform == \"iOS\"){\n applyProperty(\"btnBack\", \"visibility\", \"hidden\");\n applyProperty(\"btnBack\", \"field type\", \"
|
|
707
|
+
"onload": "if(window.device != null){\n if(window.device.platform != null){\n if(window.device.platform == \"iOS\"){\n applyProperty(\"btnBack\", \"visibility\", \"hidden\");\n applyProperty(\"btnBack\", \"field type\", \"graphic button\");\n applyProperty(\"NewSessionButton2\", \"width\", \"335px\");\n applyProperty(\"NewSessionButton2\", \"field type\", \"graphic button\");\n }\n }\n}\n\npui.endOfSession();"
|
|
708
708
|
},
|
|
709
709
|
"items": [
|
|
710
710
|
{
|
|
@@ -774,7 +774,7 @@
|
|
|
774
774
|
{
|
|
775
775
|
"screen": {
|
|
776
776
|
"record format name": "timoutscrn",
|
|
777
|
-
"onload": "if(window.device != null){\n if(window.device.platform != null){\n if(window.device.platform == \"iOS\"){\n applyProperty(\"btnBack\", \"visibility\", \"hidden\");\n applyProperty(\"btnBack\", \"field type\", \"
|
|
777
|
+
"onload": "if(window.device != null){\n if(window.device.platform != null){\n if(window.device.platform == \"iOS\"){\n applyProperty(\"btnBack\", \"visibility\", \"hidden\");\n applyProperty(\"btnBack\", \"field type\", \"graphic button\");\n applyProperty(\"NewSessionButton3\", \"width\", \"335px\");\n applyProperty(\"NewSessionButton3\", \"field type\", \"graphic button\");\n }\n }\n}\n\npui.endOfSession(\"Your session has timed out.\");"
|
|
778
778
|
},
|
|
779
779
|
"items": [
|
|
780
780
|
{
|
|
@@ -988,7 +988,8 @@
|
|
|
988
988
|
"rjZeroFill": "false",
|
|
989
989
|
"dataType": "varchar",
|
|
990
990
|
"formatting": "Text",
|
|
991
|
-
"textTransform": "none"
|
|
991
|
+
"textTransform": "none",
|
|
992
|
+
"designValue": "@media screen { #_id_ > .puiresp { display:grid; } }"
|
|
992
993
|
},
|
|
993
994
|
"use viewport": "true",
|
|
994
995
|
"bottom": "0px",
|
package/setup/pjsdist.savf
CHANGED
|
Binary file
|
package/setup/setup.js
CHANGED
|
@@ -28,8 +28,8 @@ const uuidv4 = require("uuid").v4;
|
|
|
28
28
|
|
|
29
29
|
const IBMi = iutils.isIBMi();
|
|
30
30
|
|
|
31
|
-
let RED
|
|
32
|
-
let CYAN
|
|
31
|
+
let RED = "\x1b[31m";
|
|
32
|
+
let CYAN = "\x1b[36m";
|
|
33
33
|
let RESET = "\x1b[0m";
|
|
34
34
|
|
|
35
35
|
const logDir = path.join(os.tmpdir(), "profoundjs-" + uuidv4());
|
|
@@ -40,7 +40,6 @@ let SILENT_MODE = false;
|
|
|
40
40
|
|
|
41
41
|
(async () => {
|
|
42
42
|
try {
|
|
43
|
-
|
|
44
43
|
// Parse arguments.
|
|
45
44
|
const args = minimist(
|
|
46
45
|
process.argv.slice(2),
|
|
@@ -64,7 +63,7 @@ let SILENT_MODE = false;
|
|
|
64
63
|
"ibmi-instance-node-path",
|
|
65
64
|
"nodegit-version"
|
|
66
65
|
],
|
|
67
|
-
unknown: function(arg) {
|
|
66
|
+
unknown: function (arg) {
|
|
68
67
|
console.error("Unknown argument:", arg);
|
|
69
68
|
process.exit(1);
|
|
70
69
|
}
|
|
@@ -73,7 +72,7 @@ let SILENT_MODE = false;
|
|
|
73
72
|
|
|
74
73
|
// Show help and quit, if requested.
|
|
75
74
|
if (args["help"]) {
|
|
76
|
-
|
|
75
|
+
const HELP = `Usage: npm run setup -- [OPTION]
|
|
77
76
|
-c, --config-file=<file> Alternate config file.
|
|
78
77
|
-h, --help Print this help and exit.
|
|
79
78
|
--nodegit Install nodegit.
|
|
@@ -316,6 +315,10 @@ let SILENT_MODE = false;
|
|
|
316
315
|
log("call.js created.");
|
|
317
316
|
}
|
|
318
317
|
|
|
318
|
+
// Create lic_client.js
|
|
319
|
+
copyFile(path.join(__dirname, "lic_client.js"), deployDir, "utf8");
|
|
320
|
+
log("lic_client.js created.");
|
|
321
|
+
|
|
319
322
|
// Convert start.js to Promises, if necessary.
|
|
320
323
|
const convertStartJS = require("./convertStartJS.js");
|
|
321
324
|
if (convertStartJS(path.join(deployDir, "start.js"))) {
|
|
@@ -326,7 +329,7 @@ let SILENT_MODE = false;
|
|
|
326
329
|
if (IBMi) {
|
|
327
330
|
log("");
|
|
328
331
|
if (args["ibmi-connector-library"] || args["ibmi-instance"] !== undefined) {
|
|
329
|
-
|
|
332
|
+
const portNumber = config.port || 8081;
|
|
330
333
|
let connectorLibrary = "*NONE";
|
|
331
334
|
let connectorIASP;
|
|
332
335
|
if (args["ibmi-connector-library"]) {
|
|
@@ -350,7 +353,7 @@ let SILENT_MODE = false;
|
|
|
350
353
|
}
|
|
351
354
|
}
|
|
352
355
|
// First, try copying the save file
|
|
353
|
-
|
|
356
|
+
let success = runCommand("CPYFRMSTMF FROMSTMF('" + __dirname + "/pjsdist.savf') TOMBR('/QSYS.LIB/QGPL.LIB/PJSDIST.FILE') MBROPT(*REPLACE)");
|
|
354
357
|
if (!success) {
|
|
355
358
|
logError("Unable to create installer save file.");
|
|
356
359
|
die();
|
|
@@ -366,13 +369,15 @@ let SILENT_MODE = false;
|
|
|
366
369
|
die();
|
|
367
370
|
}
|
|
368
371
|
// Now, try running PJSINSTALL
|
|
369
|
-
|
|
370
|
-
if (connectorLibrary != "*NONE")
|
|
372
|
+
let command = "QGPL/PJSINSTALL CONNLIB(" + connectorLibrary + ")";
|
|
373
|
+
if (connectorLibrary != "*NONE") {
|
|
371
374
|
command += " CONNIASP(" + connectorIASP + ") CONNHOST('localhost') CONNPORT(" + portNumber + ")";
|
|
375
|
+
}
|
|
372
376
|
command += " SVRNAME(" + svrname + ")";
|
|
373
|
-
if (svrname != "*NONE")
|
|
377
|
+
if (svrname != "*NONE") {
|
|
374
378
|
command += " SVRDIR('" + deployDir + "') " +
|
|
375
379
|
"SVRAUTO(" + ((autostart) ? "*YES" : "*NO") + ") CCSID(" + ccsid + ") NODEPATH('" + nodePath + "')";
|
|
380
|
+
}
|
|
376
381
|
success = runCommand(command, "-Ke");
|
|
377
382
|
// Clean up program and save file
|
|
378
383
|
log("");
|
|
@@ -402,7 +407,6 @@ let SILENT_MODE = false;
|
|
|
402
407
|
}
|
|
403
408
|
}
|
|
404
409
|
log(`\n${CYAN}Profound.js installation complete.${RESET}\n`);
|
|
405
|
-
|
|
406
410
|
}
|
|
407
411
|
catch (error) {
|
|
408
412
|
logError(error);
|
|
@@ -410,26 +414,26 @@ let SILENT_MODE = false;
|
|
|
410
414
|
}
|
|
411
415
|
})();
|
|
412
416
|
|
|
413
|
-
function log(...args) {
|
|
417
|
+
function log (...args) {
|
|
414
418
|
console.log(...args);
|
|
415
419
|
logToFile(...args);
|
|
416
420
|
}
|
|
417
421
|
|
|
418
|
-
function logError(...args) {
|
|
422
|
+
function logError (...args) {
|
|
419
423
|
console.error(...args);
|
|
420
424
|
logToFile(...args);
|
|
421
425
|
}
|
|
422
426
|
|
|
423
|
-
function logToFile(...args) {
|
|
427
|
+
function logToFile (...args) {
|
|
424
428
|
if (SILENT_MODE) {
|
|
425
429
|
return;
|
|
426
430
|
}
|
|
427
|
-
let output = `${util.format(...args)}\n`;
|
|
431
|
+
let output = `${util.format(...args)}\n`; // Mimic console.log().
|
|
428
432
|
output = output.replace(/\x1b\[[0-9]+m/g, ""); // Strip terminal escape codes for colors.
|
|
429
433
|
fs.writeFileSync(logFile, output, { flag: "a" });
|
|
430
434
|
}
|
|
431
435
|
|
|
432
|
-
function die() {
|
|
436
|
+
function die () {
|
|
433
437
|
logError(`\n${RED}Profound.js installation failed.${RESET}`);
|
|
434
438
|
if (!SILENT_MODE) {
|
|
435
439
|
console.error(`${RED}See installation log:${RESET} ${logPath}\n`);
|
|
@@ -437,12 +441,12 @@ function die() {
|
|
|
437
441
|
process.exit(1);
|
|
438
442
|
}
|
|
439
443
|
|
|
440
|
-
function copyDir(dir, destinationDir) {
|
|
444
|
+
function copyDir (dir, destinationDir) {
|
|
441
445
|
const dirName = path.basename(dir);
|
|
442
446
|
fs.mkdirSync(path.join(destinationDir, dirName));
|
|
443
447
|
const files = fs.readdirSync(dir);
|
|
444
|
-
files.forEach(function(file, index) {
|
|
445
|
-
if(fs.lstatSync(path.join(dir, file)).isDirectory()) { // recurse
|
|
448
|
+
files.forEach(function (file, index) {
|
|
449
|
+
if (fs.lstatSync(path.join(dir, file)).isDirectory()) { // recurse
|
|
446
450
|
copyDir(path.join(dir, file), path.join(destinationDir, dirName));
|
|
447
451
|
}
|
|
448
452
|
else {
|
|
@@ -451,20 +455,24 @@ function copyDir(dir, destinationDir) {
|
|
|
451
455
|
});
|
|
452
456
|
}
|
|
453
457
|
|
|
454
|
-
function copyFile(file, destination, type) {
|
|
458
|
+
function copyFile (file, destination, type) {
|
|
455
459
|
if (type == null) type = "binary";
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
460
|
+
let toFile;
|
|
461
|
+
if (directoryExists(destination)) {
|
|
462
|
+
toFile = path.join(destination, path.basename(file));
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
toFile = destination;
|
|
466
|
+
}
|
|
467
|
+
const content = fs.readFileSync(file, type);
|
|
461
468
|
fs.writeFileSync(toFile, content, type);
|
|
462
469
|
}
|
|
463
470
|
|
|
464
|
-
function createPuiscreens(deployDir) {
|
|
465
|
-
|
|
471
|
+
function createPuiscreens (deployDir) {
|
|
472
|
+
const targetPuiScreensFile = path.join(deployDir, "modules", "puiscreens.json");
|
|
473
|
+
function copyFileOldVersionIs (version, compareStr) {
|
|
466
474
|
compareStr = compareStr || "=";
|
|
467
|
-
log("Found Standard puiscreens.json file version "+compareStr+" "+version+", replacing with current version...");
|
|
475
|
+
log("Found Standard puiscreens.json file version " + compareStr + " " + version + ", replacing with current version...");
|
|
468
476
|
copyFile(path.join(__dirname, "modules", "puiscreens.json"), targetPuiScreensFile, "utf8");
|
|
469
477
|
log("puiscreens.json file was replaced.");
|
|
470
478
|
}
|
|
@@ -477,11 +485,15 @@ function createPuiscreens(deployDir) {
|
|
|
477
485
|
// 3. If it's not an official version, check if we have lower case User & Password. If not, then backup existing version to puiscreens_bak.json and install this official version.
|
|
478
486
|
// 4. Otherwise it's not an official version but should work OK. So leave existing puiscreens.json, and check if we already have a puiscreens_orig.json, and
|
|
479
487
|
// create it if not.
|
|
480
|
-
var targetPuiScreensFile = path.join(deployDir, "modules", "puiscreens.json");
|
|
481
488
|
if (fileExists(targetPuiScreensFile)) {
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
489
|
+
const data = fs.readFileSync(targetPuiScreensFile);
|
|
490
|
+
const checksum = crypto.createHash("sha512").update(data).digest("hex"); // sha512 best for 64-bit
|
|
491
|
+
let format = null;
|
|
492
|
+
let puiScreens;
|
|
493
|
+
let goodUser = false;
|
|
494
|
+
let goodPassword = false;
|
|
495
|
+
let goodSubmit = false;
|
|
496
|
+
let goodError = false;
|
|
485
497
|
|
|
486
498
|
switch (checksum) {
|
|
487
499
|
case "4fb38daa851aacd21cf3aeaa92304df4e0353cae2b6dab3a5fd53c0cf4d42875b5efadbb4bb29642cbff07bfdd8e1c7a9c107f582905f7fc798c3841e888ee61":
|
|
@@ -531,39 +543,38 @@ function createPuiscreens(deployDir) {
|
|
|
531
543
|
|
|
532
544
|
case "3aaab88d4cf922f01a09bab3424ecf81460c7679a6d51ecb0f187fdce97e627499128e9b8c46d83075098e7e8f7150b73936056b1accedff55a79c69d65cb20b":
|
|
533
545
|
// Note: Betas were considered pre-release versions. 6.0.0 is the release version; so 6.0.0 is newer than 6.0.0-beta.X
|
|
534
|
-
|
|
546
|
+
copyFileOldVersionIs("6.0.0");
|
|
547
|
+
break;
|
|
548
|
+
|
|
549
|
+
case "41a350ae45c7616fe1824fb236b48ab64ca6d0de1023946e16ef9de4eea804649ff13123fa4ce630bb93308c8312f75e12448bbe58e91802dc8b12cc27bfd051":
|
|
550
|
+
log("Found Standard puiscreens.json file version > 6.0.0, no need for update.");
|
|
535
551
|
break;
|
|
536
552
|
|
|
537
553
|
default:
|
|
538
|
-
|
|
554
|
+
puiScreens = JSON.parse(data);
|
|
539
555
|
log("Found Customized puiscreens.json file, analyzing contents...");
|
|
540
556
|
|
|
541
557
|
// We need to check the signon screen and make sure we have lower case bound fields
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
var itemHtml = format.items[j].html;
|
|
560
|
-
if (itemHtml && typeof itemHtml === "object") {
|
|
561
|
-
if (itemHtml.fieldName === "sserror") goodError = true;
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
if (goodUser && goodPassword && goodSubmit && goodError) break formats;
|
|
558
|
+
if (Array.isArray(puiScreens.formats)) {
|
|
559
|
+
format = puiScreens.formats.find(format => typeof format.screen["record format name"] === "string" && format.screen["record format name"].toLowerCase() === "signonscrn");
|
|
560
|
+
}
|
|
561
|
+
if (format) {
|
|
562
|
+
for (const j in format.items) {
|
|
563
|
+
const itemValue = format.items[j].value;
|
|
564
|
+
if (itemValue && typeof itemValue === "object") {
|
|
565
|
+
if (itemValue.fieldName === "ssuser") goodUser = true;
|
|
566
|
+
else if (itemValue.fieldName === "sspassword") goodPassword = true;
|
|
567
|
+
}
|
|
568
|
+
const itemResponse = format.items[j].response;
|
|
569
|
+
if (itemResponse && typeof itemResponse === "object") {
|
|
570
|
+
if (itemResponse.fieldName === "sssubmit") goodSubmit = true;
|
|
571
|
+
}
|
|
572
|
+
const itemHtml = format.items[j].html;
|
|
573
|
+
if (itemHtml && typeof itemHtml === "object") {
|
|
574
|
+
if (itemHtml.fieldName === "sserror") goodError = true;
|
|
565
575
|
}
|
|
566
|
-
|
|
576
|
+
|
|
577
|
+
if (goodUser && goodPassword && goodSubmit && goodError) break;
|
|
567
578
|
}
|
|
568
579
|
}
|
|
569
580
|
|
|
@@ -587,10 +598,10 @@ function createPuiscreens(deployDir) {
|
|
|
587
598
|
}
|
|
588
599
|
}
|
|
589
600
|
|
|
590
|
-
function directoryExists(dir) {
|
|
591
|
-
|
|
601
|
+
function directoryExists (dir) {
|
|
602
|
+
let exists = false;
|
|
592
603
|
try {
|
|
593
|
-
|
|
604
|
+
const stat = fs.statSync(dir);
|
|
594
605
|
if (stat && stat.isDirectory()) exists = true;
|
|
595
606
|
}
|
|
596
607
|
catch (err) {
|
|
@@ -599,10 +610,10 @@ function directoryExists(dir) {
|
|
|
599
610
|
return exists;
|
|
600
611
|
}
|
|
601
612
|
|
|
602
|
-
function fileExists(file) {
|
|
603
|
-
|
|
613
|
+
function fileExists (file) {
|
|
614
|
+
let exists = false;
|
|
604
615
|
try {
|
|
605
|
-
|
|
616
|
+
const stat = fs.statSync(file);
|
|
606
617
|
if (stat && stat.isFile()) exists = true;
|
|
607
618
|
}
|
|
608
619
|
catch (err) {
|
|
@@ -611,10 +622,9 @@ function fileExists(file) {
|
|
|
611
622
|
return exists;
|
|
612
623
|
}
|
|
613
624
|
|
|
614
|
-
function runCommand(command, switches) {
|
|
615
|
-
|
|
625
|
+
function runCommand (command, switches) {
|
|
616
626
|
log("Executing IBM i command: " + command);
|
|
617
|
-
|
|
627
|
+
const args = [command];
|
|
618
628
|
if (typeof switches == "string") {
|
|
619
629
|
args.unshift(switches);
|
|
620
630
|
}
|
|
@@ -632,7 +642,8 @@ function runCommand(command, switches) {
|
|
|
632
642
|
env: {
|
|
633
643
|
QIBM_USE_DESCRIPTOR_STDIO: "Y",
|
|
634
644
|
QIBM_MULTI_THREADED: "N" // Many IBM commands cannot run in multi-threaded mode...
|
|
635
|
-
|
|
645
|
+
}
|
|
646
|
+
};
|
|
636
647
|
|
|
637
648
|
const results = child_process.spawnSync("system", args, options);
|
|
638
649
|
|
|
@@ -648,8 +659,7 @@ function runCommand(command, switches) {
|
|
|
648
659
|
}
|
|
649
660
|
else {
|
|
650
661
|
logError("Process ended due to signal %s", signal);
|
|
651
|
-
logError(results);
|
|
662
|
+
logError(results); // show full results including detailed error
|
|
652
663
|
}
|
|
653
664
|
return false;
|
|
654
|
-
|
|
655
665
|
}
|
package/views/cloud.css
CHANGED
|
@@ -258,10 +258,23 @@
|
|
|
258
258
|
letter-spacing: .25px;
|
|
259
259
|
}
|
|
260
260
|
|
|
261
|
-
#_cloud_signin_button {
|
|
261
|
+
#_cloud_signin_button, #_cloud_signin_button_right {
|
|
262
262
|
margin-top: 15px;
|
|
263
|
-
|
|
264
|
-
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
@media (max-width: 575px) {
|
|
266
|
+
#_cloud_signin_button, #_cloud_signin_button_right {
|
|
267
|
+
width: 100%;
|
|
268
|
+
display:block;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
@media (min-width: 576px) {
|
|
272
|
+
#_cloud_signin_button, #_cloud_signin_button_right {
|
|
273
|
+
width: 47%;
|
|
274
|
+
}
|
|
275
|
+
#_cloud_signin_button_right {
|
|
276
|
+
float: right;
|
|
277
|
+
}
|
|
265
278
|
}
|
|
266
279
|
|
|
267
280
|
/*--- select template ---*/
|
|
@@ -602,9 +615,9 @@ span.pui-fa-brands-icons.fa-google {
|
|
|
602
615
|
}
|
|
603
616
|
|
|
604
617
|
._cloud_signin_col {
|
|
605
|
-
float: left;
|
|
606
|
-
width: 50%;
|
|
607
|
-
margin: auto;
|
|
618
|
+
/* float: left; */
|
|
619
|
+
/* width: 50%; */
|
|
620
|
+
/* margin: auto; */
|
|
608
621
|
padding: 0 40px;
|
|
609
622
|
margin-top: 6px;
|
|
610
623
|
box-sizing: border-box;
|
package/views/key.ejs
CHANGED
|
@@ -107,6 +107,21 @@
|
|
|
107
107
|
color: white;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
.pjs-key-page .floating-lic-info {
|
|
111
|
+
color: white;
|
|
112
|
+
font-size: 15px;
|
|
113
|
+
width: 100%;
|
|
114
|
+
padding: 10px 30px 10px 60px;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.pjs-key-page .floating-lic-info div.pl-uuid span {
|
|
118
|
+
letter-spacing: 1.0px;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.pjs-key-page .floating-lic-info div.fl-lic-verif span.fl-lic-verif-dta.warning {
|
|
122
|
+
color: #FF3F00;
|
|
123
|
+
}
|
|
124
|
+
|
|
110
125
|
.pjs-key-page .system-info {
|
|
111
126
|
padding-left: 30px;
|
|
112
127
|
padding-right: 30px;
|
|
@@ -353,6 +368,21 @@
|
|
|
353
368
|
</div>
|
|
354
369
|
<h1>License Key Management</h1>
|
|
355
370
|
</div>
|
|
371
|
+
<% if (typeof floating !== "undefined"){ %>
|
|
372
|
+
<div class="floating-lic-info">
|
|
373
|
+
<div class="pl-uuid"><span>Floating License UUID: </span><%= floating.uuid %></div>
|
|
374
|
+
<div class="fl-lic-verif"><span class="fl-lic-verif-lbl">Verified: </span>
|
|
375
|
+
<% if (floating.verified) { %>
|
|
376
|
+
<span class="fl-lic-verif-dta">yes</span>
|
|
377
|
+
<% } else { %>
|
|
378
|
+
<span class="fl-lic-verif-dta warning">no - <%= floating.verified_msg %></span>
|
|
379
|
+
<% } %>
|
|
380
|
+
</div>
|
|
381
|
+
<div class="pulse-ts-exp">
|
|
382
|
+
<span>Machine heartbeat pulse required by (UTC): </span><%= floating.pulse_exp %>
|
|
383
|
+
</div>
|
|
384
|
+
</div>
|
|
385
|
+
<% } %>
|
|
356
386
|
<div class="system-info">
|
|
357
387
|
<div>
|
|
358
388
|
<div class="machine-id"><span class="machine-id-label">Machine ID: </span>
|
|
@@ -408,7 +438,7 @@
|
|
|
408
438
|
<form method="post" action="/key">
|
|
409
439
|
<input type="hidden" name="apply" value="1" />
|
|
410
440
|
<div class="paste-key">
|
|
411
|
-
<textarea placeholder="Paste License Key Here" id="keyData" name="keyData" required></textarea>
|
|
441
|
+
<textarea placeholder="Paste License Key or Floating License Authorization Code Here" id="keyData" name="keyData" required></textarea>
|
|
412
442
|
</div>
|
|
413
443
|
<div class="apply-key">
|
|
414
444
|
<input type="submit" value="Apply Key" />
|
|
@@ -422,7 +452,7 @@
|
|
|
422
452
|
<label for="keyFile" />Or <span class="key-file-search">
|
|
423
453
|
<div class="key-file-search-div">Browse</div>
|
|
424
454
|
<input type="file" id="keyFile" name="keyFile" required onchange="displayKeyFileName(this);" />
|
|
425
|
-
</span> to select a <a href="https://docs.profoundlogic.com/x/_wLrAw">Key File</a></label>
|
|
455
|
+
</span> to select a <a href="https://docs.profoundlogic.com/x/_wLrAw">Key or Floating License Authorization Code File</a></label>
|
|
426
456
|
</div>
|
|
427
457
|
<div class="key-file">
|
|
428
458
|
<input class="key-file-to-upload" id="keyFileName" placeholder="Nothing to upload yet..." disabled="disabled" />
|