mirror of
https://github.com/Karaka-Management/oms-Knowledgebase.git
synced 2026-02-12 00:08:43 +00:00
update
This commit is contained in:
parent
42c553240c
commit
c213aca9f7
|
|
@ -34,7 +34,7 @@
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"subtype": 1,
|
"subtype": 1,
|
||||||
"name": "Categories",
|
"name": "Categories",
|
||||||
"uri": "{/base}/wiki/category/list",
|
"uri": "{/base}/wiki/category/list?{?}",
|
||||||
"target": "self",
|
"target": "self",
|
||||||
"icon": null,
|
"icon": null,
|
||||||
"order": 5,
|
"order": 5,
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
"uri": "{/base}/wiki/doc/create?{?}",
|
"uri": "{/base}/wiki/doc/create?{?}",
|
||||||
"target": "self",
|
"target": "self",
|
||||||
"icon": null,
|
"icon": null,
|
||||||
"order": 10,
|
"order": 15,
|
||||||
"from": "Knowledgebase",
|
"from": "Knowledgebase",
|
||||||
"permission": { "permission": 4, "category": null, "element": null },
|
"permission": { "permission": 4, "category": null, "element": null },
|
||||||
"parent": 1005901001,
|
"parent": 1005901001,
|
||||||
|
|
@ -64,12 +64,27 @@
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"subtype": 1,
|
"subtype": 1,
|
||||||
"name": "List",
|
"name": "List",
|
||||||
"uri": "{/base}/wiki/list",
|
"uri": "{/base}/wiki/doc/list?{?}",
|
||||||
"target": "self",
|
"target": "self",
|
||||||
"icon": null,
|
"icon": null,
|
||||||
"order": 15,
|
"order": 10,
|
||||||
"from": "Knowledgebase",
|
"from": "Knowledgebase",
|
||||||
"permission": { "permission": 2, "category": null, "element": null },
|
"permission": { "permission": 4, "category": null, "element": null },
|
||||||
|
"parent": 1005901001,
|
||||||
|
"children": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1005906001,
|
||||||
|
"pid": "/wiki",
|
||||||
|
"type": 3,
|
||||||
|
"subtype": 1,
|
||||||
|
"name": "Apps",
|
||||||
|
"uri": "{/base}/wiki/app/list?{?}",
|
||||||
|
"target": "self",
|
||||||
|
"icon": null,
|
||||||
|
"order": 20,
|
||||||
|
"from": "Knowledgebase",
|
||||||
|
"permission": { "permission": 4, "category": null, "element": null },
|
||||||
"parent": 1005901001,
|
"parent": 1005901001,
|
||||||
"children": []
|
"children": []
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -134,4 +134,25 @@ return [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'^.*/wiki/category/l11n$' => [
|
||||||
|
[
|
||||||
|
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiCategoryL11nCreate',
|
||||||
|
'verb' => RouteVerb::PUT,
|
||||||
|
'permission' => [
|
||||||
|
'module' => ApiController::NAME,
|
||||||
|
'type' => PermissionType::READ,
|
||||||
|
'state' => PermissionCategory::CATEGORY,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'dest' => '\Modules\Knowledgebase\Controller\ApiController:apiWikiCategoryL11nUpdate',
|
||||||
|
'verb' => RouteVerb::SET,
|
||||||
|
'permission' => [
|
||||||
|
'module' => ApiController::NAME,
|
||||||
|
'type' => PermissionType::READ,
|
||||||
|
'state' => PermissionCategory::CATEGORY,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ return [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
'^.*/wiki/category/list.*$' => [
|
'^.*/wiki/category/list.*$' => [
|
||||||
[
|
[
|
||||||
'dest' => '\Modules\Knowledgebase\Controller\BackendController:viewKnowledgebaseCategoryList',
|
'dest' => '\Modules\Knowledgebase\Controller\BackendController:viewKnowledgebaseCategoryList',
|
||||||
|
|
@ -73,6 +74,7 @@ return [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
'^.*/wiki/doc/single.*$' => [
|
'^.*/wiki/doc/single.*$' => [
|
||||||
[
|
[
|
||||||
'dest' => '\Modules\Knowledgebase\Controller\BackendController:viewKnowledgebaseDoc',
|
'dest' => '\Modules\Knowledgebase\Controller\BackendController:viewKnowledgebaseDoc',
|
||||||
|
|
@ -117,4 +119,38 @@ return [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'^.*/wiki/app/list.*$' => [
|
||||||
|
[
|
||||||
|
'dest' => '\Modules\Knowledgebase\Controller\BackendController:viewKnowledgebaseAppList',
|
||||||
|
'verb' => RouteVerb::GET,
|
||||||
|
'permission' => [
|
||||||
|
'module' => BackendController::NAME,
|
||||||
|
'type' => PermissionType::READ,
|
||||||
|
'state' => PermissionCategory::CATEGORY,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'^.*/wiki/app/single.*$' => [
|
||||||
|
[
|
||||||
|
'dest' => '\Modules\Knowledgebase\Controller\BackendController:viewKnowledgebaseApp',
|
||||||
|
'verb' => RouteVerb::GET,
|
||||||
|
'permission' => [
|
||||||
|
'module' => BackendController::NAME,
|
||||||
|
'type' => PermissionType::READ,
|
||||||
|
'state' => PermissionCategory::CATEGORY,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'^.*/wiki/app/create.*$' => [
|
||||||
|
[
|
||||||
|
'dest' => '\Modules\Knowledgebase\Controller\BackendController:viewKnowledgebaseAppCreate',
|
||||||
|
'verb' => RouteVerb::GET,
|
||||||
|
'permission' => [
|
||||||
|
'module' => BackendController::NAME,
|
||||||
|
'type' => PermissionType::CREATE,
|
||||||
|
'state' => PermissionCategory::CATEGORY,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -257,7 +257,7 @@ final class ApiController extends Controller
|
||||||
$request->setData('language', $tag['language'], true);
|
$request->setData('language', $tag['language'], true);
|
||||||
|
|
||||||
$internalResponse = new HttpResponse();
|
$internalResponse = new HttpResponse();
|
||||||
$this->app->moduleManager->get('Tag')->apiTagCreate($request, $internalResponse);
|
$this->app->moduleManager->get('Tag')->apiWikiCategoryL11nCreate($request, $internalResponse);
|
||||||
|
|
||||||
if (!\is_array($data = $internalResponse->getDataArray($request->uri->__toString()))) {
|
if (!\is_array($data = $internalResponse->getDataArray($request->uri->__toString()))) {
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -779,4 +779,126 @@ final class ApiController extends Controller
|
||||||
$this->deleteModel($request->header->account, $app, WikiAppMapper::class, 'app', $request->getOrigin());
|
$this->deleteModel($request->header->account, $app, WikiAppMapper::class, 'app', $request->getOrigin());
|
||||||
$this->createStandardDeleteResponse($request, $response, $app);
|
$this->createStandardDeleteResponse($request, $response, $app);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Api method to update CategoryL11n
|
||||||
|
*
|
||||||
|
* @param RequestAbstract $request Request
|
||||||
|
* @param ResponseAbstract $response Response
|
||||||
|
* @param array $data Generic data
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @api
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function apiWikiCategoryL11nUpdate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
|
||||||
|
{
|
||||||
|
if (!empty($val = $this->validateCategoryL11nUpdate($request))) {
|
||||||
|
$response->header->status = RequestStatusCode::R_400;
|
||||||
|
$this->createInvalidUpdateResponse($request, $response, $val);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var BaseStringL11n $old */
|
||||||
|
$old = WikiCategoryL11nMapper::get()->where('id', (int) $request->getData('id'))->execute();
|
||||||
|
$new = $this->updateCategoryL11nFromRequest($request, clone $old);
|
||||||
|
|
||||||
|
$this->updateModel($request->header->account, $old, $new, WikiCategoryL11nMapper::class, 'category_l11n', $request->getOrigin());
|
||||||
|
$this->createStandardUpdateResponse($request, $response, $new);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to update CategoryL11n from request.
|
||||||
|
*
|
||||||
|
* @param RequestAbstract $request Request
|
||||||
|
* @param BaseStringL11n $new Model to modify
|
||||||
|
*
|
||||||
|
* @return BaseStringL11n
|
||||||
|
*
|
||||||
|
* @todo Implement API update function
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function updateCategoryL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n
|
||||||
|
{
|
||||||
|
$new->setLanguage(
|
||||||
|
$request->getDataString('language') ?? $new->language
|
||||||
|
);
|
||||||
|
$new->content = $request->getDataString('title') ?? $new->content;
|
||||||
|
|
||||||
|
return $new;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate CategoryL11n update request
|
||||||
|
*
|
||||||
|
* @param RequestAbstract $request Request
|
||||||
|
*
|
||||||
|
* @return array<string, bool>
|
||||||
|
*
|
||||||
|
* @todo Implement API validation function
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
private function validateCategoryL11nUpdate(RequestAbstract $request) : array
|
||||||
|
{
|
||||||
|
$val = [];
|
||||||
|
if (($val['id'] = !$request->hasData('id'))) {
|
||||||
|
return $val;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Api method to delete CategoryL11n
|
||||||
|
*
|
||||||
|
* @param RequestAbstract $request Request
|
||||||
|
* @param ResponseAbstract $response Response
|
||||||
|
* @param array $data Generic data
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @api
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function apiWikiCategoryL11nDelete(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
|
||||||
|
{
|
||||||
|
if (!empty($val = $this->validateCategoryL11nDelete($request))) {
|
||||||
|
$response->header->status = RequestStatusCode::R_400;
|
||||||
|
$this->createInvalidDeleteResponse($request, $response, $val);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var BaseStringL11n $categoryL11n */
|
||||||
|
$categoryL11n = WikiCategoryL11nMapper::get()->where('id', (int) $request->getData('id'))->execute();
|
||||||
|
$this->deleteModel($request->header->account, $categoryL11n, WikiCategoryL11nMapper::class, 'category_l11n', $request->getOrigin());
|
||||||
|
$this->createStandardDeleteResponse($request, $response, $categoryL11n);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate CategoryL11n delete request
|
||||||
|
*
|
||||||
|
* @param RequestAbstract $request Request
|
||||||
|
*
|
||||||
|
* @return array<string, bool>
|
||||||
|
*
|
||||||
|
* @todo Implement API validation function
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
private function validateCategoryL11nDelete(RequestAbstract $request) : array
|
||||||
|
{
|
||||||
|
$val = [];
|
||||||
|
if (($val['id'] = !$request->hasData('id'))) {
|
||||||
|
return $val;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ use Modules\Knowledgebase\Models\NullWikiCategory;
|
||||||
use Modules\Knowledgebase\Models\NullWikiDoc;
|
use Modules\Knowledgebase\Models\NullWikiDoc;
|
||||||
use Modules\Knowledgebase\Models\PermissionCategory;
|
use Modules\Knowledgebase\Models\PermissionCategory;
|
||||||
use Modules\Knowledgebase\Models\WikiAppMapper;
|
use Modules\Knowledgebase\Models\WikiAppMapper;
|
||||||
|
use Modules\Knowledgebase\Models\WikiCategoryL11nMapper;
|
||||||
use Modules\Knowledgebase\Models\WikiCategoryMapper;
|
use Modules\Knowledgebase\Models\WikiCategoryMapper;
|
||||||
use Modules\Knowledgebase\Models\WikiDocMapper;
|
use Modules\Knowledgebase\Models\WikiDocMapper;
|
||||||
use phpOMS\Account\PermissionType;
|
use phpOMS\Account\PermissionType;
|
||||||
|
|
@ -42,7 +43,7 @@ use phpOMS\Views\View;
|
||||||
final class BackendController extends Controller
|
final class BackendController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -60,7 +61,7 @@ final class BackendController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -75,8 +76,10 @@ final class BackendController extends Controller
|
||||||
{
|
{
|
||||||
$view = new View($this->app->l11nManager, $request, $response);
|
$view = new View($this->app->l11nManager, $request, $response);
|
||||||
|
|
||||||
// @todo assign default org app to wiki app and default flag, load the wiki app based on org id and with a default flag set. Use this app in the following line instead of the hardcoded "1"
|
// @todo assign default org app to wiki app and default flag,
|
||||||
$app = $request->getDataInt('app') ?? 1;
|
// load the wiki app based on org id and with a default flag set.
|
||||||
|
// Use this app in the following line instead of the hardcoded "1"
|
||||||
|
$app = $request->getDataInt('wiki') ?? 1;
|
||||||
|
|
||||||
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-dashboard');
|
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-dashboard');
|
||||||
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
||||||
|
|
@ -84,7 +87,7 @@ final class BackendController extends Controller
|
||||||
/** @var \Modules\Knowledgebase\Models\WikiCategory[] $categories */
|
/** @var \Modules\Knowledgebase\Models\WikiCategory[] $categories */
|
||||||
$categories = WikiCategoryMapper::getAll()
|
$categories = WikiCategoryMapper::getAll()
|
||||||
->with('name')
|
->with('name')
|
||||||
->where('parent', $request->getDataInt('category'))
|
->where('parent', null)
|
||||||
->where('app', $app)
|
->where('app', $app)
|
||||||
->where('name/language', $response->header->l11n->language)
|
->where('name/language', $response->header->l11n->language)
|
||||||
->execute();
|
->execute();
|
||||||
|
|
@ -98,7 +101,8 @@ final class BackendController extends Controller
|
||||||
->where('app', $app)
|
->where('app', $app)
|
||||||
->where('language', $response->header->l11n->language)
|
->where('language', $response->header->l11n->language)
|
||||||
->where('tags/title/language', $response->header->l11n->language)
|
->where('tags/title/language', $response->header->l11n->language)
|
||||||
->limit(25)->sort('createdAt', OrderType::DESC)
|
->limit(25)
|
||||||
|
->sort('createdAt', OrderType::DESC)
|
||||||
->execute();
|
->execute();
|
||||||
|
|
||||||
$view->data['docs'] = $documents;
|
$view->data['docs'] = $documents;
|
||||||
|
|
@ -111,7 +115,7 @@ final class BackendController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -137,7 +141,7 @@ final class BackendController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -163,7 +167,7 @@ final class BackendController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -186,7 +190,7 @@ final class BackendController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -201,20 +205,26 @@ final class BackendController extends Controller
|
||||||
{
|
{
|
||||||
$view = new View($this->app->l11nManager, $request, $response);
|
$view = new View($this->app->l11nManager, $request, $response);
|
||||||
|
|
||||||
$app = $request->getDataInt('app') ?? $this->app->unitId;
|
|
||||||
|
|
||||||
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-list');
|
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-list');
|
||||||
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
||||||
|
|
||||||
/** @var \Modules\Knowledgebase\Models\WikiCategory[] $list */
|
/** @var \Modules\Knowledgebase\Models\WikiCategory[] $list */
|
||||||
$list = WikiCategoryMapper::getAll()->with('name')->where('app', $app)->where('name/language', $response->header->l11n->language)->execute();
|
$list = WikiCategoryMapper::getAll()
|
||||||
|
->with('name')
|
||||||
|
->where('name/language', $response->header->l11n->language)
|
||||||
|
->execute();
|
||||||
|
|
||||||
$view->data['categories'] = $list;
|
$view->data['categories'] = $list;
|
||||||
|
|
||||||
|
/** @var \Modules\Knowledgebase\Models\WikiApp[] $apps */
|
||||||
|
$apps = WikiAppMapper::getAll()->execute();
|
||||||
|
$view->data['apps'] = $apps;
|
||||||
|
|
||||||
return $view;
|
return $view;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -233,14 +243,28 @@ final class BackendController extends Controller
|
||||||
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
||||||
|
|
||||||
/** @var \Modules\Knowledgebase\Models\WikiCategory $category */
|
/** @var \Modules\Knowledgebase\Models\WikiCategory $category */
|
||||||
$category = WikiCategoryMapper::get()->where('id', (int) $request->getData('id'))->execute();
|
$category = WikiCategoryMapper::get()
|
||||||
|
->with('name')
|
||||||
|
->where('id', (int) $request->getData('id'))
|
||||||
|
->where('name/language', $response->header->l11n->language)
|
||||||
|
->execute();
|
||||||
|
|
||||||
$view->data['category'] = $category;
|
$view->data['category'] = $category;
|
||||||
|
|
||||||
|
$view->data['l11nView'] = new \Web\Backend\Views\L11nView($this->app->l11nManager, $request, $response);
|
||||||
|
|
||||||
|
/** @var \phpOMS\Localization\BaseStringL11n[] $l11nValues */
|
||||||
|
$l11nValues = WikiCategoryL11nMapper::getAll()
|
||||||
|
->where('ref', $category->id)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$view->data['l11nValues'] = $l11nValues;
|
||||||
|
|
||||||
return $view;
|
return $view;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -254,7 +278,7 @@ final class BackendController extends Controller
|
||||||
public function viewKnowledgebaseCategoryCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
|
public function viewKnowledgebaseCategoryCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
|
||||||
{
|
{
|
||||||
$view = new View($this->app->l11nManager, $request, $response);
|
$view = new View($this->app->l11nManager, $request, $response);
|
||||||
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-single');
|
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-category-create');
|
||||||
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
||||||
|
|
||||||
$view->data['category'] = new NullWikiCategory();
|
$view->data['category'] = new NullWikiCategory();
|
||||||
|
|
@ -263,7 +287,7 @@ final class BackendController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -276,20 +300,44 @@ final class BackendController extends Controller
|
||||||
*/
|
*/
|
||||||
public function viewKnowledgebaseDocList(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
|
public function viewKnowledgebaseDocList(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface
|
||||||
{
|
{
|
||||||
|
$app = $request->getDataInt('wiki') ?? 1;
|
||||||
|
|
||||||
$view = new View($this->app->l11nManager, $request, $response);
|
$view = new View($this->app->l11nManager, $request, $response);
|
||||||
|
|
||||||
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-list');
|
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-list');
|
||||||
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
||||||
|
|
||||||
/** @var \Modules\Knowledgebase\Models\WikiDoc[] $list */
|
/** @var \Modules\Knowledgebase\Models\WikiCategory[] $categories */
|
||||||
$list = WikiDocMapper::getAll()->limit(25)->execute();
|
$categories = WikiCategoryMapper::getAll()
|
||||||
$view->data['docs'] = $list;
|
->with('name')
|
||||||
|
->where('app', $app)
|
||||||
|
->where('name/language', $response->header->l11n->language)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$view->data['categories'] = $categories;
|
||||||
|
|
||||||
|
/** @var \Modules\Knowledgebase\Models\WikiDoc[] $documents */
|
||||||
|
$documents = WikiDocMapper::getAll()
|
||||||
|
->with('tags')
|
||||||
|
->with('tags/title')
|
||||||
|
->where('app', $app)
|
||||||
|
->where('category', $request->getDataInt('category') ?? \reset($categories)->id)
|
||||||
|
->where('language', $response->header->l11n->language)
|
||||||
|
->where('tags/title/language', $response->header->l11n->language)
|
||||||
|
->sort('createdAt', OrderType::DESC)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$view->data['docs'] = $documents;
|
||||||
|
|
||||||
|
/** @var \Modules\Knowledgebase\Models\WikiApp[] $apps */
|
||||||
|
$apps = WikiAppMapper::getAll()->execute();
|
||||||
|
$view->data['apps'] = $apps;
|
||||||
|
|
||||||
return $view;
|
return $view;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -304,7 +352,7 @@ final class BackendController extends Controller
|
||||||
{
|
{
|
||||||
$view = new View($this->app->l11nManager, $request, $response);
|
$view = new View($this->app->l11nManager, $request, $response);
|
||||||
|
|
||||||
$app = $request->getDataInt('app') ?? $this->app->unitId;
|
$app = $request->getDataInt('wiki') ?? $this->app->unitId;
|
||||||
|
|
||||||
/** @var \Modules\Knowledgebase\Models\WikiDoc $document */
|
/** @var \Modules\Knowledgebase\Models\WikiDoc $document */
|
||||||
$document = WikiDocMapper::get()
|
$document = WikiDocMapper::get()
|
||||||
|
|
@ -353,7 +401,7 @@ final class BackendController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -383,7 +431,7 @@ final class BackendController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behaviour.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
* @param ResponseAbstract $response Response
|
* @param ResponseAbstract $response Response
|
||||||
|
|
@ -399,7 +447,7 @@ final class BackendController extends Controller
|
||||||
$view = new View($this->app->l11nManager, $request, $response);
|
$view = new View($this->app->l11nManager, $request, $response);
|
||||||
|
|
||||||
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-create');
|
$view->setTemplate('/Modules/Knowledgebase/Theme/Backend/wiki-doc-create');
|
||||||
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response);
|
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1005901001, $request, $response);
|
||||||
|
|
||||||
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response);
|
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response);
|
||||||
$view->data['editor'] = $editor;
|
$view->data['editor'] = $editor;
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ namespace Modules\Knowledgebase\Models;
|
||||||
use phpOMS\Stdlib\Base\Enum;
|
use phpOMS\Stdlib\Base\Enum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Permision state enum.
|
* Permission category enum.
|
||||||
*
|
*
|
||||||
* @package Modules\Knowledgebase\Models
|
* @package Modules\Knowledgebase\Models
|
||||||
* @license OMS License 2.0
|
* @license OMS License 2.0
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ class WikiCategory implements \JsonSerializable
|
||||||
public string $virtualPath = '/';
|
public string $virtualPath = '/';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cosntructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -21,22 +21,33 @@ $categories = $this->data['categories'] ?? [];
|
||||||
echo $this->data['nav']->render();
|
echo $this->data['nav']->render();
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="box">
|
||||||
|
<a class="button end-xs save" href="<?= UriFactory::build('{/base}/wiki/category/create'); ?>"><?= $this->getHtml('New', '0', '0'); ?></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12">
|
<div class="col-xs-12">
|
||||||
<div class="portlet">
|
<div class="portlet">
|
||||||
<div class="portlet-head"><?= $this->getHtml('Categories'); ?><i class="g-icon download btn end-xs">download</i></div>
|
<div class="portlet-head">
|
||||||
|
<?= $this->getHtml('Categories'); ?>
|
||||||
|
<i class="g-icon download btn end-xs">download</i>
|
||||||
|
</div>
|
||||||
<div class="slider">
|
<div class="slider">
|
||||||
<table class="default sticky">
|
<table class="default sticky">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td><?= $this->getHtml('ID', '0', '0'); ?>
|
<td><?= $this->getHtml('ID', '0', '0'); ?>
|
||||||
|
<td><?= $this->getHtml('App'); ?>
|
||||||
<td class="wf-100"><?= $this->getHtml('Name'); ?>
|
<td class="wf-100"><?= $this->getHtml('Name'); ?>
|
||||||
<td><?= $this->getHtml('Parent'); ?>
|
<td><?= $this->getHtml('Parent'); ?>
|
||||||
<tbody>
|
<tbody>
|
||||||
<?php foreach ($categories as $key => $value) :
|
<?php foreach ($categories as $key => $value) :
|
||||||
$url = UriFactory::build('{/base}/admin/account/settings?{?}&id=' . $value->id); ?>
|
$url = UriFactory::build('{/base}/wiki/category/single?id=' . $value->id); ?>
|
||||||
<tr tabindex="0" data-href="<?= $url; ?>">
|
<tr tabindex="0" data-href="<?= $url; ?>">
|
||||||
<td data-label="<?= $this->getHtml('ID', '0', '0'); ?>"><a href="<?= $url; ?>"><?= $value->id; ?></a>
|
<td data-label="<?= $this->getHtml('ID', '0', '0'); ?>"><a href="<?= $url; ?>"><?= $value->id; ?></a>
|
||||||
|
<td data-label="<?= $this->getHtml('App'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($this->data['apps'][$value->app->id]->name); ?></a>
|
||||||
<td data-label="<?= $this->getHtml('Name'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->getL11n()); ?></a>
|
<td data-label="<?= $this->getHtml('Name'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->getL11n()); ?></a>
|
||||||
<td data-label="<?= $this->getHtml('Parent'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->parent !== null ? $value->parent->getL11n() : ''); ?></a>
|
<td data-label="<?= $this->getHtml('Parent'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->parent !== null ? $value->parent->getL11n() : ''); ?></a>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
|
@ -45,7 +56,6 @@ echo $this->data['nav']->render();
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="portlet-foot"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1,14 +1,29 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @var \phpOMS\Views\View $this
|
* Jingga
|
||||||
|
*
|
||||||
|
* PHP Version 8.1
|
||||||
|
*
|
||||||
|
* @package Modules\Knowledgebase
|
||||||
|
* @copyright Dennis Eichhorn
|
||||||
|
* @license OMS License 2.0
|
||||||
|
* @version 1.0.0
|
||||||
|
* @link https://jingga.app
|
||||||
*/
|
*/
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
echo $this->data['nav']->render();
|
use phpOMS\Uri\UriFactory;
|
||||||
?>
|
|
||||||
|
|
||||||
|
/** @var \Modules\Knowledgebase\Models\WikiCategory */
|
||||||
|
$category = $this->data['category'];
|
||||||
|
|
||||||
|
/** @var \phpOMS\Views\View $this */
|
||||||
|
echo $this->data['nav']->render(); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12">
|
<?= $this->data['l11nView']->render(
|
||||||
|
$this->data['l11nValues'],
|
||||||
</div>
|
[],
|
||||||
|
'{/api}wiki/category/l11n'
|
||||||
|
);
|
||||||
|
?>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -58,9 +58,9 @@ echo $this->data['nav']->render(); ?>
|
||||||
<div class="portlet-head"><?= $this->getHtml('App'); ?></div>
|
<div class="portlet-head"><?= $this->getHtml('App'); ?></div>
|
||||||
<div class="portlet-body">
|
<div class="portlet-body">
|
||||||
<form>
|
<form>
|
||||||
<select name="app">
|
<select id="iApp" name="app" data-action='[{"listener": "change", "action": [{"key": 1, "type": "redirect", "uri": "{%}&wiki={#iApp}", "target": "self"}]}]'>
|
||||||
<?php foreach ($apps as $app) : ?>
|
<?php foreach ($apps as $app) : ?>
|
||||||
<option><?= $this->printHtml($app->name); ?>
|
<option value="<?= $app->id; ?>"<?= $this->request->getDataInt('wiki') === $app->id ? ' selected' : ''; ?>><?= $this->printHtml($app->name); ?>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
</form>
|
</form>
|
||||||
|
|
@ -72,7 +72,7 @@ echo $this->data['nav']->render(); ?>
|
||||||
<div class="portlet-body">
|
<div class="portlet-body">
|
||||||
<ul>
|
<ul>
|
||||||
<?php foreach ($categories as $category) : ?>
|
<?php foreach ($categories as $category) : ?>
|
||||||
<li><a href="<?= UriFactory::build('{/base}/wiki/doc/list?{?}&id=' . $category->id); ?>"><?= $this->printHtml($category->getL11n()); ?></a>
|
<li><a href="<?= UriFactory::build('{/base}/wiki/doc/list?{?}&category=' . $category->id); ?>"><?= $this->printHtml($category->getL11n()); ?></a>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
84
Theme/Backend/wiki-doc-list.tpl.php
Normal file
84
Theme/Backend/wiki-doc-list.tpl.php
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Jingga
|
||||||
|
*
|
||||||
|
* PHP Version 8.1
|
||||||
|
*
|
||||||
|
* @package Modules\Knowledgebase
|
||||||
|
* @copyright Dennis Eichhorn
|
||||||
|
* @license OMS License 2.0
|
||||||
|
* @version 1.0.0
|
||||||
|
* @link https://jingga.app
|
||||||
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use \phpOMS\Uri\UriFactory;
|
||||||
|
use phpOMS\Utils\Parser\Markdown\Markdown;
|
||||||
|
|
||||||
|
/** @var \phpOMS\Views\View $this */
|
||||||
|
/** @var \Modules\Knowledgebase\Models\WikiCategory[] $categories */
|
||||||
|
$categories = $this->data['categories'] ?? [];
|
||||||
|
|
||||||
|
/** @var \Modules\Knowledgebase\Models\WikiDoc[] $documents */
|
||||||
|
$documents = $this->data['docs'] ?? [];
|
||||||
|
|
||||||
|
/** @var \Modules\Knowledgebase\Models\WikiApp[] $apps */
|
||||||
|
$apps = $this->data['apps'] ?? [];
|
||||||
|
|
||||||
|
echo $this->data['nav']->render(); ?>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 col-md-8 col-lg-9">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<div class="portlet">
|
||||||
|
<div class="portlet-head">
|
||||||
|
<?= $this->getHtml('Docs'); ?>
|
||||||
|
<i class="g-icon download btn end-xs">download</i>
|
||||||
|
</div>
|
||||||
|
<div class="slider">
|
||||||
|
<table class="default sticky">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td class="wf-100"><?= $this->getHtml('Name'); ?>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach ($documents as $key => $value) :
|
||||||
|
$url = UriFactory::build('{/base}/wiki/doc/single?id=' . $value->id); ?>
|
||||||
|
<tr tabindex="0" data-href="<?= $url; ?>">
|
||||||
|
<td data-label="<?= $this->getHtml('Name'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->name); ?></a>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
<?php if (empty($documents)) : ?>
|
||||||
|
<tr><td colspan="1" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
|
||||||
|
<?php endif; ?>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-3">
|
||||||
|
<section class="portlet">
|
||||||
|
<div class="portlet-head"><?= $this->getHtml('App'); ?></div>
|
||||||
|
<div class="portlet-body">
|
||||||
|
<form>
|
||||||
|
<select id="iApp" name="app" data-action='[{"listener": "change", "action": [{"key": 1, "type": "redirect", "uri": "{%}&wiki={#iApp}", "target": "self"}]}]'>
|
||||||
|
<?php foreach ($apps as $app) : ?>
|
||||||
|
<option value="<?= $app->id; ?>"<?= $this->request->getDataInt('wiki') === $app->id ? ' selected' : ''; ?>><?= $this->printHtml($app->name); ?>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="portlet">
|
||||||
|
<div class="portlet-head"><?= $this->getHtml('Categories'); ?></div>
|
||||||
|
<div class="portlet-body">
|
||||||
|
<ul>
|
||||||
|
<?php foreach ($categories as $category) : ?>
|
||||||
|
<li><a href="<?= UriFactory::build('{/base}/wiki/doc/list?{?}&category=' . $category->id); ?>"><?= $this->printHtml($category->getL11n()); ?></a>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
Loading…
Reference in New Issue
Block a user