draft create paths

This commit is contained in:
Dennis Eichhorn 2020-06-11 23:04:57 +02:00
parent 0998c003fe
commit 0bb6b7990e
6 changed files with 223 additions and 2 deletions

125
Admin/Routes/Web/Api.php Normal file
View File

@ -0,0 +1,125 @@
<?php declare(strict_types=1);
use Modules\Knowledgebase\Controller\ApiController;
use Modules\Knowledgebase\Models\PermissionState;
use phpOMS\Account\PermissionType;
use phpOMS\Router\RouteVerb;
return [
'^.*/wiki/doc.*$' => [
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiDocCreate',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::CREATE,
'state' => PermissionState::WIKI,
],
],
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiDocUpdate',
'verb' => RouteVerb::SET,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::WIKI,
],
],
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiDocGet',
'verb' => RouteVerb::GET,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::WIKI,
],
],
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiDocDelete',
'verb' => RouteVerb::DELETE,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::DELETE,
'state' => PermissionState::WIKI,
],
],
],
'^.*/wiki/category.*$' => [
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiCategoryCreate',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::CREATE,
'state' => PermissionState::CATEGORY,
],
],
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiCategoryUpdate',
'verb' => RouteVerb::SET,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::CATEGORY,
],
],
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiCategoryGet',
'verb' => RouteVerb::GET,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::CATEGORY,
],
],
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiCategoryDelete',
'verb' => RouteVerb::DELETE,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::DELETE,
'state' => PermissionState::CATEGORY,
],
],
],
'^.*/wiki/app.*$' => [
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiAppCreate',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::CREATE,
'state' => PermissionState::APP,
],
],
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiAppUpdate',
'verb' => RouteVerb::SET,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::MODIFY,
'state' => PermissionState::APP,
],
],
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiAppGet',
'verb' => RouteVerb::GET,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::READ,
'state' => PermissionState::APP,
],
],
[
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiAppDelete',
'verb' => RouteVerb::DELETE,
'permission' => [
'module' => ApiController::MODULE_NAME,
'type' => PermissionType::DELETE,
'state' => PermissionState::APP,
],
],
],
];

View File

@ -316,10 +316,13 @@ final class BackendController extends Controller
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-single');
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-create');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response));
$view->setData('category', new NullWikiDoc());
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response);
$view->addData('editor', $editor);
$view->setData('doc', new NullWikiDoc());
return $view;
}

View File

@ -28,4 +28,5 @@ abstract class PermissionState extends Enum
{
public const CATEGORY = 1;
public const WIKI = 2;
public const APP = 3;
}

View File

@ -13,8 +13,12 @@
declare(strict_types=1);
return ['Knowledgebase' => [
'Active' => 'Aktiv',
'Categories' => 'Kategorien',
'Draft' => 'Draft',
'Language' => 'Sprache',
'Name' => 'Name',
'Parent' => 'Übergeordnet',
'Wiki' => 'Wiki',
'Status' => 'Status',
]];

View File

@ -13,8 +13,12 @@
declare(strict_types=1);
return ['Knowledgebase' => [
'Active' => 'Active',
'Categories' => 'Categories',
'Draft' => 'Draft',
'Language' => 'Language',
'Name' => 'Name',
'Parent' => 'Parent',
'Wiki' => 'Wiki',
'Status' => 'Status',
]];

View File

@ -0,0 +1,84 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package Modules\News
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
use Modules\Knowledgebase\Models\NullWikiDoc;
use phpOMS\Uri\UriFactory;
use Modules\Knowledgebase\Models\WikiStatus;
/** @var \Modules\Knowledgebase\Models\WikiDoc $wiki */
$wiki = $this->getData('doc') ?? new NullWikiDoc();
$isNewDoc = $wiki instanceof NullWikiDoc;
$languages = \phpOMS\Localization\ISO639Enum::getConstants();
/** @var \phpOMS\Views\View $this */
echo $this->getData('nav')->render(); ?>
<div class="row">
<div class="col-xs-12 col-md-9">
<div id="testEditor" class="m-editor">
<section class="portlet">
<div class="portlet-body">
<input id="iTitle" type="text" name="title" form="docForm" value="<?= $wiki->getName(); ?>">
</div>
</section>
<section class="portlet">
<div class="portlet-body">
<?= $this->getData('editor')->render('iWiki'); ?>
</div>
</section>
<div class="box wf-100">
<?= $this->getData('editor')->getData('text')->render('iWiki', 'plain', 'docForm', $wiki->getDocRaw(), $wiki->getDoc()); ?>
</div>
</div>
</div>
<div class="col-xs-12 col-md-3">
<section class="portlet">
<form id="docForm" method="<?= $isNewDoc ? 'PUT' : 'POST'; ?>" action="<?= UriFactory::build('{/api}wiki?' . ($isNewDoc ? '' : 'id={?id}&') . 'csrf={$CSRF}'); ?>">
<div class="portlet-head"><?= $this->getHtml('Status'); ?></div>
<div class="portlet-body">
<table class="layout wf-100">
<tr><td>
<select name="status" id="iStatus">
<option value="<?= $this->printHtml(WikiStatus::DRAFT); ?>"<?= $wiki->getStatus() === WikiStatus::DRAFT ? ' selected' : ''; ?>><?= $this->getHtml('Draft'); ?>
<option value="<?= $this->printHtml(WikiStatus::ACTIVE); ?>"<?= $wiki->getStatus() === WikiStatus::ACTIVE ? ' selected' : ''; ?>><?= $this->getHtml('Active'); ?>
</select>
<tr><td><label for="iLanguages"><?= $this->getHtml('Language'); ?></label>
<tr><td>
<select id="iLanguages" name="lang">
<?php foreach ($languages as $code => $language) : $code = \strtolower(\substr($code, 1)); ?>
<option value="<?= $this->printHtml($code); ?>"<?= $this->printHtml($code === $wiki->getLanguage() ? ' selected' : ''); ?>><?= $this->printHtml($language); ?>
<?php endforeach; ?>
</select>
</table>
</div>
<div class="portlet-foot">
<table class="layout wf-100">
<tr>
<td>
<?php if ($isNewDoc) : ?>
<a href="<?= UriFactory::build('/wiki/dashboard'); ?>" class="button"><?= $this->getHtml('Delete', '0', '0'); ?></a>
<?php else : ?>
<input type="submit" name="deleteButton" id="iDeleteButton" value="<?= $this->getHtml('Delete', '0', '0'); ?>">
<?php endif; ?>
<td class="rightText">
<input type="submit" name="saveButton" id="iSaveButton" value="<?= $this->getHtml('Save', '0', '0'); ?>">
</table>
</div>
</form>
</section>
</div>
</div>