Line data Source code
1 : // Files for virtual filesystem
2 : // Autogenerated by makefile (webserver.mk)
3 : ///@ SP_EXCLUDE
4 : #include "SPWebVirtualFile.h"
5 : namespace STAPPLER_VERSIONIZED stappler::web {
6 :
7 0 : const char * getCompileDate() { return __DATE__ " " __TIME__; }
8 75 : Time getCompileUnixTime() { return SP_COMPILE_TIME; }
9 :
10 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/js/shell.js
11 : static VirtualFile
12 : _js_shell_js = VirtualFile::add("/js/shell.js", R"VirtualFile(var KawaiJson = function() {
13 : var init = false;
14 :
15 : var kawaiJson = {
16 : ontoggle: function (event) {
17 : var collapsed, target = event.target;
18 : if (event.target.className == 'collapser') {
19 : collapsed = target.parentNode.getElementsByClassName('collapsible')[0];
20 : if (collapsed.parentNode.classList.contains("collapsed"))
21 : collapsed.parentNode.classList.remove("collapsed");
22 : else
23 : collapsed.parentNode.classList.add("collapsed");
24 : }
25 : },
26 : addslashes: function (str) {
27 : return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
28 : },
29 : recursive: function (parent, json, isLast) {
30 : var ellipsis = document.createElement('span');
31 : ellipsis.className = "ellipsis";
32 : if (Array.isArray(json)) {
33 : this.addTextNode(parent, '[');
34 : parent.appendChild(ellipsis);
35 : }
36 : else if (typeof json === 'object' && json) {
37 : this.addTextNode(parent, '{');
38 : parent.appendChild(ellipsis);
39 : }
40 :
41 : var ul = document.createElement('ul');
42 : ul.className = "obj collapsible";
43 :
44 : if (json != null) {
45 : var keys = Object.keys(json);
46 : for (var keys = Object.keys(json), i = 0, end = keys.length; i < end; i++) {
47 : var key = keys[i];
48 : var li = document.createElement('li');
49 : var keySetted = true;
50 : if (!isNaN(parseFloat(key)) && isFinite(key)) {
51 : keySetted = false;
52 : }
53 : if (keySetted) {
54 : var keySpan = document.createElement('span');
55 : keySpan.className = "property";
56 : keySpan.innerHTML = '<span class="quote">"</span>' + key + '<span class="quote">"</span>';
57 : li.appendChild(keySpan);
58 : }
59 : var valSpan = document.createElement('span');
60 :
61 : if (typeof json[key] !== 'object' || json[key] == null) {
62 : if (keySetted)
63 : this.addTextNode(li, ': ');
64 : switch (typeof json[key]) {
65 : case 'boolean':
66 : valSpan.className = 'type-boolean';
67 : valSpan.innerHTML = json[key];
68 : break;
69 : case 'object':
70 : valSpan.className = 'type-null';
71 : valSpan.innerHTML = 'null';
72 : break;
73 : case 'number':
74 : valSpan.className = 'type-number';
75 : valSpan.innerHTML = json[key];
76 : break;
77 : case 'string':
78 : valSpan.className = 'type-string';
79 : valSpan.innerHTML = '<span class="quote">"</span>' + this.addslashes(json[key]) + '<span class="quote">"</span>';
80 : break;
81 : }
82 : li.appendChild(valSpan);
83 : if (i + 1 < end)
84 : this.addTextNode(li, ',');
85 : ul.appendChild(li);
86 : }
87 : else {
88 : var collapser = document.createElement('div');
89 : collapser.className = "collapser";
90 :
91 : if (Array.isArray(json[key])) {
92 : this.addTextNode(li, ': ');
93 : li.appendChild(collapser);
94 : this.recursive(li, json[key], i + 1 >= end);
95 : ul.appendChild(li);
96 : }
97 : else {
98 : if (keySetted)
99 : this.addTextNode(li, ': ');
100 : li.appendChild(collapser);
101 : this.recursive(li, json[key], i + 1 >= end);
102 : ul.appendChild(li);
103 : }
104 :
105 : }
106 : }
107 :
108 : if (Object.keys(json).length > 0)
109 : parent.appendChild(ul);
110 : }
111 :
112 : if (Array.isArray(json)) {
113 : if (!isLast) {
114 : this.addTextNode(parent, '],');
115 : }
116 : else {
117 : this.addTextNode(parent, ']');
118 : }
119 : }
120 : else if (typeof json === 'object' && json) {
121 : if (!isLast) {
122 : this.addTextNode(parent, '},');
123 : }
124 : else {
125 : this.addTextNode(parent, '}');
126 : }
127 : }
128 : },
129 : addTextNode: function (parent, text) {
130 : var el = document.createTextNode(text);
131 : parent.appendChild(el);
132 : },
133 : parse: function (container, json) {
134 : this.recursive(container, json, true);
135 : },
136 : };
137 :
138 : return function(container, json) {
139 : if (init == false) {
140 : document.body.addEventListener('click', kawaiJson.ontoggle, false);
141 : init = true;
142 : }
143 : kawaiJson.parse(container, json);
144 : };
145 : }();
146 :
147 : function escape(str) {
148 : var tagsToReplace = {
149 : '&': '&',
150 : '<': '<',
151 : '>': '>'
152 : };
153 : return str.replace(/[&<>]/g, function(tag) {
154 : return tagsToReplace[tag] || tag;
155 : });
156 : };
157 :
158 : function upload(file, url, name) {
159 : var xhr = new XMLHttpRequest();
160 : var data = new FormData();
161 : data.append(name, file);
162 :
163 : var output = document.getElementById("output");
164 : var node = document.createElement("p");
165 : node = output.insertBefore(node, output.firstChild);
166 : node.innerHTML = "Upload started";
167 :
168 : xhr.onload = xhr.onerror = function() {
169 : if (this.status == 200) {
170 : push(this.response);
171 : } else {
172 : push("Upload error: " + this.status);
173 : }
174 : output.removeChild(node);
175 : };
176 :
177 : xhr.upload.onprogress = function(event) {
178 : node.innerHTML = event.loaded + ' / ' + event.total;
179 : };
180 :
181 : xhr.open("POST", url, true);
182 : xhr.send(data);
183 : }
184 :
185 : function uploadWithData(data) {
186 : document.getElementById('fileSelector').click();
187 : }
188 :
189 : var ws;
190 : var wsaddress = ((window.location.protocol == "https:") ? "wss:"
191 : : "ws:")
192 : + "//" + window.location.host + window.location.pathname
193 : if ((typeof (WebSocket) == 'undefined')
194 : && (typeof (MozWebSocket) != 'undefined')) {
195 : WebSocket = MozWebSocket;
196 : }
197 : function send(input) {
198 : if (ws) {
199 : ws.send(input.value);
200 : input.value = "";
201 : }
202 : }
203 :
204 : function init(consoleTarget) {
205 : document.getElementById("main").style.visibility = "hidden";
206 : ShellHistory(document.getElementById("input"), send);
207 :
208 : var fileUpload = document.getElementById("fileSelector");
209 : fileUpload.addEventListener("change", function(event) {
210 : upload(event.target.files[0]);
211 : }, false);
212 :
213 : wsaddress = wsaddress + consoleTarget;
214 : }
215 :
216 : function push(data) {
217 : var output = document.getElementById("output");
218 : var node = document.createElement("p");
219 : if (data[0] == '{' || data[0] == '[') {
220 : KawaiJson(node, JSON.parse(data));
221 : } else if (data[0] == '<') {
222 : node.innerHTML = data;
223 : } else {
224 : node.innerHTML = escape(data);
225 : }
226 : output.insertBefore(node, output.firstChild);
227 : }
228 :
229 : function connect() {
230 : ws = new WebSocket(wsaddress);
231 : ws.onopen = function(event) {
232 : document.getElementById("main").style.visibility = "visible";
233 : document.getElementById("login").style.display = "none";
234 : document.getElementById("main").style.display = "block";
235 : document.getElementById("output").innerHTML = "";
236 : };
237 : ws.onmessage = function(event) {
238 : if (event.data[0] != ':') {
239 : push(event.data);
240 : } else if (event.data.startsWith(':upload:')) {
241 : uploadWithData(JSON.parse(event.data.substr(8)));
242 : }
243 : };
244 : ws.onerror = function(event) {
245 : console.log(event);
246 : };
247 : ws.onclose = function(event) {
248 : ws = null;
249 : console.log(event);
250 : document.getElementById("login").style.display = "block";
251 : document.getElementById("main").style.display = "none";
252 : }
253 : return false;
254 : }
255 :
256 : function closeSocket() {
257 : ws.close();
258 : return false;
259 : }
260 :
261 : function ShellHistory(node, callback) {
262 : var history = {
263 : log : [],
264 : pos : 0
265 : }
266 :
267 : history["add"] = function(str) {
268 : history.log[history.log.length] = str;
269 : history.pos = history.log.length;
270 : };
271 : history["next"] = function() {
272 : if (history.log.length == 0) {
273 : return "";
274 : }
275 : if (history.pos <= 0) {
276 : history.pos = -1;
277 : return "";
278 : }
279 : history.pos --;
280 : return history.log[history.pos];
281 : };
282 : history["prev"] = function() {
283 : if (history.log.length == 0) {
284 : return "";
285 : }
286 : if (history.pos >= history.log.length - 1) {
287 : history.pos = history.log.length;
288 : return "";
289 : }
290 : history.pos ++;
291 : return history.log[history.pos];
292 : };
293 :
294 : node.onkeydown = function(ev) {
295 : if (ev.keyCode == '38') {
296 : node.value = history.next();
297 : } else if (ev.keyCode == '40') {
298 : node.value = history.prev();
299 : } else if (ev.keyCode == '13') {
300 : if (node.value != "") {
301 : history.add(node.value);
302 : callback(node);
303 : }
304 : }
305 : }
306 : };
307 :
308 : function SaveEditorContent(editor) {
309 : var xhr = new XMLHttpRequest();
310 : xhr.open("POST", window.location.pathname, true);
311 :
312 : xhr.setRequestHeader("Content-type", "application/markdown");
313 :
314 : xhr.onreadystatechange = function() {//Вызывает функцию при смене состояния.
315 : if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
316 : var jsonResponse = JSON.parse(xhr.responseText);
317 : if (jsonResponse.OK) {
318 : window.location.reload();
319 : }
320 : }
321 : }
322 : xhr.send(editor.value());
323 : }
324 :
325 : var simplemde = null;
326 :
327 : function ToggleEditor() {
328 : var editor = document.getElementById("editblock")
329 : var source = document.getElementById("sourceblock")
330 :
331 : if (SimpleMDE) {
332 : var editorButtons = [
333 : "bold", "italic", "heading", "|", "code", "unordered-list", "ordered-list", "|", "link",
334 : {
335 : name: "toc",
336 : action: SimpleMDE.drawHorizontalRule,
337 : className: "fa fa-list-alt",
338 : title: "Insert TOC"
339 : },
340 : "|",
341 : {
342 : name: "save",
343 : action: function saveContent(editor) {
344 : SaveEditorContent(editor)
345 : },
346 : className: "fa fa-floppy-o",
347 : title: "Save",
348 : },
349 : {
350 : name: "cancel",
351 : action: function cancel(editor) {
352 : var editor = document.getElementById("editblock")
353 : var source = document.getElementById("sourceblock")
354 : if (!editor.classList.contains("editorclosed")) {
355 : editor.classList.add("editorclosed");
356 : if (simplemde != null) {
357 : simplemde.toTextArea();
358 : simplemde = null;
359 : }
360 : source.classList.remove("editorclosed");
361 : }
362 : },
363 : className: "fa fa-times",
364 : title: "Cancel",
365 : },
366 : ];
367 :
368 : if (editor.classList.contains("editorclosed")) {
369 : editor.classList.remove("editorclosed");
370 : if (simplemde == null) {
371 : simplemde = new SimpleMDE({
372 : element: document.getElementById("editor"),
373 : spellChecker: false,
374 : toolbar: editorButtons,
375 : insertTexts: {
376 : horizontalRule: ["{{TOC}}"],
377 : },
378 : indentWithTabs: true,
379 : tabSize: 4,
380 : renderingConfig: {
381 : codeSyntaxHighlighting: true
382 : }
383 : })
384 : }
385 : source.classList.add("editorclosed");
386 : } else {
387 : source.classList.remove("editorclosed");
388 : editor.classList.add("editorclosed");
389 : if (simplemde != null) {
390 : simplemde.toTextArea();
391 : simplemde = null;
392 : }
393 : }
394 : }
395 : return false;
396 : }
397 :
398 : function EditorDownShortcuts(e) {
399 : if (e.ctrlKey && e.which == 83) {
400 : e.stopPropagation();
401 : e.preventDefault();
402 : e.returnValue = false;
403 : e.cancelBubble = true;
404 : return false;
405 : }
406 : }
407 :
408 : function EditorUpShortcuts(e) {
409 : if (e.ctrlKey && e.which == 83) {
410 : if (simplemde != null) {
411 : SaveEditorContent(simplemde)
412 : }
413 : return false;
414 : } else if (e.ctrlKey && e.which == 69) {
415 : if (simplemde == null) {
416 : ToggleEditor()
417 : }
418 : return false;
419 : } else if (e.which == 27) {
420 : if (simplemde != null) {
421 : ToggleEditor()
422 : }
423 : return false;
424 : }
425 : }
426 :
427 : document.addEventListener('keydown', EditorDownShortcuts);
428 : document.addEventListener('keyup', EditorUpShortcuts);
429 :
430 : document.addEventListener('copy', (event) => {
431 : var data = document.getSelection();
432 :
433 : if (data.anchorNode.classList.contains('hljs-ln-line') || data.anchorNode.classList.contains('hljs-ln')) {
434 : var str = data.toString()
435 : str = str.replace(/\n\t\n/g, '\n');
436 : str = str.replace(/\n \n/g, '\n\n');
437 :
438 : event.clipboardData.setData('text', str);
439 : event.preventDefault();
440 : }
441 : });
442 : )VirtualFile");
443 :
444 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/css/kawaiJson.css
445 : static VirtualFile
446 : _css_kawaiJson_css = VirtualFile::add("/css/kawaiJson.css", R"VirtualFile(ul {
447 : list-style-type: none;
448 : padding: 0px;
449 : margin: 0px 0px 0px 26px;
450 : }
451 :
452 : li {
453 : position: relative;
454 : }
455 :
456 : .hoverable {
457 : transition: background-color .2s ease-out 0s;
458 : -webkit-transition: background-color .2s ease-out 0s;
459 : display: inline-block;
460 : }
461 :
462 : .hovered {
463 : transition-delay: .2s;
464 : -webkit-transition-delay: .2s;
465 : }
466 :
467 : .selected {
468 : outline-style: solid;
469 : outline-width: 1px;
470 : outline-style: dotted;
471 : }
472 :
473 : .collapsed>.collapsible {
474 : display: none;
475 : }
476 :
477 : .ellipsis {
478 : display: none;
479 : }
480 :
481 : .collapsed>.ellipsis {
482 : display: inherit;
483 : }
484 :
485 : .collapser {
486 : position: absolute;
487 : top: 1px;
488 : left: -1.5em;
489 : cursor: default;
490 : user-select: none;
491 : -webkit-user-select: none;
492 : }
493 :
494 : .status {
495 : position: fixed;
496 : left: 0px;
497 : bottom: 0px;
498 : min-width: 628px;
499 : border-color: #c2c2c2;
500 : border-top-width: 1px;
501 : border-right-width: 1px;
502 : border-bottom-width: 0px;
503 : border-left-width: 0px;
504 : border-style: solid;
505 : border-top-right-radius: 4px;
506 : height: 16px;
507 : padding-top: 2px;
508 : padding-bottom: 2px;
509 : padding-right: 7px;
510 : padding-left: 4px;
511 : font-family: sans-serif;
512 : font-size: 12px;
513 : opacity: 0;
514 : background-color: #d2d2f6;
515 : color: #696969;
516 : transition: opacity .2s ease-out;
517 : -webkit-transition: opacity .2s ease-out;
518 : user-select: none;
519 : -webkit-user-select: none;
520 : }
521 :
522 : .status:not(:empty ) {
523 : opacity: 1;
524 : }
525 :
526 : .toolbox {
527 : font-family: sans-serif;
528 : font-size: 13px;
529 : opacity: .25;
530 : background-color: #d2d2f6;
531 : position: fixed;
532 : right: 0px;
533 : top: 0px;
534 : border-color: #c2c2c2;
535 : border-bottom-width: 1px;
536 : border-left-width: 1px;
537 : border-top-width: 0px;
538 : border-right-width: 0px;
539 : border-style: solid;
540 : border-bottom-left-radius: 4px;
541 : padding-bottom: 3px;
542 : transition: opacity .2s ease-out;
543 : -webkit-transition: opacity .2s ease-out;
544 : cursor: default;
545 : user-select: none;
546 : -webkit-user-select: none;
547 : padding-left: 2px;
548 : }
549 :
550 : .toolbox:hover {
551 : opacity: 1;
552 : }
553 :
554 : .toolbox>* {
555 : padding-left: 3px;
556 : padding-right: 3px;
557 : }
558 :
559 : .toolbox>a {
560 : padding-left: 5px;
561 : }
562 :
563 : .toolbox>img {
564 : height: 14px;
565 : vertical-align: bottom;
566 : cursor: pointer;
567 : }
568 :
569 : #output {
570 : white-space: pre;
571 : font-family: monospace;
572 : }
573 :
574 : #output span {
575 : white-space: pre;
576 : font-family: monospace;
577 : }
578 :
579 : .property {
580 : font-weight: bold;
581 : }
582 :
583 : .type-null {
584 : color: gray;
585 : }
586 :
587 : .type-boolean {
588 : color: firebrick;
589 : }
590 :
591 : .type-number {
592 : color: blue;
593 : }
594 :
595 : .type-string {
596 : color: green;
597 : }
598 :
599 : .callback-function {
600 : color: gray;
601 : }
602 :
603 : .collapser:after {
604 : content: "-";
605 : }
606 :
607 : .collapsed > .collapser:after {
608 : content: "+";
609 : }
610 :
611 : .ellipsis:after {
612 : content: " … ";
613 : }
614 :
615 : .collapsible {
616 : margin-left: 2em;
617 : }
618 :
619 : .hoverable {
620 : padding-top: 1px;
621 : padding-bottom: 1px;
622 : padding-left: 2px;
623 : padding-right: 2px;
624 : border-radius: 2px;
625 : }
626 :
627 : .hovered {
628 : background-color: rgba(235, 238, 249, 1);
629 : }
630 :
631 : .collapser {
632 : padding-right: 6px;
633 : padding-left: 6px;
634 : }
635 :
636 : .property > .quote { opacity: 0 }
637 : )VirtualFile");
638 :
639 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/css/md.css
640 : static VirtualFile
641 : _css_md_css = VirtualFile::add("/css/md.css", R"VirtualFile(.docs {
642 : padding: 12px 0;
643 : }
644 :
645 : .docs > .contents {
646 : width: 320px;
647 : border-left: 1px #ccc solid;
648 : float: right;
649 : background: #fff;
650 : }
651 :
652 : .docs > .doc {
653 : margin-right: 320px;
654 : }
655 :
656 : .source {
657 : padding-left: 16px;
658 : padding-right: 16px;
659 : }
660 :
661 : .docs pre {
662 : margin-top: 0.9rem;
663 : margin-bottom: 0.9rem;
664 : padding: 4px;
665 : background-color: #e0f2f1;
666 : overflow: scroll;
667 : -moz-tab-size: 4; /* Firefox */
668 : tab-size: 4;
669 : }
670 :
671 : .docs code {
672 : color: black;
673 : background-color: #e0f2f1;
674 : }
675 :
676 : .docs p, .docs h4, .docs h5, .docs h6 {
677 : font-family: "Roboto";
678 : margin-top: 0.4rem;
679 : margin-bottom: 0.4rem;
680 : font-size: 1.1rem;
681 : line-height: 1.6rem;
682 : color: #333;
683 : }
684 :
685 : .docs li {
686 : font-family: "Roboto";
687 : margin: 0.15rem;
688 : padding: 0.15rem;
689 : }
690 :
691 : .docs h1 {
692 : margin-top: 1.1rem;
693 : margin-bottom: 0.5rem;
694 : font-family: "Roboto";
695 : font-weight: 400;
696 : font-size: 1.6rem;
697 : color: #666;
698 : background-color: #e0f2f1;
699 : }
700 :
701 : .docs h2 {
702 : margin-top: 1.1rem;
703 : margin-bottom: 0.5rem;
704 : font-family: "Roboto";
705 : font-weight: 500;
706 : font-size: 1.4rem;
707 : color: #333;
708 : background-color: #e0f2f1;
709 : }
710 : .docs h3 {
711 : margin-top: 1.1rem;
712 : margin-bottom: 0.5rem;
713 : font-family: "Roboto";
714 : font-weight: 500;
715 : font-size: 1.3rem;
716 : color: #666;
717 : background-color: #e0f2f1;
718 : }
719 :
720 : .docs .contents h1 {
721 : font-size: 1.3rem;
722 : color: #999;
723 : }
724 :
725 : .docs .contents h2 {
726 : font-size: 1.2rem;
727 : color: #999;
728 : }
729 :
730 : .source a {
731 : margin: 0;
732 : }
733 :
734 : /* for block of numbers */
735 : .hljs-ln-numbers {
736 : user-select: none;
737 : text-align: center;
738 : color: #ccc;
739 : border-right: 1px solid #CCC;
740 : vertical-align: top;
741 : padding-right: 0.3rem !important;
742 : /* your custom style here */
743 : }
744 :
745 : .hljs-ln-code .hljs-ln-line {
746 : user-select: text;
747 : }
748 :
749 : table.hljs-ln {
750 : user-select: none;
751 : })VirtualFile");
752 :
753 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/css/style.css
754 : static VirtualFile
755 : _css_style_css = VirtualFile::add("/css/style.css", R"VirtualFile(html {
756 : font-size: 18px;
757 : }
758 :
759 : body {
760 : background: #aaa;
761 : margin: 0;
762 : padding: 0;
763 : }
764 :
765 : h6.components {
766 : font-family: "Roboto";
767 : margin: 0;
768 : padding: 0 0 0 1rem;
769 : font-weigth: bold;
770 : font-size: 0.9rem;
771 : color: #999;
772 : }
773 :
774 : span {
775 : font-family: "Roboto";
776 : }
777 :
778 : span.method {
779 : font-weight: bold;
780 : color: #666;
781 : }
782 :
783 : span.pattern {
784 : font-family: "monospace";
785 : color: #333;
786 : }
787 :
788 : .body {
789 : margin: 1% auto;
790 : padding: 4px;
791 : max-width: 1380px;
792 : width: 98%;
793 : background: #fff;
794 : box-shadow: 0 2px 8px #666;
795 : }
796 :
797 : .title {
798 : margin: 16px;
799 : border-bottom: 1px #ccc solid;
800 : display: flex;
801 : justify-content: space-between;
802 : }
803 :
804 : .title > h1 {
805 : font-family: "Roboto";
806 : font-size: 1.2rem;
807 : margin: 0;
808 : padding: 0;
809 : font-weight: 300;
810 : }
811 :
812 : .title > h1 > span.name {
813 : font-weight: 500;
814 : }
815 :
816 : .title > p.nav {
817 : text-align: right;
818 : font-family: "Roboto";
819 : font-size: 1.2rem;
820 : margin: 0;
821 : padding: 0;
822 : }
823 :
824 : a {
825 : font-family: "Roboto";
826 : margin: 6px;
827 : color: #00bfa5ff;
828 : font-weight: 500;
829 : font-size: 1.1rem;
830 : }
831 :
832 : .title > p.nav > span.id {
833 : color: #999;
834 : }
835 :
836 : .main {
837 : margin: 16px;
838 : }
839 :
840 : .main > form#setup > input {
841 : width: 160px;
842 : display: block;
843 : margin: 4px auto;
844 : padding: 0;
845 : }
846 :
847 : div.map {
848 : padding-left: 2rem;
849 : }
850 :
851 : div.map > p.components {
852 : padding: 0;
853 : margin: 0;
854 : }
855 :
856 : p.components > span.component {
857 : font-family: "Roboto";
858 : display: inline-block;
859 : background-color: #64ffda;
860 : outline: 1px #00bfa5 solid;
861 : padding: 2px 6px;
862 : margin: 4px;
863 : }
864 :
865 : p.components span.version {
866 : color: #999;
867 : }
868 :
869 : p.components > span.db {
870 : background-color: #ffd180;
871 : outline: 1px #e65100 solid;
872 : }
873 :
874 : p.components > span.root {
875 : background-color: #ea80fc;
876 : outline: 1px #6a1b9a solid;
877 : }
878 : p.components > span.rootserver {
879 : background-color: #eee;
880 : outline: 1px #999 solid;
881 : }
882 : p.components > span.map {
883 : background-color: #ccc;
884 : outline: 1px #999 solid;
885 : }
886 :
887 : p.components > span.scheme {
888 : background-color: #8c9eff;
889 : outline: 1px #304ffe solid;
890 : }
891 :
892 : #output p {
893 : margin: 0;
894 : padding: 0;
895 : white-space: pre-wrap;
896 : }
897 :
898 : .content {
899 : width: 99%;
900 : height: 1600px;
901 : padding-left: 10px;
902 : white-space: pre-wrap;
903 : font-family: monospace;
904 : -moz-tab-size: 4;
905 : }
906 :
907 : .key { font-weight: bold }
908 : .bool,.integer,.float { color: blue }
909 : .string,.bytes { color: green }
910 : .null { color: red }
911 : .key > .quote { opacity: 0 }
912 :
913 : .actions { }
914 :
915 : .delete {
916 : color: white;
917 : background: #d50000
918 : }
919 :
920 : .edit {
921 : color: white;
922 : background: #303f9f
923 : }
924 :
925 : .edit,.delete {
926 : opacity: 0.4;
927 : line-height: 3em;
928 : padding: 0.5em;
929 : text-decoration: none;
930 : border-radius: 0.5em;
931 : box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5);
932 : -webkit-user-select: none;
933 : -moz-user-select: none;
934 : -ms-user-select: none;
935 : -webkit-touch-callout: none;
936 : }
937 :
938 : .edit:hover,.delete:hover { opacity: 1.0 }
939 : .error { color: red }
940 :
941 : pre {
942 : margin: 0;
943 : padding: 0;
944 : }
945 :
946 : .code {
947 : font-family: monospace;
948 : margin: 0;
949 : padding: 0;
950 : -moz-tab-size: 4;
951 : }
952 :
953 : span.time {
954 : font-family: monospace;
955 : color: gray;
956 : }
957 :
958 : span.ip {
959 : font-family: monospace;
960 : color: blue;
961 : }
962 :
963 : span.server {
964 : font-weight: bold;
965 : }
966 :
967 : .headers {
968 : margin: 4px 0;
969 : overflow-x: scroll;
970 : background-color: #ddd;
971 : }
972 :
973 : .data {
974 : margin: 4px 0;
975 : overflow-x: scroll;
976 : background-color: #a7ffeb;
977 : }
978 : p.editbutton {
979 : text-align: right;
980 : }
981 : p.editbutton > a {
982 : font-size: 0.8rem;
983 : }
984 : .editorclosed {
985 : display: none;
986 : }
987 : .CodeMirror, .CodeMirror-scroll {
988 : min-height: 200px;
989 : }
990 : a.selected:before {
991 : content: "< ";
992 : }
993 : a.selected:after {
994 : content: " >";
995 : }
996 :
997 : form input[type=submit] {
998 : outline:none;
999 : border:none;
1000 : text-transform: uppercase;
1001 : background-color: #607d8b;
1002 : padding: 6px 12px;
1003 : color: white;
1004 : }
1005 :
1006 : form input[type=text] {
1007 : width: 140px;
1008 : display: inline;
1009 : }
1010 :
1011 : form input {
1012 : display: block;
1013 : padding: 2px 0;
1014 : margin: 4px;
1015 : border: none;
1016 : border-bottom: 2px solid #bbb;
1017 : }
1018 :
1019 : form {
1020 : background-color: #e0f2f1;
1021 : padding: 4px;
1022 : margin: 4px;
1023 : }
1024 : )VirtualFile");
1025 :
1026 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/index.html
1027 : static VirtualFile
1028 : _html_index_html = VirtualFile::add("/html/index.html", R"VirtualFile(<!DOCTYPE html>
1029 : <html><head>
1030 : <title>Index</title>
1031 : </head>
1032 : <body>
1033 : Index.html
1034 : </body></html>)VirtualFile");
1035 :
1036 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/components.pug
1037 : static VirtualFile
1038 : _html_components_pug = VirtualFile::add("/html/components.pug", R"VirtualFile(mixin components
1039 : p.components
1040 : if root
1041 : span.component.root= "Root: " + root
1042 : if dbName
1043 : span.component.db= "Database: " + dbName
1044 : if components
1045 : each c in components
1046 : span.component
1047 : span.name=c.name
1048 : |
1049 : |
1050 : span.version=c.version
1051 : )VirtualFile");
1052 :
1053 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/docs.pug
1054 : static VirtualFile
1055 : _html_docs_pug = VirtualFile::add("/html/docs.pug", R"VirtualFile(include virtual://html/header.pug
1056 :
1057 : doctype html
1058 : head
1059 : title Serenity Documentation
1060 : if virtual
1061 : link(rel="stylesheet",href="/__server/virtual/css/style.css")
1062 : link(rel="stylesheet",href="/__server/virtual/css/md.css")
1063 : else
1064 : link(rel="stylesheet",href="/css/style.css")
1065 : link(rel="stylesheet",href="/css/md.css")
1066 : link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
1067 : link(rel="stylesheet",href="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.css")
1068 : link(rel="stylesheet",href="https://cdn.jsdelivr.net/highlight.js/latest/styles/github.min.css")
1069 : link(rel="stylesheet",href="https://use.fontawesome.com/releases/v5.0.13/css/all.css")
1070 : script(src="https://cdn.jsdelivr.net/highlight.js/latest/highlight.min.js")
1071 : script(src="https://cdn.jsdelivr.net/npm/highlightjs-line-numbers.js@2.6.0/dist/highlightjs-line-numbers.min.js")
1072 : script(src="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.js")
1073 : if virtual
1074 : script(src="/__server/virtual/js/shell.js")
1075 : else
1076 : script(src="/js/shell.js")
1077 : script.
1078 : hljs.initHighlightingOnLoad();
1079 : hljs.initLineNumbersOnLoad();
1080 :
1081 : .body
1082 : +header("Docs")
1083 : .main
1084 : .docs
1085 : .contents
1086 : if breadcrumbs
1087 : each val, key in breadcrumbs
1088 : p.breadcrumbs(style="margin-top: 0; margin-bottom: 0; margin-left: " + (1.0 + 1.0 * key) + "rem;")
1089 : a.breadcrumbs(style="font-size: 1.0rem; font-weight: 400;",href=val.Url)=val.Title
1090 : if root
1091 : p: a(href=root) ↑ Move up
1092 : if contents
1093 : .source!= contents
1094 : if editable
1095 : form(method="POST",action=window.location.pathname+"?createArticle")
1096 : input(name="name",type="text",placeholder="Name")
1097 : input(name="title",type="text",placeholder="Title")
1098 : input(type="submit",value="Create article")
1099 : form(method="POST",action=window.location.pathname+"?createCategory")
1100 : input(name="name",type="text",placeholder="Name")
1101 : input(name="title",type="text",placeholder="Title")
1102 : input(type="submit",value="Create category")
1103 : if isSource
1104 : h1(style="margin-left: 0.5rem") Source code browser
1105 : if dir.back
1106 : div
1107 : a(href=dir.back)
1108 : span(class="fas fa-level-up-alt")
1109 : span= " .."
1110 : each val in dir.dirs
1111 : div
1112 : a(href=val.url)
1113 : span(class="fas fa-folder")
1114 : span= " " + val.name
1115 : each val in dir.files
1116 : div
1117 : a(href=val.url)
1118 : span(class="fas fa-file-alt")
1119 : span= " " + val.name
1120 : .doc
1121 : if editable
1122 : .editblock(style="margin-top: -0.5rem;margin-bottom: -0.5rem")
1123 : p.editbutton(style="margin: 0")
1124 : a(href="#editblock",onclick="return ToggleEditor()") Edit ✎
1125 : a.null(href="?delete")= (isCategory?"Delete category":"Delete article")
1126 : #editblock.editorclosed
1127 : textarea(id="editor",style="display:none;")= mdsource
1128 : if source
1129 : #sourceblock.source!= source
1130 : elseif isSource
1131 : #sourceblock.source
1132 : h1= title
1133 : if isDir
1134 : if dir.back
1135 : div
1136 : a(href=dir.back)
1137 : span(class="fas fa-level-up-alt")
1138 : span= " .."
1139 : each val in dir.dirs
1140 : div
1141 : a(href=val.url)
1142 : span(class="fas fa-folder")
1143 : span= " " + val.name
1144 : each val in dir.files
1145 : div
1146 : a(href=val.url)
1147 : span(class="fas fa-file-alt")
1148 : span= " " + val.name
1149 : else
1150 : pre(class=sourceClass): code(class=sourceClass)= mdsource
1151 : )VirtualFile");
1152 :
1153 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/errors.pug
1154 : static VirtualFile
1155 : _html_errors_pug = VirtualFile::add("/html/errors.pug", R"VirtualFile(include virtual://html/header.pug
1156 :
1157 : mixin cursor(front=false)
1158 : p(id=front?"cursor":null)
1159 : if cursor.prev
1160 : - var prevUrl = window.location.pathname+"?c="+cursor.prev
1161 : if selectedTag
1162 : - prevUrl = prevUrl + "&tag=" + selectedTag
1163 : - prevUrl = prevUrl + "#cursor"
1164 : a.nav(href=prevUrl) Prev
1165 : |
1166 : |
1167 : span= cursor.start + " - " + cursor.end + " из " + cursor.total
1168 : if cursor.next
1169 : |
1170 : |
1171 : - var nextUrl = window.location.pathname+"?c="+cursor.next
1172 : if selectedTag
1173 : - nextUrl = nextUrl + "&tag=" + selectedTag
1174 : - nextUrl = nextUrl + "#cursor"
1175 : a.nav(href=nextUrl) Next
1176 :
1177 : mixin deleteLink(id)
1178 : - var link = "?delete="+id
1179 : if cursor.current
1180 : - link = link + "&c="+cursor.current
1181 : if selectedTag
1182 : - link = link + "&tag="+selectedTag
1183 : a.error(href=link) Remove
1184 :
1185 : doctype html
1186 : head
1187 : title Serenity Errors Page
1188 : link(rel="stylesheet",href="/__server/virtual/css/style.css")
1189 : link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
1190 : script(src="/__server/virtual/js/shell.js")
1191 :
1192 : .body
1193 : +header("Errors")
1194 : .main
1195 : if tags
1196 : p#tags
1197 : each val in tags
1198 : |
1199 : |
1200 : a(href="?tag="+val.tag,class=val.selected?"selected":null)= "#" + val.tag + " (" + val.count + ")"
1201 :
1202 : +cursor(true)
1203 :
1204 : each val in errors
1205 : div.error_item
1206 : p.header
1207 : span.
1208 : [#[span.time= "#" + val.__oid]] [#[span.time= serenity.timeToHttp(val.time)]] [#[span.ip= val.ip]] #[span.server= val.name] #[span.request= val.request]
1209 : |
1210 : |
1211 : +deleteLink(val.__oid)
1212 : |
1213 : |
1214 : if val.tags
1215 : span
1216 : each val in val.tags
1217 : |
1218 : |
1219 : a(href="?tag="+val)= "#" + val
1220 : .headers
1221 : each value, key in val.headers
1222 : p.code #[= key]: #[= value]
1223 : .data
1224 : pre: code.code= serenity.prettify(val.data)
1225 : else
1226 : p No errors found
1227 :
1228 : +cursor
1229 : )VirtualFile");
1230 :
1231 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/errors_unauthorized.pug
1232 : static VirtualFile
1233 : _html_errors_unauthorized_pug = VirtualFile::add("/html/errors_unauthorized.pug", R"VirtualFile(include virtual://html/header.pug
1234 :
1235 : doctype html
1236 : html
1237 : head
1238 : title Serenity Errors Page
1239 : link(rel="stylesheet",href="/__server/virtual/css/style.css")
1240 : link(rel="stylesheet",type="text/css",href="http://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
1241 : script(src="/__server/virtual/js/shell.js")
1242 : body
1243 : .body
1244 : +header("Unauthorized")
1245 : )VirtualFile");
1246 :
1247 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/handlers.pug
1248 : static VirtualFile
1249 : _html_handlers_pug = VirtualFile::add("/html/handlers.pug", R"VirtualFile(include virtual://html/components.pug
1250 : include virtual://html/header.pug
1251 :
1252 : doctype html
1253 : head
1254 : title Serenity Handlers Page
1255 : link(rel="stylesheet",href="/__server/virtual/css/style.css")
1256 : link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
1257 : script(src="/__server/virtual/js/shell.js")
1258 : .body
1259 : +header("Handlers")
1260 : .main
1261 : +components
1262 : .handlers
1263 : each value in handlers
1264 : p.components
1265 : span.handler_name= value.name
1266 : if value.forSubPaths
1267 : span.version= " (with subpaths)"
1268 : span= " : "
1269 : if value.server
1270 : span.component.rootserver
1271 : span.name Server
1272 : else
1273 : span.component
1274 : span.name= value.component
1275 : if value.scheme
1276 : span.component.scheme= "Scheme: " + value.scheme
1277 : if value.map
1278 : .map
1279 : each m in value.map
1280 : p.components
1281 : span.method= m.method + " "
1282 : span.pattern= m.pattern + " : "
1283 : span.version= m.name
1284 : if m.query
1285 : h6.components Query fields
1286 : .map
1287 : each f in m.query
1288 : p.components
1289 : span.pattern= f.type + " "
1290 : span.method= f.name
1291 : if f.documentation
1292 : span.version= " - " + f.documentation
1293 : if m.input
1294 : h6.components Input fields
1295 : .map
1296 : each f in m.input
1297 : p.components
1298 : span.pattern= f.type + " "
1299 : span.method= f.name
1300 : if f.documentation
1301 : span.version= " - " + f.documentation
1302 : )VirtualFile");
1303 :
1304 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/header.pug
1305 : static VirtualFile
1306 : _html_header_pug = VirtualFile::add("/html/header.pug", R"VirtualFile(mixin header(name)
1307 : .title
1308 : h1
1309 : span.name= name
1310 : span.id= ": Serenity " + version
1311 : p.nav
1312 : if hasDb && setup && auth
1313 : a(href="/__server") Server
1314 : |
1315 : |
1316 : a(href="/__server/handlers") Handlers
1317 : |
1318 : |
1319 : a(href="/__server/docs/index") Docs
1320 : |
1321 : |
1322 : a(href="/__server/errors") Errors
1323 : |
1324 : |
1325 : a(href="/__server/reports") Reports
1326 : else if hasDb && !setup
1327 : span Waiting for setup
1328 : else if !hasDb
1329 : span No db connection
1330 : if setup
1331 : p.nav
1332 : if auth
1333 : span.id= "#" + auth.id
1334 : span= " " + auth.name + " "
1335 : if auth.cancel
1336 : a(href=auth.cancel) (Exit)
1337 : else
1338 : a(href=window.location.pathname+"?auth") Not authorized
1339 : )VirtualFile");
1340 :
1341 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/reports.pug
1342 : static VirtualFile
1343 : _html_reports_pug = VirtualFile::add("/html/reports.pug", R"VirtualFile(include virtual://html/components.pug
1344 : include virtual://html/header.pug
1345 :
1346 : doctype html
1347 : head
1348 : title Serenity Handlers Page
1349 : link(rel="stylesheet",href="/__server/virtual/css/style.css")
1350 : link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
1351 : script(src="/__server/virtual/js/shell.js")
1352 :
1353 : .body
1354 : +header("Reports")
1355 : .main
1356 : +components
1357 : .handlers
1358 : if files
1359 : each value in files
1360 : p.components(id=value.name)
1361 : span.time= "[" + value.date + "]"
1362 : |
1363 : |
1364 : a(href="/__server/reports/" + value.name)
1365 : span.handler_name= value.name
1366 : |
1367 : |
1368 : a.null(href="/__server/reports/" + value.name + "?remove") Remove
1369 : else if file
1370 : p.components
1371 :
1372 : a(href="/__server/reports#" + file.name) < Back
1373 : |
1374 : |
1375 : span.time= "[" + file.date + "]"
1376 : |
1377 : |
1378 : span.handler_name= file.name
1379 : |
1380 : |
1381 : a.null(href="/__server/reports/" + file.name + "?remove") Remove
1382 : .data
1383 : pre: code.code= file.data
1384 : )VirtualFile");
1385 :
1386 : // /home/sbkarr/stappler/libstappler-root/extra/webserver/webserver/virtual/html/server.pug
1387 : static VirtualFile
1388 : _html_server_pug = VirtualFile::add("/html/server.pug", R"VirtualFile(include virtual://html/components.pug
1389 : include virtual://html/header.pug
1390 :
1391 : doctype html
1392 : head
1393 : title Serenity Server Page
1394 : link(rel="stylesheet",href="/__server/virtual/css/style.css")
1395 : link(rel="stylesheet",href="/__server/virtual/css/kawaiJson.css")
1396 : link(rel="stylesheet",type="text/css",href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900")
1397 : script(src="/__server/virtual/js/shell.js")
1398 : body(onload="init(\"/shell\");")
1399 : .body
1400 : +header("Server")
1401 : .main
1402 : if setup && auth
1403 : +components
1404 : div.console
1405 : #login
1406 : button(onclick="return connect();") Run server console
1407 : pre: code= resStat + memStat
1408 : #main(style="visibility:hidden")
1409 : input#input(type="text",name="message",value="",size="80")
1410 : button(onclick="return closeSocket();") Close
1411 : br
1412 : #output
1413 : input#fileSelector(type="file",style="visibility:hidden")
1414 : else if !setup
1415 : form#setup(method="post")
1416 : input#name(type="text",name="name",placeholder="User name",value="")
1417 : input#passwd(type="password",name="passwd",placeholder="Password",value="")
1418 : input(type="submit",value="Setup")
1419 : )VirtualFile");}
|