Bug 21526: Use the 'url' filter when needed
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / admin / patron-attr-types.tt
index 105d268..1a43a50 100644 (file)
@@ -1,5 +1,9 @@
+[% USE raw %]
+[% USE Asset %]
+[% USE AuthorisedValues %]
+[% SET footerjs = 1 %]
 [% INCLUDE 'doc-head-open.inc' %]
-<title>Koha &rsaquo; Administration &rsaquo; Patron Attribute Types
+<title>Koha &rsaquo; Administration &rsaquo; Patron attribute types
 [% IF ( attribute_type_form ) %]
   [% IF ( edit_attribute_type ) %]
     &rsaquo; Modify patron attribute type
   [% END %]
 [% END %]
 [% IF ( delete_attribute_type_form ) %]
-  &rsaquo; Confirm deletion of patron attribute type &quot;[% code |html %]&quot;
+  &rsaquo; Confirm deletion of patron attribute type &quot;[% code | html %]&quot;
 [% END %]
 </title>
 [% INCLUDE 'doc-head-close.inc' %]
-
-<script type="text/javascript">
-//<![CDATA[
-
-function DoCancel(f) {
-  f.op.value='';
-  document.Aform.submit();
-}
-
-function CheckAttributeTypeForm(f) {
-    var ok=1;
-    var _alertString="";
-    var alertString2;
-    if (f.code.value.length==0) {
-        _alertString += "\n- " + _("Patron attribute type code missing");
-    }
-    if (f.description.value.length==0) {
-        _alertString += "\n- " + _("Description missing");
-    }
-    if (_alertString.length==0) {
-        document.Aform.submit();
-    } else {
-        alertString2  = _("Form not submitted because of the following problem(s)");
-        alertString2 += "\n------------------------------------------------------------------------------------\n";
-        alertString2 += _alertString;
-        alert(alertString2);
-    }
-}
-
-//]]>
-</script>
 </head>
-<body>
+
+<body id="admin_patron-attr-types" class="admin">
 [% INCLUDE 'header.inc' %]
-[% INCLUDE 'cat-search.inc' %]
+[% INCLUDE 'prefs-admin-search.inc' %]
 
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> &rsaquo; [% IF ( display_list ) %]Patron Attribute Types[% ELSE %]<a href="/cgi-bin/koha/admin/patron-attr-types.pl">Patron Attribute Types</a>[% END %]
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> &rsaquo; [% IF ( display_list ) %]Patron attribute types[% ELSE %]<a href="/cgi-bin/koha/admin/patron-attr-types.pl">Patron attribute types</a>[% END %]
 [% IF ( attribute_type_form ) %]
   [% IF ( edit_attribute_type ) %]
     &rsaquo; Modify patron attribute type
@@ -57,18 +31,17 @@ function CheckAttributeTypeForm(f) {
   [% END %]
 [% END %]
 [% IF ( delete_attribute_type_form ) %]
-  &rsaquo; Confirm deletion of patron attribute type &quot;[% code |html %]&quot;
+  &rsaquo; Confirm deletion of patron attribute type &quot;[% code | html %]&quot;
 [% END %]
 </div>
 
-<div id="doc3" class="yui-t2">
-
-   <div id="bd">
-    <div id="yui-main">
-    <div class="yui-b">
+<div class="main container-fluid">
+    <div class="row">
+        <div class="col-sm-10 col-sm-push-2">
+            <main>
 
 [% IF ( WARNING_extended_attributes_off ) %]
-<div class="dialog message">Because the 'ExtendedPatronAttributes` system preference is currently not enabled, extended patron attributes cannot be given to patron records.  Go <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=ExtendedPatronAttributes">here</a> if you wish to enable this feature.</div>
+<div class="dialog message">Because the 'ExtendedPatronAttributes` system preference is currently not enabled, extended patron attributes cannot be given to patron records.  Go <a href="/cgi-bin/koha/admin/preferences.pl?op=search&amp;searchfield=ExtendedPatronAttributes">here</a> if you wish to enable this feature.</div>
 [% END %]
 
 [% IF ( attribute_type_form ) %]
@@ -78,157 +51,273 @@ function CheckAttributeTypeForm(f) {
 <h2>Add patron attribute type</h2>
   [% END %]
 [% IF ( duplicate_code_error ) %]
-<div class="dialog message">Could not add patron attribute type &quot;[% duplicate_code_error %]&quot; 
+<div class="dialog message">Could not add patron attribute type &quot;[% duplicate_code_error | html %]&quot; 
     &mdash; one with that code already exists.
 </div>
 [% END %]
-<form action="[% script_name %]" name="Aform" method="post">
-  <input type="hidden" name="op" value="[% confirm_op %]" />
+<form action="[% script_name | html %]" class="validated" method="post">
+  <input type="hidden" name="op" value="[% confirm_op | html %]" />
   <fieldset class="rows">
     <ol>
       <li>
           [% IF ( edit_attribute_type ) %]
                  <span class="label">Patron attribute type code: </span>
-            <input type="hidden" name="code" value="[% code |html %]" />
-            [% code |html %]
+            <input type="hidden" name="code" value="[% code | html %]" />
+            [% code | html %]
           [% ELSE %]
-                 <label for="code">Patron attribute type code: </label>
-            <input type="text" id="code" name="code"  size="10" maxlength="10" />
+              <label for="code" class="required">Patron attribute type code: </label>
+              <input type="text" id="code" name="code" required="required" class="required" size="10" maxlength="10" />
+              <span class="required">Required</span>
           [% END %]
        </li>
-       <li><label for="description">Description: </label>
-           <input type="text" id="description" name="description" size="50" maxlength="250" 
-                  value="[% description |html %]" />
+       <li><label for="description" class="required">Description: </label>
+           <input type="text" id="description" name="description" required="required" class="required" size="50" maxlength="250" value="[% description | html %]" />
+           <span class="required">Required</span>
        </li>
        <li><label for="repeatable">Repeatable: </label>
-            <input type="checkbox" id="repeatable" name="repeatable" [% repeatable_checked %] [% repeatable_disabled %] />
+            [% IF ( repeatable_checked ) %]
+              [% IF ( repeatable_disabled ) %]
+                <input type="checkbox" id="repeatable" name="repeatable" checked="checked" disabled="disabled" />
+              [% ELSE %]
+                <input type="checkbox" id="repeatable" name="repeatable" checked="checked" />
+              [% END %]
+            [% ELSE %]
+              [% IF ( repeatable_disabled ) %]
+                <input type="checkbox" id="repeatable" name="repeatable" disabled="disabled" />
+              [% ELSE %]
+                <input type="checkbox" id="repeatable" name="repeatable" />
+              [% END %]
+            [% END %]
             <span>Check to let a patron record have multiple values of this attribute.  
                   This setting cannot be changed after an attribute is defined.</span>
        </li>
        <li><label for="unique_id">Unique identifier: </label>
-            <input type="checkbox" id="unique_id" name="unique_id" [% unique_id_checked %] [% unique_id_disabled %] />
+            [% IF ( unique_id_checked ) %]
+              [% IF ( unique_id_disabled ) %]
+                <input type="checkbox" id="unique_id" name="unique_id" checked="checked" disabled="disabled" />
+              [% ELSE %]
+                <input type="checkbox" id="unique_id" name="unique_id" checked="checked" />
+              [% END %]
+            [% ELSE %]
+              [% IF ( unique_id_disabled ) %]
+                <input type="checkbox" id="unique_id" name="unique_id" disabled="disabled" />
+              [% ELSE %]
+                <input type="checkbox" id="unique_id" name="unique_id" />
+              [% END %]
+            [% END %]
             <span>If checked, attribute will be a unique identifier &mdash; if a value is given to a patron record, the same value
                   cannot be given to a different record.  This setting cannot be changed after an attribute is defined.</span>
        </li>
-       <li><label for="password_allowed">Allow password: </label>
-            <input type="checkbox" id="password_allowed" name="password_allowed" [% password_allowed_checked %] />
-            <span>Check to make it possible to associate a password with this attribute.</span>
-       </li>
        <li><label for="opac_display">Display in OPAC: </label>
-            <input type="checkbox" id="opac_display" name="opac_display" [% opac_display_checked %] />
+          [% IF ( opac_display_checked ) %]
+            <input type="checkbox" id="opac_display" name="opac_display" checked="checked" />
+          [% ELSE %]
+            <input type="checkbox" id="opac_display" name="opac_display" />
+          [% END %]
             <span>Check to display this attribute on a patron's details page in the OPAC.</span>
        </li>
+       <li><label for="opac_editable">Editable in OPAC: </label>
+          [% IF ( opac_editable_checked ) %]
+            <input type="checkbox" id="opac_editable" name="opac_editable" checked="checked" />
+          [% ELSE %]
+            <input type="checkbox" id="opac_editable" name="opac_editable" />
+          [% END %]
+            <span>Check to allow patrons to edit this attribute from their details page in the OPAC. (Requires above, does not work with <a href="/cgi-bin/koha/admin/preferences.pl?op=search&amp;searchfield=PatronSelfRegistrationVerifyByEmail" target="_blank">PatronSelfRegistrationVerifyByEmail</a>.)</span>
+       </li>
        <li><label for="staff_searchable">Searchable: </label>
-            <input type="checkbox" id="staff_searchable" name="staff_searchable" [% staff_searchable_checked %] />
+          [% IF ( staff_searchable_checked ) %]
+            <input type="checkbox" id="staff_searchable" name="staff_searchable" checked="checked" />
+          [% ELSE %]
+            <input type="checkbox" id="staff_searchable" name="staff_searchable" />
+          [% END %]
             <span>Check to make this attribute staff_searchable in the staff patron search.</span>
        </li>
+       <li><label for="display_checkout">Display in check-out: </label>
+            [% IF display_checkout_checked %]
+                <input type="checkbox" id="display_checkout" name="display_checkout" checked="checked" />
+           [% ELSE %]
+               <input type="checkbox" id="display_checkout" name="display_checkout" />
+           [% END %]
+            <span>Check to show this attribute in patron check-out.</span>
+       </li>
+
         <li><label for="authorised_value_category">Authorized value category: </label>
             <select name="authorised_value_category" id="authorised_value_category">
                 <option value=""></option>
-                [% FOREACH authorised_value_categorie IN authorised_value_categories %]
-                    [% IF ( authorised_value_categorie.selected ) %]
-                        <option value="[% authorised_value_categorie.category %]" selected="selected">
-                            [% authorised_value_categorie.category %]
+                [% PROCESS options_for_authorised_value_categories authorised_value_categories => AuthorisedValues.GetCategories( selected => authorised_value_category ) %]
+            </select>
+            <span>Authorized value category; if one is selected, the patron record input page will only allow values 
+                  to be chosen from the authorized value list.  However, an authorized value list is not 
+                  enforced during batch patron import.</span>
+        </li>
+        <li><label for="branches">Branches limitation: </label>
+            <select id="branches" name="branches" multiple size="10">
+                <option value="">All branches</option>
+                [% FOREACH branch IN branches_loop %]
+                  [% IF ( branch.selected ) %]
+                    <option selected="selected" value="[% branch.branchcode | html %]">[% branch.branchname | html %]</option>
+                  [% ELSE %]
+                    <option value="[% branch.branchcode | html %]">[% branch.branchname | html %]</option>
+                  [% END %]
+                [% END %]
+            </select>
+            <span>Select All if this attribute type must to be displayed all the time. Otherwise select libraries you want to associate with this value.
+            </span>
+        </li>
+        <li>
+            <label for="category">Category: </label>
+            <select name="category_code" id="category">
+                <option value=""></option>
+                [% FOREACH cat IN categories %]
+                    [% IF ( cat.categorycode == category_code ) %]<option value="[% cat.categorycode | html %]" selected="selected">[% cat.description | html %]</option>[% ELSE %]<option value="[% cat.categorycode | html %]">[% cat.description | html %]</option>[% END %]
+                [% END %]
+            </select>
+            <span>Choose one to limit this attribute to one patron type. Please leave blank if you want these attributes to be available for all types of patrons.</span>
+        </li>
+        <li>
+            <label for="class">Class: </label>
+            <select name="class" id="class">
+                <option value=""></option>
+                [% FOREACH class IN classes_val_loop %]
+                    [% IF class.authorised_value == category_class %]
+                        <option value="[% class.authorised_value | html %]" selected="selected">
+                            [% class.lib | html %]
                         </option>
                     [% ELSE %]
-                        <option value="[% authorised_value_categorie.category %]">
-                            [% authorised_value_categorie.category %]
+                        <option value="[% class.authorised_value | html %]" >
+                            [% class.lib | html %]
                         </option>
                     [% END %]
                 [% END %]
             </select>
-            <span>Authorized value category; if one is selected, the patron record input page will only allow values 
-                  to be chosen from the authorized value list.  However, an authorized value list is not 
-                  enforced during batch patron import.</span>
+            <span>Group attributes types with a block title (based on authorized values category 'PA_CLASS')</span>
         </li>
     </ol>
   </fieldset>
   <fieldset class="action">
-    [% IF ( edit_attribute_type ) %]
-    <input type="button" value="Save"
-           onclick="CheckAttributeTypeForm(this.form)" />
-    [% ELSE %]
-    <input type="button" value="Save"
-           onclick="CheckAttributeTypeForm(this.form)" />
-    [% END %]
+      <input type="submit" value="Save" />
     <a class="cancel" href="/cgi-bin/koha/admin/patron-attr-types.pl">Cancel</a>
   </fieldset>
 </form>
 [% END %]
 
 [% IF ( delete_attribute_type_form ) %]
-<div class="dialog alert"><h3>Confirm deletion of patron attribute type <span class="ex">'[% code |html %]' ([% description %])</span>?</h3>
-<form action="[% script_name %]" name="Aform" method="post">
-  <input type="hidden" name="op" value="[% confirm_op %]" />
-  <input type="hidden" name="code" value="[% code |html %]" />
-    <input type="submit" value="Delete patron attribute type" class="approve" /></form>
-       <form action="[% script_name %]" method="get">
-    <input type="submit" value="No, Do Not Delete" class="deny" />
-</form></div>
+    <div class="dialog alert">
+        <h3>Confirm deletion of patron attribute type <span class="ex">'[% code | html %]' ([% description | html %])</span>?</h3>
+        <form action="[% script_name | html %]" name="Aform" method="post">
+            <input type="hidden" name="op" value="[% confirm_op | html %]" />
+            <input type="hidden" name="code" value="[% code | html %]" />
+            <button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> Yes, delete patron attribute type</button>
+        </form>
+        <form action="[% script_name | html %]" method="get">
+            <button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> No, do not delete</button>
+        </form>
+    </div>
 [% END %]
 
 [% IF ( display_list ) %]
 
-<div id="toolbar">
-       <script type="text/javascript">
-       //<![CDATA[
-       // prepare DOM for YUI Toolbar
-        $(document).ready(function() {
-           yuiToolbar();
-        });
-       // YUI Toolbar Functions
-       function yuiToolbar() {
-           new YAHOO.widget.Button("newrule");
-       }       //]]>
-       </script>
-       <ul class="toolbar">
-       <li><a id="newrule" href="[% script_name %]?op=add_attribute_type">New Patron Attribute Type</a></li>
-</ul></div>
-
-<h2>Patron Attribute Types</h2>
+<div id="toolbar" class="btn-toolbar">
+    <a class="btn btn-default btn-sm" id="newrule" href="[% script_name | url %]?op=add_attribute_type"><i class="fa fa-plus"></i> New patron attribute type</a>
+</div>
+
+<h2>Patron attribute types</h2>
 [% IF ( added_attribute_type ) %]
-<div class="dialog message">Added patron attribute type &quot;[% added_attribute_type %]&quot;</div>
+<div class="dialog message">Added patron attribute type &quot;[% added_attribute_type | html %]&quot;</div>
 [% END %]
 [% IF ( edited_attribute_type ) %]
-<div class="dialog message">Modified patron attribute type &quot;[% edited_attribute_type %]&quot;</div>
+<div class="dialog message">Modified patron attribute type &quot;[% edited_attribute_type | html %]&quot;</div>
 [% END %]
 [% IF ( deleted_attribute_type ) %]
-<div class="dialog message">Deleted patron attribute type &quot;[% deleted_attribute_type %]&quot;</div>
+<div class="dialog message">Deleted patron attribute type &quot;[% deleted_attribute_type | html %]&quot;</div>
 [% END %]
 [% IF ( ERROR_delete_in_use ) %]
-<div class="dialog message">Could not delete patron attribute type &quot;[% ERROR_delete_in_use %]&quot; 
-    &mdash; it is in use by [% ERROR_num_patrons %] patron records</div>
+<div class="dialog message">Could not delete patron attribute type &quot;[% ERROR_delete_in_use | html %]&quot; 
+    &mdash; it is in use by [% ERROR_num_patrons | html %] patron records</div>
 [% END %]
 [% IF ( ERROR_delete_not_found ) %]
-<div class="dialog message">Could not delete patron attribute type &quot;[% ERROR_delete_not_found %]&quot; 
+<div class="dialog message">Could not delete patron attribute type &quot;[% ERROR_delete_not_found | html %]&quot; 
     &mdash; it was already absent from the database.</div>
 [% END %]
-[% IF ( available_attribute_types ) %]<table>
-  <tr>
-    <th>Code</th>
-    <th>Description</th>
-    <th>Actions</th>
-  </tr>
-  [% FOREACH available_attribute_type IN available_attribute_types %]
-  <tr>
-    <td>[% available_attribute_type.code |html %]</td>
-    <td>[% available_attribute_type.description %]</td>
-    <td>
-      <a href="[% available_attribute_type.script_name %]?op=edit_attribute_type&amp;code=[% available_attribute_type.code |html %]">Edit</a>
-      <a href="[% available_attribute_type.script_name %]?op=delete_attribute_type&amp;code=[% available_attribute_type.code |html %]">Delete</a>
-    </td>
-  </tr>
+[% IF ( available_attribute_types ) %]
+  [% FOREACH attribute IN available_attribute_types %]
+    [% IF attribute.class %]
+        <h4>[% attribute.lib | html %]</h4>
+    [% END %]
+    <table class="patron_attributes_types">
+      <thead>
+        <tr>
+          <th>Code</th>
+          <th>Description</th>
+          <th>Branches limitation</th>
+          <th>Actions</th>
+        </tr>
+      </thead>
+      <tbody>
+        [% FOREACH item IN attribute.items %]
+          <tr>
+            <td>[% item.code | html %]</td>
+            <td>[% item.description | html %]</td>
+            <td>
+                [% IF ( item.branches && item.branches.size > 0 ) %]
+                    [% branches_str = "" %]
+                    [% FOREACH branch IN item.branches %]
+                        [% branches_str = branches_str _ " " _ branch.branchname _ "(" _ branch.branchcode _ ")" %]
+                    [% END %]
+                    <span title="[% branches_str | html %]">
+                        [% IF item.branches.size > 1 %]
+                            [% item.branches.size | html %] branches limitations
+                        [% ELSE %]
+                            [% item.branches.size | html %] branch limitation
+                        [% END %]
+                    </span>
+                [% ELSE %]
+                    No limitation
+                [% END %]
+            </td>
+            <td class="actions">
+              <a class="btn btn-default btn-xs" href="[% item.script_name | url %]?op=edit_attribute_type&amp;code=[% item.code | uri %]"><i class="fa fa-pencil"></i> Edit</a>
+              <a class="btn btn-default btn-xs" href="[% item.script_name | url %]?op=delete_attribute_type&amp;code=[% item.code | uri %]"><i class="fa fa-trash"></i> Delete</a>
+            </td>
+          </tr>
+        [% END %]
+      </tbody>
+    </table>
   [% END %]
-</table>[% ELSE %]<p>There are no saved patron attribute types.</p>[% END %]
+[% ELSE %]
+  <p>There are no saved patron attribute types.</p>
+[% END %]
 
-<div class="pages">[% pagination_bar %]</div>
+<div class="pages">[% pagination_bar | $raw %]</div>
 
 [% END %]
-</div>
-</div>
-<div class="yui-b">
-[% INCLUDE 'admin-menu.inc' %]
-</div>
-</div>
+
+            </main>
+        </div> <!-- /.col-sm-10.col-sm-push-2 -->
+
+        <div class="col-sm-2 col-sm-pull-10">
+            <aside>
+                [% INCLUDE 'admin-menu.inc' %]
+            </aside>
+        </div> <!-- /.col-sm-2.col-sm-pull-10 -->
+     </div> <!-- /.row -->
+
+[% MACRO jsinclude BLOCK %]
+    [% Asset.js("js/admin-menu.js") | $raw %]
+    <script>
+        $(document).ready(function() {
+            if ( $("#branches option:selected").length < 1 ) {
+                $("#branches option:first").attr("selected", "selected");
+            }
+
+            $("#opac_display").change( function() {
+                if ( this.checked ) {
+                    $("#opac_editable").removeAttr('disabled').parent().removeAttr('aria-disabled');
+                } else {
+                    $("#opac_editable").attr('disabled', true).parent().attr('aria-disabled', 'true');
+                }
+            } ).change();
+        });
+    </script>
+[% END %]
 [% INCLUDE 'intranet-bottom.inc' %]