Koha/koha-tmpl/intranet-tmpl/prog/en/modules/tools/viewlog.tt
Aleisha Amohia 7b8939b2ec
Bug 30823: Filling recalls uses 'FILL' action in action logs
This enhancement changes recall fulfillment actions to log with the
FILL action. It will also update existing recalls FULFILL actions in
the database to use the FILL action.

To test:
1) Enable the UseRecalls system preference and set up your
recalls-related circulation rules. Confirm RecallsLog is enabled.
2) Check out an item to Patron B.
3) Log into the OPAC as Patron A and search for the item.
4) Place a recall on that item.
5) Go back to the staff client and check the item in. Confirm the recall
as waiting for Patron A.
6) Check out the item for Patron A to fill the recall.
7) Go to Tools -> Log Viewer. Confirm there is a FULFILL action. Choose
the following search params to browse system logs:
- modules: recalls
- actions: fill
8) Submit the search and confirm the recall DOES NOT show.
9) Apply the patch, update database, restart services.
10) Refresh the log viewer and repeat step 7. Submit the search and
confirm the recall DOES show. Confirm there is no longer a FULFILL
action as both holds and recalls will use FILL.
11) Check in the item.
12) Repeat steps 2-6. We are ensuring that future recalls are logged
using the FILL action.
13) Repeat step 7. Confirm all test recalls are now showing in search
results.

Sponsored-by: Catalyst IT

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2022-07-01 16:09:13 -03:00

486 lines
29 KiB
Text

[% USE raw %]
[% USE Asset %]
[% USE Koha %]
[% USE AuthorisedValues %]
[% USE Branches %]
[% USE KohaDates %]
[% USE TablesSettings %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>
[% IF ( do_it ) %]
Results &rsaquo; [% END %]
Logs &rsaquo; Tools &rsaquo; Koha
</title>
[% INCLUDE 'doc-head-close.inc' %]
[% Asset.css("css/humanmsg.css") | $raw %]
[% FILTER collapse %]
<style>
fieldset.rows label.viewlog {
float: none;
font-weight: normal;
margin: 0;
min-width: 9em;
padding: .5em;
text-align: left;
white-space: nowrap;
width: auto;
}
.log_modules {
display: flex;
flex-wrap: wrap;
}
.compare_info {
background-color: #E6F0F2;
margin: .5em -.5em -.5em -.5em;
padding: .5em;
text-align: right;
}
.modal-dialog {
width : 90%;
}
/* jsdiff styles */
ins {
background-color: #e6ffe6;
}
del {
background-color: #ffe6e6;
}
#col1 ins,
#col2 del {
display: none;
}
pre {
overflow: scroll;
padding: 10px;
}
</style>
[% END %]
</head>
<body id="tools_viewlog" class="tools">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'cat-search.inc' %]
[% BLOCK translate_log_module %]
[% SWITCH module %]
[% CASE 'AUTH' %]<span>Authentication</span>[% UNLESS Koha.Preference('AuthFailureLog') || Koha.Preference('AuthScuccessLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'CATALOGUING' %]<span>Catalog</span>[% UNLESS Koha.Preference('CataloguingLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'AUTHORITIES' %]<span>Authorities</span>[% UNLESS Koha.Preference('AuthoritiesLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'MEMBERS' %]<span>Patrons</span>[% UNLESS Koha.Preference('BorrowersLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'ACQUISITIONS' %]<span>Acquisitions</span>[% UNLESS Koha.Preference('AcquisitionLog') %]<i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'SERIAL' %]<span>Serials</span>[% UNLESS Koha.Preference('SubscriptionLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'HOLDS' %]<span>Holds</span>[% UNLESS Koha.Preference('HoldsLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'ILL' %]<span>Interlibrary loans</span>[% UNLESS Koha.Preference('IllLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'CIRCULATION' %]<span>Circulation</span>[% UNLESS Koha.Preference('IssueLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'CLAIMS' %]<span>Claims</span>[% UNLESS Koha.Preference('ClaimsLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'FINES' %]<span>Fines</span>[% UNLESS Koha.Preference('FinesLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'SYSTEMPREFERENCE' %]<span>System prefs</span>
[% CASE 'CRONJOBS' %]<span>Cron jobs</span>[% UNLESS Koha.Preference('CronjobLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'REPORTS' %]<span>Reports</span>[% UNLESS Koha.Preference('ReportsLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'SEARCHENGINE' %]<span>Search engine</span>
[% CASE 'NOTICES' %]<span>Notices</span>[% UNLESS Koha.Preference('NoticesLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'NEWS' %]<span>News</span>[% UNLESS Koha.Preference('NewsLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE 'RECALLS' %]<span>Recalls</span>[% UNLESS Koha.Preference('RecallsLog') %] <i class="fa fa-warning" title="Log not enabled"></i>[% END %]
[% CASE %][% module | html %]
[% END %]
[% END %]
[% BLOCK translate_log_action %]
[% SWITCH action %]
[% CASE 'ADD' %]<span>Add</span>
[% CASE 'DELETE' %]<span>Delete</span>
[% CASE 'MODIFY' %]<span>Modify</span>
[% CASE 'ISSUE' %]<span>Checkout</span>
[% CASE 'RETURN' %]<span>Return</span>
[% CASE 'CREATE' %]<span>Create</span>
[% CASE 'CANCEL' %]<span>Cancel</span>
[% CASE 'FILL' %]<span>Fill</span>
[% CASE 'RESUME' %]<span>Resume</span>
[% CASE 'SUSPEND' %]<span>Suspend</span>
[% CASE 'RENEW' %]<span>Renew</span>
[% CASE 'RENEWAL' %]<span>Renew</span>
[% CASE 'CHANGE PASS' %]<span>Change password</span>
[% CASE 'ADDCIRCMESSAGE' %]<span>Add circulation message</span>
[% CASE 'DELCIRCMESSAGE' %]<span>Delete circulation message</span>
[% CASE 'STATUS_CHANGE' %]<span>Change ILL request status</span>
[% CASE 'PATRON_NOTICE' %]<span>ILL notice sent to patron</span>
[% CASE 'ADD_BASKET' %]<span>Create an acquisitions basket</span>
[% CASE 'MODIFY_BASKET' %]<span>Modify an acquisitions basket</span>
[% CASE 'MODIFY_BASKET_HEADER' %]<span>Modify an acquisitions basket header</span>
[% CASE 'MODIFY_BASKET_USERS' %]<span>Modify an acquisitions basket's users</span>
[% CASE 'CLOSE_BASKET' %]<span>Close an acquisitions basket</span>
[% CASE 'APPROVE_BASKET' %]<span>Approve an acquisitions basket</span>
[% CASE 'REOPEN_BASKET' %]<span>Reopen an acquisitions basket</span>
[% CASE 'CANCEL_ORDER' %]<span>Cancel an order</span>
[% CASE 'CREATE_ORDER' %]<span>Create an order</span>
[% CASE 'MODIFY_ORDER' %]<span>Modify an order</span>
[% CASE 'CREATE_INVOICE_ADJUSTMENT' %]<span>Create an invoice adjustment</span>
[% CASE 'UPDATE_INVOICE_ADJUSTMENT' %]<span>Modify an invoice adjustment</span>
[% CASE 'DELETE_INVOICE_ADJUSTMENT' %]<span>Delete an invoice adjustment</span>
[% CASE 'RECEIVE_ORDER' %]<span>Receive an order</span>
[% CASE 'MODIFY_BUDGET' %]<span>Modify a budget</span>
[% CASE 'CREATE_FUND' %]<span>Create a fund</span>
[% CASE 'MODIFY_FUND' %]<span>Modify a fund</span>
[% CASE 'DELETE_FUND' %]<span>Delete a fund</span>
[% CASE 'Run' %]<span>Run</span>
[% CASE 'EDIT_MAPPINGS' %]<span>Edit mappings</span>
[% CASE 'RESET_MAPPINGS' %]<span>Reset mappings</span>
[% CASE 'SERIAL CLAIM' %]<span>Serial claim</span>
[% CASE 'ACQUISITION CLAIM' %]<span>Acquisition claim</span>
[% CASE 'ACQUISITION ORDER' %]<span>Acquisition order</span>
[% CASE 'OVERDUE' %]<span>Overdue</span>
[% CASE 'EXPIRE' %]<span>Expire</span>
[% CASE %][% action | html %]
[% END %]
[% END %]
[% BLOCK translate_log_interface %]
[% SWITCH log_interface.upper %]
[% CASE 'INTRANET' %]<span>Intranet</span>
[% CASE 'OPAC' %]<span>OPAC</span>
[% CASE 'SIP' %]<span>SIP</span>
[% CASE 'COMMANDLINE' %]<span>Command-line</span>
[% CASE 'API' %]<span>REST API</span>
[% CASE 'CRON' %]<span>Cron job</span>
[% CASE 'UPGRADE' %]<span>Upgrade</span>
[% CASE %]<span>[% log_interface | html %]</span>
[% END %]
[% END %]
<nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
<ol>
<li>
<a href="/cgi-bin/koha/mainpage.pl">Home</a>
</li>
<li>
<a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a>
</li>
[% IF ( do_it ) %]
<li>
<a href="/cgi-bin/koha/tools/viewlog.pl">Logs</a>
</li>
<li>
<a href="#" aria-current="page">
Results
</a>
</li>
[% ELSE %]
<li>
<a href="#" aria-current="page">
Logs
</a>
</li>
[% END %]
</ol>
</nav>
<div class="main container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-push-2">
<main>
<h1>Browse system logs</h1>
<form method="post" action="/cgi-bin/koha/tools/viewlog.pl">
[% IF ( do_it ) %]
<input type="hidden" name="do_it" value="[% do_it | html %]" />
[% END %]
<input type="hidden" name="src" value="[% src | html %]" />
<fieldset class="rows">
<ol>
<li>
<label for="user">Librarian:</label>
<input type="text" name="user" id="user" value="[% user | html %]" />
</li>
[% UNLESS src == "circ" %]
<li>
<label>Modules:</label>
<div class="log_modules">
[% IF modules.size == 0 %]
<label for="moduleALL" class="viewlog"><input type="checkbox" id="moduleALL" name="modules" value="" checked="checked"> All</label>
[% ELSE %]
<label for="moduleALL" class="viewlog"><input type="checkbox" id="moduleALL" name="modules" value=""> All</label>
[% END %]
[% FOREACH modx IN [ 'AUTH' 'CATALOGUING' 'AUTHORITIES' 'MEMBERS' 'ACQUISITIONS' 'SERIAL' 'HOLDS' 'ILL' 'CIRCULATION' 'CLAIMS' 'FINES' 'SYSTEMPREFERENCE' 'CRONJOBS', 'REPORTS', 'SEARCHENGINE', 'NOTICES', 'NEWS', 'RECALLS' ] %]
[% IF modules.grep(modx).size %]
<label for="module[% modx | html %]" class="viewlog"><input type="checkbox" id="module[% modx | html %]" name="modules" value="[% modx | html %]" checked="checked"> [% PROCESS translate_log_module module=modx %]</label>
[% ELSE %]
<label for="module[% modx | html %]" class="viewlog"><input type="checkbox" id="module[% modx | html %]" name="modules" value="[% modx | html %]"> [% PROCESS translate_log_module module=modx %]</label>
[% END %]
[% END %]
</div>
</li>
[% ELSE %]
<input type="hidden" name="modules" value="MEMBERS" />
<input type="hidden" name="modules" value="CIRCULATION" />
[% END %]
<li>
<label>Actions:</label>
<div class="log_modules">
[% IF actions.length == 0 %]
<label for="actionALL" class="viewlog"><input type="checkbox" id="actionALL" name="actions" value="" checked="checked"> All</label>
[% ELSE %]
<label for="actionALL" class="viewlog"><input type="checkbox" id="actionALL" name="actions" value=""> All</label>
[% END %]
[% FOREACH actx IN [ 'ADD' 'DELETE' 'MODIFY' 'ISSUE' 'RETURN' 'RENEW' 'CREATE' 'CANCEL' 'FILL' 'SUSPEND' 'RESUME' 'ADDCIRCMESSAGE' 'DELCIRCMESSAGE' 'STATUS_CHANGE' 'PATRON_NOTICE' 'CHANGE PASS' 'Run' 'EDIT_MAPPINGS' 'RESET_MAPPINGS' 'ADD_BASKET' 'MODIFY_BASKET' 'MODIFY_BASKET_HEADER' 'MODIFY_BASKET_USERS' 'CLOSE_BASKET' 'APPROVE_BASKET' 'REOPEN_BASKET' 'CANCEL_ORDER' 'CREATE_ORDER' 'MODIFY_ORDER' 'CREATE_INVOICE_ADJUSTMENT' 'UPDATE_INVOICE_ADJUSTMENT' 'DELETE_INVOICE_ADJUSTMENT' 'RECEIVE_ORDER' 'MODIFY_BUDGET' 'MODIFY_FUND' 'CREATE_FUND' 'DELETE_FUND' 'OVERDUE' 'EXPIRE' ] %]
[% IF actions.grep(actx).size %]
<label for="action[% actx| replace('\s+', '_') | html %]" class="viewlog"><input type="checkbox" id="action[% actx | replace('\s+', '_') | html %]" name="actions" value="[% actx | html %]" checked="checked"> [% PROCESS translate_log_action action=actx %]</label>
[% ELSE %]
<label for="action[% actx| replace('\s+', '_') | html %]" class="viewlog"><input type="checkbox" id="action[% actx | replace('\s+', '_') | html %]" name="actions" value="[% actx | html %]"> [% PROCESS translate_log_action action=actx %]</label>
[% END %]
[% END %]
</div>
</li>
<li>
[% IF src == 'circ' %]
<label for="object">Borrowernumber: </label>
<input type="text" id="object" name="object" value="[% object | html %]" readonly="readonly" title="This field cannot be modified from the circulation module." />
[% ELSE %]
<label for="object">Object: </label>
<input type="text" id="object" name="object" value="[% object | html %]" />
[% END %]
</li>
<li>
<label for="info">Info:</label>
<input type="text" id="info" name="info" value="[% info | html %]" />
</li>
<li>
<label>Interface:</label>
[% IF interfaces.size == 0 %]
<label for="interfaceALL" class="viewlog"><input type="checkbox" id="interfaceALL" name="interfaces" value="" checked="checked"> All</label>
[% ELSE %]
<label for="interfaceALL" class="viewlog"><input type="checkbox" id="interfaceALL" name="interfaces" value=""> All</label>
[% END %]
[% FOREACH interf IN [ 'INTRANET' 'OPAC' 'SIP' 'COMMANDLINE' 'API' 'CRON' ] %]
[% IF interfaces.grep(interf).size %]
<label for="interface[% interf | html %]" class="viewlog"><input type="checkbox" id="interface[% interf | html %]" name="interfaces" value="[% interf | html %]" checked="checked"> [% PROCESS translate_log_interface log_interface=interf %]</label>
[% ELSE %]
<label for="interface[% interf | html %]" class="viewlog"><input type="checkbox" id="interface[% interf | html %]" name="interfaces" value="[% interf | html %]"> [% PROCESS translate_log_interface log_interface=interf %]</label>
[% END %]
[% END %]
</li>
<li>
<label for="from"> Display from: </label> <input type="text" size="10" id="from" name="from" value="[% datefrom | html %]" class="flatpickr" data-date_to="to" />
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
<li>
<label for="to">Display to: </label> <input size="10" id="to" name="to" type="text" value="[% dateto | html %]" class="flatpickr" />
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
</ol>
</fieldset>
<fieldset class="rows">
<legend>Output</legend>
<ol>
<li>
<label for="screen" >To screen in the browser:</label> <input id="screen" type="radio" checked="checked" name="output" value="screen" />
</li>
<li>
<label for="file">To a file:</label>
<input id="file" type="radio" name="output" value="file" />
<label class="inline" for="basename">Named:</label>
<input type="text" name="basename" id="basename" value="Export" />
<!--
<label for="MIME" class="inline">Into an application:</label>
[% CGIextChoice | html %]
[% CGIsepChoice | html %]
-->
<input type="hidden" name="report_name" value="[% report_name | html %]" />
</li>
</ol>
</fieldset>
<fieldset class="action">
<input type="submit" value="Submit" />
<input type="hidden" name="do_it" value="1" />
</fieldset>
</form>
[% IF ( do_it ) %]
[% IF ( total ) %]
<h3>Log entries</h3>
<div id="toolbar" class="btn-toolbar">
<a href="#" id="select_none" class="btn btn-link disabled"><i class="fa fa-remove"></i> Check none</a>
<button class="btn btn-link disabled compare_link"><i class="fa fa-columns"></i> Compare selected</button>
</div>
<table id="logst">
<thead>
<tr>
<th>Date</th>
<th>Librarian</th>
<th>Module</th>
<th>Action</th>
<th>Object</th>
<th>Info</th>
<th>Interface</th>
</tr>
</thead>
<tbody>
[% FOREACH loopro IN looprow %]
<tr>
<td data-order="[% loopro.timestamp | html %]">[% loopro.timestamp | $KohaDates with_hours=1 %]</td>
<td>
[% IF loopro.librarian %]
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% loopro.librarian.borrowernumber | uri %]" title="display detail for this librarian."> [% IF ( loopro.librarian.firstname ) || ( loopro.librarian.surname ) %][% loopro.librarian.firstname | html %] [% loopro.librarian.surname | html %] ([% loopro.librarian.borrowernumber | html %]) [% ELSE %][% loopro.librarian.borrowernumber | html %][% END %]</a>
[% ELSE %]
[% loopro.user | html %]
[% END %]
</td>
<td>[% PROCESS translate_log_module module=loopro.module %]</td>
<td>[% PROCESS translate_log_action action=loopro.action %]</td>
<td>
[% IF ( loopro.module == 'MEMBERS' ) || ( loopro.module == 'CIRCULATION' ) || ( loopro.module == 'FINES' ) %]
[% IF loopro.patron %]
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% loopro.object | uri %]" title="Display member details."> [% IF ( loopro.object ) %][% IF ( loopro.patron.firstname ) || ( loopro.patron.surname ) %][% loopro.patron.firstname | html %] [% loopro.patron.surname | html %] ([% loopro.object | html %]) [% ELSE %]<span>Member</span> [% loopro.object | html %][% END %][% END %] </a>
[% ELSE %]
[% loopro.object | html %]
[% END %]
[% ELSIF ( loopro.module == 'CATALOGUING' ) %]
[% IF ( loopro.info.substr(0, 4) == 'item' ) %]
<a href="/cgi-bin/koha/catalogue/moredetail.pl?item=[% loopro.object | uri %]&amp;biblionumber=[% loopro.biblionumber | uri %]&amp;bi=[% loopro.biblioitemnumber | uri %]#item[% loopro.object | uri %]">Item [% loopro.object | html %]</a> from
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loopro.biblionumber | uri %]" title="Display detail for this biblio">Biblio [% loopro.biblionumber | html %]</a>
[% ELSIF ( loopro.info.substr(0, 6) == 'biblio' ) %]
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loopro.object | uri %]" title="Display detail for this biblio">Biblio [% loopro.object | html %]</a>
[% ELSE %]
[% loopro.object | html %]
[% END %]
[% ELSIF ( loopro.module == 'SERIAL' ) %]
<a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% loopro.object | uri %]">Subscription [% loopro.object | html %] </a>
[% ELSIF ( loopro.module == 'AUTHORITIES' ) %]
<a href="/cgi-bin/koha/authorities/detail.pl?authid=[% loopro.object | uri %]" title="Display detail for this authority">Authority [% loopro.object | html %]</a>
[% ELSIF ( loopro.module == 'NOTICES' ) %]
[% IF ( loopro.notice ) %]
<a href="/cgi-bin/koha/tools/letter.pl?op=add_form&branchcode=[% loopro.notice.branchcode | uri %]&module=[% loopro.notice.module | uri %]&code=[% loopro.notice.code | uri %]#lang_[% loopro.notice.lang | uri %]">Notice [% loopro.notice.title | html %] ([% loopro.notice.code | html %])</a>
[% ELSE %]
[% loopro.object | html %]
[% END %]
[% ELSIF ( loopro.module == 'RECALLS' ) %]
[% IF loopro.recall.item_level %]
Item-level recall on <a href="/cgi-bin/koha/catalogue/moredetail.pl?item=[% loopro.recall.item_id | uri %]&amp;biblionumber=[% loopro.recall.biblio_id | uri %]&amp;bi=[% loopro.recall.item.biblioitemnumber | uri %]">item</a>
[% ELSE %]
Biblio-level recall on <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loopro.recall.biblio_id | uri %]">biblio</a>
[% END %]
[% ELSE %]
[% loopro.object | html %]
[% END %]
</td>
<td>
[% IF ( loopro.module == 'CIRCULATION' ) %]
<a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% loopro.info | uri %]&amp;biblionumber=[% loopro.biblionumber | uri %]&amp;bi=[% loopro.biblioitemnumber | uri %]#item[% loopro.info | uri %]" title="Display detail for this item">Item [% loopro.barcode | html %]</a>
[% ELSE %]
[% IF loopro.module == "SYSTEMPREFERENCE" || loopro.module == "REPORTS" || loopro.module == "NEWS" %]
<div class="loginfo" id="loginfo[% loopro.action_id | html %]">[% loopro.info | trim | html %]</div>
<div class="compare_info" id="compare_info[% loopro.action_id | html %]">
<label><input type="checkbox" name="diff" id="action_id[% loopro.action_id | html %]" data-actionid="[% loopro.action_id | html %]" data-filter="[% FOREACH info IN loopro.info.split(' \| ') %][% IF loop.first %][% info | html %][% END %][% END %]" class="compare" /> Compare</label>
</div>
[% ELSIF loopro.module == "NOTICES" %]
<div class="loginfo" id="loginfo[% loopro.action_id | html %]">[% loopro.info | trim | html %]</div>
<div class="compare_info" id="compare_info[% loopro.action_id | html %]">
<label><input type="checkbox" name="diff" id="action_id[% loopro.action_id | html %]" data-actionid="[% loopro.action_id | html %]" data-filter="[% IF loopro.notice %][% loopro.notice.title | html %][% ELSE %][% loopro.object | html %][% END %]" class="compare" /> Compare</label>
</div>
[% ELSE %]
<div class="loginfo" id="loginfo[% loopro.action_id | html %]">
[% loopro.info | html %]
</div>
[% END %]
[% END %]
</td>
<td>[% PROCESS translate_log_interface log_interface=loopro.interface %]</td>
</tr>
[% END %]
</tbody>
</table>
[% ELSE %]
<div class="dialog alert">
No log found
[% IF ( CATALOGUING ) %]
for <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% object | url %]">Bibliographic record [% object | html %]</a>
[% END %]
[% IF ( MEMBERS ) %]
for <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% object | url %]">[% INCLUDE 'patron-title.inc' %]</a>
[% END %]
.
</div>
[% END %]
[% END %]
</main>
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
[% IF ( circulation ) %]
[% INCLUDE 'circ-menu.inc' %]
[% ELSE %]
[% IF ( CATALOGUING ) %]
[% INCLUDE 'biblio-view-menu.inc' %]
[% ELSE %]
[% INCLUDE 'tools-menu.inc' %]
[% END %]
[% END %]
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
<div class="modal" id="compareInfo" tabindex="-1" role="dialog" aria-labelledby="compareInfoLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="compareInfoLabel">Compare preference values</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="compare_pane col-sm-6" id="col1">
<h5>Older version</h5>
<pre></pre>
</div>
<div class="compare_pane col-sm-6" id="col2">
<h5>Newer version</h5>
<pre></pre>
</div>
</div>
</div> <!-- /.modal-body -->
<div class="modal-footer">
<button type="button" class="btn btn-default deny" data-dismiss="modal">Close</button>
</div>
</div> <!-- /.modal-content -->
</div> <!-- /.modal-dialog -->
</div> <!-- /#compareInfo -->
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'calendar.inc' %]
[% INCLUDE 'datatables.inc' %]
[% INCLUDE 'columns_settings.inc' %]
[% Asset.js("lib/jquery/plugins/humanmsg.js") | $raw %]
[% Asset.js("js/tools-menu.js") | $raw %]
[% Asset.js("lib/hc-sticky.js") | $raw %]
[% IF ( circulation ) %]
[% INCLUDE 'str/members-menu.inc' %]
[% Asset.js("js/members-menu.js") | $raw %]
[% END %]
[% Asset.js("lib/jsdiff/jsdiff.min.js") | $raw %]
<script>
var table_settings = [% TablesSettings.GetTableSettings('tools', 'logviewer', 'logst', 'json') | $raw %];
</script>
[% Asset.js("js/viewlog.js") | $raw %]
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]