-
-
+
+
+
+
+
+
+
+
+
diff --git a/module/Database/config/module.config.php b/module/Database/config/module.config.php
index 6f1c94855..fd9c1067e 100644
--- a/module/Database/config/module.config.php
+++ b/module/Database/config/module.config.php
@@ -171,28 +171,28 @@
'info' => [
'type' => Segment::class,
'options' => [
- 'route' => '/info/:type/:number/:point/:decision/:sequence',
+ 'route' => '/info/:type/:number/:point/:decision/:subdecision',
'defaults' => ['action' => 'info'],
'constraints' => [
'type' => 'ALV|BV|VV|Virt',
'number' => '[0-9]*',
'point' => '[0-9]*',
'decision' => '[0-9]*',
- 'sequence' => '[0-9]*',
+ 'subdecision' => '[0-9]*',
],
],
],
'view' => [
'type' => Segment::class,
'options' => [
- 'route' => '/:type/:number/:point/:decision/:sequence',
+ 'route' => '/:type/:number/:point/:decision/:subdecision',
'defaults' => ['action' => 'view'],
'constraints' => [
'type' => 'ALV|BV|VV|Virt',
'number' => '[0-9]*',
'point' => '[0-9]*',
'decision' => '[0-9]*',
- 'sequence' => '[0-9]*',
+ 'subdecision' => '[0-9]*',
],
],
],
diff --git a/module/Database/src/Form/Fieldset/Minutes.php b/module/Database/src/Form/Fieldset/Minutes.php
deleted file mode 100644
index 1f48812ac..000000000
--- a/module/Database/src/Form/Fieldset/Minutes.php
+++ /dev/null
@@ -1,58 +0,0 @@
-add([
- 'name' => 'meeting_type',
- 'type' => Hidden::class,
- ]);
-
- $this->add([
- 'name' => 'meeting_number',
- 'type' => Hidden::class,
- ]);
- }
-
- /**
- * Specification for input filters.
- */
- public function getInputFilterSpecification(): array
- {
- return [
- 'meeting_type' => [
- 'required' => true,
- 'validators' => [
- [
- 'name' => InArray::class,
- 'options' => [
- 'haystack' => MeetingTypes::values(),
- ],
- ],
- ],
- ],
- 'meeting_number' => [
- 'required' => true,
- 'validators' => [
- [
- 'name' => Digits::class,
- ],
- ],
- ],
- ];
- }
-}
diff --git a/module/Database/src/Form/Minutes.php b/module/Database/src/Form/Minutes.php
index 2dcc0bcb4..a6f9925c8 100644
--- a/module/Database/src/Form/Minutes.php
+++ b/module/Database/src/Form/Minutes.php
@@ -67,6 +67,7 @@ public function __construct(
],
]);
+ $minutes->setName('fmeeting');
$this->add($minutes);
}
diff --git a/module/Database/src/Hydrator/Minutes.php b/module/Database/src/Hydrator/Minutes.php
index 92a2c1379..78c7e6636 100644
--- a/module/Database/src/Hydrator/Minutes.php
+++ b/module/Database/src/Hydrator/Minutes.php
@@ -25,7 +25,7 @@ public function hydrate(
$subdecision = new MinutesModel();
- $subdecision->setMeeting($data['meeting']);
+ $subdecision->setTarget($data['fmeeting']);
$subdecision->setMember($data['author']);
$subdecision->setApproval(boolval($data['approve']));
diff --git a/module/Database/src/Model/SubDecision/Minutes.php b/module/Database/src/Model/SubDecision/Minutes.php
index ef8dc464f..db09de96e 100644
--- a/module/Database/src/Model/SubDecision/Minutes.php
+++ b/module/Database/src/Model/SubDecision/Minutes.php
@@ -19,7 +19,7 @@
class Minutes extends SubDecision
{
/**
- * Reference to the meetings
+ * Reference to the meeting.
*/
#[OneToOne(
targetEntity: Meeting::class,
@@ -50,7 +50,7 @@ class Minutes extends SubDecision
/**
* Get the target.
*/
- public function getMeeting(): Meeting
+ public function getTarget(): Meeting
{
return $this->meeting;
}
@@ -58,7 +58,7 @@ public function getMeeting(): Meeting
/**
* Set the target.
*/
- public function setMeeting(Meeting $meeting): void
+ public function setTarget(Meeting $meeting): void
{
$this->meeting = $meeting;
}
@@ -95,6 +95,16 @@ public function setChanges(bool $changes): void
$this->changes = $changes;
}
+ #[\Override] protected function getTemplate(): string
+ {
+ return 'De notulen van de %NUMBER%e %TYPE%%AUTHOR% worden%APPROVAL%%THANK%%CHANGES%.';
+ }
+
+ #[\Override] protected function getAlternativeTemplate(): string
+ {
+ return 'The minutes of the %NUMBER%th %TYPE%%AUTHOR% are%APPROVAL%%THANK%%CHANGES%.';
+ }
+
/**
* Get the content.
*
@@ -102,42 +112,31 @@ public function setChanges(bool $changes): void
*/
public function getContent(): string
{
- $target = $this->getMeeting();
- $template = $this->getTemplate();
- $template = str_replace('%TYPE%', $this->getMeetingType()->value, $template);
- $template = str_replace('%NUMBER%', strval($this->getMeetingNumber()), $template);
-
- if (MeetingTypes::ALV === $target->getType()) {
- if (null !== $this->getMember()) {
- $template = str_replace('%AUTHOR%', ' door ' . $this->getMember()->getFullName(), $template);
- $template = str_replace('%THANK%', '', $template);
- }
- } else {
- $template = str_replace('%AUTHOR%', '', $template);
- }
-
- if ($this->getApproval()) {
- $template = str_replace('%APPROVAL%', ' goedgekeurd', $template);
- if ($this->getChanges()) {
- $template = str_replace('%CHANGES%', ' met genoemde wijzigingen en', $template);
- } else {
- $template = str_replace('%CHANGES%', '', $template);
- }
- $template = str_replace('%THANK%', ' met dank aan de notulist', $template);
- } else {
- $template = str_replace('%APPROVAL%', ' afgekeurd', $template);
- $template = str_replace('%CHANGES%', '', $template);
- $template = str_replace('%THANK%', '', $template);
- }
-
- return $template;
- }
- /**
- * Decision template
- */
- protected function getTemplate(): string
+ $replacements = [
+ '%TYPE%' => $this->getTarget()->getType()->value,
+ '%NUMBER%' => strval($this->getTarget()->getNumber()),
+ '%APPROVAL%' => $this->getApproval() ? ' goedgekeurd' : ' afgekeurd',
+ '%AUTHOR%' => MeetingTypes::BV === $this->getTarget()->getType() ? ''
+ : ' door ' . $this->getMember()->getFullName(),
+ '%CHANGES%' => $this->getApproval() && $this->getChanges() ? ' met genoemde wijzigingen' : '',
+ '%THANK%' => MeetingTypes::BV === $this->getTarget()->getType() ? ' met dank aan de notulist' : '',
+ ];
+
+ return $this->replaceContentPlaceholders($this->getTemplate(), $replacements);
+ }
+ #[\Override] public function getAlternativeContent(): string
{
- return 'De notulen van de %NUMBER%e %TYPE%%AUTHOR% worden %APPROVAL%%CHANGES%%THANK%.';
+ $replacements = [
+ '%TYPE%' => $this->getTarget()->getType()->value,
+ '%NUMBER%' => strval($this->getTarget()->getNumber()),
+ '%APPROVAL%' => $this->getApproval() ? ' approved' : ' disapproved',
+ '%AUTHOR%' => MeetingTypes::BV === $this->getTarget()->getType() ? ''
+ : ' by ' . $this->getMember()->getFullName(),
+ '%CHANGES%' => $this->getApproval() && $this->getChanges() ? ' with mentioned changes' : '',
+ '%THANK%' => MeetingTypes::BV === $this->getTarget()->getType() ? ' thanks to the minute taker' : '',
+ ];
+
+ return $this->replaceContentPlaceholders($this->getAlternativeTemplate(), $replacements);
}
}
diff --git a/module/Database/view/database/meeting/minutesform.phtml b/module/Database/view/database/meeting/minutesform.phtml
index c8b4cbe97..35dc4bdb7 100644
--- a/module/Database/view/database/meeting/minutesform.phtml
+++ b/module/Database/view/database/meeting/minutesform.phtml
@@ -21,6 +21,7 @@ use Laminas\View\Renderer\PhpRenderer;
var ret = [];
$.each(data.json, function (idx, meeting) {
var result = meeting.meeting_type + ' ' + meeting.meeting_number;
+
ret.push({
label: result,
value: result,
@@ -32,6 +33,9 @@ use Laminas\View\Renderer\PhpRenderer;
});
},
select: function(event, ui) {
+ let meeting = ui.item.id;
+ $('#minutes-meeting-type').val(meeting.meeting_type);
+ $('#minutes-meeting-number').val(meeting.meeting_number);
}
});
});
@@ -105,9 +109,15 @@ $element->setAttribute('placeholder', $this->translate('Meeting'));
= $this->formElementErrors($element) ?>
-
- = $this->translate('Minutes') ?> :
-
+get('fmeeting');
+$minutesMeetingType = $fs->get('type');
+$minutesMeetingType->setAttribute('id', 'minutes-meeting-type');
+$minutesMeetingNum = $fs->get('number');
+$minutesMeetingNum->setAttribute('id', 'minutes-meeting-number');
+?>
+= $this->formHidden($minutesMeetingType) ?>
+= $this->formHidden($minutesMeetingNum) ?>
get('author');
diff --git a/module/Report/src/Service/Meeting.php b/module/Report/src/Service/Meeting.php
index a52dd76d5..792e0cf9d 100644
--- a/module/Report/src/Service/Meeting.php
+++ b/module/Report/src/Service/Meeting.php
@@ -247,7 +247,7 @@ public function generateSubDecision(
$reportSubDecision->setOrganType($subdecision->getOrganType());
}
} elseif ($subdecision instanceof DatabaseSubDecisionModel\Minutes) {
- $ref = $subdecision->getMeeting();
+ $ref = $subdecision->getTarget();
$meeting = $meetingRepo->find([
'type' => $ref->getType(),
'number' => $ref->getNumber(),