+[% USE raw %]
+[% USE Asset %]
+[% USE AuthorisedValues %]
+[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
-<title>Koha › Administration › Patron Attribute Types
+<title>Koha › Administration › Patron attribute types
[% IF ( attribute_type_form ) %]
[% IF ( edit_attribute_type ) %]
› Modify patron attribute type
[% END %]
[% END %]
[% IF ( delete_attribute_type_form ) %]
- › Confirm deletion of patron attribute type "[% code |html %]"
+ › Confirm deletion of patron attribute type "[% code | html %]"
[% 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> › <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> › [% 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> › <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> › [% 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 ) %]
› Modify patron attribute type
[% END %]
[% END %]
[% IF ( delete_attribute_type_form ) %]
- › Confirm deletion of patron attribute type "[% code |html %]"
+ › Confirm deletion of patron attribute type "[% code | html %]"
[% 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&searchfield=ExtendedPatronAttributes">here</a> if you wish to enable this feature.</div>
[% END %]
[% IF ( attribute_type_form ) %]
<h2>Add patron attribute type</h2>
[% END %]
[% IF ( duplicate_code_error ) %]
-<div class="dialog message">Could not add patron attribute type "[% duplicate_code_error %]"
+<div class="dialog message">Could not add patron attribute type "[% duplicate_code_error | html %]"
— 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 — 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&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 "[% added_attribute_type %]"</div>
+<div class="dialog message">Added patron attribute type "[% added_attribute_type | html %]"</div>
[% END %]
[% IF ( edited_attribute_type ) %]
-<div class="dialog message">Modified patron attribute type "[% edited_attribute_type %]"</div>
+<div class="dialog message">Modified patron attribute type "[% edited_attribute_type | html %]"</div>
[% END %]
[% IF ( deleted_attribute_type ) %]
-<div class="dialog message">Deleted patron attribute type "[% deleted_attribute_type %]"</div>
+<div class="dialog message">Deleted patron attribute type "[% deleted_attribute_type | html %]"</div>
[% END %]
[% IF ( ERROR_delete_in_use ) %]
-<div class="dialog message">Could not delete patron attribute type "[% ERROR_delete_in_use %]"
- — it is in use by [% ERROR_num_patrons %] patron records</div>
+<div class="dialog message">Could not delete patron attribute type "[% ERROR_delete_in_use | html %]"
+ — 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 "[% ERROR_delete_not_found %]"
+<div class="dialog message">Could not delete patron attribute type "[% ERROR_delete_not_found | html %]"
— 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&code=[% available_attribute_type.code |html %]">Edit</a>
- <a href="[% available_attribute_type.script_name %]?op=delete_attribute_type&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&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&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' %]