Koha/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt
Owen Leonard c28f7d7de5 Bug 6209 [Revised] Standardize on one plugin for client-side form validation
This patch adds the jQuery "Validation" plugin
(http://docs.jquery.com/Plugins/Validation) and includes it by
default in the staff client along with an include file containing
translatable strings for all of the plugin's possible messages.

The staff client's main JavaScript file has been modified to perform
automatic validation of any form with the class "validated."

For a simple example I have modified the library entry form
to mark required fields as required (something which had not
been done before). Each required field has been given a class,
"required" and the HTML5 attribute "required." The former adds
the hook for the plugin, the latter adds browser-based validation
in recent browsers (and which will be superceded by the plugin
if JavaScript is enabled).

This will check for inputs classed "required" without any
additional configuration. More complex forms (with specific
data types, for instance) will require more inline JavaScript
configuration.

$("#FormID").validate({ /* configuration details */ });

Also added to the library entry form are checks on the email and URL
fields via classes ("email" and "url", respectively). This demonstrates
validation of content without forcing the field to be required.

To test, go to Administration -> Libraries and Groups and choose
"New library." Submit the form without entering a library code
or name. You should be prevented from submitting the form and be
shown an error message by each field. Perform the same check with an
existing entry.

To test browser-based validation, disable JavaScript and follow
the same procedure.

Revision rebases the patch against current master and adds missing
"//<![CDATA["

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>

Comment: Work as described with new or existing library.
No errors.
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
2013-03-23 00:12:36 -04:00

374 lines
18 KiB
Text

[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Administration &rsaquo; Libraries and groups
[% IF ( editcategory ) %]
&rsaquo;[% IF ( categorycode ) %]Edit group [% categorycode %][% ELSE %]New group[% END %]
[% ELSIF ( delete_category ) %]
&rsaquo; Confirm deletion of group [% categorycode %]
[% ELSIF ( add ) %]
&rsaquo;[% IF ( heading_branches_add_branch_p ) %]New library[% ELSE %]Modify library [% branchcode %][% END %]
[% ELSIF ( delete_confirm ) %]
&rsaquo; Confirm deletion of library '[% branchcode %]'
[% END %]
</title>
[% INCLUDE 'doc-head-close.inc' %]
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
[% INCLUDE 'datatables-strings.inc' %]
<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
<script type="text/javascript" src="[% themelang %]/js/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$("#branchest").dataTable($.extend(true, {}, dataTablesDefaults, {
"aoColumnDefs": [
{ "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
],
"iDisplayLength": 10,
"aLengthMenu": [[10, 20, 50, 100, -1], [10, 20, 50, 100, "All"]],
"sPaginationType": "four_button"
}));
});
tinyMCE.init({
mode : "textareas",
theme : "advanced",
content_css : "[% themelang %]/css/tinymce.css",
plugins : "table,save,advhr,advlink,iespell,contextmenu",
theme_advanced_buttons1 : "save,|,bold,italic,|,cut,copy,paste,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,|,link,unlink,anchor,cleanup,help,code,advhr,",
theme_advanced_buttons2 : "tablecontrols,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,removeformat,|,visualaid,|,sub,sup,|,charmap",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_path_location : "bottom",
theme_advanced_resizing : true,
apply_source_formatting : true,
height : "300",
width : "700"
});
//]]>
</script>
</head>
<body id="admin_branches" class="admin">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'cat-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; <a href="/cgi-bin/koha/admin/branches.pl">Libraries and groups</a>
[% IF ( editcategory ) %]
&rsaquo; [% IF ( categorycode ) %]Edit group [% categorycode %][% ELSE %]New group[% END %]
[% ELSIF ( delete_category ) %]
&rsaquo; Confirm deletion of group [% categorycode %]
[% ELSIF ( add ) %]
&rsaquo; [% IF ( heading_branches_add_branch_p ) %]New library[% ELSE %]Modify library [% branchcode %][% END %]
[% ELSIF ( delete_confirm ) %]
&rsaquo; Confirm deletion of library '[% branchcode %]'
[% END %]
</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b">
[% IF ( else ) %]
<div id="toolbar" class="btn-toolbar">
<a class="btn btn-small" id="newbranch" href="/cgi-bin/koha/admin/branches.pl?op=add"><i class="icon-plus"></i> New library</a>
<a class="btn btn-small" id="newcategory" href="/cgi-bin/koha/admin/branches.pl?op=editcategory"><i class="icon-plus"></i> New group</a>
</div>
[% END %]
[% IF ( add ) %]
[% IF ( ERROR1 ) %]<div class="dialog message">Library with that code already exists &mdash; Please enter a unique code</div>[% END %]
<h3>[% IF ( heading_branches_add_branch_p ) %]New library[% ELSE %]Modify library[% END %]</h3>
<form action="[% action %]" id="Aform" name="Aform" class="validated" method="post">
<fieldset class="rows">
<input type="hidden" name="op" value="add_validate" />
[% IF ( heading_branches_add_branch_p ) %]
<input type="hidden" name="add" value="1" />
[% ELSE %]
<input type="hidden" name="add" value="0" />
[% END %]
<ol><li>
[% IF ( heading_branches_add_branch_p ) %]
<label for="branchcode" class="required">Library code</label>
<input type="text" name="branchcode" id="branchcode" size="10" maxlength="10" value="[% branchcode |html %]" class="required" required="required" /> <span class="required">Required</span>
[% ELSE %]
<label for="branchcode" class="required">Library code</label>
<input type="hidden" name="branchcode" value="[% branchcode |html %]" />
[% branchcode %]
[% END %]
</li>
<li>
<label for="branchname" class="required">Name</label>
<input type="text" name="branchname" id="branchname" size="80" value="[% branch_name |html %]" class="required" required="required" /> <span class="required">Required</span>
</li>
</ol>
</fieldset>
[% IF ( categoryloop ) %]<fieldset class="rows"><legend>Group(s):</legend>
<ol>
[% FOREACH categoryloo IN categoryloop %]
<li><label for="[% categoryloo.categorycode %]">[% categoryloo.categoryname %]</label>
[% IF ( categoryloo.checked ) %]
<input type="checkbox" id="[% categoryloo.categorycode %]" name="[% categoryloo.categorycode %]" checked="checked" />
[% ELSE %]
<input type="checkbox" id="[% categoryloo.categorycode %]" name="[% categoryloo.categorycode %]" />
[% END %]
<span class="hint">[% categoryloo.codedescription %]</span>
</li>
[% END %]
</ol>
</fieldset>[% END %]
<fieldset class="rows">
<ol>
<li><label for="branchaddress1">Address line 1</label><input type="text" name="branchaddress1" id="branchaddress1" value="[% branchaddress1 |html %]" /></li>
<li><label for="branchaddress2">Address line 2</label><input type="text" name="branchaddress2" id="branchaddress2" value="[% branchaddress2 |html %]" /></li>
<li><label for="branchaddress3">Address line 3</label><input type="text" name="branchaddress3" id="branchaddress3" value="[% branchaddress3 |html %]" /></li>
<li><label for="branchcity">City</label><input type="text" name="branchcity" id="branchcity" value="[% branchcity |html %]" /></li>
<li><label for="branchstate">State</label><input type="text" name="branchstate" id="branchstate" value="[% branchstate |html %]" /></li>
<li><label for="branchzip">Zip/Postal code</label><input type="text" name="branchzip" id="branchzip" value="[% branchzip |html %]" /></li>
<li><label for="branchcountry">Country</label><input type="text" name="branchcountry" id="branchcountry" value="[% branchcountry |html %]" /></li>
<li><label for="branchphone">Phone</label><input type="text" name="branchphone" id="branchphone" value="[% branchphone |html %]" /></li>
<li><label for="branchfax">Fax</label><input type="text" name="branchfax" id="branchfax" value="[% branchfax |html %]" /></li>
<li><label for="branchemail">Email</label><input type="text" name="branchemail" id="branchemail" class="email" value="[% branchemail |html %]" /></li>
<li><label for="branchurl">URL</label><input type="text" name="branchurl" id="branchurl" value="[% branchurl |html %]" class="url" /></li>
<li><label for="opac_info">OPAC info</label><textarea name="opac_info" id="opac_info">[% opac_info |html %]</textarea></li>
<li><label for="branchip">IP</label><input type="text" name="branchip" id="branchip" value="[% branchip |html %]" /> <span class="hint">Can be entered as a single IP, or a subnet such as 192.168.1.*</span></li>
<!--
<li><label for="branchprinter">Library Printer</label>
<select id="branchprinter" name="branchprinter">
<option value="">None</option>
[% FOREACH printerloo IN printerloop %]
[% IF ( printerloo.selected ) %]
<option value="[% printerloo.value %]" selected="selected">[% printerloo.branchprinter %]</option>
[% ELSE %]
<option value="[% printerloo.value %]">[% printerloo.branchprinter %]</option>
[% END %]
[% END %]
</select></li>
-->
<li><label for="branchnotes">Notes</label><input type="text" name="branchnotes" id="branchnotes" value="[% branchnotes |html %]" /></li>
</ol>
</fieldset>
<fieldset class="action"><input type="submit" value="Submit" /> <a class="cancel" href="/cgi-bin/koha/admin/branches.pl">Cancel</a></fieldset>
</form>
[% END %]
[% IF ( delete_confirm ) %]
<form action="[% action %]" method="post">
<fieldset><legend>Confirm deletion of [% branchname %] ([% branchcode %])?</legend><input type="hidden" name="op" value="delete_confirmed" />
<input type="hidden" name="branchcode" value="[% branchcode |html %]" />
<input type="hidden" name="branchname" value="[% branchname |html %]">
<fieldset class="action"><input type="submit" value="Delete Library" /> <a class="cancel" href="/cgi-bin/koha/admin/branches.pl">Cancel</a></fieldset>
</fieldset></form>
[% END %]
[% IF ( else ) %]
<h3>Libraries</h3>
[% IF ( message ) %]<div class="dialog message">
[% message %]</div>[% END %]
[% IF ( MESSAGE1 ) %]<div class="dialog message">Library not saved &mdash; code and/or name missing</div>[% END %]
[% IF ( MESSAGE2 ) %]<div class="dialog message">Library saved</div>[% END %]
[% IF ( MESSAGE3 ) %]<div class="dialog message">Library deleted</div>[% END %]
[% IF ( MESSAGE4 ) %]<div class="dialog message">Library category added</div>[% END %]
[% IF ( MESSAGE5 ) %]<div class="dialog message">Library category modified</div>[% END %]
[% IF ( MESSAGE6 ) %]<div class="dialog message">Library category deleted</div>[% END %]
[% IF ( MESSAGE7 ) %]<div class="dialog message">Library cannot be deleted because there are patrons and items using that library</div>[% END %]
[% IF ( MESSAGE8 ) %]<div class="dialog message">Category cannot be deleted because there are libraries using that category</div>[% END %]
[% IF ( MESSAGE9 ) %]<div class="dialog message">Category cannot be added, categorycode already exists</div>[% END %]
[% IF ( MESSAGE10 ) %]<div class="dialog message">Library cannot be deleted because there are items held by that library</div>[% END %]
[% IF ( MESSAGE11 ) %]<div class="dialog message">Library cannot be deleted because there are patrons registered at that library</div>[% END %]
[% IF ( branches ) %]
<table id="branchest">
<thead><tr>
<th>Name</th>
<th>Code</th>
<th>Address</th>
<th>Properties</th>
<th>IP</th>
<!-- <th>Printer</th> -->
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr></thead><tbody>
[% FOREACH branche IN branches %]
[% IF ( loop.odd ) %]
<tr>
[% ELSE %]
<tr class="highlight">
[% END %]
<td>[% branche.branch_name |html %]</td>
<td>[% branche.branch_code |html %]</td>
<td>
[% IF ( branche.address_empty_p ) %]
(nothing entered)
[% ELSE %]
[% IF ( branche.branchaddress1 ) %]
[% branche.branchaddress1 |html %][% END %]
[% IF ( branche.branchaddress2 ) %]
<br />[% branche.branchaddress2 |html %][% END %]
[% IF ( branche.branchaddress3 ) %]
<br />[% branche.branchaddress3 |html %][% END %]
[% IF ( branche.branchcity ) %]
<br />[% branche.branchcity |html %][% END %][% IF ( branche.branchstate ) %],
[% branche.branchstate |html %][% END %]
[% IF ( branche.branchzip ) %]
[% branche.branchzip |html %][% END %]
[% IF ( branche.branchcountry ) %]
<br />[% branche.branchcountry |html %][% END %]
[% IF ( branche.branchphone ) %]
<br />Ph: [% branche.branchphone |html %][% END %]
[% IF ( branche.branchfax ) %]
<br />Fax: [% branche.branchfax |html %][% END %]
[% IF ( branche.branchemail ) %]
<br /><a href="mailto:[% branche.branchemail %]">[% branche.branchemail |html %]</a>[% END %]
[% IF ( branche.branchurl ) %]
<br /><a href="[% branche.branchurl %]">[% branche.branchurl |html %]</a>[% END %]
[% IF ( branche.opac_info ) %]
<br />OPAC Info: <div>[% branche.opac_info %]</div>[% END %]
[% IF ( branche.branchnotes ) %]
<br />Notes: [% branche.branchnotes |html %][% END %]
[% END %]
</td>
<td>
[% UNLESS ( branche.no_categories_p ) %]
[% FOREACH category_lis IN branche.category_list %]
[% category_lis.categoryname %]<br />
[% END %]
[% END %]
</td>
<td>
[% branche.branchip %]
</td>
<!-- <td>
[% branche.branchprinter %]
</td> -->
<td>
<a href="[% branche.action %]?op=edit&amp;branchcode=[% branche.value |url %]">Edit</a>
</td>
<td>
<a href="[% branche.action %]?branchcode=[% branche.value |url %]&amp;branchname=[% branche.branch_name |url %]&amp;op=delete">Delete</a>
</td>
</tr>
[% END %]</tbody>
</table>
[% ELSE %]
<div class="dialog message">There are no libraries defined. <a href="/cgi-bin/koha/admin/branches.pl?op=add">Start defining libraries</a>.</div>
[% END %]
[% IF ( branchcategories ) %]
[% FOREACH branchcategorie IN branchcategories %]
<h3>Group(s): [% IF ( branchcategorie.properties ) %]Properties[% ELSE %][% IF ( branchcategorie.searchdomain ) %]Search domain[% END %][% END %]</h3>
[% IF ( branchcategorie.catloop ) %]
<table>
<thead>
<tr>
<th>Name</th>
<th>Code</th>
<th>Description</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
[% FOREACH catloo IN branchcategorie.catloop %]
<tr>
<td>[% catloo.categoryname %]</td>
<td>[% catloo.categorycode %]</td>
<td>[% catloo.codedescription %]</td>
<td>
<a href="[% catloo.action %]?op=editcategory&amp;categorycode=[% catloo.categorycode |url %]">Edit</a>
</td>
<td>
<a href="[% catloo.action %]?op=delete_category&amp;categorycode=[% catloo.categorycode |url %]">Delete</a>
</td>
</tr>
[% END %]
</tbody>
</table>
[% ELSE %]
No [% IF ( branchcategorie.properties ) %]properties[% ELSIF ( branchcategorie.searchdomain ) %]search domain[% END %] defined. <a href="/cgi-bin/koha/admin/branches.pl?op=editcategory">Add a new group</a>.
[% END %]
[% END %]
[% ELSE %]
<p>No groups defined.</p>
[% END %] <!-- NAME="branchcategories" -->
[% END %]
[% IF ( editcategory ) %]
<h3>[% IF ( categorycode ) %]Edit group [% categorycode %][% ELSE %]Add group[% END %]</h3>
<form action="[% action %]" name="Aform" method="post">
<input type="hidden" name="op" value="addcategory_validate" />
[% IF ( categorycode ) %]
<input type="hidden" name="add" value="0">
[% ELSE %]
<input type="hidden" name="add" value="1">
[% END %]
<fieldset class="rows">
<ol><li>
[% IF ( categorycode ) %]
<span class="label">Category code: </span>
<input type="hidden" name="categorycode" id="categorycode" value="[% categorycode |html %]" />
[% categorycode %]
[% ELSE %]
<label for="categorycode">Category code:</label>
<input type="text" name="categorycode" id="categorycode" size="10" maxlength="10" value="[% categorycode |html %]" />
[% END %]
</li>
<li>
<label for="categoryname">Name: </label>
<input type="text" name="categoryname" id="categoryname" size="32" maxlength="32" value="[% categoryname |html %]" />
</li>
<li>
<label for="codedescription">Description: </label>
<input type="text" name="codedescription" id="codedescription" size="70" value="[% codedescription |html %]" />
</li>
<li>
<label for="categorytype">Category type: </label>
<select id="categorytype" name="categorytype">
[% FOREACH categorytyp IN categorytype %]
[% IF ( categorytyp.selected ) %]
<option value="[% categorytyp.type %]" selected="selected">
[% ELSE %]
<option value="[% categorytyp.type %]">
[% END %] [% categorytyp.type %]</option>
[% END %]
</select>
</li>
<li>
<label for="show_in_pulldown">Show in search pulldown: </label>
[% IF ( show_in_pulldown ) %]
<input type="checkbox" name="show_in_pulldown" id="show_in_pulldown" checked="checked"/>
[% ELSE %]
<input type="checkbox" name="show_in_pulldown" id="show_in_pulldown" />
[% END %]
</li>
</ol>
</fieldset>
<fieldset class="action"><input type="submit" value="Update" /></fieldset>
</form>
[% END %]
[% IF ( delete_category ) %]
[% UNLESS ( MESSAGE8 ) %]
<div class="dialog message">
Confirm delete:
<form action="[% action %]" method="post">
<input type="hidden" name="op" value="categorydelete_confirmed" />
<input type="hidden" name="categorycode" value="[% categorycode |html %]" />
<input type="submit" value="YES" />
</form>
<form action="[% action %]" method="post"><input type="hidden" name="op" value="">
<input type="submit" value="NO" />
</form>
</div>
[% END %]
[% END %]
</div>
</div>
<div class="yui-b">
[% INCLUDE 'admin-menu.inc' %]
</div>
</div>
[% INCLUDE 'intranet-bottom.inc' %]