Add survey template list module

This commit is contained in:
Jürgen Mummert
2026-06-08 19:45:20 +02:00
parent 9cc2f98456
commit 7843fca003
7 changed files with 58 additions and 43 deletions
@@ -20,6 +20,7 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
#[AsFrontendModule(type: 'member_survey_list', category: 'survey', template: 'member_survey_list')]
#[AsFrontendModule(type: 'member_survey_template_list', category: 'survey', template: 'member_survey_list')]
final class MemberSurveyListController extends AbstractFrontendModuleController
{
public function __construct(
@@ -31,12 +32,14 @@ final class MemberSurveyListController extends AbstractFrontendModuleController
protected function getResponse(FragmentTemplate $template, ModuleModel $model, Request $request): Response
{
$templatesOnly = 'member_survey_template_list' === (string) ($model->type ?? '');
$user = $this->getUser();
if (!$user instanceof FrontendUser) {
$template->set('loginRequired', true);
$template->set('surveys', []);
$template->set('createUrl', null);
$template->set('templatesOnly', $templatesOnly);
return $template->getResponse();
}
@@ -45,12 +48,12 @@ final class MemberSurveyListController extends AbstractFrontendModuleController
return $this->handleAction($request, (int) $user->id);
}
$editPage = $this->resolvePage((int) ($model->surveyEditPage ?? 0));
$editPage = $templatesOnly ? null : $this->resolvePage((int) ($model->surveyEditPage ?? 0));
$readerPage = $this->resolvePage((int) $this->getContaoAdapter(Config::class)->get('surveyReaderPage'));
$resultsPage = $this->resolvePage((int) $this->getContaoAdapter(Config::class)->get('surveyResultsPage'));
$items = [];
foreach ($this->surveyRepository->findEditableByMember((int) $user->id) as $survey) {
foreach ($this->surveyRepository->findEditableByMember((int) $user->id, $templatesOnly) as $survey) {
$surveyId = (int) $survey['id'];
$alias = (string) $survey['alias'];
@@ -58,6 +61,7 @@ final class MemberSurveyListController extends AbstractFrontendModuleController
'id' => $surveyId,
'title' => (string) $survey['title'],
'description' => (string) ($survey['description'] ?? ''),
'isTemplate' => !empty($survey['isTemplate']),
'isActive' => !empty($survey['isActive']),
'isLocked' => !empty($survey['isLocked']),
'published' => !empty($survey['published']),
@@ -72,7 +76,8 @@ final class MemberSurveyListController extends AbstractFrontendModuleController
$template->set('loginRequired', false);
$template->set('surveys', $items);
$template->set('createUrl', $editPage instanceof PageModel ? $this->generateContentUrl($editPage, ['create' => '1']) : null);
$template->set('createUrl', !$templatesOnly && $editPage instanceof PageModel ? $this->generateContentUrl($editPage, ['create' => '1']) : null);
$template->set('templatesOnly', $templatesOnly);
return $template->getResponse();
}