$mode]); return ( '?' . \implode( '&', \array_map( fn ($key) => \rosavox\helpers\string_\coin( '{{key}}={{value}}', [ 'key' => $key, 'value' => $a[$key], ] ), \array_keys($a) ) ) ); } /** */ function nav(string $mode, array $args) : void { \rosavox\helpers\misc\navigate(make_link($mode, $args)); } /** */ function render_list() : string { return \rosavox\helpers\misc\render( 'docs-list', [ 'label_make' => \rosavox\helpers\misc\translate('action.make'), 'link_make' => make_link('make', []), 'entries' => \implode( "\n", \array_map( fn ($entry) => \rosavox\helpers\misc\render( 'docs-list-entry', [ 'label_read' => \rosavox\helpers\misc\translate('action.read'), 'label_hear' => \rosavox\helpers\misc\translate('action.hear'), 'value_link_open' => make_link('edit', ['id' => \sprintf('%u', $entry['id'])]), 'value_link_read' => \rosavox\services\doc\readable_path($entry['id']), 'value_link_hear' => \rosavox\services\doc\audio_path($entry['id']), 'value_name' => \rosavox\helpers\string_\coin( '{{name}}.oga', [ 'name' => \rosavox\services\doc\name($entry['id']), ] ), 'value_text' => $entry['value']['title'], ] ), \rosavox\services\doc\list_() ) ), ] ); } /** */ function render_edit(?int $id) : string { $doc = ( ($id === null) ? \rosavox\services\doc\empty_() : \rosavox\services\doc\read($id) ); return \rosavox\helpers\misc\render( 'docs-edit', [ 'label_action_back' => \rosavox\helpers\misc\translate('action.back'), 'label_action_save' => \rosavox\helpers\misc\translate('action.save'), 'label_action_delete' => \rosavox\helpers\misc\translate('action.delete'), 'label_doc_title' => \rosavox\helpers\misc\translate('domain.doc.title'), 'label_doc_authors' => \rosavox\helpers\misc\translate('domain.doc.authors'), 'label_doc_content' => \rosavox\helpers\misc\translate('domain.doc.content'), 'label_doc_reasoning' => \rosavox\helpers\misc\translate('domain.doc.reasoning'), 'value_action_back' => make_link('list', []), 'value_action_save' => make_link('save', (($id === null) ? [] : ['id' => \strval($id)])), 'value_action_delete' => make_link('delete', (($id === null) ? [] : ['id' => \strval($id)])), 'value_doc_title' => $doc['title'], 'value_doc_authors' => \implode(', ', $doc['authors']), 'value_doc_content' => $doc['content'], 'value_doc_reasoning' => ($doc['reasoning'] ?? ''), ] ); } ?>