Skip to content

Commit 86f6f02

Browse files
committed
[FEATURE] Add a single view for the "my registrations" plugin
1 parent 1cb3379 commit 86f6f02

21 files changed

+682
-9
lines changed

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This project adheres to [Semantic Versioning](https://semver.org/).
88
### Added
99

1010
- Add a reimplemented "my registrations" plugin
11-
(#4207, #4209, #4210, #4214, #4217, #4219, #4225, #4226)
11+
(#4207, #4209, #4210, #4214, #4217, #4219, #4225, #4226, #4228)
1212
- Add `RegistrationRepository::findActiveRegistrationsByUserUid()`
1313
(#4212, #4213)
1414
- Add a field for the attachment download start date (#4202)

Classes/Controller/MyRegistrationsController.php

+30-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44

55
namespace OliverKlee\Seminars\Controller;
66

7+
use OliverKlee\FeUserExtraFields\Domain\Model\FrontendUser;
8+
use OliverKlee\Seminars\Domain\Model\Registration\Registration;
79
use OliverKlee\Seminars\Domain\Repository\Registration\RegistrationRepository;
810
use Psr\Http\Message\ResponseInterface;
911
use TYPO3\CMS\Core\Context\Context;
12+
use TYPO3\CMS\Extbase\Annotation\IgnoreValidation;
1013
use TYPO3\CMS\Extbase\Http\ForwardResponse;
1114
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
1215

@@ -27,17 +30,36 @@ public function __construct(Context $context, RegistrationRepository $registrati
2730

2831
public function indexAction(): ResponseInterface
2932
{
30-
$userUid = $this->getLoggedInUserUid();
31-
if ($userUid <= 0) {
33+
$loggedInUserUid = $this->getLoggedInUserUid();
34+
if ($loggedInUserUid <= 0) {
3235
return new ForwardResponse('notLoggedIn');
3336
}
3437

35-
$registrations = $this->registrationRepository->findActiveRegistrationsByUser($userUid);
38+
$registrations = $this->registrationRepository->findActiveRegistrationsByUser($loggedInUserUid);
3639
$this->view->assign('registrations', $registrations);
3740

3841
return $this->htmlResponse();
3942
}
4043

44+
/**
45+
* @IgnoreValidation("registration")
46+
*/
47+
public function showAction(Registration $registration): ResponseInterface
48+
{
49+
$loggedInUserUid = $this->getLoggedInUserUid();
50+
if ($loggedInUserUid <= 0) {
51+
return new ForwardResponse('notLoggedIn');
52+
}
53+
$registrationUser = $registration->getUser();
54+
if (!($registrationUser instanceof FrontendUser) || $registrationUser->getUid() !== $loggedInUserUid) {
55+
return new ForwardResponse('notFound');
56+
}
57+
58+
$this->view->assign('registration', $registration);
59+
60+
return $this->htmlResponse();
61+
}
62+
4163
/**
4264
* @return int<0, max>
4365
*/
@@ -54,4 +76,9 @@ public function notLoggedInAction(): ResponseInterface
5476
{
5577
return $this->htmlResponse()->withStatus(403);
5678
}
79+
80+
public function notFoundAction(): ResponseInterface
81+
{
82+
return $this->htmlResponse()->withStatus(404);
83+
}
5784
}

Resources/Private/Partials/MyRegistrations/Index.html

+3-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@
4444
</oelib:isFieldEnabled>
4545
<oelib:isFieldEnabled fieldName="topic">
4646
<td>
47-
{event.displayTitle}
47+
<f:link.action action="show" arguments="{registration: registration}">
48+
{event.displayTitle}
49+
</f:link.action>
4850
</td>
4951
</oelib:isFieldEnabled>
5052
<oelib:isFieldEnabled fieldName="registrationStatus">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<!DOCTYPE html>
2+
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
3+
<f:variable name="event" value="{registration.event}"/>
4+
5+
<h1>
6+
{event.displayTitle}
7+
</h1>
8+
9+
<f:if condition="{event.eventType}">
10+
<h2>
11+
{event.eventType.title}
12+
</h2>
13+
</f:if>
14+
15+
<f:if condition="{event.start}">
16+
<h3>
17+
<f:translate key="plugin.eventSingleView.events.property.dateAndTime"/>
18+
</h3>
19+
20+
<f:render partial="Event/DateAndTime" arguments="{event: event}"/>
21+
</f:if>
22+
23+
<f:if condition="{event.venues}">
24+
<h3>
25+
<f:translate key="plugin.eventSingleView.events.property.venue"/>
26+
</h3>
27+
28+
<f:render partial="Event/Venues" arguments="{event: event}"/>
29+
</f:if>
30+
31+
<f:if condition="{event.room}">
32+
<h3>
33+
<f:translate key="plugin.eventSingleView.events.property.room"/>
34+
</h3>
35+
<p>
36+
{event.room}
37+
</p>
38+
</f:if>
39+
40+
<h3>
41+
<f:translate key="plugin.myRegistrations.show.heading.registrationStatus"/>
42+
</h3>
43+
<p>
44+
<f:translate key="plugin.myRegistrations.property.registrationStatus.{registration.status}"/>
45+
</p>
46+
</html>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!DOCTYPE html>
2+
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
3+
<f:layout name="FrontEndDefault"/>
4+
5+
<f:section name="main">
6+
<p class="alert alert-warning" role="alert">
7+
<f:translate key="plugin.myRegistrations.error.notFound"/>
8+
</p>
9+
</f:section>
10+
</html>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<!DOCTYPE html>
2+
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
3+
<f:layout name="FrontEndDefault"/>
4+
5+
<f:section name="main">
6+
<f:render partial="MyRegistrations/Show" arguments="{registration: registration}"/>
7+
</f:section>
8+
</html>

Tests/Functional/Controller/EventControllerTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -975,7 +975,7 @@ public function showActionConvertsNewlinesToBreakInVenuAddress(): void
975975
/**
976976
* @test
977977
*/
978-
public function showActionCanRenderMultipleVenue(): void
978+
public function showActionCanRenderMultipleVenues(): void
979979
{
980980
$this->importCSVDataSet(__DIR__ . '/Fixtures/EventController/showAction/EventSingleViewContentElement.csv');
981981
$this->importCSVDataSet(__DIR__ . '/Fixtures/EventController/showAction/PastEventWithTwoVenuesInSameCity.csv');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations"
3+
,1,1,"the event title",1
4+
5+
"tx_seminars_attendances"
6+
,"uid","pid","seminar","user","registration_queue"
7+
,1,1,1,1,2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations","room"
3+
,1,1,"the event title",1,"room 13 B"
4+
5+
"tx_seminars_attendances"
6+
,"uid","pid","seminar","user"
7+
,1,1,1,1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations","topic","object_type"
3+
,1,1,"the date title",1,2,2
4+
,2,1,"the topic title",0,0,1
5+
6+
"tx_seminars_attendances"
7+
,"uid","pid","seminar","user"
8+
,1,1,1,1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations","begin_date","end_date"
3+
,1,1,"the event title",1,2206342800,2206458000
4+
5+
"tx_seminars_attendances"
6+
,"uid","pid","seminar","user"
7+
,1,1,1,1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations","begin_date","end_date"
3+
,1,1,"the event title",1,2206342800,2206371600
4+
5+
"tx_seminars_attendances"
6+
,"uid","pid","seminar","user"
7+
,1,1,1,1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations"
3+
,1,1,"some other event",1
4+
5+
"tx_seminars_attendances"
6+
,"uid","pid","seminar","user"
7+
,1,1,1,2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations","event_type"
3+
,1,1,"the event title",1,1
4+
5+
"tx_seminars_event_types"
6+
,"uid","pid","title"
7+
,1,2,"workshop"
8+
9+
"tx_seminars_attendances"
10+
,"uid","pid","seminar","user"
11+
,1,1,1,1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations","place"
3+
,1,1,"the event title",1,1
4+
5+
"tx_seminars_sites"
6+
,"uid","pid","title","address","zip","city"
7+
,1,2,"Maritim Hotel","Kurt-Georg-Kiesinger-Allee 1
8+
53175 Bonn","53175","Bonn"
9+
10+
"tx_seminars_seminars_place_mm"
11+
,"uid_local","uid_foreign","tablenames"
12+
,1,1,"tx_seminars_sites"
13+
14+
"tx_seminars_attendances"
15+
,"uid","pid","seminar","user"
16+
,1,1,1,1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations","place"
3+
,1,1,"the event title",1,2
4+
5+
"tx_seminars_sites"
6+
,"uid","pid","title","address","zip","city"
7+
,1,2,"Maritim Hotel","Kurt-Georg-Kiesinger-Allee 1, 53175 Bonn","53175","Bonn"
8+
,2,2,"Kameha Grand","Am Bonner Bogen 1, 53227 Bonn","53227","Bonn"
9+
10+
"tx_seminars_seminars_place_mm"
11+
,"uid_local","uid_foreign","tablenames"
12+
,1,1,"tx_seminars_sites"
13+
,1,2,"tx_seminars_sites"
14+
15+
"tx_seminars_attendances"
16+
,"uid","pid","seminar","user"
17+
,1,1,1,1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations"
3+
,1,1,"the event title",1
4+
5+
"tx_seminars_attendances"
6+
,"uid","pid","seminar","user","registration_queue"
7+
,1,1,1,1,0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"tx_seminars_seminars"
2+
,"uid","pid","title","registrations"
3+
,1,1,"the event title",1
4+
5+
"tx_seminars_attendances"
6+
,"uid","pid","seminar","user","registration_queue"
7+
,1,1,1,1,1

0 commit comments

Comments
 (0)