Bug 22605: Preselect subtype limits and don't allow multiple
authorNick Clemens <nick@bywatersolutions.com>
Fri, 22 Oct 2021 11:35:13 +0000 (11:35 +0000)
committerFridolin Somers <fridolin.somers@biblibre.com>
Fri, 25 Mar 2022 00:22:09 +0000 (14:22 -1000)
Dropdowns moved to an include, checked and preseleced

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
koha-tmpl/intranet-tmpl/prog/en/includes/subtype_limits.inc
koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt

index 1ac57b4..4ae3888 100644 (file)
-[%- BLOCK subtype_limits_description -%]
-    [%- SWITCH subtype_limit -%]
-        [%- CASE  'aud:a' -%]<span>Preschool</span>
-        [%- CASE  'aud:b' -%]<span>Primary</span>
-        [%- CASE  'aud:c' -%]<span>Pre-adolescent</span>
-        [%- CASE  'aud:d' -%]<span>Adolescent</span>
-        [%- CASE  'aud:e' -%]<span>Adult</span>
-        [%- CASE  'aud:f' -%]<span>Specialized</span>
-        [%- CASE  'aud:g' -%]<span>General</span>
-        [%- CASE  'aud:j' -%]<span>Juvenile</span>
-        [%- CASE  'fic:1' -%]<span>Fiction</span>
-        [%- CASE  'fic:0' -%]<span>Non-fiction</span>
-        [%- CASE  'bio:b' -%]<span>Biography</span>
-        [%- CASE  'mus:j' -%]<span>Musical recording</span>
-        [%- CASE  'mus:i' -%]<span>Non-musical recording</span>
-        [%- CASE  'l-format:ta' -%]<span>Regular print</span>
-        [%- CASE  'l-format:tb' -%]<span>Large print</span>
-        [%- CASE  'l-format:tc or l-format:fb' -%]<span>Braille</span>
-        [%- CASE  '' -%]<span>-----------</span>
-        [%- CASE  'l-format:sd' -%]<span>CD audio</span>
-        [%- CASE  'l-format:ss' -%]<span>Cassette recording</span>
-        [%- CASE  'l-format:vf' -%]<span>VHS tape / Videocassette</span>
-        [%- CASE  'l-format:vd' -%]<span>DVD video / Videodisc</span>
-        [%- CASE  'l-format:co' -%]<span>CD software</span>
-        [%- CASE  'l-format:cr' -%]<span>Website</span>
-        [%- CASE  'ctype:a' -%]<span>Abstracts / Summaries</span>
-        [%- CASE  'ctype:b' -%]<span>Bibliographies</span>
-        [%- CASE  'ctype:c' -%]<span>Catalogs</span>
-        [%- CASE  'ctype:d' -%]<span>Dictionaries</span>
-        [%- CASE  'ctype:e' -%]<span>Encyclopedias </span>
-        [%- CASE  'ctype:f' -%]<span>Handbooks</span>
-        [%- CASE  'ctype:g' -%]<span>Legal articles</span>
-        [%- CASE  'ctype:i' -%]<span>Indexes</span>
-        [%- CASE  'ctype:j' -%]<span>Patent document</span>
-        [%- CASE  'ctype:k' -%]<span>Discographies</span>
-        [%- CASE  'ctype:l' -%]<span>Legislation</span>
-        [%- CASE  'ctype:m' -%]<span>Theses</span>
-        [%- CASE  'ctype:n' -%]<span>Surveys</span>
-        [%- CASE  'ctype:o' -%]<span>Reviews</span>
-        [%- CASE  'ctype:p' -%]<span>Programmed texts</span>
-        [%- CASE  'ctype:q' -%]<span>Filmographies</span>
-        [%- CASE  'ctype:r' -%]<span>Directories</span>
-        [%- CASE  'ctype:s' -%]<span>Statistics</span>
-        [%- CASE  'ctype:t' -%]<span>Technical reports</span>
-        [%- CASE  'ctype:v' -%]<span>Legal cases and case notes</span>
-        [%- CASE  'ctype:w' -%]<span>Law reports and digests</span>
-        [%- CASE  'ctype:z' -%]<span>Treaties </span>
-    [%- END -%]
+[%- BLOCK subtype_dropdowns -%]
+    <select name="limit" class="subtype">
+        [% IF ( limits.aud.size ) %]
+            <option value="" class="menuheader">Any audience</option>
+        [% ELSE %]
+            <option value="" selected="selected" class="menuheader">Any audience</option>
+        [% END %]
+        [% IF (limits.aud.0 == 'a' ) %]
+            <option selected="selected" value="aud:a">Preschool</option>
+        [% ELSE %]
+            <option value="aud:a">Preschool</option>
+        [% END %]
+        [% IF (limits.aud.0 == 'b' ) %]
+            <option value="aud:b">Primary</option>
+        [% ELSE %]
+            <option value="aud:b">Primary</option>
+        [% END %]
+        [% IF (limits.aud.0 == 'c' ) %]
+            <option value="aud:c">Pre-adolescent</option>
+        [% ELSE %]
+            <option value="aud:c">Pre-adolescent</option>
+        [% END %]
+        [% IF (limits.aud.0 == 'd' ) %]
+            <option value="aud:d">Adolescent</option>
+        [% ELSE %]
+            <option value="aud:d">Adolescent</option>
+        [% END %]
+        [% IF (limits.aud.0 == 'e' ) %]
+            <option value="aud:e">Adult</option>
+        [% ELSE %]
+            <option value="aud:e">Adult</option>
+        [% END %]
+        [% IF (limits.aud.0 == 'f' ) %]
+            <option value="aud:f">Specialized</option>
+        [% ELSE %]
+            <option value="aud:f">Specialized</option>
+        [% END %]
+        [% IF (limits.aud.0 == 'g' ) %]
+            <option value="aud:g">General</option>
+        [% ELSE %]
+            <option value="aud:g">General</option>
+        [% END %]
+        [% IF (limits.aud.0 == 'j' ) %]
+            <option value="aud:j">Juvenile</option>
+        [% ELSE %]
+            <option value="aud:j">Juvenile</option>
+        [% END %]
+        [% limits.delete( 'aud' ) %]
+    </select>
+
+    <select name="limit" class="subtype">
+        [% IF ( limits.fic.size OR limits.bio.size OR limits.mus.size ) %]
+            <option value="" class="menuheader">Any content</option>
+        [% ELSE %]
+            <option value="" selected="selected" class="menuheader">Any content</option>
+        [% END %]
+        [% IF (limits.fic.0 == '1' ) %]
+            <option value="fic:1" selected="selected" >Fiction</option>
+        [% ELSE %]
+            <option value="fic:1" >Fiction</option>
+        [% END %]
+        [% IF (limits.fic.0 == '0' ) %]
+            <option value="fic:0" selected="selected" >Non-fiction</option>
+        [% ELSE %]
+            <option value="fic:0" >Non-fiction</option>
+        [% END %]
+        [% IF (limits.bio.0 == 'b' ) %]
+            <option value="bio:b" selected="selected" >Biography</option>
+        [% ELSE %]
+            <option value="bio:b" >Biography</option>
+        [% END %]
+        [% IF (limits.mus.0 == 'j' ) %]
+            <option value="mus:j" selected="selected" >Musical recording</option>
+        [% ELSE %]
+            <option value="mus:j" >Musical recording</option>
+        [% END %]
+        [% IF (limits.mus.0 == 'i' ) %]
+            <option value="mus:i" selected="selected" >Non-musical recording</option>
+        [% ELSE %]
+            <option value="mus:i" >Non-musical recording</option>
+        [% END %]
+        [% limits.delete( 'fic' ) %]
+        [% limits.delete( 'bio' ) %]
+        [% limits.delete( 'mus' ) %]
+    </select>
+
+   [% SET lformat = 'l-format' %]
+    <select name="limit" class="subtype">
+        [% IF ( limits.$lformat.size ) %]
+            <option value="" class="menuheader">Any format</option>
+        [% ELSE %]
+            <option value="" selected="selected" class="menuheader">Any format</option>
+        [% END %]
+        [% IF (limits.$lformat.0 == 'ta' ) %]
+            <option value="l-format:ta" selected="selected" >Regular print</option>
+        [% ELSE %]
+            <option value="l-format:ta" >Regular print</option>
+        [% END %]
+        [% IF (limits.$lformat.0 == 'tb' ) %]
+            <option value="l-format:tb" selected="selected" >Large print</option>
+        [% ELSE %]
+            <option value="l-format:tb" >Large print</option>
+        [% END %]
+        [% IF (limits.$lformat.0 == 'tc or fb' ) %]
+            <option value="l-format:tc or fb" selected="selected" >Braille</option>
+        [% ELSE %]
+            <option value="l-format:tc or l-format:fb" >Braille</option>
+        [% END %]
+            <option value="" >-----------</option>
+        [% IF (limits.$lformat.0 == 'sd' ) %]
+            <option value="l-format:sd" selected="selected" >CD audio</option>
+        [% ELSE %]
+            <option value="l-format:sd" >CD audio</option>
+        [% END %]
+        [% IF (limits.$lformat.0 == 'ss' ) %]
+            <option value="l-format:ss" selected="selected" >Cassette recording</option>
+        [% ELSE %]
+            <option value="l-format:ss" >Cassette recording</option>
+        [% END %]
+        [% IF (limits.$lformat.0 == 'vf' ) %]
+            <option value="l-format:vf" selected="selected" >VHS tape / Videocassette</option>
+        [% ELSE %]
+            <option value="l-format:vf" >VHS tape / Videocassette</option>
+        [% END %]
+        [% IF (limits.$lformat.0 == 'vd' ) %]
+            <option value="l-format:vd" selected="selected" >DVD video / Videodisc</option>
+        [% ELSE %]
+            <option value="l-format:vd" >DVD video / Videodisc</option>
+        [% END %]
+        [% IF (limits.$lformat.0 == 'co' ) %]
+            <option value="l-format:co" selected="selected" >CD software</option>
+        [% ELSE %]
+            <option value="l-format:co" >CD software</option>
+        [% END %]
+        [% IF (limits.$lformat.0 == 'cr' ) %]
+            <option value="l-format:cr" selected="selected" >Website</option>
+        [% ELSE %]
+            <option value="l-format:cr" >Website</option>
+        [% END %]
+        [% limits.delete( 'l-format' ) %]
+    </select>
+
+    <select name="limit" class="subtype">
+        [% IF ( limits.ctype.size ) %]
+            <option value="" >Additional content types</option>
+        [% ELSE %]
+            <option value="" selected="selected" >Additional content types</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'a' ) %]
+            <option value="ctype:a" selected="selected" >Abstracts / Summaries</option>
+        [% ELSE %]
+            <option value="ctype:a" >Abstracts / Summaries</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'b' ) %]
+            <option value="ctype:b" selected="selected" >Bibliographies</option>
+        [% ELSE %]
+            <option value="ctype:b" >Bibliographies</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'c' ) %]
+            <option value="ctype:c" selected="selected" >Catalogs</option>
+        [% ELSE %]
+            <option value="ctype:c" >Catalogs</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'e' ) %]
+            <option value="ctype:e" selected="selected" >Encyclopedias </option>
+        [% ELSE %]
+            <option value="ctype:e" >Encyclopedias </option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'f' ) %]
+            <option value="ctype:f" selected="selected" >Handbooks</option>
+        [% ELSE %]
+            <option value="ctype:f" >Handbooks</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'g' ) %]
+            <option value="ctype:g" selected="selected" >Legal articles</option>
+        [% ELSE %]
+            <option value="ctype:g" >Legal articles</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'i' ) %]
+            <option value="ctype:i" selected="selected" >Indexes</option>
+        [% ELSE %]
+            <option value="ctype:i" >Indexes</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'j' ) %]
+            <option value="ctype:j" selected="selected" >Patent document</option>
+        [% ELSE %]
+            <option value="ctype:j" >Patent document</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'k' ) %]
+            <option value="ctype:k" selected="selected" >Discographies</option>
+        [% ELSE %]
+            <option value="ctype:k" >Discographies</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'l' ) %]
+            <option value="ctype:l" selected="selected" >Legislation</option>
+        [% ELSE %]
+            <option value="ctype:l" >Legislation</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'm' ) %]
+            <option value="ctype:m" selected="selected" >Theses</option>
+        [% ELSE %]
+            <option value="ctype:m" >Theses</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'n' ) %]
+            <option value="ctype:n" selected="selected" >Surveys</option>
+        [% ELSE %]
+            <option value="ctype:n" >Surveys</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'o' ) %]
+            <option value="ctype:o" selected="selected" >Reviews</option>
+        [% ELSE %]
+            <option value="ctype:o" >Reviews</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'p' ) %]
+            <option value="ctype:p" selected="selected" >Programmed texts</option>
+        [% ELSE %]
+            <option value="ctype:p" >Programmed texts</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'q' ) %]
+            <option value="ctype:q" selected="selected" >Filmographies</option>
+        [% ELSE %]
+            <option value="ctype:q" >Filmographies</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'r' ) %]
+            <option value="ctype:r" selected="selected" >Directories</option>
+        [% ELSE %]
+            <option value="ctype:r" >Directories</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 's' ) %]
+            <option value="ctype:s" selected="selected" >Statistics</option>
+        [% ELSE %]
+            <option value="ctype:s" >Statistics</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 't' ) %]
+            <option value="ctype:t" selected="selected" >Technical reports</option>
+        [% ELSE %]
+            <option value="ctype:t" >Technical reports</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'v' ) %]
+            <option value="ctype:v" selected="selected" >Legal cases and case notes</option>
+        [% ELSE %]
+            <option value="ctype:v" >Legal cases and case notes</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'w' ) %]
+            <option value="ctype:w" selected="selected" >Law reports and digests</option>
+        [% ELSE %]
+            <option value="ctype:w" >Law reports and digests</option>
+        [% END %]
+        [% IF (limits.ctype.0 == 'z' ) %]
+            <option value="ctype:z" selected="selected" >Treaties </option>
+        [% ELSE %]
+            <option value="ctype:z" >Treaties </option>
+        [% END %]
+        [% limits.delete( 'ctype' ) %]
+    </select>
 [%- END -%]
index fd7c6fe..23ef320 100644 (file)
 <!-- SUBTYPE LIMITS -->
         <fieldset id="subtype">
         <legend>Subtype limits</legend><p>
-
+        [% PROCESS subtype_dropdowns %]
         <fieldset id="current_subtype_limits"><legend>Current subtype limits</legend>
         [% FOREACH subtype IN ['aud','fic','bio','ctype','l-format'] %]
             [% FOREACH limit IN limits.$subtype %]
                 <span>
                     <input name="limit" value="[% subtype | html %]:[% limit | html %]" type="hidden">
-                    <label for="subtype_limit_[% loop.index() | html %]">[% PROCESS subtype_limits_description subtype_limit = subtype _':' _ limit %]</label>
+                    <label for="subtype_limit_[% loop.index() | html %]">[%# PROCESS subtype_limits_description subtype_limit = subtype _':' _ limit #%]</label>
                     <input type="checkbox" class="toggle_limit" name="subtype_limit_[% loop.index() | html %]" checked="checked">
                 </span>
            [% END %]
         [% END %]
         </fieldset>
 
-        <select name="limit" class="subtype">
-            <option value="" selected="selected" class="menuheader">Any audience</option>
-                       <option value="aud:a">Preschool</option>
-                       <option value="aud:b">Primary</option>
-                       <option value="aud:c">Pre-adolescent</option>
-                       <option value="aud:d">Adolescent</option>
-                       <option value="aud:e">Adult</option>
-                       <option value="aud:f">Specialized</option>
-                       <option value="aud:g">General</option>
-                       <option value="aud:j">Juvenile</option>
-        </select>
-        
-        <select name="limit" class="subtype">
-            <option value="" selected="selected" class="menuheader">Any content</option>
-            <option value="fic:1" >Fiction</option>
-            <option value="fic:0" >Non-fiction</option>
-            <option value="bio:b" >Biography</option>
-            <option value="mus:j" >Musical recording</option>
-            <option value="mus:i" >Non-musical recording</option>
-        </select>
-
-        
-        <select name="limit" class="subtype">
-            <option value="" selected="selected" class="menuheader">Any format</option>
-            <option value="l-format:ta" >Regular print</option>
-            <option value="l-format:tb" >Large print</option>
-            <option value="l-format:tc or l-format:fb">Braille</option>
-            <option value="" >-----------</option>
-            <option value="l-format:sd" >CD audio</option>
-            <option value="l-format:ss" >Cassette recording</option>
-            <option value="l-format:vf" >VHS tape / Videocassette</option>
-            <option value="l-format:vd" >DVD video / Videodisc</option>
-            <option value="l-format:co" >CD software</option>
-            <option value="l-format:cr" >Website</option>
-        </select>
-        
-        <select name="limit" class="subtype">
-            <option value="" >Additional content types</option>
-            <option value="ctype:a" >Abstracts / Summaries</option>
-            <option value="ctype:b" >Bibliographies</option>
-            <option value="ctype:c" >Catalogs</option>
-            <option value="ctype:d" >Dictionaries</option>
-            <option value="ctype:e" >Encyclopedias </option>
-            <option value="ctype:f" >Handbooks</option>
-            <option value="ctype:g" >Legal articles</option>
-            <option value="ctype:i" >Indexes</option>
-            <option value="ctype:j" >Patent document</option>
-            <option value="ctype:k" >Discographies</option>
-            <option value="ctype:l" >Legislation</option>
-            <option value="ctype:m" >Theses</option>
-            <option value="ctype:n" >Surveys</option>
-            <option value="ctype:o" >Reviews</option>
-            <option value="ctype:p" >Programmed texts</option>
-            <option value="ctype:q" >Filmographies</option>
-            <option value="ctype:r" >Directories</option>
-            <option value="ctype:s" >Statistics</option>
-            <option value="ctype:t" >Technical reports</option>
-            <option value="ctype:v" >Legal cases and case notes</option>
-            <option value="ctype:w" >Law reports and digests</option>
-            <option value="ctype:z" >Treaties </option>
-        </select>
-       </p>
 
 </fieldset>
 [% END %]