Refine pinnwand backend behavior and fix frontend template rendering

This commit is contained in:
Jürgen Mummert
2026-03-04 16:43:05 +01:00
parent ca7f7d759b
commit f8a5d9348e
6 changed files with 76 additions and 32 deletions

View File

@@ -5,16 +5,16 @@ declare(strict_types=1);
namespace Eiswurm\ContaoPinboardBundle\Controller\FrontendModule;
use Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController;
use Contao\CoreBundle\Twig\FragmentTemplate;
use Contao\FilesModel;
use Contao\ModuleModel;
use Contao\Template;
use Eiswurm\ContaoPinboardBundle\Model\PinboardModel;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
final class PinboardController extends AbstractFrontendModuleController
{
protected function getResponse(Template $template, ModuleModel $model, Request $request): Response
protected function getResponse(FragmentTemplate $template, ModuleModel $model, Request $request): Response
{
$collection = PinboardModel::findBy(
['published = ?'],
@@ -46,9 +46,9 @@ final class PinboardController extends AbstractFrontendModuleController
}
}
return $this->render('@Contao/frontend_module/pinnwand.html.twig', [
'entries' => $notes,
'module' => $model,
]);
$template->set('entries', $notes);
$template->set('module', $model);
return $template->getResponse();
}
}

View File

@@ -5,31 +5,30 @@ declare(strict_types=1);
namespace Eiswurm\ContaoPinboardBundle\EventListener\DataContainer;
use Contao\DataContainer;
use Contao\Database;
use Contao\Input;
final class PinboardTimestampListener
{
public function __invoke(DataContainer $dataContainer): void
/**
* @param array<string, mixed> $values
*
* @return array<string, mixed>
*/
public function onBeforeSubmit(array $values, DataContainer|null $dataContainer = null): array
{
if (null === $dataContainer->id) {
return;
}
$timestamp = time();
$isCopyAction = 'copy' === Input::get('act');
$record = Database::getInstance()
->prepare('SELECT dateAdded FROM tl_pinnwand WHERE id = ?')
->limit(1)
->execute($dataContainer->id);
if (!$record->numRows) {
return;
if ($isCopyAction || empty($values['dateAdded'])) {
$values['dateAdded'] = $timestamp;
}
$dateAdded = (int) $record->dateAdded;
if ($isCopyAction || empty($values['dateModified'])) {
$values['dateModified'] = $timestamp;
}
Database::getInstance()
->prepare('UPDATE tl_pinnwand SET dateAdded = ?, dateModified = ?, tstamp = ? WHERE id = ?')
->execute($dateAdded > 0 ? $dateAdded : $timestamp, $timestamp, $timestamp, $dataContainer->id);
$values['tstamp'] = $timestamp;
return $values;
}
}