From 67efe4ee7cce69e02dbf148ddc8dc6fbde745743 Mon Sep 17 00:00:00 2001 From: Fritz Michael Gschwantner <fmg@inspiredminds.at> Date: Mon, 11 Oct 2021 09:41:41 +0200 Subject: [PATCH] change template variable instead --- composer.json | 6 +++- .../ContaoChangeNewsMoreExtension.php | 26 ++++++++++++++++ src/EventListener/ParseArticlesListener.php | 29 ++++++++++++++++++ src/NewsHelper.php | 30 +++++++++++++++++++ src/Resources/config/services.yaml | 3 ++ src/Resources/contao/config/config.php | 5 ++++ .../contao/templates/news/news_latest.html5 | 28 ----------------- .../contao/templates/news/news_short.html5 | 24 --------------- 8 files changed, 98 insertions(+), 53 deletions(-) create mode 100644 src/DependencyInjection/ContaoChangeNewsMoreExtension.php create mode 100644 src/EventListener/ParseArticlesListener.php create mode 100644 src/NewsHelper.php create mode 100644 src/Resources/config/services.yaml create mode 100644 src/Resources/contao/config/config.php delete mode 100644 src/Resources/contao/templates/news/news_latest.html5 delete mode 100644 src/Resources/contao/templates/news/news_short.html5 diff --git a/composer.json b/composer.json index 66391a4..0fb91e1 100755 --- a/composer.json +++ b/composer.json @@ -18,8 +18,12 @@ "forum": "https://community.contao.org/de" }, "require": { + "php": "^7.1", "contao/core-bundle": "~4.4", - "contao/news-bundle": "~4.4" + "contao/news-bundle": "~4.4", + "symfony/config": "^3.4 || ^4.4 || ^5.1", + "symfony/dependency-injection": "^3.4 || ^4.4 || ^5.1", + "symfony/http-kernel": "^3.4 || ^4.4 || ^5.1" }, "require-dev": { "contao/manager-plugin": "^2.0" diff --git a/src/DependencyInjection/ContaoChangeNewsMoreExtension.php b/src/DependencyInjection/ContaoChangeNewsMoreExtension.php new file mode 100644 index 0000000..e32cc42 --- /dev/null +++ b/src/DependencyInjection/ContaoChangeNewsMoreExtension.php @@ -0,0 +1,26 @@ +<?php + +/* + * This file is part of the ContaoChangeNewsMore Bundle. + * + * (c) Nicolas Görlach <https://github.com/ngdot> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace ContaoChangeNewsMoreBundle\DependencyInjection; + +use Symfony\Component\Config\FileLocator; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Extension\Extension; +use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; + +class ContaoChangeNewsMoreExtension extends Extension +{ + public function load(array $configs, ContainerBuilder $container): void + { + $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load('services.yaml'); + } +} diff --git a/src/EventListener/ParseArticlesListener.php b/src/EventListener/ParseArticlesListener.php new file mode 100644 index 0000000..25b5ff5 --- /dev/null +++ b/src/EventListener/ParseArticlesListener.php @@ -0,0 +1,29 @@ +<?php + +/* + * This file is part of the ContaoChangeNewsMore Bundle. + * + * (c) Nicolas Görlach <https://github.com/ngdot> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace ContaoChangeNewsMoreBundle\EventListener; + +use Contao\FrontendTemplate; +use Contao\Module; +use Contao\NewsModel; +use ContaoChangeNewsMoreBundle\NewsHelper; + +class ParseArticlesListener +{ + public function __invoke(FrontendTemplate $template, array $newsEntry, Module $module): void + { + if (empty($newsEntry['linktext'])) { + return; + } + + $template->more = (new NewsHelper())->getReadMoreLink($newsEntry['linktext'], NewsModel::findByPk($newsEntry['id'])); + } +} diff --git a/src/NewsHelper.php b/src/NewsHelper.php new file mode 100644 index 0000000..980e9eb --- /dev/null +++ b/src/NewsHelper.php @@ -0,0 +1,30 @@ +<?php + +/* + * This file is part of the ContaoChangeNewsMore Bundle. + * + * (c) Nicolas Görlach <https://github.com/ngdot> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace ContaoChangeNewsMoreBundle; + +use Contao\ModuleNews; +use Contao\NewsModel; + +/** + * Helper class to expose ModuleNews::generateLink() + */ +class NewsHelper extends ModuleNews +{ + public function __construct() {} + + public function compile() {} + + public function getReadMoreLink(string $linkText, NewsModel $news): string + { + return $this->generateLink($linkText, $news, false, true); + } +} diff --git a/src/Resources/config/services.yaml b/src/Resources/config/services.yaml new file mode 100644 index 0000000..af945cc --- /dev/null +++ b/src/Resources/config/services.yaml @@ -0,0 +1,3 @@ +services: + ContaoChangeNewsMoreBundle\EventListener\ParseArticlesListener: + public: true diff --git a/src/Resources/contao/config/config.php b/src/Resources/contao/config/config.php new file mode 100644 index 0000000..4be195b --- /dev/null +++ b/src/Resources/contao/config/config.php @@ -0,0 +1,5 @@ +<?php + +use ContaoChangeNewsMoreBundle\EventListener\ParseArticlesListener; + +$GLOBALS['TL_HOOKS']['parseArticles'][] = [ParseArticlesListener::class, '__invoke']; diff --git a/src/Resources/contao/templates/news/news_latest.html5 b/src/Resources/contao/templates/news/news_latest.html5 deleted file mode 100644 index 961defd..0000000 --- a/src/Resources/contao/templates/news/news_latest.html5 +++ /dev/null @@ -1,28 +0,0 @@ - -<div class="layout_latest arc_<?= $this->archive->id ?> block<?= $this->class ?>" itemscope itemtype="http://schema.org/Article"> - - <?php if ($this->hasMetaFields): ?> - <p class="info"><time datetime="<?= $this->datetime ?>" itemprop="datePublished"><?= $this->date ?></time> <?= $this->author ?> <?= $this->commentCount ?></p> - <?php endif; ?> - - <?php if ($this->addImage): ?> - <?php $this->insert('image', $this->arrData); ?> - <?php endif; ?> - - <h2 itemprop="name"><?= $this->linkHeadline ?></h2> - - <div class="ce_text block" itemprop="description"> - <?= $this->teaser ?> - </div> - - <?php if ($this->hasText || $this->hasTeaser): ?> - <?php if ($this->linktext): ?> - <div class="ce_hyperlink"> - <a href="<?= $this->link ?>" <?php if ($this->target == 1): ?>target="_blank" <?php endif; ?>title="<?= $this->headline ?>" itemprop="url"><?= $this->linktext ?><span class="invisible"><?= $this->headline ?></span></a> - </div> - <?php else: ?> - <div class="ce_hyperlink"><?= $this->more ?></div> - <?php endif; ?> - <?php endif; ?> - -</div> \ No newline at end of file diff --git a/src/Resources/contao/templates/news/news_short.html5 b/src/Resources/contao/templates/news/news_short.html5 deleted file mode 100644 index 3d21eb0..0000000 --- a/src/Resources/contao/templates/news/news_short.html5 +++ /dev/null @@ -1,24 +0,0 @@ - -<div class="layout_short arc_<?= $this->archive->id ?> block<?= $this->class ?>" itemscope itemtype="http://schema.org/Article"> - - <?php if ($this->hasMetaFields): ?> - <p class="info"><time datetime="<?= $this->datetime ?>" itemprop="datePublished"><?= $this->date ?></time> <?= $this->author ?> <?= $this->commentCount ?></p> - <?php endif; ?> - - <h2 itemprop="name"><?= $this->linkHeadline ?></h2> - - <div class="ce_text block" itemprop="description"> - <?= $this->teaser ?> - </div> - - <?php if ($this->hasText || $this->hasTeaser): ?> - <?php if ($this->linktext): ?> - <div class="ce_hyperlink"> - <a href="<?= $this->link ?>" <?php if ($this->target == 1): ?>target="_blank" <?php endif; ?>title="<?= $this->headline ?>" itemprop="url"><?= $this->linktext ?><span class="invisible"><?= $this->headline ?></span></a> - </div> - <?php else: ?> - <div class="ce_hyperlink"><?= $this->more ?></div> - <?php endif; ?> - <?php endif; ?> - -</div>