dbXapp 2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Loading...
Searching...
No Matches
Modulaufbau und Patterns

Ein dbXapp-Modul besteht aus Router, Include-Klassen, Templates, optionalen DD/FD-Dateien und optionalen Assets.

Grundstruktur

dbx/modules/myModule/
myModule.class.php
include/myModuleList.class.php
include/myModuleForm.class.php
tpl/htm/list.htm
tpl/htm/form.htm
tpl/css/myModule.css
dd/myItem.dd.php
fd/myItem-form.fd.php

Router

namespace dbx\myModule;
class myModule {
public function run() {
$run1 = dbx()->get_modul_var('dbx_run1', 'list');
switch ($run1) {
case 'list':
return dbx()->get_include_obj('myModuleList')->run();
case 'edit':
case 'save':
return dbx()->get_include_obj('myModuleForm')->run();
}
return '';
}
}
DBX schema administration.

Modul mit Report

class myModuleList {
public function run() {
$report = new \dbxReport();
$report->init('my-items', 'my-items-report');
$report->_dd = 'myModule|myItem';
$report->_rflds = array('id', 'title', 'status', 'action');
$report->_pages = 1;
return $report->run();
}
}

Modul mit Form

class myModuleForm {
public function run() {
$rid = dbx()->get_modul_var('rid', 'new', 'parameter');
$form = new \dbxForm();
$form->init('my-item-form', 'my-item-form');
$form->_dd = 'myModule|myItem';
$form->_fd = 'myModule|myItem-form';
$form->_action = '?dbx_modul=myModule&dbx_run1=save&rid=' . rawurlencode((string)$rid);
$form->add_flds('fd::');
return $form->run();
}
}

Modul mit Form und Report

Beispiel: Ticketdetails mit Antwortliste.

$form = new \dbxForm();
$form->init('ticket-detail', 'ticket-detail');
$form->_dd = 'dbxContact|contactRequest';
$form->_fd = 'dbxContact|ticket-detail';
$form->add_flds('fd::');
$form->add_obj('messages', 'obj-value', $this->message_report($rid));
return $form->run();

Template:

<div id="dbx_target_{i}" class="dbx-panel dbxForm_wrapper">
<form action="{action}" method="post" id="dbx_form_{i}" class="dbxAjax"
data-ajax-target="dbx_target_{i}">
[dbx:form]
</form>
{obj:messages}
</div>

Mehrfaches Modul auf einer Seite

Geschuetzte Modulvariablen und eindeutige Targets erlauben:

[modul=myModule]dbx_run1=list&status=open[/modul]
[modul=myModule]dbx_run1=list&status=closed[/modul]

Jede Instanz bekommt eigene {i}-Targets.

dbx_target

dbx_target bezeichnet das Ziel einer Teilaktualisierung.

<div id="dbx_target_{i}">
<form class="dbxAjax" data-ajax-target="dbx_target_{i}">

Der Wert muss eindeutig sein. Deshalb wird {i} verwendet.

Reihenfolge fuer neue Module

  1. Zweck und Route festlegen.
  2. DD definieren.
  3. FD definieren, wenn Formular benoetigt wird.
  4. Templates anlegen.
  5. Include-Klassen bauen.
  6. dbxForm/dbxReport verwenden.
  7. Aktionen als Templates bauen.
  8. AJAX/Confirm/openWin ueber vorhandene Libs anbinden.
  9. Modul per URL oder [modul=...] testen.