This patch updates the OPAC and staff interface to use Bootstrap 5. Bootstrap CSS assets are now pulled from node_modules and compiled into staff-global.css and opac.css at build time. This update lays the foundations of some other chnages, especially the addition of a dark mode in the future. Hundreds of templates have been updated, mostly with updates to the grid markup. Most of the responsive behavior is still the same with the exception of improved flexibility of headers and footers in both the OPAC and staff interface. The other most common change is to add a new "namespace" to data attributes used by Bootstrap, e.g. "data-bs-target" or "data-bs-toggle". Modal markup has also been updated everywhere. Other common changes: dropdown button markup, alert markup (we now use Bootstrap's "alert alert-warning" and "alert alert-info" instead of our old "dialog alert" and "dialog info"). Bootstrap 5 now uses CSS variables which we can override in our own '_variables.scss' (in both the OPAC and staff) to accomplish a lot of the style overrides which we previously put in staff-global.scss. Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
112 lines
6.6 KiB
PHP
112 lines
6.6 KiB
PHP
[%- BLOCK patron_fields -%]
|
|
[%- SWITCH name -%]
|
|
[%- CASE 'standard' -%][% t("Standard") | html %]
|
|
[%- CASE 'full_address' -%][% t("Full address") | html %]
|
|
[%- CASE 'all_emails' -%][% t("All emails") | html %]
|
|
[%- CASE 'all_phones' -%][% t("All phones") | html %]
|
|
[%- CASE 'borrowernumber' -%][% t("Borrowernumber") | html %]
|
|
[%- CASE 'cardnumber' -%][% t("Card number") | html %]
|
|
[%- CASE 'surname' -%][% t("Surname") | html %]
|
|
[%- CASE 'firstname' -%][% t("First name") | html %]
|
|
[%- CASE 'middle_name' -%][% t("Middle name") | html %]
|
|
[%- CASE 'title' -%][% t("Salutation") | html %]
|
|
[%- CASE 'othernames' -%][% t("Other name") | html %]
|
|
[%- CASE 'initials' -%][% t("Initials") | html %]
|
|
[%- CASE 'pronouns' -%][% t("Pronouns") | html %]
|
|
[%- CASE 'streetnumber' -%][% t("Street number") | html %]
|
|
[%- CASE 'streettype' -%][% t("Street type") | html %]
|
|
[%- CASE 'address' -%][% t("Address") | html %]
|
|
[%- CASE 'address2' -%][% t("Address 2") | html %]
|
|
[%- CASE 'city' -%][% t("City") | html %]
|
|
[%- CASE 'state' -%][% t("State") | html %]
|
|
[%- CASE 'zipcode' -%][% t("ZIP/Postal code") | html %]
|
|
[%- CASE 'country' -%][% t("Country") | html %]
|
|
[%- CASE 'email' -%][% t("Primary email") | html %]
|
|
[%- CASE 'phone' -%][% t("Primary phone") | html %]
|
|
[%- CASE 'mobile' -%][% t("Mobile phone") | html %]
|
|
[%- CASE 'fax' -%][% t("Fax") | html %]
|
|
[%- CASE 'emailpro' -%][% t("Secondary email") | html %]
|
|
[%- CASE 'phonepro' -%][% t("Secondary phone") | html %]
|
|
[%- CASE 'B_streetnumber' -%][% t("Alternate street number") | html %]
|
|
[%- CASE 'B_streettype' -%][% t("Alternate street type") | html %]
|
|
[%- CASE 'B_address' -%][% t("Alternate address") | html %]
|
|
[%- CASE 'B_address2' -%][% t("Alternate address line 2") | html %]
|
|
[%- CASE 'B_city' -%][% t("Alternate city") | html %]
|
|
[%- CASE 'B_state' -%][% t("Alternate state") | html %]
|
|
[%- CASE 'B_zipcode' -%][% t("Alternate zip code") | html %]
|
|
[%- CASE 'B_country' -%][% t("Alternate country") | html %]
|
|
[%- CASE 'B_email' -%][% t("Alternate email") | html %]
|
|
[%- CASE 'B_phone' -%][% t("Alternate phone") | html %]
|
|
[%- CASE 'dateofbirth' -%][% t("Date of birth") | html %]
|
|
[%- CASE 'branchcode' -%][% t("Library (code)") | html %]
|
|
[%- CASE 'categorycode' -%][% t("Category (code)") | html %]
|
|
[%- CASE 'dateenrolled' -%][% t("Registration date") | html %]
|
|
[%- CASE 'dateexpiry' -%][% t("Expiry date") | html %]
|
|
[%- CASE 'gonenoaddress' -%][% t("Gone no address") | html %]
|
|
[%- CASE 'lost' -%][% t("Lost card") | html %]
|
|
[%- CASE 'debarred' -%][% t("Restricted") | html %]
|
|
[%- CASE 'debarredcomment' -%][% t("Restriction reason") | html %]
|
|
[%- CASE 'contactname' -%][% t("Guarantor surname") | html %]
|
|
[%- CASE 'contactfirstname' -%][% t("Guarantor firstname") | html %]
|
|
[%- CASE 'contacttitle' -%][% t("Guarantor title") | html %]
|
|
[%- CASE 'guarantorid' -%][% t("Guarantor ID") | html %]
|
|
[%- CASE 'borrowernotes' -%][% t("Circulation note") | html %]
|
|
[%- CASE 'relationship' -%][% t("Guarantor relationship") | html %]
|
|
[%- CASE 'sex' -%][% t("Gender") | html %]
|
|
[%- CASE 'flags' -%][% t("Permissions (code)") | html %]
|
|
[%- CASE 'userid' -%][% t("Username") | html %]
|
|
[%- CASE 'opacnote' -%][% t("OPAC note") | html %]
|
|
[%- CASE 'contactnote' -%][% t("Contact note") | html %]
|
|
[%- CASE 'sort1' -%][% t("Sort 1") | html %]
|
|
[%- CASE 'sort2' -%][% t("Sort 2") | html %]
|
|
[%- CASE 'altcontactfirstname' -%][% t("Alternate contact first name") | html %]
|
|
[%- CASE 'altcontactsurname' -%][% t("Alternate contact surname") | html %]
|
|
[%- CASE 'altcontactaddress1' -%][% t("Alternate contact address") | html %]
|
|
[%- CASE 'altcontactaddress2' -%][% t("Alternate contact address 2") | html %]
|
|
[%- CASE 'altcontactaddress3' -%][% t("Alternate contact city") | html %]
|
|
[%- CASE 'altcontactstate' -%][% t("Alternate contact state") | html %]
|
|
[%- CASE 'altcontactzipcode' -%][% t("Alternate contact ZIP/postal code") | html %]
|
|
[%- CASE 'altcontactcountry' -%][% t("Alternate contact country") | html %]
|
|
[%- CASE 'altcontactphone' -%][% t("Alternate contact phone") | html %]
|
|
[%- CASE 'smsalertnumber' -%][% t("SMS alert number") | html %]
|
|
[%- CASE 'sms_provider_id' -%][% t("SMS provider") | html %]
|
|
[%- CASE 'privacy' -%][% t("Privacy (code)") | html %]
|
|
[%- CASE 'privacy_guarantor_checkouts' -%][% t("Guarantor can view checkouts") | html %]
|
|
[%- CASE 'updated_on' -%][% t("Last updated") | html %]
|
|
[%- CASE 'lastseen' -%][% t("Last seen") | html %]
|
|
[%- CASE 'checkprevcheckout' -%][% t("Check previous checkout") | html %]
|
|
[%- CASE DEFAULT -%]
|
|
[%- END -%]
|
|
[%- END -%]
|
|
[%- BLOCK patron_fields_dropdown -%]
|
|
[% IF search_box %]
|
|
<label for="searchfieldstype" class="control-label">Search field:</label>
|
|
<select name="searchfieldstype" id="searchfieldstype" class="form-select">
|
|
[% ELSE %]
|
|
<label for="searchfieldstype_filter">Search field:</label>
|
|
<select name="searchfieldstype" class="searchfieldstype_filter">
|
|
[% END %]
|
|
[% SET standard = Koha.Preference('DefaultPatronSearchFields') || 'firstname|middle_name|surname|othernames|cardnumber|userid' %]
|
|
[%# Above is needed for adding fields from the DefaultPatronSearchFields preference to the dropdowns %]
|
|
[% default_fields = [ 'standard', 'surname', 'cardnumber', 'all_emails', 'borrowernumber', 'userid', 'all_phones', 'full_address', 'dateofbirth', 'sort1', 'sort2' ] %]
|
|
[% search_options = default_fields.merge(standard.split('\|')).unique %]
|
|
[% FOREACH s_o IN search_options %]
|
|
[% display_name = PROCESS patron_fields name=s_o %]
|
|
[% NEXT IF !display_name %]
|
|
[% IF searchfieldstype == s_o %]
|
|
<option selected="selected" value=[% s_o | html %]>[% display_name | $raw %]</option>
|
|
[% ELSE %]
|
|
<option value=[% s_o | html %]>[% display_name | $raw %]</option>
|
|
[% END %]
|
|
[% END %]
|
|
[% IF Koha.Preference('ExtendedPatronAttributes') %]
|
|
[% FOREACH attribute IN ExtendedAttributeTypes.all( staff_searchable => 1 ) %]
|
|
[% IF searchfieldstype == "_ATTR_" _ attribute.code %]
|
|
<option value=[% "_ATTR_" _ attribute.code | html %] selected="selected">[% attribute.description | html %]</option>
|
|
[% ELSE %]
|
|
<option value=[% "_ATTR_" _ attribute.code | html %]>[% attribute.description | html %]</option>
|
|
[% END %]
|
|
[% END %]
|
|
[% END %]
|
|
</select>
|
|
[%- END -%]
|