From c1b8b582d45f48d53def099df52fce3257c176d4 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 2 Oct 2016 12:07:05 +0200 Subject: [PATCH] Core adjustments for pending issues --- Admin/Routes/Web/Api.php | 12 ++++++++ Admin/Routes/Web/Backend.php | 7 ----- Controller.php | 6 ++-- Models/NewsArticle.php | 33 +++++++++++++++++++++ Models/NewsArticleMapper.php | 44 ++++++++++++++++------------ Theme/Backend/news-create.tpl.php | 44 ++++++++++++---------------- Theme/Backend/news-dashboard.tpl.php | 28 +++++++++--------- Theme/backend/news-dashboard.tpl.php | 28 +++++++++--------- 8 files changed, 121 insertions(+), 81 deletions(-) create mode 100644 Admin/Routes/Web/Api.php diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php new file mode 100644 index 0000000..e8069bf --- /dev/null +++ b/Admin/Routes/Web/Api.php @@ -0,0 +1,12 @@ + [ + [ + 'dest' => '\Modules\News\Controller:apiNewsCreate', + 'verb' => RouteVerb::SET, + ], + ], +]; diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index 09312f9..9d7e386 100644 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -27,11 +27,4 @@ return [ 'verb' => RouteVerb::GET, ], ], - - '^.*/api/news.*$' => [ - [ - 'dest' => '\Modules\News\Controller:apiNewsCreate', - 'verb' => RouteVerb::SET, - ], - ], ]; diff --git a/Controller.php b/Controller.php index 8c705c0..5082971 100644 --- a/Controller.php +++ b/Controller.php @@ -172,14 +172,14 @@ class Controller extends ModuleAbstract implements WebInterface public function apiNewsCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) { $newsArticle = new NewsArticle(); - $newsArticle->setCreatedBy($requst->getAccount()->getId()); + $newsArticle->setCreatedBy($request->getAccount()->getId()); $newsArticle->setCreatedAt(new \DateTime('now')); - $newsArticle->setPublish((bool) ($request->getData('publish') ?? false)); + $newsArticle->setPublish(new \DateTime($request->getData('publish') ?? false)); $newsArticle->setTitle($request->getData('title') ?? ''); $newsArticle->setPlain($request->getData('plain') ?? ''); $newsArticle->setContent($request->getData('content') ?? ''); $newsArticle->setLanguage($request->getData('lang') ?? $request->getL11n()->getLanguage()); - $newsArticle->setType((int) ($requst->getData('type') ?? 1)); + $newsArticle->setType((int) ($request->getData('type') ?? 1)); $newsArticle->setStatus((int) ($request->getData('status') ?? 1)); $newsArticle->setFeatured((bool) ($request->getData('featured') ?? true)); diff --git a/Models/NewsArticle.php b/Models/NewsArticle.php index 6da293b..92edd1e 100644 --- a/Models/NewsArticle.php +++ b/Models/NewsArticle.php @@ -15,6 +15,7 @@ */ namespace Modules\News\Models; +use phpOMS\Contract\ArrayableInterface; use phpOMS\Datatypes\Exception\InvalidEnumValue; use phpOMS\Localization\ISO639x1Enum; @@ -56,6 +57,14 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable */ private $content = ''; + /** + * Unparsed. + * + * @var string + * @since 1.0.0 + */ + private $plain = ''; + /** * News type. * @@ -148,6 +157,30 @@ class NewsArticle implements ArrayableInterface, \JsonSerializable $this->content = $content; } + /** + * @param string $plain + * + * @return void + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function setPlain(string $plain) + { + $this->plain = $plain; + } + + /** + * @return string + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function getPlain() : string + { + return $this->plain; + } + /** * @return \DateTime * diff --git a/Models/NewsArticleMapper.php b/Models/NewsArticleMapper.php index 04f9d3f..955f0df 100644 --- a/Models/NewsArticleMapper.php +++ b/Models/NewsArticleMapper.php @@ -15,6 +15,7 @@ */ namespace Modules\News\Models; +use Modules\Admin\Models\AccountMapper; use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Query\Builder; use phpOMS\DataStorage\Database\Query\Column; @@ -42,6 +43,13 @@ class NewsArticleMapper extends DataMapperAbstract 'news_created_at' => ['name' => 'news_created_at', 'type' => 'DateTime', 'internal' => 'createdAt'], ]; + static protected $belongsTo = [ + 'createdBy' => [ + 'mapper' => AccountMapper::class, + 'src' => 'news_created_by', + ], + ]; + /** * Primary table. * @@ -83,20 +91,20 @@ class NewsArticleMapper extends DataMapperAbstract $objId = parent::create($obj, $relations); $query = new Builder(self::$db); $query->prefix(self::$db->getPrefix()) - ->insert( - 'account_permission_account', - 'account_permission_from', - 'account_permission_for', - 'account_permission_id1', - 'account_permission_id2', - 'account_permission_r', - 'account_permission_w', - 'account_permission_m', - 'account_permission_d', - 'account_permission_p' - ) - ->into('account_permission') - ->values($obj->getCreatedBy(), 'news', 'news', 1, $objId, 1, 1, 1, 1, 1); + ->insert( + 'account_permission_account', + 'account_permission_from', + 'account_permission_for', + 'account_permission_id1', + 'account_permission_id2', + 'account_permission_r', + 'account_permission_w', + 'account_permission_m', + 'account_permission_d', + 'account_permission_p' + ) + ->into('account_permission') + ->values($obj->getCreatedBy(), 'news', 'news', 1, $objId, 1, 1, 1, 1, 1); self::$db->con->prepare($query->toSql())->execute(); } catch (\Exception $e) { @@ -119,9 +127,9 @@ class NewsArticleMapper extends DataMapperAbstract public static function find(...$columns) : Builder { return parent::find(...$columns)->from('account_permission') - ->where('account_permission.account_permission_for', '=', 'news') - ->where('account_permission.account_permission_id1', '=', 1) - ->where('news.news_id', '=', new Column('account_permission.account_permission_id2')) - ->where('account_permission.account_permission_r', '=', 1); + ->where('account_permission.account_permission_for', '=', 'news') + ->where('account_permission.account_permission_id1', '=', 1) + ->where('news.news_id', '=', new Column('account_permission.account_permission_id2')) + ->where('account_permission.account_permission_r', '=', 1); } } diff --git a/Theme/Backend/news-create.tpl.php b/Theme/Backend/news-create.tpl.php index 763997c..85e7ca0 100644 --- a/Theme/Backend/news-create.tpl.php +++ b/Theme/Backend/news-create.tpl.php @@ -19,12 +19,12 @@ echo $this->getData('nav')->render(); ?>
- +
-
+
-
+
-
- -
-
-
-
-
-
+ +
+
+
+
+
-
- -
-
-
-
-
+ +
+
+
+
-
- -
-
-
-
-
+ +
+
+
+
diff --git a/Theme/Backend/news-dashboard.tpl.php b/Theme/Backend/news-dashboard.tpl.php index d0245ae..dc92950 100644 --- a/Theme/Backend/news-dashboard.tpl.php +++ b/Theme/Backend/news-dashboard.tpl.php @@ -31,20 +31,20 @@ echo $this->getData('nav')->render(); ?> getText('Title'); ?> getText('Author'); ?> getText('Date'); ?> - - $news) : $count++; - $url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/news/article?id=' . $news->getId()); - $color = 'darkred'; - if($news->getType() === \Modules\News\Models\NewsType::ARTICLE) { $color = 'green'; } - elseif($news->getType() === \Modules\News\Models\NewsType::HEADLINE) { $color = 'purple'; } - elseif($news->getType() === \Modules\News\Models\NewsType::LINK) { $color = 'yellow'; } - ?> - - isFeatured() ? '' : ''; ?> - getText('TYPE' . $news->getType()); ?> - getTitle(); ?> - getCreatedBy(); ?> - getPublish()->format('Y-m-d'); ?> + + $news) : $count++; + $url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/news/article?id=' . $news->getId()); + $color = 'darkred'; + if($news->getType() === \Modules\News\Models\NewsType::ARTICLE) { $color = 'green'; } + elseif($news->getType() === \Modules\News\Models\NewsType::HEADLINE) { $color = 'purple'; } + elseif($news->getType() === \Modules\News\Models\NewsType::LINK) { $color = 'yellow'; } + ?> + + isFeatured() ? '' : ''; ?> + getText('TYPE' . $news->getType()); ?> + getTitle(); ?> + getCreatedBy(); ?> + getPublish()->format('Y-m-d'); ?> getText('Empty', 0, 0); ?> diff --git a/Theme/backend/news-dashboard.tpl.php b/Theme/backend/news-dashboard.tpl.php index d0245ae..dc92950 100644 --- a/Theme/backend/news-dashboard.tpl.php +++ b/Theme/backend/news-dashboard.tpl.php @@ -31,20 +31,20 @@ echo $this->getData('nav')->render(); ?> getText('Title'); ?> getText('Author'); ?> getText('Date'); ?> - - $news) : $count++; - $url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/news/article?id=' . $news->getId()); - $color = 'darkred'; - if($news->getType() === \Modules\News\Models\NewsType::ARTICLE) { $color = 'green'; } - elseif($news->getType() === \Modules\News\Models\NewsType::HEADLINE) { $color = 'purple'; } - elseif($news->getType() === \Modules\News\Models\NewsType::LINK) { $color = 'yellow'; } - ?> - - isFeatured() ? '' : ''; ?> - getText('TYPE' . $news->getType()); ?> - getTitle(); ?> - getCreatedBy(); ?> - getPublish()->format('Y-m-d'); ?> + + $news) : $count++; + $url = \phpOMS\Uri\UriFactory::build('/{/lang}/backend/news/article?id=' . $news->getId()); + $color = 'darkred'; + if($news->getType() === \Modules\News\Models\NewsType::ARTICLE) { $color = 'green'; } + elseif($news->getType() === \Modules\News\Models\NewsType::HEADLINE) { $color = 'purple'; } + elseif($news->getType() === \Modules\News\Models\NewsType::LINK) { $color = 'yellow'; } + ?> + + isFeatured() ? '' : ''; ?> + getText('TYPE' . $news->getType()); ?> + getTitle(); ?> + getCreatedBy(); ?> + getPublish()->format('Y-m-d'); ?> getText('Empty', 0, 0); ?>