mirror of
https://github.com/Karaka-Management/oms-Knowledgebase.git
synced 2026-02-13 08:48:42 +00:00
l11n, unit/app and simplification fixes
This commit is contained in:
parent
835c079a20
commit
c1ceb56da5
|
|
@ -14,6 +14,14 @@
|
||||||
"name": "wiki_app_name",
|
"name": "wiki_app_name",
|
||||||
"type": "VARCHAR(255)",
|
"type": "VARCHAR(255)",
|
||||||
"null": false
|
"null": false
|
||||||
|
},
|
||||||
|
"wiki_app_unit": {
|
||||||
|
"name": "wiki_app_unit",
|
||||||
|
"type": "INT",
|
||||||
|
"default": null,
|
||||||
|
"null": true,
|
||||||
|
"foreignTable": "organization_unit",
|
||||||
|
"foreignKey": "organization_unit_id"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ use Modules\Knowledgebase\Models\NullWikiCategory;
|
||||||
use Modules\Knowledgebase\Models\WikiApp;
|
use Modules\Knowledgebase\Models\WikiApp;
|
||||||
use Modules\Knowledgebase\Models\WikiAppMapper;
|
use Modules\Knowledgebase\Models\WikiAppMapper;
|
||||||
use Modules\Knowledgebase\Models\WikiCategory;
|
use Modules\Knowledgebase\Models\WikiCategory;
|
||||||
use Modules\Knowledgebase\Models\WikiCategoryL11n;
|
use phpOMS\Localization\BaseStringL11n;
|
||||||
use Modules\Knowledgebase\Models\WikiCategoryL11nMapper;
|
use Modules\Knowledgebase\Models\WikiCategoryL11nMapper;
|
||||||
use Modules\Knowledgebase\Models\WikiCategoryMapper;
|
use Modules\Knowledgebase\Models\WikiCategoryMapper;
|
||||||
use Modules\Knowledgebase\Models\WikiDoc;
|
use Modules\Knowledgebase\Models\WikiDoc;
|
||||||
|
|
@ -335,18 +335,18 @@ final class ApiController extends Controller
|
||||||
*
|
*
|
||||||
* @param RequestAbstract $request Request
|
* @param RequestAbstract $request Request
|
||||||
*
|
*
|
||||||
* @return WikiCategoryL11n
|
* @return BaseStringL11n
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
private function createWikiCategoryL11nFromRequest(RequestAbstract $request) : WikiCategoryL11n
|
private function createWikiCategoryL11nFromRequest(RequestAbstract $request) : BaseStringL11n
|
||||||
{
|
{
|
||||||
$l11nWikiCategory = new WikiCategoryL11n();
|
$l11nWikiCategory = new BaseStringL11n();
|
||||||
$l11nWikiCategory->category = (int) ($request->getData('category') ?? 0);
|
$l11nWikiCategory->ref = (int) ($request->getData('category') ?? 0);
|
||||||
$l11nWikiCategory->setLanguage((string) (
|
$l11nWikiCategory->setLanguage((string) (
|
||||||
$request->getData('language') ?? $request->getLanguage()
|
$request->getData('language') ?? $request->getLanguage()
|
||||||
));
|
));
|
||||||
$l11nWikiCategory->name = (string) ($request->getData('name') ?? '');
|
$l11nWikiCategory->content = (string) ($request->getData('name') ?? '');
|
||||||
|
|
||||||
return $l11nWikiCategory;
|
return $l11nWikiCategory;
|
||||||
}
|
}
|
||||||
|
|
@ -647,6 +647,7 @@ final class ApiController extends Controller
|
||||||
{
|
{
|
||||||
$app = new WikiApp();
|
$app = new WikiApp();
|
||||||
$app->name = (string) $request->getData('name');
|
$app->name = (string) $request->getData('name');
|
||||||
|
$app->unit = $request->getData('unit', 'int');
|
||||||
|
|
||||||
return $app;
|
return $app;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,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->hasData('category') ? (int) $request->getData('category') : null)
|
->where('parent', $request->getData('category', 'int'))
|
||||||
->where('app', $app)
|
->where('app', $app)
|
||||||
->where('name/language', $response->getLanguage())
|
->where('name/language', $response->getLanguage())
|
||||||
->execute();
|
->execute();
|
||||||
|
|
@ -332,7 +332,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->hasData('category') ? (int) $request->getData('category') : null)
|
->where('parent', $request->getData('category', 'int'))
|
||||||
->where('app', $app)
|
->where('app', $app)
|
||||||
->where('name/language', $response->getLanguage())
|
->where('name/language', $response->getLanguage())
|
||||||
->execute();
|
->execute();
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,14 @@ class WikiApp implements \JsonSerializable
|
||||||
*/
|
*/
|
||||||
protected int $id = 0;
|
protected int $id = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit
|
||||||
|
*
|
||||||
|
* @var null|int
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public ?int $unit = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Application name.
|
* Application name.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ final class WikiAppMapper extends DataMapperFactory
|
||||||
*/
|
*/
|
||||||
public const COLUMNS = [
|
public const COLUMNS = [
|
||||||
'wiki_app_id' => ['name' => 'wiki_app_id', 'type' => 'int', 'internal' => 'id'],
|
'wiki_app_id' => ['name' => 'wiki_app_id', 'type' => 'int', 'internal' => 'id'],
|
||||||
|
'wiki_app_unit' => ['name' => 'wiki_app_unit', 'type' => 'int', 'internal' => 'unit'],
|
||||||
'wiki_app_name' => ['name' => 'wiki_app_name', 'type' => 'string', 'internal' => 'name'],
|
'wiki_app_name' => ['name' => 'wiki_app_name', 'type' => 'string', 'internal' => 'name'],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ declare(strict_types=1);
|
||||||
namespace Modules\Knowledgebase\Models;
|
namespace Modules\Knowledgebase\Models;
|
||||||
|
|
||||||
use phpOMS\Localization\ISO639x1Enum;
|
use phpOMS\Localization\ISO639x1Enum;
|
||||||
|
use phpOMS\Localization\BaseStringL11n;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wiki category class.
|
* Wiki category class.
|
||||||
|
|
@ -47,10 +48,10 @@ class WikiCategory implements \JsonSerializable
|
||||||
/**
|
/**
|
||||||
* Name.
|
* Name.
|
||||||
*
|
*
|
||||||
* @var string|WikiCategoryL11n
|
* @var string|BaseStringL11n
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
private string | WikiCategoryL11n $name = '';
|
private string | BaseStringL11n $name = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parent category.
|
* Parent category.
|
||||||
|
|
@ -101,27 +102,27 @@ class WikiCategory implements \JsonSerializable
|
||||||
*/
|
*/
|
||||||
public function getL11n() : string
|
public function getL11n() : string
|
||||||
{
|
{
|
||||||
return $this->name instanceof WikiCategoryL11n ? $this->name->name : $this->name;
|
return $this->name instanceof BaseStringL11n ? $this->name->content : $this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set name
|
* Set name
|
||||||
*
|
*
|
||||||
* @param string|WikiCategoryL11n $name Tag article name
|
* @param string|BaseStringL11n $name Tag article name
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public function setL11n(string | WikiCategoryL11n $name, string $lang = ISO639x1Enum::_EN) : void
|
public function setL11n(string | BaseStringL11n $name, string $lang = ISO639x1Enum::_EN) : void
|
||||||
{
|
{
|
||||||
if ($name instanceof WikiCategoryL11n) {
|
if ($name instanceof BaseStringL11n) {
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
} elseif ($this->name instanceof WikiCategoryL11n) {
|
} elseif ($this->name instanceof BaseStringL11n) {
|
||||||
$this->name->name = $name;
|
$this->name->content = $name;
|
||||||
} else {
|
} else {
|
||||||
$this->name = new WikiCategoryL11n();
|
$this->name = new BaseStringL11n();
|
||||||
$this->name->name = $name;
|
$this->name->content = $name;
|
||||||
$this->name->setLanguage($lang);
|
$this->name->setLanguage($lang);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,144 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Karaka
|
|
||||||
*
|
|
||||||
* PHP Version 8.1
|
|
||||||
*
|
|
||||||
* @package Modules\Knowledgebase\Models
|
|
||||||
* @copyright Dennis Eichhorn
|
|
||||||
* @license OMS License 1.0
|
|
||||||
* @version 1.0.0
|
|
||||||
* @link https://jingga.app
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Modules\Knowledgebase\Models;
|
|
||||||
|
|
||||||
use phpOMS\Localization\ISO639x1Enum;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Category class.
|
|
||||||
*
|
|
||||||
* @package Modules\Knowledgebase\Models
|
|
||||||
* @license OMS License 1.0
|
|
||||||
* @link https://jingga.app
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
class WikiCategoryL11n implements \JsonSerializable
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Article ID.
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
protected int $id = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Category ID.
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public int $category = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Language.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
protected string $language = ISO639x1Enum::_EN;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Name.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public string $name = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*
|
|
||||||
* @param string $name Name
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function __construct(string $name = '', string $language = ISO639x1Enum::_EN)
|
|
||||||
{
|
|
||||||
$this->name = $name;
|
|
||||||
$this->language = $language;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get id
|
|
||||||
*
|
|
||||||
* @return int
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function getId() : int
|
|
||||||
{
|
|
||||||
return $this->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get language
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function getLanguage() : string
|
|
||||||
{
|
|
||||||
return $this->language;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set language
|
|
||||||
*
|
|
||||||
* @param string $language Language
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function setLanguage(string $language) : void
|
|
||||||
{
|
|
||||||
$this->language = $language;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get category name.
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
public function getName() : string
|
|
||||||
{
|
|
||||||
return $this->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function toArray() : array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'id' => $this->id,
|
|
||||||
'name' => $this->name,
|
|
||||||
'category' => $this->category,
|
|
||||||
'language' => $this->language,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function jsonSerialize() : mixed
|
|
||||||
{
|
|
||||||
return $this->toArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -15,6 +15,7 @@ declare(strict_types=1);
|
||||||
namespace Modules\Knowledgebase\Models;
|
namespace Modules\Knowledgebase\Models;
|
||||||
|
|
||||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||||
|
use phpOMS\Localization\BaseStringL11n;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Category mapper class.
|
* Category mapper class.
|
||||||
|
|
@ -34,8 +35,8 @@ final class WikiCategoryL11nMapper extends DataMapperFactory
|
||||||
*/
|
*/
|
||||||
public const COLUMNS = [
|
public const COLUMNS = [
|
||||||
'wiki_category_l11n_id' => ['name' => 'wiki_category_l11n_id', 'type' => 'int', 'internal' => 'id'],
|
'wiki_category_l11n_id' => ['name' => 'wiki_category_l11n_id', 'type' => 'int', 'internal' => 'id'],
|
||||||
'wiki_category_l11n_name' => ['name' => 'wiki_category_l11n_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true],
|
'wiki_category_l11n_name' => ['name' => 'wiki_category_l11n_name', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
|
||||||
'wiki_category_l11n_category' => ['name' => 'wiki_category_l11n_category', 'type' => 'int', 'internal' => 'category'],
|
'wiki_category_l11n_category' => ['name' => 'wiki_category_l11n_category', 'type' => 'int', 'internal' => 'ref'],
|
||||||
'wiki_category_l11n_language' => ['name' => 'wiki_category_l11n_language', 'type' => 'string', 'internal' => 'language'],
|
'wiki_category_l11n_language' => ['name' => 'wiki_category_l11n_language', 'type' => 'string', 'internal' => 'language'],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -54,4 +55,12 @@ final class WikiCategoryL11nMapper extends DataMapperFactory
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public const PRIMARYFIELD ='wiki_category_l11n_id';
|
public const PRIMARYFIELD ='wiki_category_l11n_id';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Model to use by the mapper.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public const MODEL = BaseStringL11n::class;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ final class WikiCategoryMapper extends DataMapperFactory
|
||||||
'mapper' => WikiCategoryL11nMapper::class,
|
'mapper' => WikiCategoryL11nMapper::class,
|
||||||
'table' => 'wiki_category_l11n',
|
'table' => 'wiki_category_l11n',
|
||||||
'self' => 'wiki_category_l11n_category',
|
'self' => 'wiki_category_l11n_category',
|
||||||
'column' => 'name',
|
'column' => 'content',
|
||||||
'external' => null,
|
'external' => null,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,87 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Karaka
|
|
||||||
*
|
|
||||||
* PHP Version 8.1
|
|
||||||
*
|
|
||||||
* @package tests
|
|
||||||
* @copyright Dennis Eichhorn
|
|
||||||
* @license OMS License 1.0
|
|
||||||
* @version 1.0.0
|
|
||||||
* @link https://jingga.app
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Modules\Knowledgebase\tests\Models;
|
|
||||||
|
|
||||||
use Modules\Knowledgebase\Models\WikiCategoryL11n;
|
|
||||||
use phpOMS\Localization\ISO639x1Enum;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @internal
|
|
||||||
*/
|
|
||||||
final class WikiCategoryL11nTest extends \PHPUnit\Framework\TestCase
|
|
||||||
{
|
|
||||||
private WikiCategoryL11n $l11n;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
protected function setUp() : void
|
|
||||||
{
|
|
||||||
$this->l11n = new WikiCategoryL11n();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Modules\Knowledgebase\Models\WikiCategoryL11n
|
|
||||||
* @group module
|
|
||||||
*/
|
|
||||||
public function testDefault() : void
|
|
||||||
{
|
|
||||||
self::assertEquals(0, $this->l11n->getId());
|
|
||||||
self::assertEquals('', $this->l11n->name);
|
|
||||||
self::assertEquals(0, $this->l11n->category);
|
|
||||||
self::assertEquals(ISO639x1Enum::_EN, $this->l11n->getLanguage());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Modules\Knowledgebase\Models\WikiCategoryL11n
|
|
||||||
* @group module
|
|
||||||
*/
|
|
||||||
public function testNameInputOutput() : void
|
|
||||||
{
|
|
||||||
$this->l11n->name = 'TestName';
|
|
||||||
self::assertEquals('TestName', $this->l11n->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Modules\Knowledgebase\Models\WikiCategoryL11n
|
|
||||||
* @group module
|
|
||||||
*/
|
|
||||||
public function testLanguageInputOutput() : void
|
|
||||||
{
|
|
||||||
$this->l11n->setLanguage(ISO639x1Enum::_DE);
|
|
||||||
self::assertEquals(ISO639x1Enum::_DE, $this->l11n->getLanguage());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @covers Modules\Knowledgebase\Models\WikiCategoryL11n
|
|
||||||
* @group module
|
|
||||||
*/
|
|
||||||
public function testSerialize() : void
|
|
||||||
{
|
|
||||||
$this->l11n->name = 'Title';
|
|
||||||
$this->l11n->category = 2;
|
|
||||||
$this->l11n->setLanguage(ISO639x1Enum::_DE);
|
|
||||||
|
|
||||||
self::assertEquals(
|
|
||||||
[
|
|
||||||
'id' => 0,
|
|
||||||
'name' => 'Title',
|
|
||||||
'category' => 2,
|
|
||||||
'language' => ISO639x1Enum::_DE,
|
|
||||||
],
|
|
||||||
$this->l11n->jsonSerialize()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -17,7 +17,7 @@ namespace Modules\Knowledgebase\tests\Models;
|
||||||
use Modules\Knowledgebase\Models\NullWikiApp;
|
use Modules\Knowledgebase\Models\NullWikiApp;
|
||||||
use Modules\Knowledgebase\Models\NullWikiCategory;
|
use Modules\Knowledgebase\Models\NullWikiCategory;
|
||||||
use Modules\Knowledgebase\Models\WikiCategory;
|
use Modules\Knowledgebase\Models\WikiCategory;
|
||||||
use Modules\Knowledgebase\Models\WikiCategoryL11n;
|
use phpOMS\Localization\BaseStringL11n;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @testdox Modules\tests\Knowledgebase\Models\WikiCateboryTest: Wiki category
|
* @testdox Modules\tests\Knowledgebase\Models\WikiCateboryTest: Wiki category
|
||||||
|
|
@ -71,7 +71,7 @@ final class WikiCategoryTest extends \PHPUnit\Framework\TestCase
|
||||||
$this->category->setL11n('Test');
|
$this->category->setL11n('Test');
|
||||||
self::assertEquals('Test', $this->category->getL11n());
|
self::assertEquals('Test', $this->category->getL11n());
|
||||||
|
|
||||||
$this->category->setL11n(new WikiCategoryL11n('NewTest'));
|
$this->category->setL11n(new BaseStringL11n('NewTest'));
|
||||||
self::assertEquals('NewTest', $this->category->getL11n());
|
self::assertEquals('NewTest', $this->category->getL11n());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user