rosavox/source/index.html.php

102 lines
1.8 KiB
PHP

<?php
require_once(__DIR__ . '/helpers.php');
require_once(__DIR__ . '/logic.php');
/**
* @todo deactivate
*/
\rosavox\logic\docs_add_examples();
$mode = ($_GET['mode'] ?? 'list');
$id_encoded = ($_GET['id'] ?? null);
$id = (($id_encoded === null) ? null : \rosavox\logic\docs_id_decode($id_encoded));
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" type="text/css" href="/style.css"/>
</head>
<body>
<?php
switch ($mode)
{
case 'list':
{
echo(
\rosavox\helpers\render(
'docs-list',
[
'entries' => \implode(
"\n",
\array_map(
fn ($entry) => \rosavox\helpers\render(
'docs-list-entry',
[
'link' => \rosavox\helpers\string_coin(
'?mode=edit&id={{id}}',
[
'id' => $entry['id'],
]
),
'text' => $entry['doc']['title'],
]
),
\rosavox\logic\docs_list()
)
),
'link_new' => '?mode=make',
]
)
);
break;
}
case 'make':
{
echo(
\rosavox\helpers\render(
'docs-edit',
[
'id' => '',
'title' => '',
'authors' => '',
'content' => '',
'reasoning' => '',
'link_back' => '?mode=list',
]
)
);
break;
}
case 'edit':
{
$doc = \rosavox\logic\docs_read($id);
echo(
\rosavox\helpers\render(
'docs-edit',
[
'id' => $id_encoded,
'title' => $doc['title'],
'authors' => \implode(', ', $doc['authors']),
'content' => $doc['content'],
'reasoning' => $doc['reasoning'],
'link_back' => '?mode=list',
]
)
);
break;
}
case 'save':
{
throw (new \Exception('not implemented yet'));
break;
}
default:
{
throw (new \Exception(\sprintf('invalid mode: %s', $mode)));
break;
}
}
?>
</body>
</html>