gimntut / databoom-talking

Территория обсуждений потенциальных возможностей databoom

Home Page:https://github.com/gimntut/databoom-talking/issues

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Концепция расширений на примере шаблонов

gimntut opened this issue · comments

При чтении шаблона:

  • По событию срабатывает скрипт, который передаёт файл шаблона на удалённый сервер
  • Удалённый сервер выделяет из шаблона запросы и направляет их обратно на databoom
  • databoom отправляет ответы на запросы на удалённый сервер
  • удалённый сервер формирует на основе шаблона страницу и передаёт её обратно в скрипт
  • databoom возвращает страницу пользователю

Файл extension.rules.json

// В данном примере идёт привязывание к событием файлов, а должно к событиям хостинга
{
  "name": "Template renderer",
  "name[ru]": "Визуализатор",
  "description[ru]": "Крутая штука",
  "extensionID": "templateRenderer",
  "extensionUID": "blablablablablablablablablablablabla",
  "parseObjName": "parseObjName from parser.js",
  "export": {
    "onSuperRead": {
      "if": true
    }
  },
  "file/templates/*.html": {
    "onGet": {
      "event[js]": "renderTemplate from renderTemplate.js"
    },
    "onUpload": {}
  }
}

Файл renderTemplate.js

function renderTemplate(context) {
  sendTemplateToRemoteHttpServer(remoteServerURL, context.file.text, successCallBack);
}

function successCallBack(context, data) {
  context.data = data;
  context.runEvent('onBeforeChangeTextFile', context);
  context.file.text = data.text;
}

Файл rules.json

{
  "extensions/templateRenderer": {
    "onBeforeChangeTextFile": {
      "oData": ""
    }
  }
}