Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch activity subscription from well to modal #1765

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions module/Activity/src/Controller/ActivityController.php
Original file line number Diff line number Diff line change
Expand Up @@ -158,11 +158,9 @@ public function viewSignupListAction(): ViewModel
$view->setTemplate('activity/activity/view.phtml');

// Retrieve and clear the request status from the session, if it exists.
if (isset($activitySession->success)) {
$view->setVariable('success', $activitySession->success);
unset($activitySession->success);
$view->setVariable('message', $activitySession->message);
unset($activitySession->message);
if (isset($activitySession->reopen)) {
$view->setVariable('reopen', $activitySession->reopen);
unset($activitySession->reopen);
}

return $view;
Expand Down Expand Up @@ -219,6 +217,8 @@ public function signupAction(): Response|ViewModel

/** @var Request $request */
$request = $this->getRequest();
$activityRequestSession = new SessionContainer('activityRequest');
$activityRequestSession->reopen = false;

if ($request->isPost()) {
$form = $this->signupService->getForm($signupList);
Expand All @@ -229,7 +229,7 @@ public function signupAction(): Response|ViewModel
// Check if the form is valid
if (!$form->isValid()) {
$error = $this->translator->translate('Invalid form');
$activityRequestSession = new SessionContainer('activityRequest');
$activityRequestSession->reopen = true;
$activityRequestSession->signupData = $postData->toArray();

return $this->redirectActivityRequest($activityId, $signupListId, false, $error);
Expand Down Expand Up @@ -268,6 +268,7 @@ public function signupAction(): Response|ViewModel
}

$error = $this->translator->translate('Use the form to subscribe');
$activityRequestSession->reopen = true;

return $this->redirectActivityRequest($activityId, $signupListId, false, $error);
}
Expand Down Expand Up @@ -312,6 +313,8 @@ public function externalSignupAction(): Response|ViewModel

/** @var Request $request */
$request = $this->getRequest();
$activityRequestSession = new SessionContainer('activityRequest');
$activityRequestSession->reopen = false;

if ($request->isPost()) {
$form = $this->signupService->getExternalForm($signupList);
Expand All @@ -322,7 +325,7 @@ public function externalSignupAction(): Response|ViewModel
// Check if the form is valid
if (!$form->isValid()) {
$error = $this->translator->translate('Invalid form');
$activityRequestSession = new SessionContainer('activityRequest');
$activityRequestSession->reopen = true;
$activityRequestSession->signupData = $postData->toArray();

return $this->redirectActivityRequest($activityId, $signupListId, false, $error);
Expand Down Expand Up @@ -357,6 +360,7 @@ public function externalSignupAction(): Response|ViewModel
}

$error = $this->translator->translate('Use the form to subscribe');
$activityRequestSession->reopen = true;

return $this->redirectActivityRequest($activityId, $signupListId, false, $error);
}
Expand Down
14 changes: 8 additions & 6 deletions module/Activity/src/Controller/AdminController.php
Original file line number Diff line number Diff line change
Expand Up @@ -281,11 +281,9 @@ public function participantsAction(): ViewModel
$result['signupLists'] = $signupLists;

// Retrieve and clear the request status from the session, if it exists.
if (isset($activityAdminSession->success)) {
$result['success'] = $activityAdminSession->success;
unset($activityAdminSession->success);
$result['message'] = $activityAdminSession->message;
unset($activityAdminSession->message);
if (isset($activityAdminSession->reopen)) {
$result['reopen'] = $activityAdminSession->reopen;
unset($activityAdminSession->reopen);
}

$result['canSeeTimeOfSignup'] = $this->aclService->isAllowed('viewParticipantDetails', 'activity');
Expand All @@ -309,6 +307,8 @@ public function externalSignupAction(): Response|ViewModel

/** @var Request $request */
$request = $this->getRequest();
$activityAdminSession = new SessionContainer('activityAdminRequest');
$activityAdminSession->reopen = false;

if ($request->isPost()) {
$form = $this->signupService->getExternalAdminForm($signupList);
Expand All @@ -318,7 +318,7 @@ public function externalSignupAction(): Response|ViewModel

// Check if the form is valid
if (!$form->isValid()) {
$activityAdminSession = new SessionContainer('activityAdminRequest');
$activityAdminSession->reopen = true;
$activityAdminSession->signupData = $postData->toArray();

return $this->redirectActivityAdminRequest(
Expand All @@ -345,6 +345,8 @@ public function externalSignupAction(): Response|ViewModel
);
}

$activityAdminSession->reopen = true;

return $this->redirectActivityAdminRequest(
$activityId,
$signupListId,
Expand Down
152 changes: 91 additions & 61 deletions module/Activity/view/activity/activity/view.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -187,78 +187,108 @@ $this->headTitle($this->translate('Activities'));
</div>
<div class="col-md-12">
<?php if ($isSignedUp) : ?>
<button class="btn btn-default btn-lg agenda-subscription-button" type="button"
data-toggle="collapse" data-target="#subscriptionForm"
aria-expanded="false" aria-controls="subscriptionForm">
<?= $this->translate('Already subscribed') ?>
</button>
<?php if ($subscriptionCloseDatePassed) : ?>
<button class="btn btn-default btn-lg" type="button" disabled="disabled">
<span class="fas fa-user-check"></span> <?= $this->translate('Unsubscription period closed') ?>
</button>
<?php else: ?>
<button class="btn btn-default btn-lg" type="button" data-toggle="modal"
data-target="#signoffModal" aria-hidden="true" aria-controls="signoffModal">
<span class="fas fa-user-minus"></span> <?= $this->translate('Unsubscribe') ?>
</button>
<div class="modal fade" id="signoffModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">
<?= sprintf(
$this->translate('Unsubscribe from \'%s\''),
$this->escapeHtml($this->localiseText($signupList->getName())),
) ?>
</h4>
</div>
<div class="modal-body">
<p>
<?= $this->translate('Are you sure you want to unsubscribe?') ?>
</p>
</div>
<div class="modal-footer">
<?php
$signoffForm->setAttribute(
'action',
$this->url(
'activity/signoff',
['id' => $activity->getId(), 'signupList' => $signupList->getId()],
),
);
$signoffForm->prepare();
echo $this->form()->openTag($signoffForm);
echo $this->formElement($signoffForm->get('security'));
$submit = $signoffForm->get('submit');
$submit->setAttribute('class', 'btn btn-default');
echo $this->formSubmit($submit);
?>
<button type="button" class="btn" data-dismiss="modal">
<?= $this->translate('Cancel') ?>
</button>
<?= $this->form()->closeTag(); ?>
</div>
</div>
</div>
</div>
<?php endif; ?>
<?php elseif (!$signupOpen): ?>
<button class="btn btn-default btn-lg agenda-subscription-button" type="button"
data-toggle="collapse" data-target="#subscriptionForm"
aria-expanded="false" disabled="disabled"
aria-controls="subscriptionForm">
<?= $this->translate('Subscription closed') ?>
<button class="btn btn-default btn-lg" type="button" disabled="disabled">
<span class="fas fa-user-xmark"></span> <?= $this->translate('Subscription period closed') ?>
</button>
<?php else: ?>
<button class="btn btn-primary btn-lg agenda-subscription-button collapsed" type="button"
data-toggle="collapse" data-target="#subscriptionForm" aria-expanded="false"
aria-controls="subscriptionForm">
<span class="fas fa-chevron-right"></span> <?= $this->translate('Subscribe now') ?>
</button>
<?php endif; ?>
</div>
<div class="col-md-6 collapse activity-subscription-form" id="subscriptionForm">
<div class="well">
<?php if ($isSignedUp) : ?>
<h2><?= $this->translate('Unsubscribe yourself') ?></h2>
<?php if ($subscriptionCloseDatePassed) : ?>
<div>
<?= $this->translate('You are not allowed to unsubscribe after the deadline!') ?>
</div>
<?php else : ?>
<div>
<?php
$signoffForm->setAttribute('action', $this->url('activity/signoff', ['id' => $activity->getId(), 'signupList' => $signupList->getId()]));
$signoffForm->prepare();
echo $this->form()->openTag($signoffForm);
echo $this->formElement($signoffForm->get('security'));
$submit = $signoffForm->get('submit');
$submit->setAttribute('class', 'btn btn-default');
echo $this->formSubmit($submit);
echo $this->form()->closeTag();
?>
</div>
<?php endif; ?>
<?php endif; ?>
<?php if ($signupOpen && !$isAllowedToSubscribe): ?>
<h2>
<?= $this->translate('Subscribe yourself') ?>
</h2>
<a href="<?= $this->url('user/login', ['user_type' => 'member']) ?>">
<?= $this->translate('Login to subscribe') ?>
<?php if (!$isAllowedToSubscribe && $signupList->getOnlyGEWIS()): ?>
<a href="<?= $this->url(
'user/login',
[
'user_type' => 'member',
'redirect_to' => base64_encode($this->serverUrl(true)),
],
) ?>"
class="btn btn-primary btn-lg">
<span class="fas fa-user-plus"></span> <?= $this->translate('Log in to subscribe') ?>
</a>
<?php if (!$signupList->getOnlyGEWIS() && null !== $form): ?>
<br/>
<?= $this->translate('Or subscribe without a GEWIS membership: ') ?>
<?= $this->partial('partial/signupForm', [
'form' => $form,
'signupList' => $signupList,
])
?>
<?php endif; ?>
<?php endif; ?>
<?php if (null !== $form && $signupOpen && !$isSignedUp && $isAllowedToSubscribe): //display the form ?>
<h2>
<?= $this->translate('Subscribe yourself') ?>
</h2>
<?php elseif (!$isAllowedToSubscribe && !$signupList->getOnlyGEWIS()): ?>
<button class="btn btn-primary btn-lg" type="button" data-toggle="modal"
data-target="#signupModal" aria-hidden="true" aria-controls="signupModal">
<span class="fas fa-user-plus"></span> <?= $this->translate('Subscribe as external participant') ?>
</button>
<?= $this->partial('partial/signupForm', [
'form' => $form,
'signupList' => $signupList,
])
?>
<?php else: ?>
<button class="btn btn-primary btn-lg" type="button" data-toggle="modal"
data-target="#signupModal" aria-hidden="true" aria-controls="signupModal">
<span class="fas fa-user-plus"></span> <?= $this->translate('Subscribe') ?>
</button>
<?= $this->partial('partial/signupForm', [
'form' => $form,
'signupList' => $signupList,
])
?>
<?php endif; ?>
</div>
<?php if (isset($reopen) && $reopen): ?>
<script nonce="<?= NONCE_REPLACEMENT_STRING ?>">
document.addEventListener("DOMContentLoaded", function() {
$('#signupModal').modal('show');
});
</script>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
<br>
<div class="row">
<div class="col-md-12">
<h2><?= $this->translate('Current subscriptions') ?></h2>
<div class="table-responsive">
Expand Down
11 changes: 11 additions & 0 deletions module/Activity/view/activity/admin/participants.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,23 @@ $this->breadcrumbs()
</div>
<div class="col-md-12">
<?php if (isset($externalSignupForm)): //display the external signup form ?>
<button class="btn btn-primary btn-lg" type="button" data-toggle="modal"
data-target="#signupModal" aria-hidden="true" aria-controls="signupModal">
<span class="fas fa-user-plus"></span> <?= $this->translate('Subscribe external participant') ?>
</button>
<?= $this->partial('partial/signupForm', [
'form' => $externalSignupForm,
'activity' => $activity,
'signupList' => $signupList,
])
?>
<?php if (isset($reopen) && $reopen): ?>
<script nonce="<?= NONCE_REPLACEMENT_STRING ?>">
document.addEventListener("DOMContentLoaded", function() {
$('#signupModal').modal('show');
});
</script>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
Loading