mirror of
https://github.com/Karaka-Management/oms-Knowledgebase.git
synced 2026-01-11 09:28:40 +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",
|
||||
"type": "VARCHAR(255)",
|
||||
"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\WikiAppMapper;
|
||||
use Modules\Knowledgebase\Models\WikiCategory;
|
||||
use Modules\Knowledgebase\Models\WikiCategoryL11n;
|
||||
use phpOMS\Localization\BaseStringL11n;
|
||||
use Modules\Knowledgebase\Models\WikiCategoryL11nMapper;
|
||||
use Modules\Knowledgebase\Models\WikiCategoryMapper;
|
||||
use Modules\Knowledgebase\Models\WikiDoc;
|
||||
|
|
@ -335,18 +335,18 @@ final class ApiController extends Controller
|
|||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return WikiCategoryL11n
|
||||
* @return BaseStringL11n
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function createWikiCategoryL11nFromRequest(RequestAbstract $request) : WikiCategoryL11n
|
||||
private function createWikiCategoryL11nFromRequest(RequestAbstract $request) : BaseStringL11n
|
||||
{
|
||||
$l11nWikiCategory = new WikiCategoryL11n();
|
||||
$l11nWikiCategory->category = (int) ($request->getData('category') ?? 0);
|
||||
$l11nWikiCategory = new BaseStringL11n();
|
||||
$l11nWikiCategory->ref = (int) ($request->getData('category') ?? 0);
|
||||
$l11nWikiCategory->setLanguage((string) (
|
||||
$request->getData('language') ?? $request->getLanguage()
|
||||
));
|
||||
$l11nWikiCategory->name = (string) ($request->getData('name') ?? '');
|
||||
$l11nWikiCategory->content = (string) ($request->getData('name') ?? '');
|
||||
|
||||
return $l11nWikiCategory;
|
||||
}
|
||||
|
|
@ -647,6 +647,7 @@ final class ApiController extends Controller
|
|||
{
|
||||
$app = new WikiApp();
|
||||
$app->name = (string) $request->getData('name');
|
||||
$app->unit = $request->getData('unit', 'int');
|
||||
|
||||
return $app;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ final class BackendController extends Controller
|
|||
/** @var \Modules\Knowledgebase\Models\WikiCategory[] $categories */
|
||||
$categories = WikiCategoryMapper::getAll()
|
||||
->with('name')
|
||||
->where('parent', $request->hasData('category') ? (int) $request->getData('category') : null)
|
||||
->where('parent', $request->getData('category', 'int'))
|
||||
->where('app', $app)
|
||||
->where('name/language', $response->getLanguage())
|
||||
->execute();
|
||||
|
|
@ -332,7 +332,7 @@ final class BackendController extends Controller
|
|||
/** @var \Modules\Knowledgebase\Models\WikiCategory[] $categories */
|
||||
$categories = WikiCategoryMapper::getAll()
|
||||
->with('name')
|
||||
->where('parent', $request->hasData('category') ? (int) $request->getData('category') : null)
|
||||
->where('parent', $request->getData('category', 'int'))
|
||||
->where('app', $app)
|
||||
->where('name/language', $response->getLanguage())
|
||||
->execute();
|
||||
|
|
|
|||
|
|
@ -32,6 +32,14 @@ class WikiApp implements \JsonSerializable
|
|||
*/
|
||||
protected int $id = 0;
|
||||
|
||||
/**
|
||||
* Unit
|
||||
*
|
||||
* @var null|int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public ?int $unit = null;
|
||||
|
||||
/**
|
||||
* Application name.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ final class WikiAppMapper extends DataMapperFactory
|
|||
*/
|
||||
public const COLUMNS = [
|
||||
'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'],
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ declare(strict_types=1);
|
|||
namespace Modules\Knowledgebase\Models;
|
||||
|
||||
use phpOMS\Localization\ISO639x1Enum;
|
||||
use phpOMS\Localization\BaseStringL11n;
|
||||
|
||||
/**
|
||||
* Wiki category class.
|
||||
|
|
@ -47,10 +48,10 @@ class WikiCategory implements \JsonSerializable
|
|||
/**
|
||||
* Name.
|
||||
*
|
||||
* @var string|WikiCategoryL11n
|
||||
* @var string|BaseStringL11n
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private string | WikiCategoryL11n $name = '';
|
||||
private string | BaseStringL11n $name = '';
|
||||
|
||||
/**
|
||||
* Parent category.
|
||||
|
|
@ -101,27 +102,27 @@ class WikiCategory implements \JsonSerializable
|
|||
*/
|
||||
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
|
||||
*
|
||||
* @param string|WikiCategoryL11n $name Tag article name
|
||||
* @param string|BaseStringL11n $name Tag article name
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @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;
|
||||
} elseif ($this->name instanceof WikiCategoryL11n) {
|
||||
$this->name->name = $name;
|
||||
} elseif ($this->name instanceof BaseStringL11n) {
|
||||
$this->name->content = $name;
|
||||
} else {
|
||||
$this->name = new WikiCategoryL11n();
|
||||
$this->name->name = $name;
|
||||
$this->name = new BaseStringL11n();
|
||||
$this->name->content = $name;
|
||||
$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;
|
||||
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
use phpOMS\Localization\BaseStringL11n;
|
||||
|
||||
/**
|
||||
* Category mapper class.
|
||||
|
|
@ -34,8 +35,8 @@ final class WikiCategoryL11nMapper extends DataMapperFactory
|
|||
*/
|
||||
public const COLUMNS = [
|
||||
'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_category' => ['name' => 'wiki_category_l11n_category', 'type' => 'int', 'internal' => 'category'],
|
||||
'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' => 'ref'],
|
||||
'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
|
||||
*/
|
||||
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,
|
||||
'table' => 'wiki_category_l11n',
|
||||
'self' => 'wiki_category_l11n_category',
|
||||
'column' => 'name',
|
||||
'column' => 'content',
|
||||
'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\NullWikiCategory;
|
||||
use Modules\Knowledgebase\Models\WikiCategory;
|
||||
use Modules\Knowledgebase\Models\WikiCategoryL11n;
|
||||
use phpOMS\Localization\BaseStringL11n;
|
||||
|
||||
/**
|
||||
* @testdox Modules\tests\Knowledgebase\Models\WikiCateboryTest: Wiki category
|
||||
|
|
@ -71,7 +71,7 @@ final class WikiCategoryTest extends \PHPUnit\Framework\TestCase
|
|||
$this->category->setL11n('Test');
|
||||
self::assertEquals('Test', $this->category->getL11n());
|
||||
|
||||
$this->category->setL11n(new WikiCategoryL11n('NewTest'));
|
||||
$this->category->setL11n(new BaseStringL11n('NewTest'));
|
||||
self::assertEquals('NewTest', $this->category->getL11n());
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user