This commit is contained in:
Dennis Eichhorn 2024-04-12 00:52:07 +00:00
parent 2ad03a43a6
commit f5353aec2d
5 changed files with 28 additions and 26 deletions

View File

@ -5,7 +5,7 @@
"type": 2, "type": 2,
"subtype": 1, "subtype": 1,
"name": "QA", "name": "QA",
"uri": "{/base}/qa/dashboard?{?}", "uri": "{/base}/qa/dashboard",
"target": "self", "target": "self",
"icon": null, "icon": null,
"order": 50, "order": 50,
@ -19,7 +19,7 @@
"type": 3, "type": 3,
"subtype": 1, "subtype": 1,
"name": "QA", "name": "QA",
"uri": "{/base}/qa/dashboard?{?}", "uri": "{/base}/qa/dashboard",
"target": "self", "target": "self",
"icon": null, "icon": null,
"order": 1, "order": 1,
@ -34,7 +34,7 @@
"type": 3, "type": 3,
"subtype": 1, "subtype": 1,
"name": "Create", "name": "Create",
"uri": "{/base}/qa/question/create?{?}", "uri": "{/base}/qa/question/create",
"target": "self", "target": "self",
"icon": null, "icon": null,
"order": 5, "order": 5,
@ -49,7 +49,7 @@
"type": 3, "type": 3,
"subtype": 1, "subtype": 1,
"name": "Apps", "name": "Apps",
"uri": "{/base}/qa/app/list?{?}", "uri": "{/base}/qa/app/list",
"target": "self", "target": "self",
"icon": null, "icon": null,
"order": 20, "order": 20,

View File

@ -54,7 +54,7 @@ return [
], ],
], ],
], ],
'^/qa/question(\?.*$|$)' => [ '^/qa/question/view(\?.*$|$)' => [
[ [
'dest' => '\Modules\QA\Controller\BackendController:viewQADoc', 'dest' => '\Modules\QA\Controller\BackendController:viewQADoc',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,

View File

@ -189,17 +189,18 @@ final class ApiController extends Controller
$question->tags = $this->app->moduleManager->get('Tag', 'Api')->createTagsFromRequest($request); $question->tags = $this->app->moduleManager->get('Tag', 'Api')->createTagsFromRequest($request);
} }
if (!empty($uploadedFiles = $request->files)) { // @todo implement subfolders
if (!empty($request->files)) {
$uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles(
[], names: [],
[], fileNames: [],
$uploadedFiles, files: $request->files,
$request->header->account, account: $request->header->account,
__DIR__ . '/../../../Modules/Media/Files/Modules/QA', basePath: __DIR__ . '/../../../Modules/Media/Files/Modules/QA',
'/Modules/QA', virtualPath: '/Modules/QA',
); );
foreach ($uploaded as $media) { foreach ($uploaded->sources as $media) {
$question->files[] = $media; $question->files[] = $media;
} }
} }
@ -287,14 +288,15 @@ final class ApiController extends Controller
$answer->status = QAAnswerStatus::tryFromValue($request->getDataInt('status')) ?? QAAnswerStatus::ACTIVE; $answer->status = QAAnswerStatus::tryFromValue($request->getDataInt('status')) ?? QAAnswerStatus::ACTIVE;
$answer->createdBy = new Profile(new NullAccount($request->header->account)); $answer->createdBy = new Profile(new NullAccount($request->header->account));
if (!empty($uploadedFiles = $request->files)) { // @todo Implement subdirectories
if (!empty($request->files)) {
$uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles(
[], names: [],
[], fileNames: [],
$uploadedFiles, files: $request->files,
$request->header->account, account: $request->header->account,
__DIR__ . '/../../../Modules/Media/Files/Modules/QA', basePath: __DIR__ . '/../../../Modules/Media/Files/Modules/QA',
'/Modules/QA', virtualPath: '/Modules/QA',
); );
foreach ($uploaded as $media) { foreach ($uploaded as $media) {

View File

@ -14,16 +14,16 @@ declare(strict_types=1);
use phpOMS\Uri\UriFactory; use phpOMS\Uri\UriFactory;
/** @var \Modules\QA\Modles\QAQuestion[] $questions */ /** @var \Modules\QA\Modules\QAQuestion[] $questions */
$questions = $this->data['questions']; $questions = $this->data['questions'];
/** @var \Modules\QA\Modles\QAApp[] $apps */ /** @var \Modules\QA\Modules\QAApp[] $apps */
$apps = $this->data['apps']; $apps = $this->data['apps'];
echo $this->data['nav']->render(); ?> echo $this->data['nav']->render(); ?>
<div class="row"> <div class="row">
<div class="col-xs-12 box"> <div class="col-xs-12 col-md-4 box">
<select name="app"> <select name="app">
<option value="0"><?= $this->getHtml('All'); ?> <option value="0"><?= $this->getHtml('All'); ?>
<?php foreach ($apps as $app) : ?> <?php foreach ($apps as $app) : ?>
@ -50,7 +50,7 @@ echo $this->data['nav']->render(); ?>
</div> </div>
</div> </div>
<div class="title"> <div class="title">
<a href="<?= UriFactory::build('{/base}/qa/question?{?}&id=' . $question->id); ?>"><?= $this->printHtml($question->name); ?></a> <a href="<?= UriFactory::build('{/base}/qa/question/view?{?}&id=' . $question->id); ?>"><?= $this->printHtml($question->name); ?></a>
</div> </div>
</div> </div>
</div> </div>
@ -59,7 +59,7 @@ echo $this->data['nav']->render(); ?>
<?php foreach ($question->tags as $tag) : <?php foreach ($question->tags as $tag) :
if ($tag->id === 0) { continue; } if ($tag->id === 0) { continue; }
?> ?>
<span class="tag"> <span class="tag" style="background: <?= $this->printHtml($tag->color); ?>">
<?= empty($tag->icon) ? '' : '<i class="g-icon">' . $this->printHtml($tag->icon) . '</i>'; ?> <?= empty($tag->icon) ? '' : '<i class="g-icon">' . $this->printHtml($tag->icon) . '</i>'; ?>
<?= $this->printHtml($tag->getL11n()); ?> <?= $this->printHtml($tag->getL11n()); ?>
</span> </span>

View File

@ -82,7 +82,7 @@ echo $this->data['nav']->render();
foreach ($question->tags as $tag) : foreach ($question->tags as $tag) :
if ($tag->id === 0) { continue; } if ($tag->id === 0) { continue; }
?> ?>
<span class="tag"> <span class="tag" style="background: <?= $this->printHtml($tag->color); ?>">
<?= empty($tag->icon) ? '' : '<i class="g-icon">' . $this->printHtml($tag->icon) . '</i>'; ?> <?= empty($tag->icon) ? '' : '<i class="g-icon">' . $this->printHtml($tag->icon) . '</i>'; ?>
<?= $this->printHtml($tag->getL11n()); ?> <?= $this->printHtml($tag->getL11n()); ?>
</span> </span>