summaryrefslogtreecommitdiff
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-rw-r--r--resources/assets/js/forms.js35
-rw-r--r--resources/assets/js/vendor.js7
-rw-r--r--resources/assets/themes/base.less66
-rw-r--r--resources/lang/de_DE/default.po22
-rw-r--r--resources/lang/en_US/default.po18
-rw-r--r--resources/lang/pt_BR/default.po2
-rw-r--r--resources/views/emails/mail.twig8
-rw-r--r--resources/views/emails/password-reset.twig3
-rw-r--r--resources/views/layouts/parts/navbar.twig18
-rw-r--r--resources/views/macros/form.twig18
-rw-r--r--resources/views/pages/credits.twig24
-rw-r--r--resources/views/pages/login.twig11
-rw-r--r--resources/views/pages/password/reset-form.twig18
-rw-r--r--resources/views/pages/password/reset-success.twig12
-rw-r--r--resources/views/pages/password/reset.twig32
-rw-r--r--resources/views/pages/user-shifts.html8
16 files changed, 236 insertions, 66 deletions
diff --git a/resources/assets/js/forms.js b/resources/assets/js/forms.js
index f5818e97..9970b907 100644
--- a/resources/assets/js/forms.js
+++ b/resources/assets/js/forms.js
@@ -16,7 +16,7 @@ global.checkAll = (id, checked) => {
* Sets the checkboxes according to the given type
*
* @param {string} id The elements ID
- * @param {list} shifts_list A list of numbers
+ * @param {list} shiftsList A list of numbers
*/
global.checkOwnTypes = (id, shiftsList) => {
$('#' + id + ' input[type="checkbox"]').each(function () {
@@ -144,10 +144,10 @@ $(function () {
elem.children('input').on('click', function (ev) {
ev.stopImmediatePropagation();
if (typeof elem.data('DateTimePicker') === 'undefined') {
- elem.datetimepicker(opts);
- elem.data('DateTimePicker').show();
+ elem.datetimepicker(opts);
+ elem.data('DateTimePicker').show();
} else {
- elem.data('DateTimePicker').toggle();
+ elem.data('DateTimePicker').toggle();
}
});
});
@@ -173,3 +173,30 @@ $(function () {
});
});
});
+
+/**
+ * Set the filter selects to latest state
+ *
+ * Uses DOMContentLoaded to prevent flickering
+ */
+window.addEventListener('DOMContentLoaded', () => {
+ const filter = document.getElementById('collapseShiftsFilterSelect');
+ if (!filter || localStorage.getItem('collapseShiftsFilterSelect') !== 'hidden') {
+ return;
+ }
+
+ filter.classList.remove('in');
+});
+$(() => {
+ if (typeof (localStorage) === 'undefined') {
+ return;
+ }
+
+ const onChange = (e) => {
+ localStorage.setItem('collapseShiftsFilterSelect', e.type);
+ };
+
+ $('#collapseShiftsFilterSelect')
+ .on('hidden.bs.collapse', onChange)
+ .on('shown.bs.collapse', onChange);
+});
diff --git a/resources/assets/js/vendor.js b/resources/assets/js/vendor.js
index bf3807f7..b4b6487d 100644
--- a/resources/assets/js/vendor.js
+++ b/resources/assets/js/vendor.js
@@ -10,6 +10,13 @@ require('./forms');
require('./sticky-headers');
require('./moment-countdown');
+moment.updateLocale('en', {
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+});
+
$.ajaxSetup({
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
});
diff --git a/resources/assets/themes/base.less b/resources/assets/themes/base.less
index b44602f0..74dadc11 100644
--- a/resources/assets/themes/base.less
+++ b/resources/assets/themes/base.less
@@ -11,7 +11,7 @@ body {
}
.first {
- clear: both;
+ clear: both;
margin-top: 30px;
}
@@ -52,7 +52,7 @@ table a > .icon-icon_angel {
}
.table .form-group {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.stats {
@@ -60,20 +60,22 @@ table a > .icon-icon_angel {
.make-xs-column(6);
font-size: 20px;
height: 150px;
- text-align: center;
-
- .number {
- font-size: 80px;
- font-weight: 200;
- }
- @media (max-width: @screen-md) {
- font-size: inherit;
- .number {
- font-size: 40px;
- }
+ text-align: center;
+
+ .number {
+ font-size: 80px;
+ font-weight: 200;
+ }
+
+ @media (max-width: @screen-md) {
+ font-size: inherit;
+ .number {
+ font-size: 40px;
+ }
}
}
+
.stats-danger {
color: @brand-danger;
}
@@ -87,12 +89,12 @@ table a > .icon-icon_angel {
}
.dashboard-panel {
- position: relative;
- font-size: 20px;
+ position: relative;
+ font-size: 20px;
color: @headings-color;
- .panel-link {
- position: absolute;
+ .panel-link {
+ position: absolute;
width: 100%;
height: 100%;
top: 0;
@@ -102,11 +104,11 @@ table a > .icon-icon_angel {
background-color: @brand-primary; /* Fix to make div clickable in IE */
opacity: 0; /* Fix to make div clickable in IE */
filter: alpha(opacity=1); /* Fix to make div clickable in IE */
- }
+ }
- .panel-link:hover {
+ .panel-link:hover {
opacity: 0.3;
- }
+ }
}
.panel-primary .panel-heading a {
@@ -140,7 +142,7 @@ table a > .icon-icon_angel {
}
.selection .checkbox {
- display: block;
+ display: block;
}
.shift-calendar {
@@ -190,9 +192,20 @@ table a > .icon-icon_angel {
flex-shrink: 0;
}
- .shift {
- margin: 0 5px 5px 0;
+ .shift-card {
+ z-index: 0;
overflow: hidden;
+ position: relative;
+ margin: 0 5px 5px 0;
+
+ &:hover {
+ overflow: visible;
+ z-index: 100;
+ }
+
+ .shift {
+ min-height: 100%;
+ }
}
}
@@ -201,13 +214,14 @@ table a > .icon-icon_angel {
}
.column_duration {
- text-align: right;
+ text-align: right;
}
.messages {
&:focus {
outline: none;
}
+
a:focus {
outline: none;
}
@@ -296,7 +310,9 @@ table a > .icon-icon_angel {
float: none;
width: 100%;
- position: relative; left: 0; right: 0;
+ position: relative;
+ left: 0;
+ right: 0;
min-height: 1px;
padding-right: 15px;
padding-left: 15px;
diff --git a/resources/lang/de_DE/default.po b/resources/lang/de_DE/default.po
index 3c1e0d15..8dba9b4b 100644
--- a/resources/lang/de_DE/default.po
+++ b/resources/lang/de_DE/default.po
@@ -619,9 +619,9 @@ msgid "Please visit %s to recover your password."
msgstr "Bitte besuche %s, um Dein Passwort zurückzusetzen"
#: includes/controller/users_controller.php:394
-msgid "We sent an email containing your password recovery link."
+msgid "We sent you an email containing your password recovery link."
msgstr ""
-"Wir haben eine eMail mit einem Link zum Passwort-zurücksetzen geschickt."
+"Wir haben dir eine eMail mit einem Link zum Passwort-zurücksetzen geschickt."
#: includes/helper/email_helper.php:41
#, php-format
@@ -2772,3 +2772,21 @@ msgstr "Bitte gib ein Passwort an."
msgid "validation.login.required"
msgstr "Bitte gib einen Loginnamen an."
+
+msgid "form.submit"
+msgstr "Absenden"
+
+msgid "validation.email.required"
+msgstr "Bitte gib eine E-Mail-Adresse an."
+
+msgid "validation.email.email"
+msgstr "Die E-Mail-Adresse ist nicht gültig."
+
+msgid "validation.password.min"
+msgstr "Dein angegebenes Passwort ist zu kurz."
+
+msgid "validation.password.confirmed"
+msgstr "Deine Passwörter stimmen nicht überein."
+
+msgid "validation.password_confirmation.required"
+msgstr "Du musst dein Passwort bestätigen."
diff --git a/resources/lang/en_US/default.po b/resources/lang/en_US/default.po
index 1ff16c83..a2d56fd1 100644
--- a/resources/lang/en_US/default.po
+++ b/resources/lang/en_US/default.po
@@ -30,3 +30,21 @@ msgstr "The password is required."
msgid "validation.login.required"
msgstr "The login name is required."
+
+msgid "form.submit"
+msgstr "Submit"
+
+msgid "validation.email.required"
+msgstr "The email address is required."
+
+msgid "validation.email.email"
+msgstr "This email address is not valid."
+
+msgid "validation.password.min"
+msgstr "Your password is too short."
+
+msgid "validation.password.confirmed"
+msgstr "Your passwords are not equal."
+
+msgid "validation.password_confirmation.required"
+msgstr "You have to confirm your password."
diff --git a/resources/lang/pt_BR/default.po b/resources/lang/pt_BR/default.po
index b9bf420d..e5e5371e 100644
--- a/resources/lang/pt_BR/default.po
+++ b/resources/lang/pt_BR/default.po
@@ -551,7 +551,7 @@ msgid "Please visit %s to recover your password."
msgstr "Por favor visite %s para recuperar sua senha"
#: includes/controller/users_controller.php:271
-msgid "We sent an email containing your password recovery link."
+msgid "We sent you an email containing your password recovery link."
msgstr "Nós enviamos um email com o link para recuperação da sua senha."
#: includes/helper/email_helper.php:12
diff --git a/resources/views/emails/mail.twig b/resources/views/emails/mail.twig
index ec70f594..e0ad7b64 100644
--- a/resources/views/emails/mail.twig
+++ b/resources/views/emails/mail.twig
@@ -1,6 +1,6 @@
-{{ __('Hi %s,', [username]) }}
+{% block title %}{{ __('Hi %s,', [username]) }}{% endblock %}
-{{ __('here is a message for you from the %s:', [config('app_name')]) }}
-{{ message|raw }}
+{% block introduction %}{{ __('here is a message for you from the %s:', [config('app_name')]) }}{% endblock %}
+{% block message %}{{ message|raw }}{% endblock %}
-{{ __('This email is autogenerated and has not been signed. You got this email because you are registered in the %s.', [config('app_name')]) }}
+{% block footer %}{{ __('This email is autogenerated and has not been signed. You got this email because you are registered in the %s.', [config('app_name')]) }}{% endblock %}
diff --git a/resources/views/emails/password-reset.twig b/resources/views/emails/password-reset.twig
new file mode 100644
index 00000000..30b613b4
--- /dev/null
+++ b/resources/views/emails/password-reset.twig
@@ -0,0 +1,3 @@
+{% extends "emails/mail.twig" %}
+
+{% block message %}{{ __('Please visit %s to recover your password.', [url('/password/reset/') ~ reset.token]) }}{% endblock %}
diff --git a/resources/views/layouts/parts/navbar.twig b/resources/views/layouts/parts/navbar.twig
index 61c6a10b..0b2eee63 100644
--- a/resources/views/layouts/parts/navbar.twig
+++ b/resources/views/layouts/parts/navbar.twig
@@ -55,16 +55,14 @@
{{ elements.toolbar_item(user.name, url('users', {'action': 'view'}), 'users', 'icon icon-icon_angel') }}
{% endif %}
- {% if has_permission_to('user_settings') or has_permission_to('logout') %}
- <li class="dropdown">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <span class="caret"></span>
- </a>
- <ul class="dropdown-menu" role="menu">
- {{ menuUserSubmenu()|join(" ")|raw }}
- </ul>
- </li>
- {% endif %}
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="caret"></span>
+ </a>
+ <ul class="dropdown-menu" role="menu">
+ {{ menuUserSubmenu()|join(" ")|raw }}
+ </ul>
+ </li>
</ul>
{% endblock %}
diff --git a/resources/views/macros/form.twig b/resources/views/macros/form.twig
new file mode 100644
index 00000000..5d41b085
--- /dev/null
+++ b/resources/views/macros/form.twig
@@ -0,0 +1,18 @@
+{% macro input(name, label, type, required) %}
+ <div class="form-group">
+ {% if label %}
+ <label for="{{ name }}">{{ label }}</label>
+ {% endif %}
+ <input type="{{ type|default('text') }}" class="form-control" id="{{ name }}" name="{{ name }}"
+ {%- if required|default(false) %} required="required"{% endif -%}
+ >
+ </div>
+{% endmacro %}
+
+{% macro hidden(name, value) %}
+ <input type="hidden" id="{{ name }}" name="{{ name }}" value="{{ value }}">
+{% endmacro %}
+
+{% macro submit(label) %}
+ <button type="submit" class="btn btn-default">{{ label|default(__('form.submit')) }}</button>
+{% endmacro %}
diff --git a/resources/views/pages/credits.twig b/resources/views/pages/credits.twig
index 3bb04895..8bd1f694 100644
--- a/resources/views/pages/credits.twig
+++ b/resources/views/pages/credits.twig
@@ -4,28 +4,28 @@
{% block content %}
<div class="container">
- <h1>Credits</h1>
+ <h1>{{ __('Credits') }}</h1>
<div class="row">
{% for title, credit in credits %}
<div class="col-md-4">
- <h2>{{ title }}</h2>
- {{ credit|markdown }}
+ <h2>{{ __(title) }}</h2>
+ {{ __(credit)|markdown }}
</div>
{% endfor %}
<div class="col-md-4">
- <h2>Source code</h2>
- <p>Version: <i>{{ version }}</i></p>
+ <h2>{{ __('Source code') }}</h2>
+ <p>{{ __('Version: _%s_', [version])|markdown }}</i></p>
<p>
- The original engelsystem was written by
- <a href="https://github.com/cookieBerlin/engelsystem">cookie</a>.
- It was then completely rewritten and enhanced by
- <a href="https://notrademark.de">msquare</a> (maintainer) and
- <a href="https://myigel.name">MyIgel</a>.
+ {{ __('The original engelsystem was written by
+[cookie](https://github.com/cookieBerlin/engelsystem).
+It was then completely rewritten and enhanced by [msquare](https://notrademark.de) (maintainer) and
+[MyIgel](https://myigel.name).')|markdown }}
</p>
<p>
- Please look at the <a href="https://github.com/engelsystem/engelsystem/graphs/contributors">
- contributor list on GitHub</a> for a complete list.
+ {{ __('Please have a look at the
+[contributors list on GitHub](https://github.com/engelsystem/engelsystem/graphs/contributors)
+for a complete list.')|markdown }}
</p>
</div>
</div>
diff --git a/resources/views/pages/login.twig b/resources/views/pages/login.twig
index da6f4fdf..34dbd63f 100644
--- a/resources/views/pages/login.twig
+++ b/resources/views/pages/login.twig
@@ -32,6 +32,7 @@
<div class="col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4">
<div class="panel panel-primary first">
<div class="panel-body">
+ {{ msg() }}
{% for message in errors|default([]) %}
{{ m.alert(__(message), 'danger') }}
{% endfor %}
@@ -50,7 +51,7 @@
<div class="input-group">
<span class="input-group-addon input-lg">{{ m.glyphicon('lock') }}</span>
<input class="form-control input-lg" id="form_password"
- type="password" name="password" value="" placeholder="{{ __('Password') }}">
+ type="password" name="password" value="" placeholder="{{ __('Password') }}">
</div>
</div>
@@ -61,7 +62,7 @@
</div>
<div class="text-center">
- <a href="{{ url('user-password-recovery') }}" class="">
+ <a href="{{ url('/password/reset') }}" class="">
{{ __('I forgot my password') }}
</a>
</div>
@@ -93,8 +94,10 @@
</a>
</div>
</div>
- </div>
- {{ m.glyphicon('info-sign') }} {{ __('Please note: You have to activate cookies!') }}
+ <div class="col-md-12 text-center">
+ {{ m.glyphicon('info-sign') }} {{ __('Please note: You have to activate cookies!') }}
+ </div>
+ </div>
</div>
{% endblock %}
diff --git a/resources/views/pages/password/reset-form.twig b/resources/views/pages/password/reset-form.twig
new file mode 100644
index 00000000..60eb2499
--- /dev/null
+++ b/resources/views/pages/password/reset-form.twig
@@ -0,0 +1,18 @@
+{% extends "pages/password/reset.twig" %}
+{% import 'macros/base.twig' as m %}
+{% import 'macros/form.twig' as f %}
+
+{% block row_content %}
+ <div class="col-md-8">
+ <form action="" enctype="multipart/form-data" method="post">
+ {{ csrf() }}
+
+ {{ f.input('password', __('Password'), 'password', true) }}
+ {{ f.input('password_confirmation', __('Confirm password'), 'password', true) }}
+
+ <div class="form-group">
+ {{ f.submit(__('Save')) }}
+ </div>
+ </form>
+ </div>
+{% endblock %}
diff --git a/resources/views/pages/password/reset-success.twig b/resources/views/pages/password/reset-success.twig
new file mode 100644
index 00000000..19b8a93e
--- /dev/null
+++ b/resources/views/pages/password/reset-success.twig
@@ -0,0 +1,12 @@
+{% extends "pages/password/reset.twig" %}
+{% import 'macros/base.twig' as m %}
+
+{% block row_content %}
+ <div class="col-md-12">
+ {% if type == 'email' %}
+ {{ m.alert(__('We sent you an email containing your password recovery link.'), 'info') }}
+ {% elseif type == 'reset' %}
+ {{ m.alert(__('Password saved.'), 'success') }}
+ {% endif %}
+ </div>
+{% endblock %}
diff --git a/resources/views/pages/password/reset.twig b/resources/views/pages/password/reset.twig
new file mode 100644
index 00000000..289152ea
--- /dev/null
+++ b/resources/views/pages/password/reset.twig
@@ -0,0 +1,32 @@
+{% extends 'layouts/app.twig' %}
+{% import 'macros/base.twig' as m %}
+{% import 'macros/form.twig' as f %}
+
+{% block title %}{{ __('Password recovery') }}{% endblock %}
+
+{% block content %}
+ <div class="container">
+ <h1>{{ __('Password recovery') }}</h1>
+
+ {% for message in errors|default([]) %}
+ {{ m.alert(__(message), 'danger') }}
+ {% endfor %}
+
+ <div class="row">
+ {% block row_content %}
+ <div class="col-md-8">
+ <form action="" enctype="multipart/form-data" method="post">
+ {{ csrf() }}
+
+ {{ __('We will send you an e-mail with a password recovery link. Please use the email address you used for registration.') }}
+ {{ f.input('email', __('E-Mail'), 'email', true) }}
+
+ <div class="form-group">
+ {{ f.submit(__('Recover')) }}
+ </div>
+ </form>
+ </div>
+ {% endblock %}
+ </div>
+ </div>
+{% endblock %}
diff --git a/resources/views/pages/user-shifts.html b/resources/views/pages/user-shifts.html
index 9ac501da..d5a98f80 100644
--- a/resources/views/pages/user-shifts.html
+++ b/resources/views/pages/user-shifts.html
@@ -55,12 +55,12 @@
<div class="col-md-6">
<button class="btn btn-info btn-sm hidden-print" style="margin-top: 20px; margin-bottom:10px" type="button"
data-toggle="collapse"
- data-target="#collapseRoomSelect" aria-expanded="false"
- aria-controls="collapseRoomSelect"
+ data-target="#collapseShiftsFilterSelect" aria-expanded="true"
+ aria-controls="collapseShiftsFilterSelect"
>
collapse/show filters
</button>
- <div class="collapse in" id="collapseRoomSelect">
+ <div class="collapse in" id="collapseShiftsFilterSelect">
<div class="row">
<div class="col-xs-4 col-xxs-12">%room_select%</div>
<div class="col-xs-4 col-xxs-12">%type_select%</div>
@@ -79,5 +79,5 @@
%shifts_table%
<div class="hidden-print">
-%ical_text%
+ %ical_text%
</div> \ No newline at end of file