Skip to content

Commit c55a8e9

Browse files
authored
Merge pull request #907 from GEWIS/option-calendar
Revised Option calendar
2 parents 38a4ee8 + 5ccce65 commit c55a8e9

File tree

23 files changed

+1966
-444
lines changed

23 files changed

+1966
-444
lines changed

module/Activity/Module.php

Lines changed: 47 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
<?php
2+
23
namespace Activity;
34

4-
use User\Permissions\Assertion\IsOrganMember;
5+
use Activity\Form\ActivityFieldFieldSet;
6+
use Activity\Mapper\Activity;
7+
use Activity\Mapper\ActivityCalendarOption;
8+
use Activity\Mapper\ActivityFieldValue;
9+
use Activity\Mapper\ActivityOption;
10+
use Activity\Mapper\ActivityOptionCreationPeriod;
11+
use Activity\Mapper\ActivityOptionCreationProposal;
12+
use Activity\Mapper\MaxActivities;
13+
use Activity\Mapper\Proposal;
14+
use Activity\Mapper\Signup;
15+
use DoctrineModule\Stdlib\Hydrator\DoctrineObject;
516
use User\Permissions\Assertion\IsCreator;
17+
use User\Permissions\Assertion\IsOrganMember;
618

719
class Module
820
{
@@ -62,7 +74,7 @@ public function getServiceConfig()
6274
return $sm->get('doctrine.entitymanager.orm_default');
6375
},
6476
'activity_form_activityfield_fieldset' => function ($sm) {
65-
$form = new \Activity\Form\ActivityFieldFieldSet();
77+
$form = new ActivityFieldFieldSet();
6678
$form->setHydrator($sm->get('activity_hydrator'));
6779
return $form;
6880
},
@@ -74,21 +86,19 @@ public function getServiceConfig()
7486
$form->setHydrator($sm->get('activity_hydrator'));
7587
return $form;
7688
},
77-
'activity_form_calendar_option' => function ($sm) {
78-
$organService = $sm->get('decision_service_organ');
79-
$organs = $organService->getEditableOrgans();
80-
$form = new Form\ActivityCalendarOption($organs, $sm->get('translator'));
81-
$form->setHydrator($sm->get('activity_hydrator_calendar_option'));
89+
'activity_form_calendar_proposal' => function ($sm) {
90+
$calendarService = $sm->get('activity_service_calendar');
91+
$form = new Form\ActivityCalendarProposal($sm->get('translator'), $calendarService);
8292
return $form;
8393
},
84-
'activity_hydrator_calendar_option' => function ($sm) {
85-
return new \DoctrineModule\Stdlib\Hydrator\DoctrineObject(
86-
$sm->get('activity_doctrine_em'),
87-
'Activity\Model\ActivityCalendarOption'
88-
);
94+
'activity_form_calendar_option' => function ($sm) {
95+
$translator = $sm->get('translator');
96+
$calendarService = $sm->get('activity_service_calendar');
97+
$form = new Form\ActivityCalendarOption($translator, $calendarService);
98+
return $form;
8999
},
90100
'activity_hydrator' => function ($sm) {
91-
return new \DoctrineModule\Stdlib\Hydrator\DoctrineObject(
101+
return new DoctrineObject(
92102
$sm->get('activity_doctrine_em')
93103
);
94104
},
@@ -111,32 +121,47 @@ public function getServiceConfig()
111121
return $ac;
112122
},
113123
'activity_mapper_activity' => function ($sm) {
114-
return new \Activity\Mapper\Activity(
124+
return new Activity(
125+
$sm->get('activity_doctrine_em')
126+
);
127+
},
128+
'activity_mapper_period' => function ($sm) {
129+
return new ActivityOptionCreationPeriod(
130+
$sm->get('activity_doctrine_em')
131+
);
132+
},
133+
'activity_mapper_max_activities' => function ($sm) {
134+
return new MaxActivities(
115135
$sm->get('activity_doctrine_em')
116136
);
117137
},
118138
'activity_mapper_activity_field_value' => function ($sm) {
119-
return new \Activity\Mapper\ActivityFieldValue(
139+
return new ActivityFieldValue(
120140
$sm->get('activity_doctrine_em')
121141
);
122142
},
123143
'activity_mapper_activity_option' => function ($sm) {
124-
return new \Activity\Mapper\ActivityOption(
144+
return new ActivityOption(
125145
$sm->get('activity_doctrine_em')
126146
);
127147
},
128148
'activity_mapper_proposal' => function ($sm) {
129-
return new \Activity\Mapper\Proposal(
149+
return new Proposal(
150+
$sm->get('activity_doctrine_em')
151+
);
152+
},
153+
'activity_mapper_option_proposal' => function ($sm) {
154+
return new ActivityOptionCreationProposal(
130155
$sm->get('activity_doctrine_em')
131156
);
132157
},
133158
'activity_mapper_signup' => function ($sm) {
134-
return new \Activity\Mapper\Signup(
159+
return new Signup(
135160
$sm->get('activity_doctrine_em')
136161
);
137162
},
138163
'activity_mapper_calendar_option' => function ($sm) {
139-
return new \Activity\Mapper\ActivityCalendarOption(
164+
return new ActivityCalendarOption(
140165
$sm->get('activity_doctrine_em')
141166
);
142167
},
@@ -146,7 +171,7 @@ public function getServiceConfig()
146171
$acl->addResource('myActivities');
147172
$acl->addResource('activitySignup');
148173
$acl->addResource('model');
149-
$acl->addResource('activity_calendar_option');
174+
$acl->addResource('activity_calendar_proposal');
150175

151176
$acl->allow('guest', 'activity', 'view');
152177

@@ -167,7 +192,8 @@ public function getServiceConfig()
167192

168193
$acl->allow('sosuser', 'activitySignup', ['signup', 'signoff', 'checkUserSignedUp']);
169194

170-
$acl->allow('user', 'activity_calendar_option', ['create', 'delete_own']);
195+
$acl->allow('user', 'activity_calendar_proposal', ['create', 'delete_own']);
196+
$acl->allow('admin', 'activity_calendar_proposal', ['create_always']);
171197
return $acl;
172198
},
173199
]

module/Activity/config/module.config.php

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,35 @@
33
'router' => [
44
'routes' => [
55
'activity' => [
6-
'type' => 'Literal',
6+
'type' => 'Literal',
77
'options' => [
8-
'route' => '/activity',
8+
'route' => '/activity',
99
'defaults' => [
1010
'__NAMESPACE__' => 'Activity\Controller',
11-
'controller' => 'Activity',
12-
'action' => 'index',
11+
'controller' => 'Activity',
12+
'action' => 'index',
1313
],
1414
],
1515
'may_terminate' => true,
1616
'child_routes' => [
1717
'view' => [
18-
'type' => 'Segment',
18+
'type' => 'Segment',
1919
'options' => [
20-
'route' => '/view/[:id]',
20+
'route' => '/view/[:id]',
2121
'constraints' => [
22-
'action' => '[0-9]*',
22+
'action' => '[0-9]*',
2323
],
2424
'defaults' => [
2525
'action' => 'view'
2626
]
2727
],
2828
],
2929
'signup' => [
30-
'type' => 'Segment',
30+
'type' => 'Segment',
3131
'options' => [
32-
'route' => '/signup/[:id]',
32+
'route' => '/signup/[:id]',
3333
'constraints' => [
34-
'action' => '[0-9]*',
34+
'action' => '[0-9]*',
3535
],
3636
'defaults' => [
3737
'action' => 'signup'
@@ -51,11 +51,11 @@
5151
],
5252
],
5353
'signoff' => [
54-
'type' => 'Segment',
54+
'type' => 'Segment',
5555
'options' => [
56-
'route' => '/signoff/[:id]',
56+
'route' => '/signoff/[:id]',
5757
'constraints' => [
58-
'action' => '[0-9]*',
58+
'action' => '[0-9]*',
5959
],
6060
'defaults' => [
6161
'action' => 'signoff'
@@ -225,6 +225,24 @@
225225
]
226226
]
227227
],
228+
'approve' => [
229+
'type' => 'Literal',
230+
'options' => [
231+
'route' => 'approve',
232+
'defaults' => [
233+
'action' => 'approve',
234+
]
235+
]
236+
],
237+
'create' => [
238+
'type' => 'Literal',
239+
'options' => [
240+
'route' => 'create',
241+
'defaults' => [
242+
'action' => 'create'
243+
]
244+
]
245+
],
228246
]
229247

230248
],
@@ -313,13 +331,13 @@
313331
],
314332
],
315333
'activity_api' => [
316-
'type' => 'Literal',
334+
'type' => 'Literal',
317335
'options' => [
318-
'route' => '/api/activity',
336+
'route' => '/api/activity',
319337
'defaults' => [
320338
'__NAMESPACE__' => 'Activity\Controller',
321-
'controller' => 'Api',
322-
'action' => 'list',
339+
'controller' => 'Api',
340+
'action' => 'list',
323341
],
324342
],
325343
'may_terminate' => false,
@@ -334,45 +352,45 @@
334352
]
335353
],
336354
'view' => [
337-
'type' => 'Segment',
355+
'type' => 'Segment',
338356
'options' => [
339-
'route' => '/view/[:id]',
357+
'route' => '/view/[:id]',
340358
'constraints' => [
341-
'action' => '[0-9]*',
359+
'action' => '[0-9]*',
342360
],
343361
'defaults' => [
344362
'action' => 'view'
345363
]
346364
],
347365
],
348366
'signup' => [
349-
'type' => 'Segment',
367+
'type' => 'Segment',
350368
'options' => [
351-
'route' => '/signup/[:id]',
369+
'route' => '/signup/[:id]',
352370
'constraints' => [
353-
'id' => '[0-9]*',
371+
'id' => '[0-9]*',
354372
],
355373
'defaults' => [
356374
'action' => 'signup'
357375
]
358376
],
359377
],
360378
'signoff' => [
361-
'type' => 'Segment',
379+
'type' => 'Segment',
362380
'options' => [
363-
'route' => '/signoff/[:id]',
381+
'route' => '/signoff/[:id]',
364382
'constraints' => [
365-
'id' => '[0-9]*',
383+
'id' => '[0-9]*',
366384
],
367385
'defaults' => [
368386
'action' => 'signoff'
369387
]
370388
],
371389
],
372390
'signedup' => [
373-
'type' => 'Segment',
391+
'type' => 'Segment',
374392
'options' => [
375-
'route' => '/signedup',
393+
'route' => '/signedup',
376394
'defaults' => [
377395
'action' => 'signedup'
378396
]

0 commit comments

Comments
 (0)