Koha/koha-tmpl/intranet-tmpl/prog/en/modules/tools/letter.tt
Owen Leonard d153e728bb Bug 21795: Switch two-column templates to Bootstrap grid: Notices and slips
This patch updates notices and slips templates to use Bootstrap grids
instead of YUI.

This patch also removes obsolete "text/css" attributes from <style> tags
in the modified templates.

To test, apply the patch and go to Tools -> Notices and slips. Test that
these pages look correct and adujst well to various browser widths.

 - The main page listing notices and slips
 - The add/edit form
 - The notice preview modal available when editing CHECKIN, CHECKOUT and
   HOLD_SLIP.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
2018-12-26 20:47:03 +00:00

493 lines
25 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[% USE raw %]
[% USE Asset %]
[% USE Koha %]
[% USE Branches %]
[% USE ColumnsSettings %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Tools &rsaquo; Notices[% IF ( add_form or copy_form ) %][% IF ( modify ) %] &rsaquo; Modify notice[% ELSE %] &rsaquo; Add notice[% END %][% END %][% IF ( add_validate or copy_validate) %] &rsaquo; Notice added[% END %][% IF ( delete_confirm ) %] &rsaquo; Confirm deletion[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
[% Asset.css("css/datatables.css") | $raw %]
<style>#preview_template .modal-dialog { width : 80%; } .spinner { display: none; } @media (max-width: 767px) { #preview_template { margin: 0; width : auto; } }</style>
</head>
<body id="tools_letter" class="tools">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'letters-search.inc' %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo; [% IF ( add_form or copy_form) %][% IF ( modify ) %]<a href="/cgi-bin/koha/tools/letter.pl">Notices &amp; slips</a> &rsaquo; Modify notice[% ELSE %] <a href="/cgi-bin/koha/tools/letter.pl">Notices &amp; slips</a> &rsaquo; Add notice[% END %][% ELSE %][% IF ( add_validate or copy_validate) %] <a href="/cgi-bin/koha/tools/letter.pl">Notices &amp; slips</a> &rsaquo; Notice added[% ELSE %][% IF ( delete_confirm ) %] <a href="/cgi-bin/koha/tools/letter.pl">Notices &amp; slips</a> &rsaquo; Confirm deletion[% ELSE %]Notices &amp; slips[% END %][% END %][% END %]</div>
<div id="preview_template" class="modal in" tabindex="-1" role="dialog" aria-labelledby="preview_template_label" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="preview_template_label">Preview notice template</h3>
</div>
<div class="modal-body">
<div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
</div>
<div class="modal-footer">
<!-- TODO <a href="#" class="btn btn-default" id="preview_template_button" role="button" data-toggle="modal">Convert using the Template Toolkit syntax</a>-->
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>
</div>
</div>
[% IF add_form or copy_form %]
<div class="main container-fluid">
<div class="row">
<div class="col-md-8 col-md-offset-2">
[% ELSE %]
<div class="main container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-push-2">
<main>
[% END %]
[% IF ( no_op_set ) %]
<h1>Notices &amp; slips</h1>
<form method="get" action="/cgi-bin/koha/tools/letter.pl" id="selectlibrary">
<input type="hidden" name="searchfield" value="[% searchfield | html %]" />
[% UNLESS independant_branch %]
<p>
Select a library :
<select name="branchcode" id="branch" style="width:20em;">
<option value="*">All libraries</option>
[% PROCESS options_for_libraries libraries => Branches.all( selected => branchcode ) %]
</select>
</p>
[% END %]
<div id="toolbar" class="btn-toolbar">
<button type="submit" class="btn btn-default btn-sm" id="newnotice"><i class="fa fa-plus"></i> New notice</button>
<input type="hidden" id="op" name="op" />
</div>
</form>
[% IF ( search ) %]
<p>You searched for <b>[% searchfield | html %]</b></p>
[% END %]
[% IF ( letter && !independant_branch) %]
[% select_for_copy = BLOCK %]
<select name="branchcode">
[% FOREACH l IN Branches.all() %]
<option value="[% l.branchcode | html %]">Copy to [% l.branchname | html %]</option>
[% END %]
</select>
[% END %]
[% END %]
[% IF letter %]
<table id="lettert">
<thead>
<tr>
<th>Library</th>
<th>Module</th>
<th>Code</th>
<th>Name</th>
<th class="nosort">Copy notice</th>
<th class="nosort">Actions</th>
</tr>
</thead>
<tbody>
[% FOREACH lette IN letter %]
[% can_edit = lette.branchcode || !independant_branch %]
<tr>
<td>[% IF lette.branchname %][% lette.branchname | html %][% ELSE %](All libraries)[% END %]</td>
<td>
[% SWITCH lette.module %]
[% CASE 'acquisition' %]<span>Acquisition</span>
[% CASE 'catalogue' %]<span>Catalog</span>
[% CASE 'circulation' %]<span>Circulation</span>
[% CASE 'orderacquisition' %]<span>Order acquisition</span>
[% CASE 'claimacquisition' %]<span>Claim acquisition</span>
[% CASE 'claimissues' %]<span>Claim serial issue</span>
[% CASE 'reserves' %]<span>Holds</span>
[% CASE 'members' %]<span>Patrons</span>
[% CASE 'serial' %]<span>Serials (new issue)</span>
[% CASE 'suggestions' %]<span>Suggestions</span>
[% CASE %]<span>[% lette.module | html %]</span>
[% END %]
</td>
<td>[% lette.code | html %]</td>
<td>[% lette.name | html %]</td>
<td class="actions">
[% IF !independant_branch || !lette.branchcode %]
<form method="post" action="/cgi-bin/koha/tools/letter.pl">
<input type="hidden" name="op" value="copy_form" />
<input type="hidden" name="oldbranchcode" value="[% lette.branchcode | html %]" />
<input type="hidden" name="module" value="[% lette.module | html %]" />
<input type="hidden" name="code" value="[% lette.code | html %]" />
[% IF independant_branch %]
<input type="hidden" name="branchcode" value="[% independant_branch | html %]" />
[% ELSE %]
[% select_for_copy | $raw %]
[% END %]
<button class="btn btn-default btn-xs"><i class="fa fa-clone"></i> Copy</button>
</form>
[% END %]
</td>
<td class="actions">
[% IF can_edit %]
<a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/letter.pl?op=add_form&amp;branchcode=[% lette.branchcode | html %]&amp;module=[% lette.module | html %]&amp;code=[% lette.code | html %]"><i class="fa fa-pencil"></i> Edit</a>
[% END %]
[% IF !lette.protected && can_edit %]
<a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/letter.pl?op=delete_confirm&amp;branchcode=[% lette.branchcode | html %]&amp;module=[% lette.module | html %]&amp;code=[% lette.code | html %]"><i class="fa fa-trash"></i> Delete</a>
[% END %]
</td>
</tr>
[% END %]
</tbody>
</table>
[% ELSE %]
<div class="dialog message">
[% IF ( branchcode ) %]
<p>There are no notices for this library.</p>
[% ELSE %]
<p>There are no notices.</p>
[% END %]
</div>
[% END %]
[% END %]
[% IF add_form or copy_form %]
<h1>[% IF ( modify ) %]Modify notice[% ELSE %]Add notice[% END %]</h1>
<div id="toolbar" class="btn-toolbar">
<div class="btn-group">
<button class="btn btn-default btn-sm" id="submit_form"><i class="fa fa-save"></i> Save</button>
<button class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a id="saveandcontinue" href="#">Save and continue editing</a></li>
</ul>
</div>
<a class="btn btn-default btn-sm cancel" href="/cgi-bin/koha/tools/letter.pl"><i class="fa fa-remove"></i> Cancel</a>
</div>
<form id="add_notice" name="Aform" method="post" enctype="multipart/form-data" class="validate">
[% IF add_form %]
<input type="hidden" name="op" id="op" value="add_validate" />
[% ELSE %]
<input type="hidden" name="op" id="op" value="copy_validate" />
[% END %]
<input type="hidden" name="checked" value="0" />
[% IF ( modify ) %]
<input type="hidden" name="add" value="0" />
[% ELSE %]
<input type="hidden" name="add" value="1" />
[% END %]
<fieldset class="rows">
<input type="hidden" name="oldbranchcode" value="[% oldbranchcode | html %]" />
<ol>
[% IF independant_branch %]
<input type="hidden" name="branchcode" value="[% independant_branch | html %]" />
[% ELSE %]
<li>
[% IF adding %]
<label for="branch">Library:</label>
<select name="branchcode" id="branch" style="width:20em;">
<option value="">All libraries</option>
[% PROCESS options_for_libraries libraries => Branches.all( selected => branchcode ) %]
</select>
[% ELSE %]
<span class="label">Library:</span>
<input type="hidden" id="branch" name="branchcode" value="[% branchcode | html %]" />
[% IF ( branchcode ) %]
[% Branches.GetName( branchcode ) | html %]
[% ELSE %]
All libraries
[% END %]
[% END %]
</li>
[% END %]
<li>
<label for="module">Koha module:</label>
<input type="hidden" name="oldmodule" value="[% module | html %]" />
[% IF adding %]
<select name="module" id="newmodule">
[% ELSE %]
<select name="module" id="module">
[% END %]
[% IF ( module == "acquisition" ) %]
<option value="acquisition" selected="selected">Acquisition</option>
[% ELSE %]
<option value="acquisition" >Acquisition</option>
[% END %]
[% IF ( module == "catalogue" ) %]
<option value="catalogue" selected="selected">Catalog</option>
[% ELSE %]
<option value="catalogue" >Catalog</option>
[% END %]
[% IF ( module == "circulation" ) %]
<option value="circulation" selected="selected">Circulation</option>
[% ELSE %]
<option value="circulation">Circulation</option>
[% END %]
[% IF ( module == "orderacquisition" ) %]
<option value="orderacquisition" selected="selected">Order acquisition</option>
[% ELSE %]
<option value="orderacquisition">Order acquisition</option>
[% END %]
[% IF ( module == "claimacquisition" ) %]
<option value="claimacquisition" selected="selected">Claim acquisition</option>
[% ELSE %]
<option value="claimacquisition">Claim acquisition</option>
[% END %]
[% IF ( module == "claimissues" ) %]
<option value="claimissues" selected="selected">Claim serial issue</option>
[% ELSE %]
<option value="claimissues">Claim serial issue</option>
[% END %]
[% IF ( module == "reserves" ) %]
<option value="reserves" selected="selected">Holds</option>
[% ELSE %]
<option value="reserves">Holds</option>
[% END %]
[% IF ( module == "members" ) %]
<option value="members" selected="selected">Patrons</option>
[% ELSE %]
<option value="members">Patrons</option>
[% END %]
[% IF ( module == "serial" ) %]
<option value="serial" selected="selected">Serials (new issue)</option>
[% ELSE %]
<option value="serial">Serials (new issue)</option>
[% END %]
[% IF ( module == "suggestions" ) %]
<option value="suggestions" selected="selected">Suggestions</option>
[% ELSE %]
<option value="suggestions">Suggestions</option>
[% END %]
</select>
</li>
<li>
[% IF adding %]
<label for="code" class="required">Code:</label>
<input type="text" id="code" name="code" size="20" maxlength="20" value="" required="required"/>
<span class="required">Required</span>
[% ELSE %]
<span class="label">Code:</span>
<input type="hidden" id="code" name="code" value="[% code | html %]" />
[% code | html %]
[% END %]
</li>
<li>
<label for="name" class="required">Name:</label>
<input type="text" id="name" name="name" size="60" value="[% letter_name | html %]" required="required" />
<span class="required">Required</span>
</li>
[% IF code and preview_is_available%]
<li>
<label for="name">Data for preview:</label>
[% SWITCH code %]
[% CASE 'CHECKIN' %]
<input type="text" id="data_preview" name="data_preview" value="" placeholder="barcode" />
[% CASE 'CHECKOUT' %]
<input type="text" id="data_preview" name="data_preview" value="" placeholder="barcode|borrowernumber" />
[% CASE 'HOLD_SLIP' %]
<input type="text" id="data_preview" name="data_preview" value="" placeholder="biblionumber|borrowernumber" />
[% CASE %]
Not supported yet.
[% END %]
</li>
[% END %]
</ol>
</fieldset>
[% IF Koha.Preference('TranslateNotices') %]
<div style="clear:both"></div>
<div id="tabs">
<ul>
<li><a href="#lang_default">Default</a></li>
[% FOR language IN languages %]
[% FOR sublanguage IN language.sublanguages_loop %]
[% IF language.plural %]
<li><a href="#lang_[% sublanguage.rfc4646_subtag | uri %]">[% sublanguage.native_description | html %] [% sublanguage.region_description | html %] ([% sublanguage.rfc4646_subtag | html %])</a></li>
[% ELSE %]
<li><a href="#lang_[% sublanguage.rfc4646_subtag | uri %]">[% sublanguage.native_description | html %] ([% sublanguage.rfc4646_subtag | html %])</a></li>
[% END %]
[% END %]
[% END %]
</ul>
[% END %]
[% FOREACH lang IN letters.keys %]
<div id="lang_[% lang | html %]">
<div class="transport-types" style="clear:both">
[% FOR mtt IN letters.$lang.templates.keys.sort %]
[% SET letter = letters.$lang.templates.$mtt %]
<h3>
[% SWITCH letter.message_transport_type %]
[% CASE 'email' %]
Email
[% CASE 'print' %]
Print
[% CASE 'sms' %]
SMS
[% CASE 'feed' %]
Feed
[% CASE 'phone' %]
Phone
[% CASE %]
[% letter.message_transport_type | html %]
[% END %]
</h3>
[% IF letter.message_transport_type == "sms" and not Koha.Preference("SMSSendDriver") %]
<fieldset class="rows mtt" id="[% letter.message_transport_type | html %]_[% lang | html %]" disabled="disabled">
<div class="dialog message">You should enable the SMSSendDriver preference to use the SMS templates.</div>
[% ELSIF letter.message_transport_type == "phone" and not Koha.Preference("TalkingTechItivaPhoneNotification") %]
<fieldset class="rows mtt" id="[% letter.message_transport_type | html %]_[% lang | html %]" disabled="disabled">
<div class="dialog message">You should enable the TalkingTechItivaPhoneNotification preference to use the phone templates.</div>
[% ELSE %]
<fieldset class="rows mtt" id="[% letter.message_transport_type | html %]_[% lang | html %]">
[% END %]
<ol>
<li>
<input type="hidden" name="message_transport_type" value="[% letter.message_transport_type | html %]" />
<input type="hidden" name="lang" value="[% lang | html %]" />
<label for="is_html_[% letter.message_transport_type | html %]_[% lang | html %]">HTML message:</label>
[% IF letter.is_html %]
<input type="checkbox" name="is_html_[% letter.message_transport_type | html %]" id="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" value="1" checked="checked" />
[% ELSE %]
<input type="checkbox" name="is_html_[% letter.message_transport_type | html %]" id="is_html_[% letter.message_transport_type | html %]_[% lang | html %]" value="1" />
[% END %]
</li>
<li>
<label for="title_[% letter.message_transport_type | html %]_[% lang | html %]">Message subject:</label><input type="text" id="title_[% letter.message_transport_type | html %]_[% lang | html %]" name="title" size="60" value="[% letter.title | html %]" />
</li>
<li>
<label for="SQLfieldname_[% letter.message_transport_type | html %]_[% lang | html %]">Message body:</label>
[% IF letter.message_transport_type == 'sms' %]
<span class="sms_counter" id="sms_counter_[% lang | html %]">[% IF letter.content && letter.content.length > 0 %][% letter.content.length | html %][% ELSE %]0[% END %]/160 characters</span>
[% END %]
<table>
<tr>
<td>
<select name="SQLfieldname" id="SQLfieldname_[% letter.message_transport_type | html %]_[% lang | html %]" multiple="multiple" size="9">
[% FOREACH SQLfieldname IN SQLfieldnames %]
<option value="[% SQLfieldname.value | html %]">[% SQLfieldname.text | html %]</option>
[% END %]
</select>
</td>
<td class="actions">
<button type="button" data-containerid="[% letter.message_transport_type | html %]_[% lang | html %]" class="btn btn-default btn-sm insert">Insert <i class="fa fa-long-arrow-right"></i></button>
</td>
<td><textarea name="content" data-lang="[% lang | html %]" class="content_[% letter.message_transport_type | html %]" id="content_[% letter.message_transport_type | html %]_[% lang | html %]" cols="80" rows="15">[% letter.content | html %]</textarea></td>
</tr>
</table>
</li>
[% IF preview_is_available %]
<li>
<a href="/cgi-bin/koha/svc/letters/preview" class="preview_template btn btn-default btn-xs" title="Preview this notice template" data-mtt="[% letter.message_transport_type | html %]" data-lang="[% lang | html %]"><i class="fa fa-eye"></i> Preview</a>
</li>
[% END %]
</ol>
</fieldset>
[% END %]
</div>
</div> <!-- / #transport-types -->
[% END %]
[% IF Koha.Preference('TranslateNotices') %]
</div>
[% END %]
[% IF code.search('DGST') %] <span class="overdue">Warning, this is a template for a Digest, as such, any references to branch data ( e.g. branches.branchname ) will refer to the borrower's home branch.</span> [% END %]
<input type="hidden" id="redirect" name="redirect" value="" />
<input type="hidden" name="searchfield" value="[% searchfield | html %]" />
</form>
[% END %]
[% IF ( add_validate or copy_validate) %]
Data recorded
<form action="[% action | html %]" method="post">
<input type="submit" value="OK" />
</form>
[% END %]
[% IF ( delete_confirm ) %]
<div class="dialog alert">
<h3>Delete notice?</h3>
<table>
<thead>
<tr>
<th>Library</th>
<th>Module</th>
<th>Code</th>
<th>Name</th>
</tr>
</thead>
<tr>
<td>[% IF letter.branchcode %][% Branches.GetName( letter.branchcode ) | html %][% ELSE %](All libraries)[% END %]</td>
<td>[% letter.module | html %]</td>
<td>[% letter.code | html %]</td>
<td>[% letter.name | html %]</td>
</tr>
</table>
<form action="[% action | html %]" method="post">
<input type="hidden" name="op" value="delete_confirmed">
<input type="hidden" name="branchcode" value="[% letter.branchcode | html %]" />
<input type="hidden" name="code" value="[% letter.code | html %]" />
<input type="hidden" name="module" value="[% letter.module | html %]" />
<button type="submit" class="approve"><i class="fa fa-check"></i> Yes, delete</button>
</form>
<form action="[% action | html %]" method="get">
<button type="submit" class="deny"><i class="fa fa-times"></i> No, do not delete</button>
</form>
</div>
[% END %]
[% IF ( delete_confirmed ) %]
Data deleted
<form action="[% action | html %]" method="post">
<input type="submit" value="OK" />
</form>
[% END %]
[% IF add_form or copy_form %]
</div> <!-- /.col-md-8 -->
</div> <!-- /.row -->
[% ELSE %]
</main>
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
[% INCLUDE 'tools-menu.inc' %]
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
[% END %]
[% MACRO jsinclude BLOCK %]
[% Asset.js("js/tools-menu.js") | $raw %]
[% INCLUDE 'datatables.inc' %]
[% INCLUDE 'columns_settings.inc' %]
[% Asset.js("lib/jquery/plugins/jquery.fixFloat.js") | $raw %]
[% Asset.js("lib/jquery/plugins/jquery.insertatcaret.js") | $raw %]
<script>
var no_op_set = '[% no_op_set | html %]';
var interface = '[% interface | html %]';
var theme = '[% theme | html %]';
var add_form = '[% add_form | html %]';
var copy_form = '[% copy_form | html %]';
var code = '[% code | html %]';
var new_lettercode = '[% new_lettercode | html %]';
var new_branchcode = '[% new_branchcode | html %]';
var MSG_CODE_EXISTS = _("A default letter with the code '%s' already exists.");
var MSG_CODE_EXISTS_FOR_LIBRARY = _("A letter with the code '%s' already exists for '%s'.");
var MSG_EMPTY_TITLE_AND_CONTENT = _("Please specify title and content for %s");
var MSG_EMPTY_TEMPLATES = _("Please fill at least one template.");
var MSG_LOADING = _("Loading");
var MSG_NO_NOTICE_FOUND = _("No matching notices found");
var columns_settings = [% ColumnsSettings.GetColumns( 'tools', 'notices', 'lettert', 'json' ) | $raw %];
</script>
[% Asset.js("js/letter.js") | $raw %]
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]