13 private const REFERENCE_PAGES = array(
14 'overview' =>
'index.html',
15 'classes' =>
'annotated.html',
16 'namespaces' =>
'namespaces.html',
17 'files' =>
'files.html',
18 'examples' =>
'examples.html',
21 private function language():
string
23 $language = strtolower(trim((
string)
dbx()->get_system_var(
'dbx_lng',
'de')));
24 return in_array($language, array(
'de',
'en',
'es'),
true) ? $language :
'de';
27 private function labels(
string $section): array
31 'overview' =>
'Technische Referenz',
32 'classes' =>
'Klassen',
33 'namespaces' =>
'Namespaces',
35 'examples' =>
'Beispiele',
36 'page' =>
'Technische Referenz',
37 'subtitle' =>
'Automatisch aus dem dbxapp-Quellcode erzeugt.',
38 'open' =>
'Referenz in einem neuen Fenster öffnen',
39 'fallback' =>
'Die Referenz kann nicht eingebettet angezeigt werden.',
42 'overview' =>
'Technical reference',
43 'classes' =>
'Classes',
44 'namespaces' =>
'Namespaces',
46 'examples' =>
'Examples',
47 'page' =>
'Technical reference',
48 'subtitle' =>
'Generated automatically from the dbxapp source code.',
49 'open' =>
'Open reference in a new window',
50 'fallback' =>
'The reference cannot be displayed within this page.',
53 'overview' =>
'Referencia técnica',
54 'classes' =>
'Clases',
55 'namespaces' =>
'Espacios de nombres',
56 'files' =>
'Archivos',
57 'examples' =>
'Ejemplos',
58 'page' =>
'Referencia técnica',
59 'subtitle' =>
'Generada automáticamente a partir del código fuente de dbxapp.',
60 'open' =>
'Abrir la referencia en una ventana nueva',
61 'fallback' =>
'La referencia no se puede mostrar dentro de esta página.',
65 $languageLabels = $labels[$this->language()];
67 'title' => (
string)($languageLabels[$section] ?? $languageLabels[
'page']),
68 'subtitle' => (
string)$languageLabels[
'subtitle'],
69 'open' => (
string)$languageLabels[
'open'],
70 'fallback' => (
string)$languageLabels[
'fallback'],
74 private function requestedDocument(
string $section):
string
76 if (isset(self::REFERENCE_PAGES[$section])) {
77 return self::REFERENCE_PAGES[$section];
80 if ($section !==
'page') {
81 return self::REFERENCE_PAGES[
'overview'];
84 $document = trim((
string)
dbx()->get_modul_var(
'doc',
'',
'parameter'));
85 if (preg_match(
'/^[A-Za-z0-9_.-]+\.html$/', $document) !== 1) {
86 return self::REFERENCE_PAGES[
'overview'];
92 return self::REFERENCE_PAGES[
'overview'];
95 $rootPrefix = rtrim(str_replace(
'\\',
'/',
$root),
'/') .
'/';
96 $normalizedFile = str_replace(
'\\',
'/',
$file);
97 return str_starts_with($normalizedFile, $rootPrefix)
98 ? basename($normalizedFile)
99 : self::REFERENCE_PAGES[
'overview'];
102 public function run($action =
''): string
104 $action = $action !==
''
106 : (string)
dbx()->get_modul_var(
'dbx_run1',
'reference',
'parameter');
107 if ($action !==
'reference') {
111 $section = strtolower(trim((
string)
dbx()->get_modul_var(
'dbx_run2',
'overview',
'parameter')));
112 if (!isset(self::REFERENCE_PAGES[$section]) && $section !==
'page') {
113 $section =
'overview';
116 $document = $this->requestedDocument($section);
117 $labels = $this->labels($section);
118 $referenceUrl =
dbx()->get_base_url() .
'reference/current/' . rawurlencode($document);
120 dbx()->set_system_var(
'dbx_title', $labels[
'title']);
121 return dbx()->get_system_obj(
'dbxTPL')->get_tpl(
'dbxDocs|reference', array(
122 'reference_title' => $labels[
'title'],
123 'reference_subtitle' => $labels[
'subtitle'],
124 'reference_url' =>
dbx()->
esc($referenceUrl),
125 'reference_open_label' => $labels[
'open'],
126 'reference_fallback' => $labels[
'fallback'],