![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol-form/js/frame/plugins.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.lsWorkspace = lsWorkspace; exports.writeFileBase64X = writeFileBase64X; exports.writeFileBase64 = writeFileBase64; exports.writeFile = writeFile; exports.catWorkspace = catWorkspace; exports.PluginProjectExplore = PluginProjectExplore; exports.downloadFragmentData = downloadFragmentData; exports.PluginLoadContentData = PluginLoadContentData; exports.PluginSaveContentData = PluginSaveContentData; exports.PluginBuildComponent = PluginBuildComponent; exports.PluginComponentPickerView = PluginComponentPickerView; var _XHR = _interopRequireDefault(require("absol/src/Network/XHR")); var _CodeEditor = _interopRequireDefault(require("../editor/CodeEditor")); var _base = require("absol/src/Converter/base64"); var _FCore = _interopRequireWildcard(require("../core/FCore")); var _R = _interopRequireDefault(require("../R")); var _ExpTree = _interopRequireDefault(require("absol-acomp/js/ExpTree")); var _FmFragment = require("../core/FmFragment"); var _Assembler = require("../core/Assembler"); var _OnsScreenWindow = _interopRequireDefault(require("absol-acomp/js/OnsScreenWindow")); var _generator = require("absol/src/JSMaker/generator"); var _random = require("absol/src/Math/random"); var _TaskManager = _interopRequireDefault(require("absol/src/AppPattern/TaskManager")); var _ProjectExplorer = require("../fragment/ProjectExplorer"); var _OOP = _interopRequireDefault(require("absol/src/HTML5/OOP")); var _stringFormat = require("absol/src/String/stringFormat"); var JSZip = window.JSZip; var WORKSPACE_FOLDER = 'formeditor/workspace'; var extIcons = { form: 'span.mdi.mdi-card-bulleted-outline', jpg: 'span.mdi.mdi-file-image-outline', js: 'span.mdi.mdi-nodejs', json: 'span.mdi.mdi-json', html: 'span.mdi.mdi-xml', css: 'span.mdi.mdi-language-css3', gitignore: 'span.mdi.mdi-git', license: 'span.mdi.mdi-license', md: 'span.mdi.mdi-markdown-outline', "*": 'span.mdi.mdi-file-document-outline' }; function openNewFormDialog() { var nameInput = (0, _FCore._)(`<input type="text"></input>`); var typeInput = (0, _FCore._)({ tag: 'selectmenu', props: { items: [{ text: 'HyperLayout', value: 'HyperLayout' }, { text: 'RelativeLayout', value: 'RelativeLayout' }, { text: 'LinearLayout', value: 'LinearLayout' }, { text: 'ChainLayout', value: 'ChainLayout' }] } }); var rows = [['Name', nameInput], ['Layout type', typeInput]]; var okBtn = (0, _FCore._)({ tag: 'button', style: { marginLeft: '20px' }, child: { text: 'OK' } }); var cancelBtn = (0, _FCore._)({ tag: 'button', child: { text: 'Cancel' } }); /*** * @type {OnScreenWindow} */ var windowElt = (0, _FCore._)({ tag: _OnsScreenWindow.default.tag, style: { left: 'calc(50vw - 150px)', top: 'calc(40vh - 100px)', width: '300px', height: '135px' }, props: { windowTitle: 'New Form', windowIcon: 'span.mdi.mdi-file-plus-outline' }, child: [{ style: { padding: '5px', width: '100%', boxSizing: 'border-box', display: 'table' }, child: rows.map(function (row) { return { style: { display: 'table-row' }, child: [`<label style="display: table-cell">${row[0]} </label>`, { style: { display: 'table-cell', paddingBottom: '10px' }, child: row[1] }] }; }) }, { style: { textAlign: 'center' }, child: [cancelBtn, okBtn] }] }); var modal = (0, _FCore._)({ tag: 'modal', style: { zIndex: 100000 }, child: windowElt }); modal.addTo(document.body); return new Promise(function (rs, rj) { okBtn.on('click', function () { var name = nameInput.value; if (name.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) { modal.remove(); rs({ name: name, layoutType: typeInput.value }); } else { nameInput.focus(); nameInput.select(); } }); function onCancel() { modal.remove(); rj(); } cancelBtn.on('click', onCancel); }); } function lsWorkspace(path) { return _XHR.default.postRepquest('https://absol.cf/shell_exec.php', JSON.stringify({ cmd: 'ls -la -F "' + path + '"', cwd: WORKSPACE_FOLDER })).then(function (out) { return out.trim().split(/[\r\n]+/).slice(1).map(function (line) { var parts = line.split(/\s+/); var name = parts[8]; var type = 'FILE'; var ext = undefined; if (name[name.length - 1] == '/' || name[name.length - 1] == '\\') { type = "FOLDER"; name = name.substr(0, name.length - 1); } else { ext = (name.split('.').pop() || '').toLowerCase(); } return { type: type, name: name, fullPath: path + '/' + name, time: parts[5] + ' ' + parts[6], size: parseInt(parts[4]), owner: parts[2], ext: ext }; }).filter(function (obj) { return obj.name.indexOf('.') != 0; }); }).catch(function (error) { console.error(error); }); } function writeFileBase64X(path, b64) { return _XHR.default.postRepquest('https://absol.cf/shell_exec.php', JSON.stringify({ cmd: 'echo \'' + b64 + '\'>' + path, cwd: WORKSPACE_FOLDER })).then(function (out) { console.log(out); }); } function writeFileBase64(path, b64) { var taskMng = new _TaskManager.default({ limit: 4 }); var onProcess = value => { console.log('upload ', Math.round(value * 100) + '%'); }; var data = new Blob([b64]); var folderPath = path.split('/'); folderPath.pop(); var prefix = ['file', new Date().getTime(), (0, _random.randomArbitrary)(0, 1000000) >> 0].join('_'); var parts = []; var chuck_limit = 2 << 20; var partName; var fileSize = data.size; var fileStartOffset = 0; var fileEndOffset = 0; var idx = 0; var syncs = []; var syncDone = 0; var bundle; var began = false; var handle = bundle => { return new Promise(rs => { taskMng.requestTask((finishTask, bundle) => { if (typeof onProcess === "function" && !began) { began = true; onProcess(syncDone / (syncs.length || 1)); } var form = new FormData(); form.append('action', 'upload_part'); form.append('fileUpload', bundle.file, bundle.name); fetch('https://absol.cf/filesystem/writefile.php', { method: 'POST', body: form }).then(res => res.text()).then(text => { if (text !== 'OK') throw new Error(text); syncDone++; if (typeof onProcess === "function") { onProcess(syncDone / (syncs.length || 1)); } rs(location.origin); finishTask(); }); }, bundle); }); }; while (fileStartOffset < fileSize) { fileEndOffset = Math.min(fileStartOffset + chuck_limit, fileSize); partName = prefix + '.p' + idx; parts.push(partName); bundle = { file: data.slice(fileStartOffset, fileEndOffset), idx: idx, name: partName }; idx++; fileStartOffset = fileEndOffset; syncs.push(handle(bundle)); } return Promise.all(syncs).then(() => { var form = new FormData(); form.append('action', 'join_parts'); form.append('parts', parts.join(';')); form.append('path', '/html/' + WORKSPACE_FOLDER + '/' + path); fetch('https://absol.cf/filesystem/writefile.php', { method: 'POST', body: form }).then(res => res.text()).then(text => { if (text !== 'OK') throw new Error(text); }); }); } function writeFile(path, text) { var b64 = (0, _base.base64EncodeUnicode)(text); return _XHR.default.postRepquest('https://absol.cf/shell_exec.php', JSON.stringify({ cmd: 'echo \'' + b64 + '\' | base64 -d >' + path, cwd: WORKSPACE_FOLDER })).then(function (out) { console.log(out); }); } function catWorkspace(path) { return _XHR.default.postRepquest('https://absol.cf/shell_exec.php', JSON.stringify({ cmd: 'cat "' + path + '"', cwd: WORKSPACE_FOLDER })); } /** * @extends FMExploreDelegate * @constructor */ function FrameProjectExploreDelegate(context) { _ProjectExplorer.FMExploreDelegate.call(this); this.context = context; this.self = context.self; } _OOP.default.mixClass(FrameProjectExploreDelegate, _ProjectExplorer.FMExploreDelegate); FrameProjectExploreDelegate.prototype.getTreeData = function () { var res = []; var folder2icon = { form: { tag: 'img', props: { src: 'https://absol.cf/exticons/extra/folder-neon.svg' } }, template: { tag: 'img', props: { src: 'https://absol.cf/exticons/extra/folder-svn.svg' } } }; function visit(cArr, path, depth) { depth = depth || 0; if (depth >= 2) return; return lsWorkspace(path.join('/')).then(function (result) { // console.log(result) var syncArr = []; result.forEach(function (it) { var res; if (it.type === 'FOLDER') { res = { name: it.name, id: (0, _stringFormat.normalizeIdent)(path + it.name, {}), icon: folder2icon[it.name] || 'span.mdi.mdi-folder', status: 'close', children: [], rawData: it }; syncArr.push(visit(res.children, path.concat([it.name]), depth + 1)); } else if (it.type === 'FILE') { res = { name: it.name, icon: extIcons[it.ext] || extIcons['*'], id: (0, _stringFormat.normalizeIdent)(path + it.name, {}), rawData: it, openArgs: [it.ext, it.fullPath.replace(/[^a-zA-Z0-9\_]/g, '_'), it.name, it, it.fullPath] }; } cArr.push(res); }); return Promise.all(syncArr); }); } var sync = visit(res, [this.self.data.projectName]); return Promise.resolve(sync).then(() => res); }; FrameProjectExploreDelegate.prototype.getActionContextMenuProps = function (treeData) { var props = { items: [] }; if (treeData.rawData.type === 'FILE') { props.items.push({ icon: 'span.mdi.mdi-menu-open', text: 'Open', cmd: 'open' }); props.items.push({ icon: 'span.mdi.mdi-rename-box', text: 'Rename', cmd: 'rename' }); props.items.push({ icon: 'span.mdi.mdi-delete', text: 'Delete', cmd: 'delete' }); } return props; }; FrameProjectExploreDelegate.prototype.onUserRenameCompleted = function (ac) { console.log(ac); }; function PluginProjectExplore(context) { var _ = context._; var $ = context.$; context.delegate = new FrameProjectExploreDelegate(context); return; /** * @type {import('../fragment/ProjectExplorer').default} */ var self = context.self; function contextMenuEventHandler(contentArguments, event) { var items = []; if (contentArguments.type === 'FILE') { items.push({ text: 'Open', icon: 'span.mdi.mdi-menu-open', cmd: 'open' }); } else if (contentArguments.name === 'form') { items.push({ text: 'New Form', icon: 'span.mdi.mdi-plus', cmd: 'new_form' }); } event.showContextMenu({ items: items, extendStyle: { fontSize: '12px' } }, function (event) { switch (event.menuItem.cmd) { case 'open': self.openItem(contentArguments.ext, contentArguments.fullPath.replace(/[^a-zA-Z0-9\_]/g, '_'), contentArguments.name, contentArguments, contentArguments.fullPath); break; } }); } context.loadExpTree = function () {}; self.cmdRunner.add('new', function () { openNewFormDialog().then(function (result) { var accumulator = {}; accumulator.contentArguments = {}; accumulator.contentArguments.fullPath = self.data.projectName + '/form/' + result.name + '.form'; accumulator.name = result.name + '.form'; accumulator.contentArguments.ext = 'form'; accumulator.editor = { getData: function () { return { app: _R.default.APP, version: _R.default.VERSION, layout: { tag: result.layoutType } }; } }; PluginSaveContentData(accumulator); setTimeout(context.loadExpTree.bind(context), 1000); }); }); var DelegateClass = context.DelegateClass; } function downloadFragmentData(path) { return catWorkspace(path).then(function (out) { if (out[0] == '{') { // is json try { var data = (0, _generator.replaceDateStringJSVariable)(JSON.parse(out)); return data; } catch (error) { console.error(error); } } else { return JSZip.loadAsync(out, { base64: true }).then(function (zip) { return zip.file('data.txt').async('text').then(function (text) { try { var data = (0, _generator.replaceDateStringJSVariable)(JSON.parse(text)); return data; } catch (error) { console.error(error); } }); }); } }); } function PluginLoadContentData(accumulator) { var sync; if (accumulator.contentArguments.ext == 'form') { sync = downloadFragmentData(accumulator.contentArguments.fullPath).then(function (data) { accumulator.editor.setData(data); }); } else if (_CodeEditor.default.prototype.TYPE_MODE[accumulator.contentArguments.ext]) { sync = catWorkspace(accumulator.contentArguments.fullPath).then(function (out) { try { accumulator.editor.setData({ value: out, type: accumulator.contentArguments.ext }); } catch (error) { console.error(error); } }); } else if (accumulator.contentArguments.ext == 'jpg') { accumulator.editor.setData({ images: ['//absol.cf/' + WORKSPACE_FOLDER + '/' + accumulator.contentArguments.fullPath] }); sync = Promise.resolve(); } accumulator.waitFor(sync); } function PluginSaveContentData(accumulator) { if (accumulator.contentArguments.ext == 'form') { var data = accumulator.editor.getData(); var FrgClass = (0, _FmFragment.makeFmFragmentClass)({ tag: accumulator.name.replace('.form', ''), contentViewData: data }); _Assembler.AssemblerInstance.addClass(FrgClass); var textData = JSON.stringify(data); var zip = new JSZip(); zip.file('data.txt', textData); zip.generateAsync({ type: 'base64' }).then(function (b64) { writeFileBase64(accumulator.contentArguments.fullPath, b64).then(function (out) { console.log("Save success: ", accumulator.contentArguments.fullPath); }); }); } } function PluginBuildComponent(context) { var data = context.data; if (data.tag == "LoginForm") { context.result = context.self.build({ "tag": "RelativeLayout", "attributes": { "name": "PesionalInfor", "target": "", "formType": "SO_YEU_LY_LICH" }, "style": { "hAlign": "left", "vAlign": "top", "left": 0, "right": 0, "top": -20.040624999999977, "bottom": 0, "height": 353.40625, "width": 960.1563, "backgroundImage": "", "backgroundColor": "#ffffff00" }, "children": [{ "tag": "Ellipse", "attributes": { "name": "Circle_0", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 36.0625, "right": 624.0938, "top": 18.40625, "bottom": 35, "height": 300, "width": 300, "boxAlign": "lefttop", "fillColor": "#ebe936ee", "strokeColor": "#e31919e0", "strokeWidth": 1 } }, { "tag": "Ellipse", "attributes": { "name": "Ellipse_1", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 83.703125, "right": 820.453175, "top": 80.40625, "bottom": 217, "height": 56, "width": 56, "boxAlign": "lefttop", "fillColor": "white", "strokeColor": "black", "strokeWidth": 1 } }, { "tag": "Ellipse", "attributes": { "name": "Ellipse_2", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 209, "right": 695.1563, "top": 79, "bottom": 218.40625, "height": 56, "width": 56, "boxAlign": "lefttop", "fillColor": "white", "strokeColor": "black", "strokeWidth": 1 } }, { "tag": "Ellipse", "attributes": { "name": "Ellipse_3", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 91.703125, "right": 827.453175, "top": 94.40625, "bottom": 218, "height": 41, "width": 41, "boxAlign": "lefttop", "fillColor": "#000000ff", "strokeColor": "black", "strokeWidth": 0 } }, { "tag": "Ellipse", "attributes": { "name": "Ellipse_9", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 216, "right": 703.1563, "top": 92, "bottom": 220.40625, "height": 41, "width": 41, "boxAlign": "lefttop", "fillColor": "#000000ff", "strokeColor": "black", "strokeWidth": 0 } }, { "tag": "Rectangle", "attributes": { "name": "Rectangle_0", "target": "" }, "style": { "hAlign": "left", "vAlign": "top", "left": 378.703125, "right": 348.453175, "top": 41.40625, "bottom": 163, "height": 149, "width": 233, "boxAlign": "lefttop", "fillColor": "#4fe01dc2", "strokeColor": "#3819b2c0", "strokeWidth": 11, "roundCornerX": 25, "roundCornerY": 0 } }] }); context.result.formType = 'LoginForm'; context.result.getData = function () { return { tag: 'LoginForm', style: this.style, attributes: this.attributes }; }; } } function PluginComponentPickerView(context) { var allNode = (0, _FCore.$)('exptree', context.self.$view, function (node) { return node.name == "all"; }); console.log(context); var projectExplorer = context.self.getContext(_R.default.PROJECT_EXPLORER); var projectName = projectExplorer.data.projectName; var formNode = (0, _FCore._)({ tag: _ExpTree.default.tag, props: { name: 'fragment', status: 'close' }, on: { press: context.toggleGroup }, child: [] }); allNode.addChild(formNode); lsWorkspace(projectName + '/' + 'form').then(function (res) { Promise.all(res.map(function (file) { var fragmentTag = file.name.replace(/\.form$/, ''); return downloadFragmentData(projectName + '/' + 'form/' + file.name).then(function (fData) { var fragmentConstructor = (0, _FmFragment.makeFmFragmentClass)({ tag: fragmentTag, contentViewData: fData }); _Assembler.AssemblerInstance.addConstructor(fragmentConstructor); return (0, _FCore._)({ tag: 'exptree', props: { name: fragmentTag, icon: 'span.mdi.mdi-terraform', componentConstructor: fragmentConstructor } }); }); })).then(function (eltList) { eltList.forEach(function (elt) { formNode.addChild(elt); }); }); }); var templateNode = (0, _FCore._)({ tag: _ExpTree.default.tag, props: { name: 'template', status: 'close' }, on: { press: context.toggleGroup }, child: [] }); allNode.addChild(templateNode); lsWorkspace(projectName + '/' + 'template').then(function (res) { Promise.all(res.map(function (file) { var templateName = file.name.replace(/\.ftl$/, ''); return downloadFragmentData(projectName + '/' + 'template/' + file.name).then(function (fData) { return (0, _FCore._)({ tag: 'exptree', props: { name: templateName, icon: 'span.mdi.mdi-terraform', componentConstructor: fData } }); }); })).then(function (eltList) { eltList.forEach(function (elt) { templateNode.addChild(elt); }); }); }); }