2019-02-18 19:52:07 +00:00
WIP
2019-02-11 17:36:40 +01:00
2019-02-18 19:52:07 +00:00
2019-02-17 00:12:50 +01:00

Admin Panel

Table of Content

Description

WIP

Changelog

see changelog.md

Themes

Templates

themes works via "templates".

first a template named "page" is a must, your template can be static or not (static templates will be updated on document update while not static the templateFile will always be used)

website->addTemplate("Template Name", "templateURI/from/root/page.php", "functionName", true);
  • "Template Name" is the shown name
  • "templateURI" is the file URI
  • "functionName" is the function used
  • true is to says to the website if this template is static or not (default to false)

if cache is disabled globally static or not static pages will be updated at every load

example: a template named Blog Page can be static while a Blog List shouldn't be static to load newly added blog pages

website->addTemplate("Blog Page", "templates/blog.php", "page", true);
website->addTemplate("Blog List", "templates/blog.php", "list", false);

styles & scripts

themes must declare each scripts & styles so they can be cached when needed

website->addNewStyle("styleURI/from/style/root/page.css", "styleName", ["styleDependency"]);
website->addNewScript("scriptURI/from/script/root/page.js", "scriptName", ["scriptdependency", "JQuery"]);
  • "styleURI"/"scriptURI" is the link to the file
  • [OPTIONAL] "styleName"/"scriptName" is the name of the style/script to be used by sub-dependencies
  • [OPTIONAL] ["styleDependency"]/["scriptDependency", "JQuery"] are used to load theses scripts after the followed dependencies

Options

Options are declarated in the same file than before and will be usable in the templates files

updating an option will update the static files

$optionMenu = website->addOptionsMenu("Menu Name");

here we create a new option menu that will be located in the admin sidebar theme -> Options within the tabs

  • "Menu Name" is the shown name
$optionMenu->addTextOption("Option Name", "variableName", "defaultValue", {
  "min": 1,
  "max": 16,
  "placeholder": "placeholder"
});

Modules

modules will work like this in the page.content of the page [moduleName variablesName="valueName"]

the module will then receive a variable named $modVars that will contain $modVars->variableName = valueName and will have to return a String Object

To keep the document strict it's advised to use the php DOMDocument Object

Files/Folders architecture

  • index.php (is it really necessary ?)
  • .htaccess (handle file redirection)
  • router.php (handle the first route part ( separating the loading process))
  • uploads/
  • cache/ (public cache (won't be seen by client via .htaccess redirection))
    • .htaccess (make sure clients can't access this folder)
    • scripts.js
    • styles.css
  • pages/ (NO scripts.js NOR styles.css NOR admin NOR login files must be in here)
    • .htaccess (make sure clients can't access this folder)
    • index.json (this index.json will be the root name "/")
    • slugname.json (path = "/slugname")
    • iamjson.json.json (path = "/iamjson.json" wand with a module/theme could just return json)
    • folderslug/
      • index.json (path = "/folderslug" if no index.json is given there will be a 404 error for "/folderslug" but not for the "/folderslug/pouet")
      • pouet.json (path = "/folderslug/pouet")
  • admin/
    • .htaccess manage redirection for admin pages (pass throught a verify login script)
    • index.php
    • admin.js
    • admin.css
    • settings/ (settings files more infos here)
      • scripts.json (if cache is disabled these files will be used to get the styles & scripts)
      • styles.json (else these files are only used to create the caches files)
      • admin.json (admin settings (see admin.json section))
      • templates.json (simple name to redirect)
      • modules/
        • moduleName/
          • settings.json
          • vars.json
      • themes/
        • themeName/
          • settings.json
          • vars.json
      • admin.json (used to see what to launch on the admin side)
      • options.json (options for modules & themes to be used site-wide)
      • templates.json (store the template used on the website with a link to there .php file)
    • themes/ (when a new theme is loaded regenerate scripts.js & styles.css, an option will allow the use of direct files)
      • default/ (a default theme will be here)
        • theme.php
      • themeName/
        • theme.php (only launched on theme load, to generate cache files & admin options files)
        • public.php (launched everytime on website when page is launched (admins sections are excluded)
        • admin.php (launched everytime on admin/themename/** launch (with args like page))
        • templates/ (all folders included under are optional anc can be located somewhere else in the theme folder)
          • page.php (at least a template named "page" must exist to make the theme usable)
          • templateName.php (file launched everytime a page is loaded with the template selected)
        • css/
        • js/
    • modules/
      • default/ (a default module will be here)
        • module.php
      • moduleName/
        • module.php
        • public.php (same as theme)

Configs files

page.json (in pages folder)

{
  "title": "pageTitle",
  "template": "templateName",
  "access": "typeOfAccess (public: everyone has access to the page, limited:only logged in users has access to the page, private: only the author & admins has access to the page)",
  "author": "Aviortheking",
  "content": "<h1>hello world</h1>"
}

scripts.json & styles.json

{
  [
    "path/to/script"
  ]
}

admin.json

{
  "themeUsed": "themeName",
  "modulesUsed": [
    "moduleName",
    "etc"
  ]
}

vars.json

{
  "variable1": "value1",
  "list1": [
    "pouet1",
    "etc"
  ],
  "variableSet1": {
    "subVariable1": "value2"
  }
}

moduleName.json & themeName.json

values for the options are located in the vars.json files

{
  [
    {
      "title": "Menu Title",
      "slug": "menu-title",
      "options": {
        "textOption": {
          "type": "text",
          "name": "Option Name",
        },
        "radioOption": {
          "type": "radio",
          "name": "Radio Option",
          "values": [
            "value1",
            "value2",
            "value3"
          ],
        },
        "selectOption": {
          "type": "select",
          "name": "Select",
          "value": [
            "value1",
            "value2",
            "value3",
            "etc"
          ]
        }
      }
    },
    {
      "title": "etc"
    }
  ]
}

templates.json

liste des tempplates crée par le theme

voir si il y auras tout les themes ou seulement le theme actif

if static is true then static webpage will be generated

{
  "templateName": {
    "URI": "templates/templateName.php",
    "function": "functionName",
    "static": false
  }
}
Description
Light and Powerfull CMS for devs (and end-users)
Readme MIT 302 KiB
Languages
PHP 92.1%
Twig 7.9%