Skip to content

Commit 794287f

Browse files
authored
Merge pull request #560 from jan-stanek/skryti-prihlasky
skrytí přihlášky pokud není registrovatlná role
2 parents ce4c374 + 50d4883 commit 794287f

File tree

4 files changed

+79
-32
lines changed

4 files changed

+79
-32
lines changed

app/WebModule/components/ApplicationContentControl.php

+3
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ public function render(ApplicationContent $content) : void
9090

9191
$template->unapprovedRole = $user->isInRole($this->roleRepository->findBySystemName(Role::UNAPPROVED)->getName());
9292
$template->nonregisteredRole = $user->isInRole($this->roleRepository->findBySystemName(Role::NONREGISTERED)->getName());
93+
$template->noRegisterableRole = $this->roleRepository->findAllRegisterableNowOrderedByName()->isEmpty();
94+
$template->registrationStart = $this->roleRepository->getRegistrationStart();
95+
$template->registrationEnd = $this->roleRepository->getRegistrationEnd();
9396
$template->bankAccount = $this->settingsRepository->getValue(Settings::ACCOUNT_NUMBER);
9497
$template->dbuser = $dbuser;
9598
$template->userHasFixedFeeRole = $userHasFixedFeeRole;

app/WebModule/components/templates/application_content.latte

+46-32
Original file line numberDiff line numberDiff line change
@@ -24,45 +24,59 @@
2424
<a href="{plink :Auth:login, 'backlink' => $backlink}">{_web.application_content.login_required_link}</a>{_web.application_content.login_required_end}
2525
</div>
2626
{elseif $nonregisteredRole}
27-
<script>
28-
Nette.validators.AppWebModuleFormsApplicationForm_toggleArrivalDeparture = function (elem, arg, value) {
29-
var i;
30-
for (i = 0; i < value.length; i++) {
31-
if (jQuery.inArray(value[i], arg) != -1)
32-
return true;
33-
}
34-
return false;
35-
};
36-
</script>
37-
38-
{if $explicitSubeventsExists}
27+
{if $noRegisterableRole}
28+
<div class="alert alert-info alert-forever">
29+
{if $registrationStart && $registrationEnd}
30+
{_web.application_content.no_registerable_role_start_end, ['start' => $registrationStart->format('j. n. Y H:i'), 'end' => $registrationEnd->format('j. n. Y H:i')]}
31+
{elseif $registrationStart}
32+
{_web.application_content.no_registerable_role_start, ['start' => $registrationStart->format('j. n. Y H:i')]}
33+
{elseif $registrationEnd}
34+
{_web.application_content.no_registerable_role_end, ['end' => $registrationEnd->format('j. n. Y H:i')]}
35+
{else}
36+
{_web.application_content.no_registerable_role}
37+
{/if}
38+
</div>
39+
{else}
3940
<script>
40-
$(function () {
41-
$("select[name='roles[]']").on("change", function () {
41+
Nette.validators.AppWebModuleFormsApplicationForm_toggleArrivalDeparture = function (elem, arg, value) {
42+
var i;
43+
for (i = 0; i < value.length; i++) {
44+
if (jQuery.inArray(value[i], arg) != -1)
45+
return true;
46+
}
47+
return false;
48+
};
49+
</script>
50+
51+
{if $explicitSubeventsExists}
52+
<script>
53+
$(function () {
54+
$("select[name='roles[]']").on("change", function () {
55+
changeSubeventsRequired();
56+
});
4257
changeSubeventsRequired();
4358
});
44-
changeSubeventsRequired();
45-
});
4659
47-
function changeSubeventsRequired() {
48-
var value = $("select[name='roles[]']").val();
49-
var label = $("label[for='frm-applicationContent-applicationForm-subevents']");
50-
var rolesWithSubevents = JSON.parse({$rolesWithSubevents});
51-
var i;
52-
for (i = 0; i < value.length; i++) {
53-
if (jQuery.inArray(parseInt(value[i]), rolesWithSubevents) != -1) {
54-
label.addClass('required');
55-
return;
60+
function changeSubeventsRequired() {
61+
var value = $("select[name='roles[]']").val();
62+
var label = $("label[for='frm-applicationContent-applicationForm-subevents']");
63+
var rolesWithSubevents = JSON.parse({$rolesWithSubevents});
64+
var i;
65+
for (i = 0; i < value.length; i++) {
66+
if (jQuery.inArray(parseInt(value[i]), rolesWithSubevents) != -1) {
67+
label.addClass('required');
68+
return;
69+
}
5670
}
71+
label.removeClass('required');
5772
}
58-
label.removeClass('required');
59-
}
60-
</script>
61-
{/if}
73+
</script>
74+
{/if}
6275

63-
<div class="well">
64-
{control applicationForm}
65-
</div>
76+
<div class="well">
77+
{control applicationForm}
78+
</div>
79+
{/if}
6680
{else}
6781
{if $unapprovedRole}
6882
<div class="alert alert-warning alert-forever">

app/lang/web.cs_CZ.neon

+4
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ application_content:
120120
login_required_begin: "Pro registraci na seminář se musíte nejprve"
121121
login_required_link: "přihlásit přes skautIS"
122122
login_required_end: "."
123+
no_registerable_role: "Aktuálně není možné se na seminář přihlásit."
124+
no_registerable_role_start: "Na seminář je možné se přihlásit od %start%."
125+
no_registerable_role_end: "Na seminář bylo možné se přihlásit do %end%."
126+
no_registerable_role_start_end: "Na seminář je možné se přihlásit od %start% do %end%."
123127
unapproved_registration: "Na seminář jste se registrovali jako: %roles%. Vaše registrace zatím nebyla potvrzena."
124128
approved_registration_not_paying: "Na seminář jste se registrovali jako: %roles%. Vaše registrace již byla potvrzena."
125129
approved_registration_paid: "Na seminář jste se registrovali jako: %roles%. Poplatek byl úspěšně uhrazen."

app/model/ACL/RoleRepository.php

+26
Original file line numberDiff line numberDiff line change
@@ -435,4 +435,30 @@ public function decrementOccupancy(Role $role) : void
435435
->setParameter('rid', $role->getId())
436436
->getResult();
437437
}
438+
439+
public function getRegistrationStart() : ?\DateTime
440+
{
441+
$result = $this->createQueryBuilder('r')
442+
->select('r.registerableFrom')
443+
->where('r.registerable = TRUE')
444+
->andWhere('r.registerableFrom IS NOT NULL')
445+
->orderBy('r.registerableFrom')
446+
->setMaxResults(1)
447+
->getQuery()
448+
->getOneOrNullResult();
449+
return $result ? $result['registerableFrom'] : null;
450+
}
451+
452+
public function getRegistrationEnd() : ?\DateTime
453+
{
454+
$result = $this->createQueryBuilder('r')
455+
->select('r.registerableTo')
456+
->where('r.registerable = TRUE')
457+
->andWhere('r.registerableTo IS NOT NULL')
458+
->orderBy('r.registerableTo', 'DESC')
459+
->setMaxResults(1)
460+
->getQuery()
461+
->getOneOrNullResult();
462+
return $result ? $result['registerableTo'] : null;
463+
}
438464
}

0 commit comments

Comments
 (0)