diff --git a/config/routes.php b/config/routes.php index bbd092e5..f0200db4 100644 --- a/config/routes.php +++ b/config/routes.php @@ -8,6 +8,8 @@ use FastRoute\RouteCollector; // Pages $route->get('/', 'HomeController@index'); +$route->get('/sign-up', 'SignUpController@view'); +$route->post('/sign-up', 'SignUpController@save'); $route->get('/credits', 'CreditsController@index'); $route->get('/health', 'HealthController@index'); diff --git a/db/factories/OAuthFactory.php b/db/factories/OAuthFactory.php new file mode 100644 index 00000000..0f3a203f --- /dev/null +++ b/db/factories/OAuthFactory.php @@ -0,0 +1,28 @@ + + */ + public function definition(): array + { + return [ + 'provider' => $this->faker->unique()->word(), + 'identifier' => $this->faker->unique()->word(), + 'access_token' => $this->faker->unique()->word(), + 'refresh_token' => $this->faker->unique()->word(), + 'expires_at' => '2099-12-31', + ]; + } +} diff --git a/includes/includes.php b/includes/includes.php index e16c4170..41f76c8a 100644 --- a/includes/includes.php +++ b/includes/includes.php @@ -62,7 +62,6 @@ $includeFiles = [ __DIR__ . '/../includes/pages/admin_groups.php', __DIR__ . '/../includes/pages/admin_shifts.php', __DIR__ . '/../includes/pages/admin_user.php', - __DIR__ . '/../includes/pages/guest_login.php', __DIR__ . '/../includes/pages/user_myshifts.php', __DIR__ . '/../includes/pages/user_shifts.php', diff --git a/includes/pages/guest_login.php b/includes/pages/guest_login.php deleted file mode 100644 index 851e7670..00000000 --- a/includes/pages/guest_login.php +++ /dev/null @@ -1,543 +0,0 @@ -user(); - $tshirt_sizes = config('tshirt_sizes'); - $goodie = GoodieType::from(config('goodie_type')); - $goodie_enabled = $goodie !== GoodieType::None; - $goodie_tshirt = $goodie === GoodieType::Tshirt; - $enable_user_name = config('enable_user_name'); - $enable_dect = config('enable_dect'); - $enable_planned_arrival = config('enable_planned_arrival'); - $min_password_length = config('min_password_length'); - $enable_password = config('enable_password'); - $enable_pronoun = config('enable_pronoun'); - $enable_mobile_show = config('enable_mobile_show'); - $config = config(); - $request = request(); - $session = session(); - /** @var Connection $db */ - $db = app(Database::class)->getConnection(); - $is_oauth = $session->has('oauth2_connect_provider'); - - $msg = ''; - $nick = ''; - $lastName = ''; - $preName = ''; - $dect = ''; - $mobile = ''; - $mobile_show = false; - $email = ''; - $pronoun = ''; - $email_shiftinfo = false; - $email_by_human_allowed = false; - $email_messages = false; - $email_news = false; - $email_goody = false; - $tshirt_size = ''; - $password_hash = ''; - $selected_angel_types = []; - $planned_arrival_date = null; - - /** @var AngelType[]|Collection $angel_types_source */ - $angel_types_source = AngelType::all(); - $angel_types = []; - if (!empty($session->get('oauth2_groups'))) { - /** @var OAuth2 $oauth */ - $oauth = app()->get(OAuth2::class); - $ssoTeams = $oauth->getSsoTeams($session->get('oauth2_connect_provider')); - foreach ($ssoTeams as $name => $team) { - if (in_array($name, $session->get('oauth2_groups'))) { - $selected_angel_types[] = $team['id']; - } - } - } - foreach ($angel_types_source as $angel_type) { - if ($angel_type->hide_register) { - continue; - } - $angel_types[$angel_type->id] = $angel_type->name - . ($angel_type->restricted ? ' (' . __('Requires introduction') . ')' : ''); - if (!$angel_type->restricted) { - $selected_angel_types[] = $angel_type->id; - } - } - - $oauth_enable_password = $session->get('oauth2_enable_password'); - if (!is_null($oauth_enable_password)) { - $enable_password = $oauth_enable_password; - } - - if ( - !auth()->can('register') // No registration permission - // Not authenticated and - || (!$authUser && !config('registration_enabled') && !$session->get('oauth2_allow_registration')) // Registration disabled - || (!$authUser && !$enable_password && !$is_oauth) // Password disabled and not oauth - ) { - error(__('Registration is disabled.')); - - return page_with_title(register_title(), [ - msg(), - ]); - } - - if ($request->hasPostData('submit')) { - $valid = true; - - if ($request->has('username')) { - $nick = trim($request->get('username')); - $nickValid = (new Username())->validate($nick); - - if (!$nickValid) { - $valid = false; - $msg .= error(sprintf( - __('Please enter a valid nick.') . ' ' . __('Use up to 24 letters, numbers or connecting punctuations for your nickname.'), - $nick - ), true); - } - if (User::whereName($nick)->count() > 0) { - $valid = false; - $msg .= error(sprintf(__('Your nick "%s" already exists.'), htmlspecialchars($nick)), true); - } - } else { - $valid = false; - $msg .= error(__('Please enter a nickname.'), true); - } - - if ($request->has('mobile_show') && $enable_mobile_show) { - $mobile_show = true; - } - - if ($request->has('email') && strlen(strip_request_item('email')) > 0) { - $email = strip_request_item('email'); - if (!check_email($email)) { - $valid = false; - $msg .= error(__('E-mail address is not correct.'), true); - } - if (User::whereEmail($email)->first()) { - $valid = false; - $msg .= error(__('E-mail address is already used by another user.'), true); - } - } else { - $valid = false; - $msg .= error(__('Please enter your e-mail.'), true); - } - - if ($request->has('email_shiftinfo')) { - $email_shiftinfo = true; - } - - if ($request->has('email_by_human_allowed')) { - $email_by_human_allowed = true; - } - - if ($request->has('email_messages')) { - $email_messages = true; - } - - if ($request->has('email_news')) { - $email_news = true; - } - - if ($request->has('email_goody')) { - $email_goody = true; - } - - if ($goodie_tshirt) { - if ($request->has('tshirt_size') && isset($tshirt_sizes[$request->input('tshirt_size')])) { - $tshirt_size = $request->input('tshirt_size'); - } else { - $valid = false; - $msg .= error(__('Please select your shirt size.'), true); - } - } - - if ($enable_password && $request->has('password') && strlen($request->postData('password')) >= $min_password_length) { - if ($request->postData('password') != $request->postData('password2')) { - $valid = false; - $msg .= error(__('Your passwords don\'t match.'), true); - } - } elseif ($enable_password) { - $valid = false; - $msg .= error(sprintf( - __('Your password is too short (please use at least %s characters).'), - $min_password_length - ), true); - } - - if ($request->has('planned_arrival_date') && $enable_planned_arrival) { - $tmp = parse_date('Y-m-d H:i', $request->input('planned_arrival_date') . ' 00:00'); - $result = User_validate_planned_arrival_date($tmp); - $planned_arrival_date = $result->getValue(); - if (!$result->isValid()) { - $valid = false; - error(__('Please enter your planned date of arrival. It should be after the buildup start date and before teardown end date.')); - } - } elseif ($enable_planned_arrival) { - $valid = false; - error(__('Please enter your planned date of arrival. It should be after the buildup start date and before teardown end date.')); - } - - $selected_angel_types = []; - foreach (array_keys($angel_types) as $angel_type_id) { - if ($request->has('angel_types_' . $angel_type_id)) { - $selected_angel_types[] = $angel_type_id; - } - } - - // Trivia - if ($enable_user_name && $request->has('lastname')) { - $lastName = strip_request_item('lastname'); - } - if ($enable_user_name && $request->has('prename')) { - $preName = strip_request_item('prename'); - } - if ($enable_pronoun && $request->has('pronoun')) { - $pronoun = strip_request_item('pronoun'); - } - if ($enable_dect && $request->has('dect')) { - if (strlen(strip_request_item('dect')) <= 40) { - $dect = strip_request_item('dect'); - } else { - $valid = false; - error(__('For dect numbers are only 40 digits allowed.')); - } - } - if ($request->has('mobile')) { - $mobile = strip_request_item('mobile'); - } - - if ($valid) { - // Safeguard against partially created user data - $db->beginTransaction(); - - $user = new User([ - 'name' => $nick, - 'password' => $password_hash, - 'email' => $email, - 'api_key' => '', - 'last_login_at' => null, - ]); - $user->save(); - - $contact = new Contact([ - 'dect' => $dect, - 'mobile' => $mobile, - ]); - $contact->user() - ->associate($user) - ->save(); - - $personalData = new PersonalData([ - 'first_name' => $preName, - 'last_name' => $lastName, - 'pronoun' => $pronoun, - 'shirt_size' => $tshirt_size, - 'planned_arrival_date' => $enable_planned_arrival ? Carbon::createFromTimestamp($planned_arrival_date) : null, - ]); - $personalData->user() - ->associate($user) - ->save(); - - $settings = new Settings([ - 'language' => $session->get('locale'), - 'theme' => config('theme'), - 'email_human' => $email_by_human_allowed, - 'email_messages' => $email_messages, - 'email_goody' => $email_goody, - 'email_shiftinfo' => $email_shiftinfo, - 'email_news' => $email_news, - 'mobile_show' => $mobile_show, - ]); - $settings->user() - ->associate($user) - ->save(); - - $state = new State([]); - if (config('autoarrive')) { - $state->arrived = true; - $state->arrival_date = new Carbon(); - } - $state->user() - ->associate($user) - ->save(); - - if ($session->has('oauth2_connect_provider') && $session->has('oauth2_user_id')) { - $oauth = new OAuth([ - 'provider' => $session->get('oauth2_connect_provider'), - 'identifier' => $session->get('oauth2_user_id'), - 'access_token' => $session->get('oauth2_access_token'), - 'refresh_token' => $session->get('oauth2_refresh_token'), - 'expires_at' => $session->get('oauth2_expires_at'), - ]); - $oauth->user() - ->associate($user) - ->save(); - - $session->remove('oauth2_connect_provider'); - $session->remove('oauth2_user_id'); - $session->remove('oauth2_access_token'); - $session->remove('oauth2_refresh_token'); - $session->remove('oauth2_expires_at'); - } - - // Assign user-group and set password - $defaultGroup = Group::find(auth()->getDefaultRole()); - $user->groups()->attach($defaultGroup); - if ($enable_password) { - auth()->setPassword($user, $request->postData('password')); - } - - // Assign angel-types - $user_angel_types_info = []; - foreach ($selected_angel_types as $selected_angel_type_id) { - $angelType = AngelType::findOrFail($selected_angel_type_id); - $user->userAngelTypes()->attach($angelType); - $user_angel_types_info[] = $angelType->name; - } - - // Commit complete user data - $db->commit(); - - engelsystem_log( - 'User ' . User_Nick_render($user, true) - . ' signed up as: ' . join(', ', $user_angel_types_info) - ); - success(__('Angel registration successful!')); - - // User is already logged in - that means a supporter has registered an angel. Return to register page. - if ($authUser) { - throw_redirect(page_link_to('register')); - } - - // If a welcome message is present, display it on the next page - if ($config->get('welcome_msg')) { - $session->set('show_welcome', true); - } - - // Login the user - if ($user->oauth->count()) { - /** @var OAuth $provider */ - $provider = $user->oauth->first(); - throw_redirect(url('/oauth/' . $provider->provider)); - } - - throw_redirect(page_link_to('/')); - } - } - - $buildup_start_date = time(); - $teardown_end_date = null; - if ($buildup = $config->get('buildup_start')) { - /** @var Carbon $buildup */ - $buildup_start_date = $buildup->getTimestamp(); - } - - if ($teardown = $config->get('teardown_end')) { - /** @var Carbon $teardown */ - $teardown_end_date = $teardown->getTimestamp(); - } - - $form_data = $session->get('form_data'); - $session->remove('form_data'); - if (!$nick && !empty($form_data['name'])) { - $nick = $form_data['name']; - } - - if (!$email && !empty($form_data['email'])) { - $email = $form_data['email']; - } - - if (!$preName && !empty($form_data['first_name'])) { - $preName = $form_data['first_name']; - } - - if (!$lastName && !empty($form_data['last_name'])) { - $lastName = $form_data['last_name']; - } - - return page_with_title(register_title(), [ - __('By completing this form you\'re registering as a Chaos-Angel. This script will create you an account in the angel task scheduler.'), - form_info(entry_required() . ' = ' . __('Entry required!')), - $msg, - msg(), - form([ - div('row', [ - div('col', [ - form_text( - 'username', - __('Nick') . ' ' . entry_required(), - $nick, - false, - 24, - 'nickname' - ), - form_info( - '', - __('Use up to 24 letters, numbers or connecting punctuations for your nickname.') - ), - ]), - - $enable_pronoun ? div('col', [ - form_text('pronoun', __('Pronoun'), $pronoun, false, 15), - ]) : '', - ]), - - $enable_user_name ? div('row', [ - div('col', [ - form_text('prename', __('First name'), $preName, false, 64, 'given-name'), - ]), - div('col', [ - form_text('lastname', __('Last name'), $lastName, false, 64, 'family-name'), - ]), - ]) : '', - - div('row', [ - div('col', [ - form_email( - 'email', - __('E-Mail') . ' ' . entry_required(), - $email, - false, - 'email', - 254 - ), - form_checkbox( - 'email_shiftinfo', - __( - 'settings.profile.email_shiftinfo', - [config('app_name')] - ), - $email_shiftinfo - ), - form_checkbox( - 'email_news', - __('Notify me of new news'), - $email_news - ), - form_checkbox( - 'email_messages', - __('settings.profile.email_messages'), - $email_messages - ), - form_checkbox( - 'email_by_human_allowed', - __('Allow heaven angels to contact you by e-mail.'), - $email_by_human_allowed - ), - $goodie_enabled ? - form_checkbox( - 'email_goody', - __('To receive vouchers, give consent that nick, email address, worked hours and shirt size will be stored until the next similar event.') - . (config('privacy_email') ? ' ' . __('To withdraw your approval, send an email to %1$s.', [config('privacy_email')]) : ''), - $email_goody - ) : '', - ]), - - $enable_dect ? div('col', [ - form_text('dect', __('DECT'), $dect, false, 40, 'tel-local'), - ]) : '', - - div('col', [ - form_text('mobile', __('Mobile'), $mobile, false, 40, 'tel-national'), - $enable_mobile_show ? form_checkbox( - 'mobile_show', - __('Show mobile number to other users to contact me'), - $mobile_show - ) : '', - ]), - ]), - - div('row', [ - $enable_password ? div('col', [ - form_password('password', __('Password') . ' ' . entry_required(), 'new-password'), - ]) : '', - - $enable_planned_arrival ? div('col', [ - form_date( - 'planned_arrival_date', - __('Planned date of arrival') . ' ' . entry_required(), - $planned_arrival_date, - $buildup_start_date, - $teardown_end_date - ), - ]) : '', - ]), - - div('row', [ - $enable_password ? div('col', [ - form_password('password2', __('Confirm password') . ' ' . entry_required(), 'new-password'), - ]) : '', - - div('col', [ - $goodie_tshirt ? form_select( - 'tshirt_size', - __('Shirt size') . ' ' . entry_required(), - $tshirt_sizes, - $tshirt_size, - __('form.select_placeholder') - ) : '', - ]), - ]), - - div('row', [ - div('col', [ - form_checkboxes( - 'angel_types', - __('What do you want to do?') . sprintf( - ' (%s)', - url('/angeltypes/about'), - __('Description of job types') - ), - $angel_types, - $selected_angel_types - ), - form_info( - '', - __('Some angel types have to be confirmed later by a supporter at an introduction meeting. You can change your selection in the options section.') - ), - ]), - ]), - - form_submit('submit', __('Register')), - ]), - ]); -} - -/** - * @return string - */ -function entry_required() -{ - return icon('exclamation-triangle', 'text-info'); -} diff --git a/resources/assets/themes/cyborg_styles.scss b/resources/assets/themes/cyborg_styles.scss index a81b1d27..ad56fdb9 100644 --- a/resources/assets/themes/cyborg_styles.scss +++ b/resources/assets/themes/cyborg_styles.scss @@ -107,6 +107,10 @@ table, } } +.list-group .form-check-input { + border-color: $list-group-form-check-input-border-color; +} + // Navs ======================================================================= .nav-tabs, diff --git a/resources/assets/themes/cyborg_variables.scss b/resources/assets/themes/cyborg_variables.scss index db910a27..82216630 100644 --- a/resources/assets/themes/cyborg_variables.scss +++ b/resources/assets/themes/cyborg_variables.scss @@ -150,6 +150,9 @@ $input-border-focus: #66afe9 !default; //** Placeholder text color $input-color-placeholder: $gray-light !default; +$form-check-input-border: 1px solid $input-border-color !default; +$list-group-form-check-input-border-color: $input-border-color !default; + $legend-color: $text-color !default; $legend-border-color: $gray-dark !default; @@ -513,10 +516,11 @@ $progress-bar-info-bg: $info !default; // //## +$list-group-color: $input-color !default; //** Background color on `.list-group-item` $list-group-bg: $gray-darker !default; //** `.list-group-item` border color -$list-group-border: $gray-dark !default; +$list-group-border-color: $input-border-color !default; //** List group border radius $list-group-border-radius: $border-radius-base !default; diff --git a/resources/assets/themes/dark.scss b/resources/assets/themes/dark.scss index cf2d624a..9f892ee6 100644 --- a/resources/assets/themes/dark.scss +++ b/resources/assets/themes/dark.scss @@ -4,6 +4,7 @@ $input-disabled-bg: #111; $alert-bg-scale: 70%; $secondary: #222; $table-striped-bg: rgba(#fff, 0.05); +$list-group-form-check-input-border-color: #999; $es-choices-highlight-color: #000; diff --git a/resources/lang/de_DE/additional.po b/resources/lang/de_DE/additional.po index 1ecebf9f..cc82237d 100644 --- a/resources/lang/de_DE/additional.po +++ b/resources/lang/de_DE/additional.po @@ -17,19 +17,45 @@ msgstr "" msgid "validation.password.required" msgstr "Bitte gib ein Passwort an." +msgid "validation.password.length" +msgstr "Das angegebene Passwort ist zu kurz." + msgid "validation.login.required" msgstr "Bitte gib einen Loginnamen an." +msgid "validation.pronoun.optional" +msgstr "Das Pronomen, das Du eingegeben hast, ist zu lang. Verwende maximal 15 Zeichen." + +msgid "validation.firstname.optional" +msgstr "Der von dir eingegebene Vorname ist zu lang. Verwende maximal 64 Zeichen." + +msgid "validation.lastname.optional" +msgstr "Der von dir eingegebene Vorname ist zu lang. Verwende maximal 64 Zeichen." + +msgid "validation.mobile.optional" +msgstr "Der von dir eingegebene Handynummer ist zu lang. Verwende maximal 40 Zeichen." + +msgid "validation.dect.optional" +msgstr "Der von dir eingegebene DECT-Nummer ist zu lang. Verwende maximal 40 Zeichen." + +msgid "validation.username.required" +msgstr "Bitte gebe deinen Nick an." + +msgid "validation.username.username" +msgstr "" +"Bitte gebe einen gültigen Nick ein: " +"Verwende bis zu 24 Buchstaben, Zahlen oder verbindende Schriftzeichen (.-_) für deinen Nick." + 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" +msgid "validation.password.length" msgstr "Dein neues Passwort ist zu kurz." -msgid "validation.new_password.min" +msgid "validation.new_password.length" msgstr "Dein neues Passwort ist zu kurz." msgid "validation.password.confirmed" @@ -38,6 +64,21 @@ msgstr "Deine Passwörter stimmen nicht überein." msgid "validation.password_confirmation.required" msgstr "Du musst dein Passwort bestätigen." +msgid "validation.tshirt_size.required" +msgstr "Bitte wähle deine T-Shirt-Größe aus." + +msgid "validation.tshirt_size.shirtSize" +msgstr "Bitte wähle eine gültige T-Shirt-Größe aus." + +msgid "validation.planned_arrival_date.required" +msgstr "Bitte gebe dein geplantes Ankunftsdatum an." + +msgid "validation.planned_arrival_date.min" +msgstr "Das geplante Ankunftsdatum darf nicht vor Aufbaubeginn liegen." + +msgid "validation.planned_arrival_date.between" +msgstr "Das geplante Ankunftsdatum muss zwischen Aufbaubeginn und Abbauende liegen." + msgid "schedule.edit.success" msgstr "Das Programm wurde erfolgreich konfiguriert." diff --git a/resources/lang/de_DE/default.po b/resources/lang/de_DE/default.po index d201f784..53c8995f 100644 --- a/resources/lang/de_DE/default.po +++ b/resources/lang/de_DE/default.po @@ -1020,15 +1020,6 @@ msgstr "" msgid "Edit user" msgstr "User bearbeiten" -msgid "Please enter a valid nick." -msgstr "Gib bitte einen erlaubten Nick an." - -msgid "Use up to 24 letters, numbers or connecting punctuations for your nickname." -msgstr "Verwende bis zu 24 Buchstaben, Zahlen oder verbindende Schriftzeichen (.-_) für deinen Nick." - -msgid "Your nick \"%s\" already exists." -msgstr "Der Nick \"%s\" existiert bereits." - msgid "Please enter a nickname." msgstr "Gib bitte einen Nick an." @@ -1067,9 +1058,6 @@ msgstr "" "Mit diesem Formular registrierst Du Dich als Engel. Du bekommst ein Konto in " "der Engel-Aufgabenverwaltung." -msgid "Notify me of new news" -msgstr "Benachrichtige mich bei neuen News" - msgid "Allow heaven angels to contact you by e-mail." msgstr "Erlaube Himmel-Engeln dich per Mail zu kontaktieren." @@ -1082,25 +1070,6 @@ msgstr "Um Voucher zu erhalten, stimme zu, dass Nick, E-Mail-Adresse, geleistete msgid "To withdraw your approval, send an email to %1$s." msgstr "Dies kann jederzeit durch eine E-Mail an %1$s widerrufen werden." -msgid "Planned date of arrival" -msgstr "Geplanter Ankunftstag" - -msgid "Shirt size" -msgstr "T-Shirt Größe" - -msgid "What do you want to do?" -msgstr "Was möchtest Du machen?" - -msgid "Description of job types" -msgstr "Beschreibung der Aufgaben" - -msgid "" -"Some angel types have to be confirmed later by a supporter at an " -"introduction meeting. You can change your selection in the options section." -msgstr "" -"Engeltypen welche eine Einführung benötigen, werden bei einem Einführungstreffen von " -"einem Supporter freigeschaltet. Du kannst Deine Auswahl später in den Einstellungen ändern." - msgid "Mobile" msgstr "Handy" @@ -2134,6 +2103,9 @@ msgstr "Pflichtfeld" msgid "settings.profile.nick" msgstr "Nick" +msgid "settings.profile.nick.already-taken" +msgstr "Der Nick ist bereits vergeben." + msgid "settings.profile.pronoun" msgstr "Pronomen" @@ -2161,9 +2133,15 @@ msgstr "Handy" msgid "settings.profile.mobile_show" msgstr "Mache meine Handynummer für andere Benutzer sichtbar." +msgid "settings.profile.email-preferences" +msgstr "E-Mail Einstellungen" + msgid "settings.profile.email" msgstr "E-Mail" +msgid "settings.profile.email.already-taken" +msgstr "Die E-Mail-Adresse ist bereits vergeben." + msgid "settings.profile.email_shiftinfo" msgstr "Das %s darf mir E-Mails senden (z.B. wenn sich meine Schichten ändern)." @@ -2195,6 +2173,9 @@ msgstr "Passwort" msgid "settings.password.info" msgstr "Hier kannst Du Dein Passwort ändern." +msgid "settings.password.confirmation-does-not-match" +msgstr "Passwort und Passwortwiederholung stimmen nicht überein." + msgid "settings.password.password" msgstr "Altes Passwort" @@ -2412,6 +2393,9 @@ msgid "angeltypes.restricted.hint" msgstr "Dieser Engeltyp benötigt eine Einweisung bei einem Einführungstreffen. " "Weitere Informationen findest du möglicherweise in der Beschreibung." +msgid "angeltypes.can-change-later" +msgstr "Du kannst Deine Auswahl später in den Einstellungen ändern." + msgid "angeltypes.name" msgstr "Name" @@ -2456,3 +2440,27 @@ msgstr "Tag %1$d" msgid "dashboard.day" msgstr "Tag" + +msgid "page.sign-up.title" +msgstr "Engelregistrierung" + +msgid "page.sign-up.login-data" +msgstr "Anmeldedaten" + +msgid "page.sign-up.name" +msgstr "Name" + +msgid "page.sign-up.event-data" +msgstr "Eventdaten" + +msgid "page.sign-up.what-do-you-want-to-do" +msgstr "Was möchtest Du machen?" + +msgid "page.sign-up.sign-up" +msgstr "Registrieren" + +msgid "pages.sign-up.disabled" +msgstr "Die Engelregistrierung ist deaktiviert" + +msgid "pages.sign-up.successful" +msgstr "Engelregistrierung erfolgreich! Du kannst dich jetzt anmelden!" diff --git a/resources/lang/en_US/additional.po b/resources/lang/en_US/additional.po index 52adf89c..7ebd9b24 100644 --- a/resources/lang/en_US/additional.po +++ b/resources/lang/en_US/additional.po @@ -15,19 +15,45 @@ msgstr "No user was found or password is wrong. Please try again. If you are sti msgid "validation.password.required" msgstr "The password is required." +msgid "validation.password.length" +msgstr "The password entered is too short." + msgid "validation.login.required" msgstr "The login name is required." +msgid "validation.pronoun.length" +msgstr "The pronoun you have entered is too long. Use a maximum of 15 characters." + +msgid "validation.firstname.length" +msgstr "The first name you have entered is too long. Use a maximum of 64 characters." + +msgid "validation.lastname.length" +msgstr "The last name you have entered is too long. Use a maximum of 64 characters." + +msgid "validation.mobile.optional" +msgstr "The mobile number you have entered is too long. Use a maximum of 40 characters." + +msgid "validation.dect.optional" +msgstr "The DECT number you have entered is too long. Use a maximum of 40 characters." + +msgid "validation.username.required" +msgstr "Please enter your nick." + +msgid "validation.username.username" +msgstr "" +"Please enter a valid nick:" +"Use up to 24 letters, numbers or connecting punctuations (.-_) for your nickname." + 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" +msgid "validation.password.length" msgstr "Your new password is too short." -msgid "validation.new_password.min" +msgid "validation.new_password.length" msgstr "Your new password is too short." msgid "validation.password.confirmed" @@ -36,6 +62,21 @@ msgstr "Your passwords are not equal." msgid "validation.password_confirmation.required" msgstr "You have to confirm your password." +msgid "validation.tshirt_size.required" +msgstr "Please choose your t-shirt size." + +msgid "validation.tshirt_size.shirtSize" +msgstr "Please choose a valid t-shirt size." + +msgid "validation.planned_arrival_date.required" +msgstr "Please enter your planned date of arrival." + +msgid "validation.planned_arrival_date.min" +msgstr "The planned date of arrival must not be before the buil-up start date." + +msgid "validation.planned_arrival_date.between" +msgstr "The planned date of arrival must be between the build-up and tear-down date." + msgid "schedule.edit.success" msgstr "The schedule was configured successfully." diff --git a/resources/lang/en_US/default.po b/resources/lang/en_US/default.po index e77731c8..e96eb415 100644 --- a/resources/lang/en_US/default.po +++ b/resources/lang/en_US/default.po @@ -229,6 +229,9 @@ msgstr "Entry required" msgid "settings.profile.nick" msgstr "Nick" +msgid "settings.profile.nick.already-taken" +msgstr "The nick is already taken." + msgid "settings.profile.pronoun" msgstr "Pronoun" @@ -256,9 +259,15 @@ msgstr "Mobile" msgid "settings.profile.mobile_show" msgstr "Show mobile number to other users to contact me." +msgid "settings.profile.email-preferences" +msgstr "E-Mail preferences" + msgid "settings.profile.email" msgstr "E-Mail" +msgid "settings.profile.email.already-taken" +msgstr "The email is already taken." + msgid "settings.profile.email_shiftinfo" msgstr "The %s is allowed to send me an e-mail (e.g. when my shifts change)." @@ -290,6 +299,9 @@ msgstr "Password" msgid "settings.password.info" msgstr "Here you can change your password." +msgid "settings.password.confirmation-does-not-match" +msgstr "Password and password confirmation do not match." + msgid "settings.password.password" msgstr "Old password" @@ -507,6 +519,9 @@ msgid "angeltypes.restricted.hint" msgstr "This angeltype requires the attendance at an introduction meeting. " "You might find additional information in the description." +msgid "angeltypes.can-change-later" +msgstr "You can change your selection later in the settings." + msgid "angeltypes.name" msgstr "Name" @@ -551,3 +566,27 @@ msgstr "Day %1$d" msgid "dashboard.day" msgstr "Day" + +msgid "page.sign-up.title" +msgstr "Angel sign-up" + +msgid "page.sign-up.login-data" +msgstr "Login data" + +msgid "page.sign-up.name" +msgstr "Name" + +msgid "page.sign-up.event-data" +msgstr "Event data" + +msgid "page.sign-up.what-do-you-want-to-do" +msgstr "What do you want to do?" + +msgid "page.sign-up.sign-up" +msgstr "Sign up" + +msgid "pages.sign-up.disabled" +msgstr "The angel registration is disabled" + +msgid "pages.sign-up.successful" +msgstr "Angel sign-up success. You can now log in." diff --git a/resources/views/layouts/parts/navbar.twig b/resources/views/layouts/parts/navbar.twig index bb84230a..cd072b3b 100644 --- a/resources/views/layouts/parts/navbar.twig +++ b/resources/views/layouts/parts/navbar.twig @@ -59,7 +59,7 @@ {% include "layouts/parts/language_dropdown.twig" %} {% if has_permission_to('register') and config('registration_enabled') %} - {{ _self.toolbar_item(__('Register'), url('register'), 'register', 'plus') }} + {{ _self.toolbar_item(__('Register'), url('/sign-up'), 'register', 'plus') }} {% endif %} {% if has_permission_to('login') %} diff --git a/resources/views/macros/form.twig b/resources/views/macros/form.twig index 9a98aa9f..f13ca267 100644 --- a/resources/views/macros/form.twig +++ b/resources/views/macros/form.twig @@ -214,9 +214,10 @@ Renders a Bootstrap checkbox element with mb-3. @param {bool} [opt.disabled=false] - Whether to add the "disabled" attribute. Defaults to false. @param {bool} [opt.raw_label=false] - Whether to use the raw label value (=do not escape). Defaults to false. @param {string} [opt.info] - If set an additional info icon will be added to the label with the text as tooltip. +@param {string} [opt.class="mb-3"] - CSS classes for the checkbox element. Defaults to "mb-3". #} {% macro checkbox(name, label, opt) %} -
{{ __('Please sign up, if you want to help us!') }}
- {{ __('Register') }} » + {{ __('Register') }} » {% else %}{{ __('Registration is only available via external login.') }}
{% endif %} diff --git a/resources/views/pages/settings/profile.twig b/resources/views/pages/settings/profile.twig index e8c90302..cb2d2470 100644 --- a/resources/views/pages/settings/profile.twig +++ b/resources/views/pages/settings/profile.twig @@ -109,6 +109,7 @@