VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-full/dist/js/mdls__absol-form__js__frame__plugins.js
/*** 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);
      });
    });
  });
}

VaKeR 2022