back buttons on edit and deletion pages

This commit is contained in:
Xu 2023-10-25 17:38:23 +02:00 committed by Igor Scheller
parent 185b7e3fb6
commit 89321306bc
15 changed files with 267 additions and 204 deletions

View File

@ -199,8 +199,9 @@ function shift_edit_controller()
); );
} }
$link = button(page_link_to('user-shifts'), icon('chevron-left'), 'btn-sm');
return page_with_title( return page_with_title(
shifts_title(), $link . ' ' . shifts_title(),
[ [
msg(), msg(),
'<noscript>' '<noscript>'
@ -270,18 +271,22 @@ function shift_delete_controller()
throw_redirect(page_link_to('user_shifts')); throw_redirect(page_link_to('user_shifts'));
} }
return page_with_title(shifts_title(), [ $link = button(page_link_to('user-shifts'), icon('chevron-left'), 'btn-sm');
error(sprintf( return page_with_title(
__('Do you want to delete the shift %s from %s to %s?'), $link . ' ' . shifts_title(),
$shift->shiftType->name, [
$shift->start->format(__('Y-m-d H:i')), error(sprintf(
$shift->end->format(__('H:i')) __('Do you want to delete the shift %s from %s to %s?'),
), true), $shift->shiftType->name,
form([ $shift->start->format(__('Y-m-d H:i')),
form_hidden('delete_shift', $shift->id), $shift->end->format(__('H:i'))
form_submit('delete', __('delete')), ), true),
]), form([
]); form_hidden('delete_shift', $shift->id),
form_submit('delete', __('delete')),
]),
]
);
} }
/** /**

View File

@ -453,8 +453,9 @@ function admin_shifts()
. '</div>'; . '</div>';
} }
$link = button(page_link_to('user-shifts'), icon('chevron-left'), 'btn-sm');
return page_with_title( return page_with_title(
admin_shifts_title() . ' ' . sprintf( $link . ' ' . admin_shifts_title() . ' ' . sprintf(
'<a href="%s">%s</a>', '<a href="%s">%s</a>',
page_link_to('admin_shifts_history'), page_link_to('admin_shifts_history'),
icon('clock-history') icon('clock-history')

View File

@ -303,9 +303,13 @@ function admin_user()
} }
} }
return page_with_title(__('Edit user'), [ $link = button(page_link_to('users', ['action' => 'view', 'user_id' => $user_id]), icon('chevron-left'), 'btn-sm');
return page_with_title(
$link . ' ' . __('Edit user'),
[
$html, $html,
]); ]
);
} }
/** /**

View File

@ -80,85 +80,91 @@ function AngelType_delete_view(AngelType $angeltype)
*/ */
function AngelType_edit_view(AngelType $angeltype, bool $supporter_mode) function AngelType_edit_view(AngelType $angeltype, bool $supporter_mode)
{ {
return page_with_title(sprintf(__('Edit %s'), $angeltype->name), [ $link = button($angeltype->id
buttons([ ? page_link_to('angeltypes', ['action' => 'view', 'angeltype_id' => $angeltype->id])
button(page_link_to('angeltypes'), icon('person-lines-fill') . __('angeltypes.angeltypes'), 'back'), : page_link_to('angeltypes'), icon('chevron-left'), 'btn-sm');
]), return page_with_title(
msg(), $link . ' ' . sprintf(__('Edit %s'), $angeltype->name),
form([ [
$supporter_mode buttons([
? form_info(__('general.name'), $angeltype->name) button(page_link_to('angeltypes'), icon('person-lines-fill') . __('angeltypes.angeltypes'), 'back'),
: form_text('name', __('general.name'), $angeltype->name), ]),
$supporter_mode msg(),
? form_info(__('angeltypes.restricted'), $angeltype->restricted ? __('Yes') : __('No')) form([
: form_checkbox( $supporter_mode
'restricted', ? form_info(__('general.name'), $angeltype->name)
__('angeltypes.restricted') . : form_text('name', __('general.name'), $angeltype->name),
' <span class="bi bi-info-circle-fill text-info" data-bs-toggle="tooltip" title="' . $supporter_mode
__('angeltypes.restricted.info') . '"></span>', ? form_info(__('angeltypes.restricted'), $angeltype->restricted ? __('Yes') : __('No'))
$angeltype->restricted : form_checkbox(
), 'restricted',
$supporter_mode __('angeltypes.restricted') .
? form_info(__('shift.self_signup'), $angeltype->shift_self_signup ? __('Yes') : __('No')) ' <span class="bi bi-info-circle-fill text-info" data-bs-toggle="tooltip" title="' .
: form_checkbox( __('angeltypes.restricted.info') . '"></span>',
'shift_self_signup', $angeltype->restricted
__('shift.self_signup') . ),
' <span class="bi bi-info-circle-fill text-info" data-bs-toggle="tooltip" title="' . $supporter_mode
__('angeltypes.shift.self_signup.info') . '"></span>', ? form_info(__('shift.self_signup'), $angeltype->shift_self_signup ? __('Yes') : __('No'))
$angeltype->shift_self_signup : form_checkbox(
), 'shift_self_signup',
$supporter_mode ? __('shift.self_signup') .
' <span class="bi bi-info-circle-fill text-info" data-bs-toggle="tooltip" title="' .
__('angeltypes.shift.self_signup.info') . '"></span>',
$angeltype->shift_self_signup
),
$supporter_mode ?
form_info(
__('Requires driver license'),
$angeltype->requires_driver_license
? __('Yes')
: __('No')
) :
form_checkbox(
'requires_driver_license',
__('Requires driver license'),
$angeltype->requires_driver_license
),
$supporter_mode && config('ifsg_enabled') ?
form_info(
__('angeltype.ifsg.required'),
$angeltype->requires_ifsg_certificate
? __('Yes')
: __('No')
) :
form_checkbox(
'requires_ifsg_certificate',
__('angeltype.ifsg.required'),
$angeltype->requires_ifsg_certificate
),
$supporter_mode
? form_info(__('Show on dashboard'), $angeltype->show_on_dashboard ? __('Yes') : __('No'))
: form_checkbox('show_on_dashboard', __('Show on dashboard'), $angeltype->show_on_dashboard),
$supporter_mode
? form_info(__('Hide at Registration'), $angeltype->hide_register ? __('Yes') : __('No'))
: form_checkbox('hide_register', __('Hide at Registration'), $angeltype->hide_register),
$supporter_mode
? form_info(__('angeltypes.hide_on_shift_view'), $angeltype->hide_on_shift_view ? __('Yes') : __('No'))
: form_checkbox(
'hide_on_shift_view',
__('angeltypes.hide_on_shift_view') .
' <span class="bi bi-info-circle-fill text-info" data-bs-toggle="tooltip" title="' .
__('angeltypes.hide_on_shift_view.info') . '"></span>',
$angeltype->hide_on_shift_view
),
form_textarea('description', __('general.description'), $angeltype->description),
form_info('', __('Please use markdown for the description.')),
heading(__('Contact'), 3),
form_info( form_info(
__('Requires driver license'), '',
$angeltype->requires_driver_license __('Primary contact person/desk for user questions.')
? __('Yes')
: __('No')
) :
form_checkbox(
'requires_driver_license',
__('Requires driver license'),
$angeltype->requires_driver_license
), ),
$supporter_mode && config('ifsg_enabled') ? form_text('contact_name', __('general.name'), $angeltype->contact_name),
form_info( config('enable_dect') ? form_text('contact_dect', __('general.dect'), $angeltype->contact_dect) : '',
__('angeltype.ifsg.required'), form_text('contact_email', __('general.email'), $angeltype->contact_email),
$angeltype->requires_ifsg_certificate form_submit('submit', __('form.save')),
? __('Yes') ]),
: __('No') ]
) : );
form_checkbox(
'requires_ifsg_certificate',
__('angeltype.ifsg.required'),
$angeltype->requires_ifsg_certificate
),
$supporter_mode
? form_info(__('Show on dashboard'), $angeltype->show_on_dashboard ? __('Yes') : __('No'))
: form_checkbox('show_on_dashboard', __('Show on dashboard'), $angeltype->show_on_dashboard),
$supporter_mode
? form_info(__('Hide at Registration'), $angeltype->hide_register ? __('Yes') : __('No'))
: form_checkbox('hide_register', __('Hide at Registration'), $angeltype->hide_register),
$supporter_mode
? form_info(__('angeltypes.hide_on_shift_view'), $angeltype->hide_on_shift_view ? __('Yes') : __('No'))
: form_checkbox(
'hide_on_shift_view',
__('angeltypes.hide_on_shift_view') .
' <span class="bi bi-info-circle-fill text-info" data-bs-toggle="tooltip" title="' .
__('angeltypes.hide_on_shift_view.info') . '"></span>',
$angeltype->hide_on_shift_view
),
form_textarea('description', __('general.description'), $angeltype->description),
form_info('', __('Please use markdown for the description.')),
heading(__('Contact'), 3),
form_info(
'',
__('Primary contact person/desk for user questions.')
),
form_text('contact_name', __('general.name'), $angeltype->contact_name),
config('enable_dect') ? form_text('contact_dect', __('general.dect'), $angeltype->contact_dect) : '',
form_text('contact_email', __('general.email'), $angeltype->contact_email),
form_submit('submit', __('form.save')),
]),
]);
} }
/** /**
@ -422,24 +428,28 @@ function AngelType_view(
ShiftCalendarRenderer $shiftCalendarRenderer, ShiftCalendarRenderer $shiftCalendarRenderer,
$tab $tab
) { ) {
return page_with_title(sprintf(__('Team %s'), $angeltype->name), [ return page_with_title(
AngelType_view_buttons($angeltype, $user_angeltype, $admin_angeltypes, $supporter, $user_driver_license, $user), sprintf(__('Team %s'), $angeltype->name),
msg(), [
tabs([ AngelType_view_buttons($angeltype, $user_angeltype, $admin_angeltypes, $supporter, $user_driver_license, $user),
__('Info') => AngelType_view_info( msg(),
$angeltype, tabs([
$members, __('Info') => AngelType_view_info(
$admin_user_angeltypes, $angeltype,
$admin_angeltypes, $members,
$supporter $admin_user_angeltypes,
), $admin_angeltypes,
__('Shifts') => AngelType_view_shifts( $supporter
$angeltype, ),
$shiftsFilterRenderer, __('Shifts') => AngelType_view_shifts(
$shiftCalendarRenderer $angeltype,
), $shiftsFilterRenderer,
], $tab), $shiftCalendarRenderer
], true); ),
], $tab),
],
true
);
} }
/** /**

View File

@ -213,17 +213,25 @@ function ShiftEntry_edit_view(
$comment = ''; $comment = '';
} }
return page_with_title(__('Edit shift entry'), [ $link = button(
msg(), page_link_to('users', ['action' => 'view', 'user_id' => $angel->id]),
form([ icon('chevron-left'),
form_info(__('Angel:'), User_Nick_render($angel)), 'btn-sm'
form_info(__('Date, Duration:'), $date), );
form_info(__('Location:'), $location), return page_with_title(
form_info(__('Title:'), $title), $link . ' ' . __('Edit shift entry'),
form_info(__('Type:'), $type), [
$comment, msg(),
join('', $freeload_form), form([
form_submit('submit', __('form.save')), form_info(__('Angel:'), User_Nick_render($angel)),
]), form_info(__('Date, Duration:'), $date),
]); form_info(__('Location:'), $location),
form_info(__('Title:'), $title),
form_info(__('Type:'), $type),
$comment,
join('', $freeload_form),
form_submit('submit', __('form.save')),
]),
]
);
} }

View File

@ -45,18 +45,28 @@ function ShiftType_delete_view(ShiftType $shifttype)
*/ */
function ShiftType_edit_view($name, $description, $shifttype_id) function ShiftType_edit_view($name, $description, $shifttype_id)
{ {
return page_with_title($shifttype_id ? __('Edit shifttype') : __('Create shifttype'), [ return page_with_title(
msg(), $shifttype_id
buttons([ ? (button(
button(page_link_to('shifttypes'), shifttypes_title(), 'back'), page_link_to('shifttypes', ['action' => 'view', 'shifttype_id' => $shifttype_id]),
]), icon('chevron-left'),
form([ 'btn-sm'
form_text('name', __('general.name'), $name), ) . ' ' . __('Edit shifttype'))
form_textarea('description', __('general.description'), $description), : (button(page_link_to('shifttypes'), icon('chevron-left'), 'btn-sm') . ' ' . __('Create shifttype')),
form_info('', __('Please use markdown for the description.')), [
form_submit('submit', __('form.save')), msg(),
]), buttons([
], true); button(page_link_to('shifttypes'), shifttypes_title(), 'back'),
]),
form([
form_text('name', __('general.name'), $name),
form_textarea('description', __('general.description'), $description),
form_info('', __('Please use markdown for the description.')),
form_submit('submit', __('form.save')),
]),
],
true
);
} }
/** /**

View File

@ -12,44 +12,46 @@ use Engelsystem\Models\User\User;
*/ */
function UserDriverLicense_edit_view($user_source, $user_driver_license) function UserDriverLicense_edit_view($user_source, $user_driver_license)
{ {
return page_with_title(sprintf(__('Edit %s driving license information'), User_Nick_render($user_source)), [ $link = button(user_link($user_source->id), icon('chevron-left'), 'btn-sm');
buttons([ return page_with_title(
button(user_link($user_source->id), __('Back to profile'), 'back'), $link . ' ' . sprintf(__('Edit %s driving license information'), User_Nick_render($user_source)),
]), [
msg(), msg(),
form([ form([
form_info(__('Privacy'), __('Your driving license information is only visible for supporters and admins.')), form_info(__('Privacy'), __('Your driving license information is only visible for supporters and admins.')),
form_checkbox('wants_to_drive', __('I am willing to drive a car for the event'), $user_driver_license->wantsToDrive()), form_checkbox('wants_to_drive', __('I am willing to drive a car for the event'), $user_driver_license->wantsToDrive()),
div('m-3', [ div('m-3', [
form_checkbox( form_checkbox(
'has_car', 'has_car',
__('I have my own car with me and am willing to use it for the event (You\'ll get reimbursed for fuel)'), __('I have my own car with me and am willing to use it for the event (You\'ll get reimbursed for fuel)'),
$user_driver_license->has_car $user_driver_license->has_car
), ),
heading(__('driving license'), 3), heading(__('driving license'), 3),
form_checkbox('has_license_car', __('Car'), $user_driver_license->drive_car), form_checkbox('has_license_car', __('Car'), $user_driver_license->drive_car),
form_checkbox( form_checkbox(
'has_license_3_5t_transporter', 'has_license_3_5t_transporter',
__('3.5t Transporter'), __('3.5t Transporter'),
$user_driver_license->drive_3_5t $user_driver_license->drive_3_5t
), ),
form_checkbox( form_checkbox(
'has_license_7_5t_truck', 'has_license_7_5t_truck',
__('7.5t Truck'), __('7.5t Truck'),
$user_driver_license->drive_7_5t $user_driver_license->drive_7_5t
), ),
form_checkbox( form_checkbox(
'has_license_12t_truck', 'has_license_12t_truck',
__('12t Truck'), __('12t Truck'),
$user_driver_license->drive_12t $user_driver_license->drive_12t
), ),
form_checkbox( form_checkbox(
'has_license_forklift', 'has_license_forklift',
__('Forklift'), __('Forklift'),
$user_driver_license->drive_forklift $user_driver_license->drive_forklift
), ),
], 'driving_license'), ], 'driving_license'),
form_submit('submit', __('form.save')), form_submit('submit', __('form.save')),
]), ]),
], true); ],
true
);
} }

View File

@ -43,25 +43,26 @@ function User_delete_view($user)
*/ */
function User_edit_vouchers_view($user) function User_edit_vouchers_view($user)
{ {
return page_with_title(sprintf(__('%s\'s vouchers'), User_Nick_render($user)), [ $link = button(user_link($user->id), icon('chevron-left'), 'btn-sm');
msg(), return page_with_title(
buttons([ $link . ' ' . sprintf(__('%s\'s vouchers'), User_Nick_render($user)),
button(user_link($user->id), icon('chevron-left') . __('back')), [
]), msg(),
info(sprintf( info(sprintf(
$user->state->force_active $user->state->force_active
? __('Angel can receive another %d vouchers and is FA.') ? __('Angel can receive another %d vouchers and is FA.')
: __('Angel can receive another %d vouchers.'), : __('Angel can receive another %d vouchers.'),
User_get_eligable_voucher_count($user) User_get_eligable_voucher_count($user)
), true), ), true),
form( form(
[ [
form_spinner('vouchers', __('Number of vouchers given out'), $user->state->got_voucher), form_spinner('vouchers', __('Number of vouchers given out'), $user->state->got_voucher),
form_submit('submit', __('form.save')), form_submit('submit', __('form.save')),
], ],
page_link_to('users', ['action' => 'edit_vouchers', 'user_id' => $user->id]) page_link_to('users', ['action' => 'edit_vouchers', 'user_id' => $user->id])
), ),
]); ]
);
} }
/** /**

View File

@ -7,6 +7,10 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<h1> <h1>
{% if not is_index|default(false) %}
{{ m.button(m.icon('chevron-left'), room ? url('/rooms', {'action': 'view', 'room_id': room.id}) : url('/admin/rooms'), 'secondary', 'sm') }}
{% endif %}
{{ block('title') }} {{ block('title') }}
{% if is_index|default(false) %} {% if is_index|default(false) %}

View File

@ -8,7 +8,10 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<h1>{{ block('title') }}: <small>{{ m.user(userdata) }}</small></h1> <h1>
{{ m.button(m.icon('chevron-left'), url('/admin-active'), null, 'sm') }}
{{ block('title') }}: <small>{{ m.user(userdata) }}</small>
</h1>
{% include 'layouts/parts/messages.twig' %} {% include 'layouts/parts/messages.twig' %}

View File

@ -6,16 +6,16 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<h1>{{ block('title') }}</h1> <h1>
{{ m.button(m.icon('chevron-left'), url('/users', {action: 'view', user_id: user.id}), null, 'sm') }}
{{ block('title') }}
</h1>
{% include 'layouts/parts/messages.twig' %} {% include 'layouts/parts/messages.twig' %}
<form method="post"> <form method="post">
{{ csrf() }} {{ csrf() }}
<div class="row g-2"> <div class="row g-2">
<div class="col-12">
{{ m.button(__('back'), url('/users', {action: 'view', user_id: user.id})) }}
</div>
<div class="col-12"> <div class="col-12">
<div> <div>
<label class="form-label">{{ __('User') }}</label> <label class="form-label">{{ __('User') }}</label>

View File

@ -6,7 +6,10 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<h1>{{ block('title') }}</h1> <h1>
{{ m.button(m.icon('chevron-left'), url('/faq'), 'secondary', 'sm') }}
{{ block('title') }}
</h1>
{% include 'layouts/parts/messages.twig' %} {% include 'layouts/parts/messages.twig' %}

View File

@ -6,7 +6,10 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<h1>{{ block('title') }}</h1> <h1>
{{ m.button(m.icon('chevron-left'), url('/news'), null, 'sm') }}
{{ block('title') }}
</h1>
{% include 'layouts/parts/messages.twig' %} {% include 'layouts/parts/messages.twig' %}

View File

@ -6,7 +6,10 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<h1>{{ block('title') }}</h1> <h1>
{{ m.button(m.icon('chevron-left'), url('/questions'), null, 'sm') }}
{{ block('title') }}
</h1>
{% include 'layouts/parts/messages.twig' %} {% include 'layouts/parts/messages.twig' %}

View File

@ -7,7 +7,13 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="mb-5"> <div class="mb-5">
<h1>{{ __('page.sign-up.title') }}</h1> <h1>
{{ has_permission_to('admin_user')
? m.button(m.icon('chevron-left'), url('/users'), null, 'sm')
: ''
}}
{{ __('page.sign-up.title') }}
</h1>
</div> </div>
{% include 'layouts/parts/messages.twig' %} {% include 'layouts/parts/messages.twig' %}