add shirt sizes information hint and optional link

This commit is contained in:
Xu 2023-09-28 12:18:15 +02:00 committed by Igor Scheller
parent 50b1abe0d1
commit 276b1aa976
9 changed files with 53 additions and 1 deletions

View File

@ -383,6 +383,9 @@ return [
'4XL' => '4XLarge Straight-Cut', '4XL' => '4XLarge Straight-Cut',
], ],
// T-shirt Size-Guide link
'tshirt_link' => env('TSHIRT_LINK', null),
// Whether to show the current day of the event (-2, -1, 0, 1, 2…) in footer and on the dashboard. // Whether to show the current day of the event (-2, -1, 0, 1, 2…) in footer and on the dashboard.
// The event start date has to be set for it to appear. // The event start date has to be set for it to appear.
'enable_show_day_of_event' => false, 'enable_show_day_of_event' => false,

View File

@ -23,6 +23,8 @@ $theme-colors: map-merge($theme-colors, $custom-colors);
$form-label-font-weight: $font-weight-bold; $form-label-font-weight: $font-weight-bold;
$choices-guttering: auto;
@import '~bootstrap/scss/utilities'; @import '~bootstrap/scss/utilities';
@import '~bootstrap/scss/root'; @import '~bootstrap/scss/root';

View File

@ -1625,6 +1625,16 @@ msgstr "Dies kann jederzeit durch eine E-Mail an <a href=\"mailto:%s\">%1$s</a>
msgid "settings.profile.shirt_size" msgid "settings.profile.shirt_size"
msgstr "T-Shirt-Größe" msgstr "T-Shirt-Größe"
msgid "settings.profile.shirt_size.hint"
msgstr "Ein straight-cut T-Shirt hat breite Schultern und einen fast quadratischen Körper. "
"Ein fitted-cut (tailliertes) T-Shirt hat eine geschwungene Seitennaht, die an der Taille schmaler "
"ist und einen größeren Brust- sowie Hüft-Umfang hat. "
"Normalerweise fallen fitted-cut (taillierte) T-Shirts kleiner aus als straight-cut T-Shirts in der gleichen Größe, "
"außerdem sind die Größen von Marke zu Marke unterscheiden."
msgid "settings.profile.shirt.link"
msgstr "Mehr Informationen"
msgid "settings.profile.angeltypes.info" msgid "settings.profile.angeltypes.info"
msgstr "Du kannst deine Engeltypen <a href=\"%s\">auf der Engeltypen-Seite</a> verwalten." msgstr "Du kannst deine Engeltypen <a href=\"%s\">auf der Engeltypen-Seite</a> verwalten."

View File

@ -344,6 +344,16 @@ msgstr "To withdraw your approval, send an e-mail to <a href=\"mailto:%s\">%1$s<
msgid "settings.profile.shirt_size" msgid "settings.profile.shirt_size"
msgstr "T-shirt size" msgstr "T-shirt size"
msgid "settings.profile.shirt_size.hint"
msgstr "A straight-cut shirt has wide shoulders and a body which is almost square. "
"A fitted-cut t-shirt has a curved side seam which comes in at the waist "
"and goes out at the upper and lower ends. "
"Normally fitted-cut shirts are smaller then same size straight-cut shirts, "
"and sizes differ between brands."
msgid "settings.profile.shirt.link"
msgstr "More information"
msgid "settings.profile.angeltypes.info" msgid "settings.profile.angeltypes.info"
msgstr "You can manage your Angeltypes <a href=\"%s\">on the Angeltypes page</a>." msgstr "You can manage your Angeltypes <a href=\"%s\">on the Angeltypes page</a>."

View File

@ -202,6 +202,15 @@ Renders a select element wrapped in a DIV with mb-3.
<option value="{{ value }}"{% if opt.selected is defined and value == opt.selected %} selected{% endif %}>{{ decription }}</option> <option value="{{ value }}"{% if opt.selected is defined and value == opt.selected %} selected{% endif %}>{{ decription }}</option>
{% endfor %} {% endfor %}
</select> </select>
{% if opt.form_text|default('') %}
<div class="form-text">
{% if opt.raw_form_text|default(false) %}
{{ opt.form_text|raw }}
{% else %}
{{ opt.form_text }}
{% endif %}
</div>
{% endif %}
</div> </div>
{%- endmacro %} {%- endmacro %}

View File

@ -239,6 +239,14 @@
'required': isTShirtSizeRequired, 'required': isTShirtSizeRequired,
'required_icon': isTShirtSizeRequired, 'required_icon': isTShirtSizeRequired,
'selected': f.formData('tshirt_size', ''), 'selected': f.formData('tshirt_size', ''),
'info': __('settings.profile.shirt_size.hint'),
'raw_form_text': true,
'form_text': (tShirtLink ? m.icon('info-circle')
~ ' <a href="'
~ tShirtLink|escape('html_attr')
~ '" target="_blank" rel="noopener">'
~ __('settings.profile.shirt.link')|e
~ '</a>' : ''),
} }
) }} ) }}
</div> </div>

View File

@ -155,6 +155,14 @@
'required_icon': isTShirtSizeRequired, 'required_icon': isTShirtSizeRequired,
'default_option': __('form.select_placeholder'), 'default_option': __('form.select_placeholder'),
'disabled': user.state.got_shirt, 'disabled': user.state.got_shirt,
'info': __('settings.profile.shirt_size.hint'),
'raw_form_text': true,
'form_text': (tShirtLink ? m.icon('info-circle')
~ ' <a href="'
~ tShirtLink|escape('html_attr')
~ '">'
~ __('settings.profile.shirt.link')|e
~ '</a>' : ''),
}) }} }) }}
</div> </div>
{% endif %} {% endif %}

View File

@ -91,6 +91,7 @@ class RegistrationController extends BaseController
[ [
'minPasswordLength' => $this->config->get('min_password_length'), 'minPasswordLength' => $this->config->get('min_password_length'),
'tShirtSizes' => $this->config->get('tshirt_sizes'), 'tShirtSizes' => $this->config->get('tshirt_sizes'),
'tShirtLink' => $this->config->get('tshirt_link'),
'angelTypes' => AngelType::whereHideRegister(false)->get(), 'angelTypes' => AngelType::whereHideRegister(false)->get(),
'preselectedAngelTypes' => $preselectedAngelTypes, 'preselectedAngelTypes' => $preselectedAngelTypes,
'buildUpStartDate' => $this->userFactory->determineBuildUpStartDate()->format('Y-m-d'), 'buildUpStartDate' => $this->userFactory->determineBuildUpStartDate()->format('Y-m-d'),

View File

@ -46,8 +46,9 @@ class SettingsController extends BaseController
[ [
'settings_menu' => $this->settingsMenu(), 'settings_menu' => $this->settingsMenu(),
'user' => $user, 'user' => $user,
'goodie_tshirt' => $this->config->get('goodie_type') === GoodieType::Tshirt->value,
'goodie_enabled' => $this->config->get('goodie_type') !== GoodieType::None->value, 'goodie_enabled' => $this->config->get('goodie_type') !== GoodieType::None->value,
'goodie_tshirt' => $this->config->get('goodie_type') === GoodieType::Tshirt->value,
'tShirtLink' => $this->config->get('tshirt_link'),
'isPronounRequired' => $requiredFields['pronoun'], 'isPronounRequired' => $requiredFields['pronoun'],
'isFirstnameRequired' => $requiredFields['firstname'], 'isFirstnameRequired' => $requiredFields['firstname'],
'isLastnameRequired' => $requiredFields['lastname'], 'isLastnameRequired' => $requiredFields['lastname'],