Merge branch 'develop' of https://github.com/Karaka-Management/oms-News into develop

This commit is contained in:
Dennis Eichhorn 2023-05-30 13:58:36 +00:00
commit ab5fe55f01
11 changed files with 58 additions and 92 deletions

View File

@ -145,7 +145,7 @@ final class ApiController extends Controller
public function apiNewsCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateNewsCreate($request))) {
$response->set('news_create', new FormValidation($val));
$response->data['news_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
@ -154,7 +154,7 @@ final class ApiController extends Controller
$newsArticle = $this->createNewsArticleFromRequest($request);
$this->createModel($request->header->account, $newsArticle, NewsArticleMapper::class, 'news', $request->getOrigin());
if (!empty($request->getFiles())
if (!empty($request->files)
|| !empty($request->getDataJson('media'))
) {
$this->createNewsMedia($newsArticle, $request);
@ -180,7 +180,7 @@ final class ApiController extends Controller
/** @var \Modules\Admin\Models\Account $account */
$account = AccountMapper::get()->where('id', $request->header->account)->execute();
if (!empty($uploadedFiles = $request->getFiles())) {
if (!empty($uploadedFiles = $request->files)) {
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles(
names: [],
fileNames: [],
@ -328,7 +328,7 @@ final class ApiController extends Controller
$newsArticle->title = $request->getDataString('title') ?? '';
$newsArticle->plain = $request->getDataString('plain') ?? '';
$newsArticle->content = Markdown::parse($request->getDataString('plain') ?? '');
$newsArticle->setLanguage(\strtolower($request->getDataString('lang') ?? $request->getLanguage()));
$newsArticle->setLanguage(\strtolower($request->getDataString('lang') ?? $request->header->l11n->language));
$newsArticle->setType($request->getDataInt('type') ?? NewsType::ARTICLE);
$newsArticle->setStatus($request->getDataInt('status') ?? NewsStatus::VISIBLE);
$newsArticle->isFeatured = $request->getDataBool('featured') ?? true;

View File

@ -54,7 +54,7 @@ final class BackendController extends Controller implements DashboardElementInte
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-dashboard');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response));
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response);
$mapperQuery = NewsArticleMapper::getAll()
->with('createdBy')
@ -62,8 +62,8 @@ final class BackendController extends Controller implements DashboardElementInte
->with('tags/title')
->where('status', NewsStatus::VISIBLE)
->where('publish', new \DateTime('now'), '<=')
->where('language', $response->getLanguage())
->where('tags/title/language', $response->getLanguage());
->where('language', $response->header->l11n->language)
->where('tags/title/language', $response->header->l11n->language);
/** @var \Modules\News\Models\NewsArticle[] $objs */
$objs = [];
@ -72,19 +72,19 @@ final class BackendController extends Controller implements DashboardElementInte
$objs = $mapperQuery->where('id', $request->getDataInt('id') ?? 0, '<')
->limit(25)->execute();
$view->setData('news', $objs);
$view->data['news'] = $objs;
} elseif ($request->getData('ptype') === 'n') {
/** @var \Modules\News\Models\NewsArticle[] $objs */
$objs = $mapperQuery->where('id', $request->getDataInt('id') ?? 0, '>')
->limit(25)->execute();
$view->setData('news', $objs);
$view->data['news'] = $objs;
} else {
/** @var \Modules\News\Models\NewsArticle[] $objs */
$objs = $mapperQuery->where('id', 0, '>')
->limit(25)->execute();
$view->setData('news', $objs);
$view->data['news'] = $objs;
}
$ids = [];
@ -103,7 +103,7 @@ final class BackendController extends Controller implements DashboardElementInte
$seen[] = $seenObject->news;
}
$view->setData('seen', $seen);
$view->data['seen'] = $seen;
return $view;
}
@ -124,13 +124,13 @@ final class BackendController extends Controller implements DashboardElementInte
->with('tags/title')
->where('status', NewsStatus::VISIBLE)
->where('publish', new \DateTime('now'), '<=')
->where('language', $response->getLanguage())
->where('tags/title/language', $response->getLanguage())
->where('language', $response->header->l11n->language)
->where('tags/title/language', $response->header->l11n->language)
->where('id', 0, '>')
->limit(5)
->execute();
$view->addData('news', $news);
$view->data['news'] = $news;
return $view;
}
@ -163,8 +163,8 @@ final class BackendController extends Controller implements DashboardElementInte
->with('tags/title')
->where('status', NewsStatus::VISIBLE)
->where('publish', new \DateTime('now'), '<=')
->where('language', $response->getLanguage())
->where('tags/title/language', $response->getLanguage())
->where('language', $response->header->l11n->language)
->where('tags/title/language', $response->header->l11n->language)
->where('id', (int) $request->getData('id'))
->execute();
@ -195,11 +195,10 @@ final class BackendController extends Controller implements DashboardElementInte
}
$view->setTemplate('/Modules/News/Theme/Backend/news-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response));
$view->addData('news', $article);
$view->addData('editable', $this->app->accountManager->get($accountId)->hasPermission(
PermissionType::MODIFY, $this->app->unitId, $this->app->appId, self::NAME, PermissionCategory::NEWS, $article->id)
);
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response);
$view->data['news'] = $article;
$view->data['editable'] = $this->app->accountManager->get($accountId)->hasPermission(
PermissionType::MODIFY, $this->app->unitId, $this->app->appId, self::NAME, PermissionCategory::NEWS, $article->id);
// allow comments
if (!$article->comments !== null
@ -208,8 +207,8 @@ final class BackendController extends Controller implements DashboardElementInte
$commentCreateView = new \Modules\Comments\Theme\Backend\Components\Comment\CreateView($this->app->l11nManager, $request, $response);
$commentListView = new \Modules\Comments\Theme\Backend\Components\Comment\ListView($this->app->l11nManager, $request, $response);
$view->addData('commentCreate', $commentCreateView);
$view->addData('commentList', $commentListView);
$view->data['commentCreate'] = $commentCreateView;
$view->data['commentList'] = $commentListView;
}
return $view;
@ -232,7 +231,7 @@ final class BackendController extends Controller implements DashboardElementInte
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-archive');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response));
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response);
$mapperQuery = NewsArticleMapper::getAll()
->with('createdBy')
@ -240,24 +239,18 @@ final class BackendController extends Controller implements DashboardElementInte
->with('tags/title')
->where('status', NewsStatus::VISIBLE)
->where('publish', new \DateTime('now'), '<=')
->where('language', $response->getLanguage())
->where('tags/title/language', $response->getLanguage());
->where('language', $response->header->l11n->language)
->where('tags/title/language', $response->header->l11n->language);
if ($request->getData('ptype') === 'p') {
$view->setData('news',
$mapperQuery->where('id', $request->getDataInt('id') ?? 0, '<')
->limit(25)->execute()
);
$view->data['news'] = $mapperQuery->where('id', $request->getDataInt('id') ?? 0, '<')
->limit(25)->execute();
} elseif ($request->getData('ptype') === 'n') {
$view->setData('news',
$mapperQuery->where('id', $request->getDataInt('id') ?? 0, '>')
->limit(25)->execute()
);
$view->data['news'] = $mapperQuery->where('id', $request->getDataInt('id') ?? 0, '>')
->limit(25)->execute();
} else {
$view->setData('news',
$mapperQuery->where('id', 0, '>')
->limit(25)->execute()
);
$view->data['news'] = $mapperQuery->where('id', 0, '>')
->limit(25)->execute();
}
return $view;
@ -280,18 +273,14 @@ final class BackendController extends Controller implements DashboardElementInte
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-draft');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response));
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response);
if ($request->getData('ptype') === 'p') {
$view->setData('news',
NewsArticleMapper::getAll()->where('id', $request->getDataInt('id') ?? 0, '<')->where('status', NewsStatus::DRAFT)->limit(25)->execute()
);
$view->data['news'] = NewsArticleMapper::getAll()->where('id', $request->getDataInt('id') ?? 0, '<')->where('status', NewsStatus::DRAFT)->limit(25)->execute();
} elseif ($request->getData('ptype') === 'n') {
$view->setData('news',
NewsArticleMapper::getAll()->where('id', $request->getDataInt('id') ?? 0, '>')->where('status', NewsStatus::DRAFT)->limit(25)->execute()
);
$view->data['news'] = NewsArticleMapper::getAll()->where('id', $request->getDataInt('id') ?? 0, '>')->where('status', NewsStatus::DRAFT)->limit(25)->execute();
} else {
$view->setData('news', NewsArticleMapper::getAll()->where('id', 0, '>')->where('status', NewsStatus::DRAFT)->limit(25)->execute());
$view->data['news'] = NewsArticleMapper::getAll()->where('id', 0, '>')->where('status', NewsStatus::DRAFT)->limit(25)->execute();
}
return $view;
@ -314,16 +303,16 @@ final class BackendController extends Controller implements DashboardElementInte
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-create');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response));
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response);
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response);
$view->addData('editor', $editor);
$view->data['editor'] = $editor;
$accGrpSelector = new \Modules\Profile\Theme\Backend\Components\AccountGroupSelector\BaseView($this->app->l11nManager, $request, $response);
$view->addData('accGrpSelector', $accGrpSelector);
$view->data['accGrpSelector'] = $accGrpSelector;
$tagSelector = new \Modules\Tag\Theme\Backend\Components\TagSelector\BaseView($this->app->l11nManager, $request, $response);
$view->addData('tagSelector', $tagSelector);
$view->data['tagSelector'] = $tagSelector;
return $view;
}
@ -345,18 +334,18 @@ final class BackendController extends Controller implements DashboardElementInte
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-create');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response));
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response);
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response);
$view->addData('editor', $editor);
$view->data['editor'] = $editor;
$accGrpSelector = new \Modules\Profile\Theme\Backend\Components\AccountGroupSelector\BaseView($this->app->l11nManager, $request, $response);
$view->addData('accGrpSelector', $accGrpSelector);
$view->data['accGrpSelector'] = $accGrpSelector;
$tagSelector = new \Modules\Tag\Theme\Backend\Components\TagSelector\BaseView($this->app->l11nManager, $request, $response);
$view->addData('tagSelector', $tagSelector);
$view->data['tagSelector'] = $tagSelector;
$view->addData('news', NewsArticleMapper::get()->where('id', $request->getDataInt('id') ?? 0)->execute());
$view->data['news'] = NewsArticleMapper::get()->where('id', $request->getDataInt('id') ?? 0)->execute();
return $view;
}
@ -378,7 +367,7 @@ final class BackendController extends Controller implements DashboardElementInte
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/News/Theme/Backend/news-analysis');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response));
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000601001, $request, $response);
return $view;
}

View File

@ -173,18 +173,6 @@ class NewsArticle implements \JsonSerializable
$this->publish = new \DateTime('now');
}
/**
* Get id
*
* @return int
*
* @since 1.0.0
*/
public function getId() : int
{
return $this->id;
}
/**
* Get news language
*

View File

@ -48,15 +48,4 @@ class NewsSeen
$this->seenAt = new \DateTime('now');
}
/**
* Get id
*
* @return int
*
* @since 1.0.0
*/
public function getId() : int
{
return $this->id;
}
}

View File

@ -19,7 +19,7 @@ use phpOMS\Uri\UriFactory;
* @var \phpOMS\Views\View $this
*/
$newsList = $this->getData('news') ?? [];
$newsList = $this->data['news'] ?? [];
?>
<div id="news-dashboard" class="col-xs-12 col-md-6" draggable="true">
<div class="portlet">

View File

@ -14,5 +14,5 @@ declare(strict_types=1);
// @todo: stats: published timeline, published by tags, published by author
echo $this->getData('nav')->render(); ?>
echo $this->data['nav']->render(); ?>

View File

@ -16,12 +16,12 @@ use phpOMS\Uri\UriFactory;
/** @var \phpOMS\Views\View $this */
/** @var \Modules\News\Models\NewsArticle[] $newsList */
$newsList = $this->getData('news') ?? [];
$newsList = $this->data['news'] ?? [];
$previous = empty($newsList) ? 'news/archive' : 'news/archive?{?}&id=' . \reset($newsList)->id . '&ptype=p';
$next = empty($newsList) ? 'news/archive' : 'news/archive?{?}&id=' . \end($newsList)->id . '&ptype=n';
echo $this->getData('nav')->render(); ?>
echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12">

View File

@ -23,7 +23,7 @@ $isNewArticle = $news->id === 0;
$languages = \phpOMS\Localization\ISO639Enum::getConstants();
/** @var \phpOMS\Views\View $this */
echo $this->getData('nav')->render(); ?>
echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12 col-md-9">

View File

@ -17,13 +17,13 @@ use phpOMS\Utils\Parser\Markdown\Markdown;
/** @var \phpOMS\Views\View $this */
/** @var \Modules\News\Models\NewsArticle[] $newsList */
$newsList = $this->getData('news');
$seen = $this->getData('seen') ?? [];
$newsList = $this->data['news'];
$seen = $this->data['seen'] ?? [];
$previous = empty($newsList) ? 'news/dashboard' : 'news/dashboard?{?}&id=' . \reset($newsList)->id . '&ptype=p';
$next = empty($newsList) ? 'news/dashboard' : 'news/dashboard?{?}&id=' . \end($newsList)->id . '&ptype=n';
echo $this->getData('nav')->render(); ?>
echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12">
<?php foreach ($newsList as $news) :

View File

@ -16,12 +16,12 @@ use phpOMS\Uri\UriFactory;
/** @var \phpOMS\Views\View $this */
/** @var \Modules\News\Models\NewsArticle[] $newsList */
$newsList = $this->getData('news') ?? [];
$newsList = $this->data['news'] ?? [];
$previous = empty($newsList) ? 'news/archive' : 'news/archive?{?}&id=' . \reset($newsList)->id . '&ptype=p';
$next = empty($newsList) ? 'news/archive' : 'news/archive?{?}&id=' . \end($newsList)->id . '&ptype=n';
echo $this->getData('nav')->render(); ?>
echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12">

View File

@ -16,10 +16,10 @@ use Modules\Comments\Models\CommentListStatus;
use phpOMS\Uri\UriFactory;
/** @var \Modules\News\Models\NewsArticle $news */
$news = $this->getData('news');
$news = $this->data['news'];
/** @var bool $editable */
$editable = $this->getData('editable');
$editable = $this->data['editable'];
/** @var \Modules\Tag\Models\Tag[] $tags */
$tags = $news->getTags();
@ -27,7 +27,7 @@ $tags = $news->getTags();
$profile = UriFactory::build('profile/single?{?}&id=' . $news->createdBy->id);
/** @var \phpOMS\Views\View $this */
echo $this->getData('nav')->render(); ?>
echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12">
<section class="portlet">