Bug 23197: Add more batch operation options to SQL report results
[koha-equinox.git] / koha-tmpl / intranet-tmpl / prog / en / modules / reports / guided_reports_start.tt
index 1655d92..ba2dc6d 100644 (file)
@@ -1,4 +1,10 @@
+[% USE raw %]
+[% USE Asset %]
 [% USE KohaDates %]
+[% USE Koha %]
+[% USE ColumnsSettings %]
+[% USE JSON.Escape %]
+[% SET footerjs = 1 %]
 
 [%- BLOCK area_name -%]
     [%- SWITCH area -%]
@@ -16,7 +22,7 @@
 <title>Koha &rsaquo; Reports &rsaquo; Guided reports wizard [%- IF ( saved1 ) -%]&rsaquo; Saved reports
 [%- ELSIF ( create ) -%]&rsaquo; Create from SQL
 [%- ELSIF ( showsql ) -%]&rsaquo; Saved reports &rsaquo; SQL view
-[%- ELSIF ( execute ) -%]&rsaquo; Saved reports &rsaquo; [% name %] Report
+[%- ELSIF ( execute ) -%]&rsaquo; Saved reports &rsaquo; [% name | html %] Report
 [%- ELSIF ( editsql ) -%]&rsaquo; Saved reports &rsaquo; Edit SQL report
 [%- END -%]
 [%- IF ( build1 ) -%]&rsaquo; Build a report, step 1 of 6: Choose a module
 [%- END -%]</title>
 
 [% INCLUDE 'doc-head-close.inc' %]
-[% INCLUDE 'calendar.inc' %]
-<style type="text/css">
-    #sql { width: 90%; height: 9em;}
-</style>
-[% IF ( saved1 ) %]
-<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
-[% INCLUDE 'datatables.inc' %]
-[% END %]
-
-<script type="text/javascript">
-//<![CDATA[
-var group_subgroups = {};
-[% FOREACH group IN groups_with_subgroups %]
-    var gid = "[% group.id %]"
-    group_subgroups[gid] = new Array();
-    [% FOREACH subgroup IN group.subgroups %]
-        var sgid = "[% subgroup.id %]";
-        var sgname = "[% subgroup.name %]";
-        group_subgroups[gid].push([sgid, sgname]);
-    [% END %]
-[% END %]
-
-function load_group_subgroups () {
-    var group = $("#group_select").val();
-    var sg = $("#subgroup");
-    $(sg).find('option[value!=""]').each(function() {
-        $(this).remove();
-    });
-    $(sg).hide();
-    if (group) {
-        var select = $(sg).find('select')[0];
-        $.each( group_subgroups[group], function(index, value) {
-            $('<option value="' + value[0] + '">' + value[1] + '</option>').appendTo(select);
-        } );
-        $("#subgroup, #subgroup *").show();
-    }
+[% Asset.css("lib/codemirror/codemirror.css") | $raw %]
+<style>
+.CodeMirror {
+    resize:  vertical;
 }
-
-$(document).ready(function(){
-
-[% IF (saved1) %]
-    var rtable = $("#table_reports").dataTable($.extend(true, {}, dataTablesDefaults, {
-        'bAutoWidth': false,
-        'sDom': 't<"bottom pager"ilpf>',
-        'sPaginationType': 'four_button',
-        'aaSorting': [[ 1, "asc" ]],
-        'aoColumnDefs': [
-            { 'bSortable': false, 'bSearchable':false, 'aTargets': [0, -1] },
-            { 'bSearchable': false, 'aTargets': [3] },
-            { "aTargets": [ 1, 2 ], "sType": "natural"  }
-        ],
-        "aoColumns": [
-            null,null,null,null,null,null,null,null,{ "sType": "title-string" },null,[% IF (usecache) %]null,[% END %]null,null
-        ],
-        'oLanguage': {
-            'sZeroRecords': _("No matching reports found")
-        }
-    }));
-
-    var rtabs = $("#tabs").tabs();
-    rtabs.on("tabsactivate", function(e, ui) {
-        $("#subgroup_filter option").each(function() {
-            if($(this).val().length > 0) {
-                $(this).remove();
-            }
-        });
-        rtable.fnFilter('', 4);
-        rtable.fnFilter('', 5);
-        rtable.fnSetColumnVis(4, true);
-        rtable.fnSetColumnVis(5, true);
-
-        var g_id = $(ui.newTab).children().attr('id');
-        var g_name = $(ui.newTab).text();
-        if ( g_name == _("All") ) {
-            g_id = "";
-            g_name = "";
-        }
-
-        if (g_id && g_id.length > 0) {
-            rtable.fnFilter('^' + g_name + '$', 4, true, true, true, false);
-            rtable.fnSetColumnVis(4, false);
-            for(var i in group_subgroups[g_id]) {
-                $("#subgroup_filter").append(
-                    '<option value="' + group_subgroups[g_id][i][0] + '">'
-                    + group_subgroups[g_id][i][1] + '</option>'
-                );
-            }
-            $("#subgroup_filter_block").show();
-        } else {
-            $("#subgroup_filter_block").hide();
-        }
-    });
-    $("#subgroup_filter_block").hide();
-
-    $("#subgroup_filter").change(function() {
-        var selected = $(this).find('option:selected');
-        var sg_id = $(selected).val();
-        var sg_name = $(selected).text();
-        if (sg_id.length > 0) {
-            rtable.fnFilter('^' + sg_name + '$', 5, true, true, true, false);
-            rtable.fnSetColumnVis(5, false);
-        } else {
-            rtable.fnFilter('', 5);
-            rtable.fnSetColumnVis(5, true);
-        }
-    });
-
-    $("#reports_form").submit(function(){
-        var checkedItems = $("input[name=ids]:checked");
-        if ($(checkedItems).size() == 0) {
-            alert(_("You must select one or more reports to delete"));
-            return false;
-        }
-        $(checkedItems).parents('tr').addClass("warn");
-        if( confirm(_("Are you sure you want to delete the selected reports?")) ) {
-            return true;
-        } else {
-            $(checkedItems).parents('tr').removeClass("warn");
-            return false;
-        }
-    });
-[% END %]
-
-[% IF ( showsql ) %]
-    $("#sql").focus(function() {
-        $(this).select();
-    });
-[% END %]
-
-    $("#table_reports").delegate(".confirmdelete", 'click', function(){
-        $(this).parents('tr').attr("class","warn");
-        if(confirm(_("Are you sure you want to delete this saved report?"))){
-            return true;
-        } else {
-            $(this).parents('tr').attr("class","");
-            return false;
-        }
-    });
-
-[% IF (create || editsql || save) %]
-    $("#select_group").change(function() {
-        if($(this).attr('checked')) {
-            $("#group_input").attr('disabled', 'disabled');
-            $("#groupdesc_input").attr('disabled', 'disabled');
-            $("#group_select").attr('disabled', false);
-            if ($("#group_select").val().length > 0) {
-                $("#select_subgroup").attr('checked', 'checked');
-                $("#select_subgroup").change();
-                $("#subgroup, #subgroup *").show();
-            } else {
-                $("#subgroup").hide();
-            }
-        }
-    });
-    $("#create_group").change(function() {
-        if($(this).attr('checked')) {
-            $("#group_input").attr('disabled', false);
-            $("#groupdesc_input").attr('disabled', false);
-            $("#group_select").attr('disabled', 'disabled');
-            $("#create_subgroup").attr('checked', 'checked').change();
-            $("#subgroup_select").hide();
-            $("#subgroup input[type='radio']").hide();
-            $("#subgroup label[for]").hide();
-            $("#subgroup_input").show();
-            $("#subgroupdesc_input").show();
-            $("#subgroup").show();
-        }
-    });
-    $("#select_subgroup").change(function() {
-        if($(this).attr('checked')) {
-            $("#subgroup_select").attr('disabled', false);
-            $("#subgroup_input").attr('disabled', 'disabled');
-            $("#subgroupdesc_input").attr('disabled', 'disabled');
-        }
-    });
-    $("#create_subgroup").change(function() {
-        if($(this).attr('checked')) {
-            $("#subgroup_input").attr('disabled', false);
-            $("#subgroupdesc_input").attr('disabled', false);
-            $("#subgroup_select").attr('disabled', 'disabled');
-        }
-    });
-    $("#select_group").change();
-    $("#select_subgroup").change();
-[% END %]
-});
-//]]>
-</script>
+#mana_search_errortext { font-family: monospace; font-weight: bold; }
+</style>
+[% Asset.css("css/reports.css") | $raw %]
+[% Asset.css("lib/d3c3/c3.min.css") | $raw %]
 </head>
+
 <body id="rep_guided_reports_start" class="rep">
 [% INCLUDE 'header.inc' %]
 [% INCLUDE 'circ-search.inc' %]
@@ -229,7 +57,7 @@ $(document).ready(function(){
 [% ELSIF ( create ) %]&rsaquo; Create from SQL
 [% ELSIF ( showsql ) %]&rsaquo; <a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved">Saved reports</a> &rsaquo; SQL view
 [% ELSIF ( editsql ) %]&rsaquo; <a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved">Saved reports</a> &rsaquo; Edit SQL report
-[% ELSIF ( execute ) %]&rsaquo; <a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved">Saved reports</a> &rsaquo; <em>[% name %]</em> Report
+[% ELSIF ( execute ) %]&rsaquo; <a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved">Saved reports</a> &rsaquo; <em>[% name | html %]</em> Report
 [% ELSIF ( build1 || build2 || build3 || build4 || build5 || build6 ) %]&rsaquo; <a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Build%20new">Build a report</a>
     [% IF ( build1 ) %]&rsaquo; Step 1 of 6: Choose a module
     [% ELSIF ( build2 ) %]&rsaquo; Step 2 of 6: Pick a report type
@@ -241,10 +69,29 @@ $(document).ready(function(){
 [% END %]
 </div>
 
-<div id="doc3" class="yui-t1">
-<div id="bd">
-<div id="yui-main">
-    <div class="yui-b">
+<div id="update_sql" class="modal" tabindex="-1" role="dialog" aria-labelledby="update_sql_label" aria-hidden="true">
+    <div class="modal-dialog">
+    <div class="modal-content">
+    <div class="modal-header">
+        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
+        <h3 id="update_sql_label">Update SQL</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">
+        <a href="#" class="btn btn-default" id="update_sql_button" role="button" data-toggle="modal">Update</a>
+        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
+    </div>
+    </div>
+    </div>
+</div>
+
+<div class="main container-fluid">
+    <div class="row">
+        <div class="col-sm-10 col-sm-push-2">
+            <main>
+
     [% INCLUDE "reports-toolbar.inc" %]
 
 [% IF ( start ) %]
@@ -280,14 +127,44 @@ canned reports and writing custom SQL reports.</p>
 </form>
 [% END %]
 
+[% IF report_converted %]
+    <div class="dialog message">
+        The report "[% report_converted | html %]" has been converted.
+    </div>
+[% END %]
+
+[% IF report_converted %]
+    <div class="dialog message">
+        The report "[% report_converted | html %]" has been converted.
+    </div>
+[% END %]
+
+
 [% IF ( saved1 ) %]
 [% IF ( savedreports ) %]<h1>Saved reports</h1>
 
+[% IF ( filters.date || filters.author || filters.keyword ) %]
+    <p>Filtered by:
+        <span class="filter">
+            [% IF ( filters.date ) %]
+                <span class="filter_date"><strong>Date:</strong> [% filters.date | html %]</span>
+            [% END %]
+            [% IF ( filters.author ) %]
+                <span class="filter_author"><strong>Author:</strong> [% filters.author | html %]</span>
+            [% END %]
+            [% IF ( filters.keyword ) %]
+                <span class="filter_keyword"><strong>Keyword:</strong> [% filters.keyword | html %]</span>
+            [% END %]
+            <a class="clear_filter" href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved&clear_filters=1"><i class="fa fa-remove"></i> Clear</a>
+        </span>
+    </p>
+[% END %]
+
 <div id="tabs" class="toptabs">
     <ul>
         <li><a href="#reports">All</a></li>
         [% FOREACH group IN groups_with_subgroups %]
-            <li><a id="[% group.id %]" href="#reports">[% group.name %]</a></li>
+            <li><a id="[% group.id | html %]" href="#reports">[% group.name | html %]</a></li>
         [% END %]
     </ul>
     <div id="reports">
@@ -297,6 +174,15 @@ canned reports and writing custom SQL reports.</p>
                 <option value="">All</option>
             </select>
         </div>
+
+        [% IF (Koha.Preference('Mana') == 1) %]
+            [% IF manamsg %]
+                <div id="mana_search_message" class="dialog message">
+                    <p> [% manamsg | html %] </p>
+                </div>
+            [% END %]
+        [% END %]
+
 <form action="/cgi-bin/koha/reports/guided_reports.pl" id="reports_form" method="post">
 <input type="hidden" name="phase" value="Delete Multiple" />
         <table id="table_reports">
@@ -310,65 +196,113 @@ canned reports and writing custom SQL reports.</p>
                     <th>Subgroup</th>
                     <th>Notes</th>
                     <th>Author</th>
-                    <th>Creation date</th>
-                    <th>Public</th>
-                    [% IF (usecache) %] <th>Cache expiry (seconds)</th> [% END %]
+                    <th class="title-string">Creation date</th>
+                    <th class="title-string">Last edit</th>
+                    <th class="title-string">Last run</th>
+                    <th class="report_public">Public</th>
+                    <th class="report_json_url">JSON URL</th>
+                    [% IF (usecache) %]
+                        <th>Cache expiry (seconds)</th>
+                    [% ELSE %]
+                        <th class="hidden">&nbsp;</th>
+                    [% END %]
                     <th>Saved results</th>
-                    <th>&nbsp;</th>
+                    [% IF has_obsolete_reports %]
+                        <th>Update</th>
+                    [% ELSE %]
+                        <th class="hidden">&nbsp;</th>
+                    [% END %]
+                    <th>Actions</th>
                 </tr>
             </thead>
             <tbody>
                 [% FOREACH savedreport IN savedreports %]
                     [% UNLESS ( loop.odd ) %]<tr class="odd">[% ELSE %]<tr>[% END %]
-                        <td><input type="checkbox" name="ids" value="[% savedreport.id %]" /></td>
-                        <td><label for="ids">[% savedreport.id %]</label></td>
-                        <td>
+                        <td class="report_checkbox">
+                            [% IF ( CAN_user_reports_delete_reports ) %] <!-- not break CSS -->
+                                <input type="checkbox" name="ids" value="[% savedreport.id | html %]" />
+                            [% END %]
+                            <input type="hidden" class="report_sql" value="[% savedreport.savedsql |html %]">
+                        </td>
+                        <td class="report_id"><label for="ids">[% savedreport.id | html %]</label></td>
+                        <td class="report_name">
                             [% IF ( savedreport.report_name ) %]
-                                [% savedreport.report_name %]
+                                [% savedreport.report_name | html %]
                             [% ELSE %]
                                 [ no name ]
                             [% END %]
                         </td>
-                        <td>[% savedreport.type %]</td>
-                        <td>[% savedreport.groupname %]</td>
-                        <td>[% savedreport.subgroupname %]</td>
-                        <td>[% savedreport.notes %]</td>
-                        <td>[% savedreport.borrowersurname %][% IF ( savedreport.borrowerfirstname ) %], [% savedreport.borrowerfirstname %][% END %] ([% savedreport.borrowernumber %])</td>
-                        <td><span title="[% savedreport.date_created %]">[% savedreport.date_created | $KohaDates %]</span></td>
+                        <td class="report_type">[% savedreport.type | html %]</td>
+                        <td class="report_group">[% savedreport.groupname | html %]</td>
+                        <td>[% savedreport.subgroupname | html %]</td>
+                        <td class="report_notes">[% savedreport.notes | html %]</td>
+                        <td>[% savedreport.borrowersurname | html %][% IF ( savedreport.borrowerfirstname ) %], [% savedreport.borrowerfirstname | html %][% END %] ([% savedreport.borrowernumber | html %])</td>
+                        <td><span title="[% savedreport.date_created | html %]">[% savedreport.date_created | $KohaDates %]</span></td>
+                        <td><span title="[% savedreport.last_modified | html %]">[% savedreport.last_modified | $KohaDates  with_hours => 1 %]</span></td>
+                        <td><span title="[% savedreport.last_run | html %]">[% savedreport.last_run | $KohaDates  with_hours => 1 %]</span></td>
+                        <td class="report_public">
                         [% IF (savedreport.public) %]
-                        <td>Yes</td>
+                            Yes
                         [% ELSE %]
-                        <td>No</td>
+                            No
                         [% END %]
-                        [% IF (usecache) %] <td>[% savedreport.cache_expiry %]</td> [% END %]
-                        <td>[% IF ( savedreport.date_run ) %]<a href="/cgi-bin/koha/reports/guided_reports.pl?phase=retrieve%20results&amp;id=[% savedreport.id %]">[% savedreport.date_run %]</a>[% END %]
+                        </td>
+                        <td class="report_json_url">
+                        [% IF (savedreport.public) %]
+                            <a href="[% OPACBaseURL | url %]/cgi-bin/koha/svc/report?id=[% savedreport.id | uri %]">[% OPACBaseURL | html %]/cgi-bin/koha/svc/report?id=[% savedreport.id | html %]</a>
+                        [% ELSE %]
+                            <a href="/cgi-bin/koha/svc/report?id=[% savedreport.id | uri %]">[% Koha.Preference('staffClientBaseURL') | html %]/cgi-bin/koha/svc/report?id=[% savedreport.id | html %]</a>
+                        [% END %]
+                        </td>
+                        <td>[% savedreport.cache_expiry | html %]</td>
+                        <td>
+                            [% FOR result IN savedreport.results %]
+                                <a href="/cgi-bin/koha/reports/guided_reports.pl?phase=retrieve%20results&amp;id=[% result.id | uri %]">[% result.date_run | html %]</a>
+                                <br/>
+                            [% END %]
+                        </td>
+                        <td>
+                            [% IF savedreport.seems_obsolete %]
+                                This report seems obsolete, it uses biblioitems.marcxml field.
+                                <a href="/cgi-bin/koha/svc/convert_report?report_id=[% savedreport.id | uri %]" data-report_id="[% savedreport.id | html %]" class="update_sql btn btn-default btn-xs" title="Update SQL"><i class="fa fa-eye"></i> Update SQL</a>
+                            [% END %]
                         </td>
                         <td>
-                            <div class="dropdown">
-                                <a class="btn btn-mini dropdown-toggle" id="reportactions[% savedreport.id %]" role="button" data-toggle="dropdown" href="#">
-                                   Actions <b class="caret"></b>
-                                </a>
-                                <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="reportactions[% savedreport.id %]">
-                                    <li><a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&amp;phase=Show%20SQL"><i class="fa fa-search"></i> Show</a></li>
-                                    [% IF ( CAN_user_reports_create_reports ) %]
-                                        <li><a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&amp;phase=Edit%20SQL"><i class="fa fa-pencil"></i> Edit</a></li>
-                                        <li><a title="Duplicate this saved report" href="/cgi-bin/koha/reports/guided_reports.pl?phase=Create report from SQL&amp;sql=[% savedreport.savedsql |uri %]&amp;reportname=[% savedreport.report_name |uri %]&amp;notes=[% savedreport.notes |uri %]"><i class="fa fa-copy"></i> Duplicate</a></li>
-                                    [% END %]
-                                    <li><a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&amp;phase=Run%20this%20report"><i class="fa fa-play"></i> Run</a></li>
-                                    <li><a href="/cgi-bin/koha/tools/scheduler.pl?id=[% savedreport.id %]"><i class="fa fa-clock-o"></i> Schedule</a></li>
-                                    [% IF ( CAN_user_reports_create_reports ) %]
-                                        <li><a class="confirmdelete" title="Delete this saved report" href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&amp;phase=Delete%20Saved"><i class="fa fa-remove"></i> Delete</a></li>
-                                    [% END %]
-                                </ul>
+                            <div class="dropup">
+                                <div class="btn-group">
+                                    [%# There should be no space between these two buttons, it would render badly %]
+                                    <a class="btn btn-default btn-xs" role="button"
+                                       href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id | html %]&amp;phase=Run%20this%20report"><i
+                                       class="fa fa-play"></i> Run</a><a
+                                       class="btn btn-default btn-xs dropdown-toggle" id="reportactions[% savedreport.id | html %]" role="button" data-toggle="dropdown"
+                                       href="#"><b class="caret"></b></a>
+                                    <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="reportactions[% savedreport.id | html %]">
+                                        <li><a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id | uri %]&amp;phase=Show%20SQL"><i class="fa fa-search"></i> Show</a></li>
+                                        [% IF ( CAN_user_reports_create_reports ) %]
+                                            <li><a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id | uri %]&amp;phase=Edit%20SQL"><i class="fa fa-pencil"></i> Edit</a></li>
+                                            <li><a title="Duplicate this saved report" href="/cgi-bin/koha/reports/guided_reports.pl?phase=Create report from SQL&amp;sql=[% savedreport.savedsql |uri %]&amp;reportname=[% savedreport.report_name |uri %]&amp;notes=[% savedreport.notes |uri %]"><i class="fa fa-copy"></i> Duplicate</a></li>
+                                        [% END %]
+                                        [% IF (Koha.Preference('Mana') == 1) %]
+                                            <li><a class="ShareButton" data-toggle="modal" href="#mana_share_report" title="Share your report with Mana Knowledge Base"><i class="fa fa-share-alt"></i> Share</a></li>
+                                        [% END %]
+                                        <li><a href="/cgi-bin/koha/tools/scheduler.pl?id=[% savedreport.id | uri %]"><i class="fa fa-clock-o"></i> Schedule</a></li>
+                                        [% IF ( CAN_user_reports_delete_reports ) %]
+                                            <li><a class="confirmdelete" title="Delete this saved report" href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id | html %]&amp;phase=Delete%20Saved"><i class="fa fa-trash"></i> Delete</a></li>
+                                        [% END %]
+                                    </ul>
+                                </div>
                             </div>
                         </td>
                     </tr>
                 [% END %]
             </tbody>
         </table>
+
+        [% IF ( CAN_user_reports_delete_reports ) %]
         <fieldset class="action">
             <input type="submit" value="Delete selected" />
         </fieldset>
+        [% END %]
     </form>
     </div>
 </div>
@@ -378,14 +312,19 @@ canned reports and writing custom SQL reports.</p>
     [% IF ( CAN_user_reports_create_reports ) %]
     <form action="/cgi-bin/koha/reports/guided_reports.pl" method="get">
     <input type="hidden" name="phase" value="Build new" />
-    <input type="submit" class="edit" value="Build a new report" accesskey="y" />
+        <button type="submit" class="new"><i class="fa fa-plus"></i> New guided report</button>
+    </form>
+
+    <form action="/cgi-bin/koha/reports/guided_reports.pl" method="get">
+        <input type="hidden" name="phase" value="Create report from SQL" />
+        <button type="submit" class="new"><i class="fa fa-plus"></i> New SQL report</button>
     </form>
 
     <form action="/cgi-bin/koha/reports/guided_reports.pl" method="get">
     <input type="hidden" name="phase" value="Use saved" />
     <input type="hidden" name="filter_set" value="1" />
     <input type="hidden" name="filter_keyword" value="" />
-    <input type="submit" class="deny" value="Cancel filter" accesskey="n" />
+        <button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> Cancel filter</button>
     </form>
 
     [% END %]
@@ -399,6 +338,7 @@ canned reports and writing custom SQL reports.</p>
 [% END %]
 [% END %]
 
+[% INCLUDE 'mana/mana-share-report.inc' %]
 
 [% IF ( build1 ) %]
 [% IF ( cache_error) %]
@@ -409,13 +349,13 @@ canned reports and writing custom SQL reports.</p>
 <h1>Build a report</h1>
 <form action="/cgi-bin/koha/reports/guided_reports.pl">
 <fieldset class="rows">
-<legend>Step 1 of 6: Choose a module to report on,[% IF (usecache) %] Set cache expiry, [% END %] and Choose report visibility </legend>
+<legend>Step 1 of 6: Choose a module to report on,[% IF (usecache) %] Set cache expiry, [% END %] and choose report visibility </legend>
 <ol>
   <li>
     <label for="area">Choose: </label>
       <select name="area" id="area">
     [%- FOREACH area IN areas -%]
-      <option value="[% area %]">[%- PROCESS area_name area=area -%]</option>
+      <option value="[% area | html %]">[%- PROCESS area_name area=area -%]</option>
     [%- END -%]
       </select>
   </li>
@@ -425,7 +365,7 @@ canned reports and writing custom SQL reports.</p>
   <li><label for="public">Report is public:</label><select id="public" name="public"> <option value="0" selected="selected">No (default)</option> <option value="1">Yes</option> </select></li>
 [% END %]
 [% IF (usecache) %] <li>
-<label for="cache_expiry">Cache expiry:</label><input type="text" id="cache_expiry" name="cache_expiry" value="[% cache_expiry %]"></input>
+<label for="cache_expiry">Cache expiry:</label><input type="text" id="cache_expiry" name="cache_expiry" value="[% cache_expiry | html %]"></input>
 <select id="cache_expiry_units" name="cache_expiry_units">
 <option value="seconds">Seconds (default)</option>
 <option value="minutes">Minutes</option>
@@ -447,9 +387,9 @@ canned reports and writing custom SQL reports.</p>
 [% IF ( build2 ) %]
 <h1>Build a report</h1>
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post">
-<input type="hidden" name="area" value="[% area %]" />
-<input type="hidden" name="public" value="[% public %]" />
-<input type="hidden" name="cache_expiry" value="[% cache_expiry %]" />
+<input type="hidden" name="area" value="[% area | html %]" />
+<input type="hidden" name="public" value="[% public | html %]" />
+<input type="hidden" name="cache_expiry" value="[% cache_expiry | html %]" />
 <fieldset class="rows"><legend>Step 2 of 6: Pick a report type</legend>
 <ol><li><label for="types">Choose: </label>
     <select id="types" name="types">
@@ -461,18 +401,10 @@ canned reports and writing custom SQL reports.</p>
 
 <fieldset class="action">
     <input type="hidden" name="phase" value="Choose this type" />
-    <input type="button" name="back" value="&lt;&lt; Back" onclick="javascript:history.back()" />
+    <input type="button" name="back" value="&lt;&lt; Back" class="goback" />
     <input type="submit" name="submit" value="Next &gt;&gt;" />
 </fieldset>
 </form>
-</div>
-<div class="yui-gb"><div class="yui-u first"></div>
-
-<!--- Summary and Matrix reports have not yet been implemented-->
-<!--<div class="yui-u">Summary:
-<img src="[% interface %]/[% theme %]/img/reports-summary-graphic.gif" /></div>
-<div class="yui-u">Matrix:
-<img src="[% interface %]/[% theme %]/img/reports-matrix-graphic.gif" /></div>-->
 
 [% END %]
 
@@ -482,13 +414,14 @@ canned reports and writing custom SQL reports.</p>
 <p>Note: Be careful selecting when selecting columns. If your choice is too broad it could result in a very large report that will either not complete, or slow your system down.</p>
 
 <form id="column_submit" action="/cgi-bin/koha/reports/guided_reports.pl" method="post">
-    <input type="hidden" name="area" value="[% area %]" />
-    <input type="hidden" name="type" value="[% type %]" />
-    <input type="hidden" name="public" value="[% public %]" />
-    <input type="hidden" name="cache_expiry" value="[% cache_expiry %]" />
+    <input type="hidden" name="area" value="[% area | html %]" />
+    <input type="hidden" name="type" value="[% type | html %]" />
+    <input type="hidden" name="public" value="[% public | html %]" />
+    <input type="hidden" name="cache_expiry" value="[% cache_expiry | html %]" />
     <fieldset>
-<div class="yui-g">
-<div class="yui-u first">      <div style="float: left;"><select id="availableColumns" name="oldcolumns2" multiple="multiple" size="25" style="min-width: 200px;height:300px;">
+<div class="row">
+<div class="col-sm-6">
+    <div style="float: left;"><select id="availableColumns" name="oldcolumns2" multiple="multiple" size="25" style="min-width: 200px;height:300px;">
 [% FOREACH column IN columns %]
 [% IF ( column.table ) %]
 
@@ -497,34 +430,32 @@ canned reports and writing custom SQL reports.</p>
 </optgroup>
 [% END %]
 
-<optgroup label="[% column.table %]">
+<optgroup label="[% column.table | html %]">
 [% ELSE %]
-<option value="[% column.name %]">
-[% IF ( column.description ) %][% column.description %] &nbsp; / &nbsp; [% column.name %]
+<option value="[% column.name | html %]">
+[% IF ( column.description ) %][% column.description | html %] &nbsp; / &nbsp; [% column.name | html %]
 [% ELSE %]
-[% column.name %]
+[% column.name | html %]
 [% END %]
 </option>
 [% END %]
 [% END %]
 </optgroup>
 </select></div>
-<div style="width: 6.3em; float: right; margin-top: 100px"><input type="button" name="Add" value="Add" class="button" style="width:6em;" onclick="addColumn()" /><br />
-<input type="button" name="delete" value="&lt;&lt; Delete" class="button" style="width: 6em; margin: 1em 0;" onclick="delColumn()" /></div>
+<div style="width: 6.3em; float: right; margin-top: 100px"><input type="button" name="Add" value="Add" class="button" style="width:6em;" id="addColumn" /><br />
+<input type="button" name="delete" value="&lt;&lt; Delete" class="button" style="width: 6em; margin: 1em 0;" id="delColumn" /></div>
 </div>
 
-<div class="yui-u">
+<div class="col-sm-6">
 <select id="selectedColumns" name="columns" multiple="multiple" size="25" style="width:200px; height:300px;"></select>
 </div>
 </div>
 </fieldset>
-<div class="yui-g">
 <fieldset class="action">
     <input type="hidden" name="phase" value="Choose these columns" />
-    <input type="button" name="back" value="&lt;&lt; Back" onclick="javascript:history.back()" />
+    <input type="button" name="back" value="&lt;&lt; Back" class="goback" />
     <input type="submit" name="submit" value="Next &gt;&gt;" />
 </fieldset>
-</div>
 </form>
 
 [% END %]
@@ -532,46 +463,46 @@ canned reports and writing custom SQL reports.</p>
 [% IF ( build4 ) %]
 <h1>Build a report</h1>
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post" >
-    <input type="hidden" name="area" value="[% area %]" />
-    <input type="hidden" name="type" value="[% type %]" />
-    <input type="hidden" name="column" value="[% column %]" />
-    <input type="hidden" name="public" value="[% public %]" />
-    <input type="hidden" name="cache_expiry" value="[% cache_expiry %]" />
+    <input type="hidden" name="area" value="[% area | html %]" />
+    <input type="hidden" name="type" value="[% type | html %]" />
+    <input type="hidden" name="column" value="[% column | html %]" />
+    <input type="hidden" name="public" value="[% public | html %]" />
+    <input type="hidden" name="cache_expiry" value="[% cache_expiry | html %]" />
     <fieldset><legend>Step 4 of 6: Select criteria to limit on</legend>
     <table>
         [% FOREACH criteri IN criteria %]
         <tr>
         <td>
-            <input type="checkbox" name="criteria_column" id="[% criteri.name %]" value="[% criteri.name %]" /> 
-            <label for="[% criteri.name %]">[% criteri.description %] </label>
+            <input type="checkbox" name="criteria_column" id="[% criteri.name | html %]" value="[% criteri.name | html %]" /> 
+            <label for="[% criteri.name | html %]">[% criteri.description | html %] </label>
         </td>
         [% IF ( criteri.date ) %]
         <td>
-            <input type="text" size="10" id="[% criteri.name %]_value" name="[% criteri.name %]_value" value="" class="datepicker" />
+            <input type="text" size="10" id="[% criteri.name | html %]_value" name="[% criteri.name | html %]_value" value="" class="datepicker" />
                <span class="hint">[% INCLUDE 'date-format.inc' %]</span>
         </td>
         </tr>
         [% ELSE %]
         [% IF ( criteri.textrange ) %]
             <td>from
-            <input type="text" size="10" id="[% criteri.from %]_value" name="[% criteri.from %]_value" value="" /> to 
-            <input type="text" size="10" id="[% criteri.to %]_value" name="[% criteri.to %]_value" value="" />
+            <input type="text" size="10" id="[% criteri.from | html %]_value" name="[% criteri.from | html %]_value" value="" /> to 
+            <input type="text" size="10" id="[% criteri.to | html %]_value" name="[% criteri.to | html %]_value" value="" />
             </td>
             </tr>
         [% ELSE %]
             [% IF ( criteri.daterange ) %]
             <td>from 
-            <input type="text" size="10" id="from_[% criteri.name %]_value" name="from_[% criteri.name %]_value" value="" class="datepickerfrom" />
+            <input type="text" size="10" id="from_[% criteri.name | html %]_value" name="from_[% criteri.name | html %]_value" value="" class="datepickerfrom" />
             to
-            <input type="text" size="10" id="to_[% criteri.name %]_value" name="to_[% criteri.name %]_value" value="" class="datepickerto" />
+            <input type="text" size="10" id="to_[% criteri.name | html %]_value" name="to_[% criteri.name | html %]_value" value="" class="datepickerto" />
                        <span class="hint">[% INCLUDE 'date-format.inc' %]</span>
             </td>
         </tr>
             [% ELSE %]
             <td>
-                <select name="[% criteri.name %]_value">
+                <select name="[% criteri.name | html %]_value">
                 [% FOREACH value IN criteri.values %]
-                <option value="[% value.availablevalues %]">[% IF ( value.default ) %]Default[% ELSE %][% value.display_value |html %][% END %]</option>
+                <option value="[% value.availablevalues | html %]">[% IF ( value.default ) %]Default[% ELSE %][% value.display_value | html %][% END %]</option>
                 [% END %]
                 </select>
             </td>
@@ -587,14 +518,14 @@ canned reports and writing custom SQL reports.</p>
 <fieldset><legend>Dictionary definitions</legend>
 <table>
 [% FOREACH definition IN definitions %]
-    <tr><td><input type="checkbox" name="definition" value="[% definition.id %]" /> [% definition.name %]</td></tr>
+    <tr><td><input type="checkbox" name="definition" value="[% definition.id | html %]" /> [% definition.name | html %]</td></tr>
 [% END %]
 </table>
 </fieldset>
 [% END %]
 
 <fieldset class="action"><input type="hidden" name="phase" value="Choose these criteria" />
-    <input type="button" name="back" value="&lt;&lt; Back" onclick="javascript:history.back()" />
+    <input type="button" name="back" value="&lt;&lt; Back" class="goback" />
     <input type="submit" name="submit" value="Next &gt;&gt;" /> </fieldset>
 </form>
 [% END %]
@@ -604,20 +535,20 @@ canned reports and writing custom SQL reports.</p>
 <h1>Build a report</h1>
 <h3>Step 5 of 6: Pick which columns to total</h3>
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post">
-<input type="hidden" name="area" value="[% area %]" />
-<input type="hidden" name="type" value="[% type %]" />
-<input type="hidden" name="column" value="[% column %]" />
-<input type="hidden" name="definition" value="[% definition %]" />
-<input type="hidden" name="criteria" value="[% criteriastring %]" />
-<input type="hidden" name="public" value="[% public %]" />
-<input type="hidden" name="cache_expiry" value="[% cache_expiry %]" />
+<input type="hidden" name="area" value="[% area | html %]" />
+<input type="hidden" name="type" value="[% type | html %]" />
+<input type="hidden" name="column" value="[% column | html %]" />
+<input type="hidden" name="definition" value="[% definition | html %]" />
+<input type="hidden" name="criteria" value="[% criteriastring | html %]" />
+<input type="hidden" name="public" value="[% public | html %]" />
+<input type="hidden" name="cache_expiry" value="[% cache_expiry | html %]" />
 <fieldset><table>
 [% FOREACH total_b IN total_by %]
-<tr><td><input type="checkbox" name="total_by" id="[% total_b.name %]" value="[% total_b.name %]" /> <label for="[% total_b.name %]">[% total_b.name %]</label></td>
-<td><select name="[% total_b.name %]_tvalue">
+<tr><td><input type="checkbox" name="total_by" id="[% total_b.name | html %]" value="[% total_b.name | html %]" /> <label for="[% total_b.name | html %]">[% total_b.name | html %]</label></td>
+<td><select name="[% total_b.name | html %]_tvalue">
 
 [% FOREACH selec IN total_b.select %]
-<option value="[% selec.value %]">[% selec.value %]</option>
+<option value="[% selec.value | html %]">[% selec.value | html %]</option>
 [% END %]
 </select>
 
@@ -626,7 +557,7 @@ canned reports and writing custom SQL reports.</p>
 </table></fieldset>
 
 <fieldset class="action"><input type="hidden" name="phase" value="Choose these operations" />
-    <input type="button" name="back" value="&lt;&lt; Back" onclick="javascript:history.back()" />
+    <input type="button" name="back" value="&lt;&lt; Back" class="goback" />
     <input type="submit" name="submit" value="Next &gt;&gt;" /></fieldset>
 </form>
 [% END %]
@@ -636,20 +567,20 @@ canned reports and writing custom SQL reports.</p>
 <h1>Build a report</h1>
 <h3>Step 6 of 6: Choose how you want the report ordered</h3>
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post">
-<input type="hidden" name="area" value="[% area %]" />
-<input type="hidden" name="type" value="[% type %]" />
-<input type="hidden" name="column" value="[% column %]" />
-<input type="hidden" name="criteria" value="[% criteriastring %]" />
-<input type="hidden" name="definition" value="[% definition %]" />
-<input type="hidden" name="totals" value="[% totals %]" />
-<input type="hidden" name="public" value="[% public %]" />
-<input type="hidden" name="cache_expiry" value="[% cache_expiry %]" />
+<input type="hidden" name="area" value="[% area | html %]" />
+<input type="hidden" name="type" value="[% type | html %]" />
+<input type="hidden" name="column" value="[% column | html %]" />
+<input type="hidden" name="criteria" value="[% criteriastring | html %]" />
+<input type="hidden" name="definition" value="[% definition | html %]" />
+<input type="hidden" name="totals" value="[% totals | html %]" />
+<input type="hidden" name="public" value="[% public | html %]" />
+<input type="hidden" name="cache_expiry" value="[% cache_expiry | html %]" />
 <fieldset><table>[% FOREACH order_b IN order_by %]
-<tr><td><input type="checkbox" id="[% order_b.name %]" name="order_by" value="[% order_b.name %]" /> <label for="[% order_b.name %]">[% order_b.name %]</label></td><td>
-<select name="[% order_b.name %]_ovalue">
+<tr><td><input type="checkbox" id="[% order_b.name | html %]" name="order_by" value="[% order_b.name | html %]" /> <label for="[% order_b.name | html %]">[% order_b.name | html %]</label></td><td>
+<select name="[% order_b.name | html %]_ovalue">
 
 [% FOREACH selec IN order_b.select %]
-<option value="[% selec.value %]">[% selec.value %]</option>
+<option value="[% selec.value | html %]">[% selec.value | html %]</option>
 [% END %]
 </select>
 </td></tr>
@@ -668,14 +599,14 @@ canned reports and writing custom SQL reports.</p>
 <h1>Confirm custom report</h1>
 <p>Your report will be generated with the following SQL statement.</p>
 <p> 
-[% sql |html %]
+[% sql | html %]
 </p>
 
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post">
-<input type="hidden" name="sql" value="[% sql %]" />
-<input type="hidden" name="type" value="[% type %]" />
-<input type="hidden" name="public" value="[% public %]" />
-<input type="hidden" name="cache_expiry" value="[% cache_expiry %]" />
+<input type="hidden" name="sql" value="[% sql | html %]" />
+<input type="hidden" name="type" value="[% type | html %]" />
+<input type="hidden" name="public" value="[% public | html %]" />
+<input type="hidden" name="cache_expiry" value="[% cache_expiry | html %]" />
 <p>You will need to save the report before you can execute it</p>
 <fieldset class="action"><input type="hidden" name="phase" value="Save" />  
 <input type="submit" name="submit" value="Save" />  </fieldset>
@@ -684,11 +615,11 @@ canned reports and writing custom SQL reports.</p>
 
 [% IF ( save ) %]
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post" class="validated">
-<input type="hidden" name="sql" value="[% sql |html %]" />
-<input type="hidden" name="type" value="[% type %]" />
-<input type="hidden" name="area" value="[% area %]" />
-<input type="hidden" name="public" value="[% public %]" />
-<input type="hidden" name="cache_expiry" value="[% cache_expiry %]" />
+<input type="hidden" name="sql" value="[% sql | html %]" />
+<input type="hidden" name="type" value="[% type | html %]" />
+<input type="hidden" name="area" value="[% area | html %]" />
+<input type="hidden" name="public" value="[% public | html %]" />
+<input type="hidden" name="cache_expiry" value="[% cache_expiry | html %]" />
 <fieldset class="rows">
 <legend>Save your custom report</legend>
 <ol>
@@ -702,66 +633,52 @@ canned reports and writing custom SQL reports.</p>
 [% END %]
 
 [% IF ( warn_authval_problem ) %]
-     <form action='/cgi-bin/koha/reports/guided_reports.pl'>
+    <div class="dialog alert">
+        <h3>Errors found when processing parameters for report: [% name | html %]</h3>
+        [% FOREACH problematic_authval IN problematic_authvals %]
+            <p>
+            <strong>[% problematic_authval.name | html %]:</strong> The authorized value category (<strong>[% problematic_authval.authval | html %]</strong>)
+                you selected does not exist.
+            </p>
+        [% END %]
+        <!-- Save Anyway Form -->
+        <form action='/cgi-bin/koha/reports/guided_reports.pl'>
         <!--Every parameter the user issued is provided as a hidden field for recovery-->
-        <input type='hidden' name='id' value='[% id %]' />
-        <input type='hidden' name='sql' value='[% sql %]' />
-        <input type='hidden' name='reportname' value='[% reportname %]' />
-        <input type='hidden' name='group' value='[% group %]' />
-        <input type='hidden' name='subgroup' value='[% subgroup %]' />
-        <input type='hidden' name='notes' value='[% notes %]' />
-        <input type='hidden' name='cache_expiry' value='[% cache_expiry %]' />
-        <input type='hidden' name='cache_expiry_units' value='[% cache_expiry_units %]' />
-        <input type='hidden' name='public' value='[% public %]' />
-
-        <div class="dialog alert">
-            <h3>Errors found when processing parameters for report: [% name %]</h3>
-            [% FOREACH problematic_authval IN problematic_authvals %]
-                <p>
-                <strong>[% problematic_authval.name %]:</strong> The authorized value category (<strong>[% problematic_authval.authval %]</strong>)
-                    you selected does not exist.
-                </p>
-            [% END %]
-            <!-- Save Anyway Form -->
-            <form action='/cgi-bin/koha/reports/guided_reports.pl'>
-            <!--Every parameter the user issued is provided as a hidden field for recovery-->
-                <input type='hidden' name='id' value='[% id %]' />
-                <input type='hidden' name='sql' value='[% sql %]' />
-                <input type='hidden' name='reportname' value='[% reportname %]' />
-                <input type='hidden' name='group' value='[% group %]' />
-                <input type='hidden' name='subgroup' value='[% subgroup %]' />
-                <input type='hidden' name='notes' value='[% notes %]' />
-                <input type='hidden' name='cache_expiry' value='[% cache_expiry %]' />
-                <input type='hidden' name='cache_expiry_units' value='[% cache_expiry_units %]' />
-                <input type='hidden' name='public' value='[% public %]' />
-            [% IF ( phase_update) %]
-                <input type='hidden' name='phase' value='Update SQL' />
-                <input type="submit" name="save_anyway" class="approve" value="Save anyway" />
-            [% ELSIF ( phase_save) %]
-                <input type='hidden' name='area' value='[% area %]' />
-                <input type='hidden' name='phase' value='Save Report' />
-                <input type="submit" name="save_anyway" class="approve" value="Save anyway" />
-            [% END %]
-            </form>
-            <!-- Go back to editing -->
-            <form action='/cgi-bin/koha/reports/guided_reports.pl'>
-                <input type="button" name='back' class="deny" value="Edit SQL"
-                                    onclick="javascript:history.back()" />
-            </form>
-        </div>
-    </form>
+            <input type='hidden' name='id' value='[% id | html %]' />
+            <input type='hidden' name='sql' value='[% sql | html %]' />
+            <input type='hidden' name='reportname' value='[% reportname | html %]' />
+            <input type='hidden' name='group' value='[% group | html %]' />
+            <input type='hidden' name='subgroup' value='[% subgroup | html %]' />
+            <input type='hidden' name='notes' value='[% notes | html %]' />
+            <input type='hidden' name='cache_expiry' value='[% cache_expiry | html %]' />
+            <input type='hidden' name='cache_expiry_units' value='[% cache_expiry_units | html %]' />
+            <input type='hidden' name='public' value='[% public | html %]' />
+        [% IF ( phase_update) %]
+            <input type='hidden' name='phase' value='Update SQL' />
+            <button type="submit" name="save_anyway" value="Save anyway" class="approve"><i class="fa fa-fw fa-check"></i> Save anyway</button>
+        [% ELSIF ( phase_save) %]
+            <input type='hidden' name='area' value='[% area | html %]' />
+            <input type='hidden' name='phase' value='Save Report' />
+            <button type="submit" name="save_anyway" value="Save anyway" class="approve"><i class="fa fa-fw fa-check"></i> Save anyway</button>
+        [% END %]
+        </form>
+        <!-- Go back to editing -->
+        <form action='/cgi-bin/koha/reports/guided_reports.pl'>
+            <button type="button" class="new goback"><i class="fa fa-fw fa-pencil"></i> Edit SQL</button>
+        </form>
+    </div>
 [% END %]
 
 [% IF ( enter_params ) %]
     <form action='/cgi-bin/koha/reports/guided_reports.pl'>
-        <input type='hidden' name='reports' value="[% reports %]" />
+        <input type='hidden' name='reports' value="[% reports | html %]" />
     [% IF ( auth_val_error ) %]
         <input type='hidden' name='phase' value='Edit SQL' />
         <div class="dialog alert">
-            <h3>Errors found when processing parameters for report: [% name %]</h3>
+            <h3>Errors found when processing parameters for report: [% name | html %]</h3>
             [% FOREACH auth_val_error IN auth_val_errors %]
                 <p>
-                    <strong>[% auth_val_error.entry %]:</strong> The authorized value category (<strong>[% auth_val_error.auth_val %]</strong>)
+                    <strong>[% auth_val_error.entry | html %]:</strong> The authorized value category (<strong>[% auth_val_error.auth_val | html %]</strong>)
                     you selected does not exist.
                 </p>
             [% END %]
@@ -769,22 +686,23 @@ canned reports and writing custom SQL reports.</p>
         <fieldset class="action"><input type="submit" value="Edit SQL" /></fieldset>
     [% ELSE %]
         <input type='hidden' name='phase' value='Run this report' />
-        <h1>Enter parameters for report [% name %]:</h1>
-        [% IF ( notes ) %]<p>[% notes %]</p>[% END %]
+        <h1>Enter parameters for report [% name | html %]:</h1>
+        [% IF ( notes ) %]<p>[% notes | html %]</p>[% END %]
         <fieldset class="rows">
             <ol>
             [% FOREACH sql_param IN sql_params %]
+                <input name="param_name" value="[% sql_param.name | html %]" type="hidden" />
                 [% IF sql_param.input == 'date' %]
                     <li>
-                    <label for="date_[% sql_param_entry %][% loop.count %]">[% sql_param.entry %]:</label> <input id="date_[% sql_param_entry %][% loop.count %]" type="text" value="" size="10" name="sql_params" class="datepicker" />
+                    <label for="date_[% sql_param_entry | html %][% loop.count | html %]">[% sql_param.entry | html %]:</label> <input id="date_[% sql_param_entry | html %][% loop.count | html %]" type="text" value="" size="10" name="sql_params" class="datepicker" />
                     </li>
                 [% ELSIF ( sql_param.input == 'text' ) %]
-                    <li><label for="sql_params[% loop.count %]">[% sql_param.entry %]: </label><input id="sql_params[% loop.count %]" type="text" name="sql_params" /></li>
+                    <li><label for="sql_params[% loop.count | html %]">[% sql_param.entry | html %]: </label><input id="sql_params[% loop.count | html %]" type="text" name="sql_params" /></li>
                 [% ELSE %]
-                    <li><label for="sql_params_[% sql_param.labelid %]">[% sql_param.entry %]:</label>
-                        <select name="[%- sql_param.input.name -%]" tabindex="1"  size="1" id="[%- sql_param.input.id -%]">
+                    <li><label for="sql_params_[% sql_param.labelid | html %]">[% sql_param.entry | html %]:</label>
+                        <select name="[%- sql_param.input.name | html -%]" tabindex="1"  size="1" id="[%- sql_param.input.id | html -%]">
                         [% FOREACH value IN sql_param.input.values %]
-                            <option value="[%- value -%]">[%- sql_param.input.labels.$value -%]</option>
+                            <option value="[%- value | html -%]">[%- sql_param.input.labels.$value | html -%]</option>
                         [% END %]
                         </select>
                     </li>
@@ -798,72 +716,172 @@ canned reports and writing custom SQL reports.</p>
 [% END %]
 
 [% IF ( execute ) %]
-<h1>[% name %]</h1>
-[% IF ( notes ) %]<p>[% notes %]</p>[% END %]
-[% IF ( unlimited_total ) %]<p>Total number of rows matching the (unlimited) query is [% unlimited_total %].</p>[% END %]
-<pre id="sql_output">[% sql |html %]</pre>
+<h1>[% name | html %]</h1>
+[% IF ( notes ) %]<p><span class="label">Notes:</span> [% notes | html %]</p>[% END %]
+[% IF ( unlimited_total ) %]<p><span class="label">Total number of results:</span> [% unlimited_total | html %][% IF unlimited_total > limit %] ([% limit | html %] shown)[% END %].</p>[% END %]
 
-<form action="/cgi-bin/koha/reports/guided_reports.pl" method="get">
+<div id="sql_output" style="display:none;">
+    <span class="label">Report SQL:</span>
+    <textarea id="sql" readonly="readonly">[% sql | html %]</textarea>
+</div>
+
+<div>
+    <a href="#" id="toggle_chart_settings_hid" class="toggle_chart_settings" style="display:none"><i class="fa fa-eye-slash"></i> Hide chart</a>
+    <a href="#" id="toggle_chart_settings_vis" class="toggle_chart_settings" style="display:none"><i class="fa fa fa-eye"></i> Show chart</a>
+</div>
+<div id="chart" class="clearfix"></div>
+
+[% IF ( execute ) %]
+    [% UNLESS ( errors ) %]
+        <form method="post" enctype="multipart/form-data" action="/cgi-bin/koha/tools/batch_record_modification.pl" id="batch_record_modification">
+            <input type="hidden" name="recordtype" value="biblio" />
+            <input type="hidden" name="op" value="list" />
+            [% # Preserve the whitespace of the following textarea in order to format the values correctly %]
+            <textarea style="display:none" name="recordnumber_list" id="recordnumber_list">[% FOREACH result IN results %][% FOREACH cells IN result.cells %][% place = loop.index %][% IF header_row.$place.cell == 'biblionumber' %][% SET batch_biblionumbers = 1 %]
+[% cells.cell | html %][% END %][% END %][% END %]</textarea>
+        </form>
+
+        <form method="POST" action="/cgi-bin/koha/tools/batch_delete_records.pl" id="batch_record_deletion">
+            <input type="hidden" name="recordtype" value="biblio" />
+            <input type="hidden" name="op" value="list" />
+            [% # Preserve the whitespace of the following textarea in order to format the values correctly %]
+            <textarea style="display:none" name="recordnumber_list" id="recordnumber_list">[% FOREACH result IN results %][% FOREACH cells IN result.cells %][% place = loop.index %][% IF header_row.$place.cell == 'biblionumber' %][% SET batch_biblionumbers = 1 %]
+[% cells.cell | html %][% END %][% END %][% END %]</textarea>
+        </form>
+
+        <form method="POST" action="/cgi-bin/koha/tools/batchMod.pl" id="batch_item_modification">
+            <input type="hidden" name="op" value="show" />
+            [% FOREACH result IN results %]
+                [% FOREACH cells IN result.cells %]
+                    [% place = loop.index %]
+                    [% IF header_row.$place.cell == 'itemnumber' %]
+                        [% SET batch_itemnumbers = 1 %]
+                        <input type="hidden" name="[% header_row.$place.cell | html %]" value="[% cells.cell | html %]" />
+                    [% END %]
+                [% END %]
+            [% END %]
+        </form>
+
+        <form method="POST" action="/cgi-bin/koha/tools/batchMod.pl" id="batch_item_deletion">
+            <input type="hidden" name="op" value="show" />
+            <input type="hidden" name="del" value="1" />
+            [% FOREACH result IN results %]
+                [% FOREACH cells IN result.cells %]
+                    [% place = loop.index %]
+                    [% IF header_row.$place.cell == 'itemnumber' %]
+                        [% SET batch_itemnumbers = 1 %]
+                        <input type="hidden" name="[% header_row.$place.cell | html %]" value="[% cells.cell | html %]" />
+                    [% END %]
+                [% END %]
+            [% END %]
+        </form>
+
+        <form method="get" action="/cgi-bin/koha/virtualshelves/addbybiblionumber.pl" id="batch_add_to_list">
+            [% FOREACH result IN results %]
+                [% FOREACH cells IN result.cells %]
+                    [% place = loop.index %]
+                    [% IF header_row.$place.cell == 'biblionumber' %]
+                        [% SET batch_biblionumbers = 1 %]
+                        <input type="hidden" class="bib_to_list" name="biblionumber" value="[% cells.cell | html %]" />
+                    [% END %]
+                [% END %]
+            [% END %]
+        </form>
+
+        [% IF ( batch_biblionumbers || batch_itemnumbers ) %]
+            <p>
+                <div class="dropdown">
+                    <button class="btn btn-default dropdown-toggle" type="button" id="batch_mod_menu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
+                        Batch operations with [% IF unlimited_total > limit %][% limit | html %][% ELSE %][% unlimited_total | html %][% END %] visible records
+                        <span class="caret"></span>
+                    </button>
+                    <ul class="dropdown-menu" aria-labelledby="batch_mod_menu">
+                        [% FOREACH header_ro IN header_row %]
+                            [% IF header_ro.cell == 'biblionumber' %]
+                                <li class="dropdown-header">Bibliographic records</li>
+                                <li>
+                                    <a href="#" data-submit="batch_record_modification" data-toggle="tooltip" data-placement="right" title="Send visible records to batch record modification" class="batch_op send_to_record_mod">Batch record modification</a>
+                                </li>
+                                <li>
+                                    <a href="#" data-submit="batch_record_deletion" data-toggle="tooltip" data-placement="right" title="Send visible records to batch record deletion" class="batch_op send_to_record_del">Batch record deletion</a>
+                                </li>
+                                <li>
+                                    <a href="#" data-submit="batch_add_to_list" data-toggle="tooltip" data-placement="right" title="Send visible records to a list" class="batch_op send_to_list">Add to list</a>
+                                </li>
+                            [% END %]
+                            [% IF header_ro.cell == 'itemnumber' %]
+                                [% IF ( batch_biblionumbers ) %]
+                                    <li role="separator" class="divider"></li>
+                                [% END %]
+                                <li class="dropdown-header">Item records</li>
+                                <li>
+                                    <a href="#" data-submit="batch_item_modification" data-toggle="tooltip" data-placement="right" title="Send visible items to batch item modification" class="batch_op send_to_item_mod">Batch item modification</a>
+                                </li>
+                                <li>
+                                    <a href="#" data-submit="batch_item_deletion" data-toggle="tooltip" data-placement="right" title="Send visible items to batch item deletion" class="batch_op send_to_item_del">Batch item deletion</a>
+                                </li>
+                            [% END %]
+                        [% END %]
+                    </ul> <!-- /.dropdown-menu -->
+                </div> <!-- /.dropdown -->
+            </p>
+        [% END %]
+    [% END # UNLESS ( errors ) %]
+[% END # IF ( execute ) %]
+
+<form action="/cgi-bin/koha/reports/guided_reports.pl" method="get" id="limitselect">
     <input type="hidden" name="phase" value="Run this report"/>
-    <input type="hidden" name="reports" value="[% report_id %]"/>
+    <input type="hidden" name="reports" value="[% report_id | html %]"/>
 
     [% FOREACH p IN sql_params %]
-        <input type="hidden" name="sql_params" value="[% p %]"/>
+        <input type="hidden" name="sql_params" value="[% p | html %]"/>
+    [% END %]
+    [% FOREACH n IN param_names %]
+        <input type="hidden" name="param_name" value="[% n | html %]"/>
     [% END %]
 
     <label for="limit">Rows per page: </label>
-    <select name="limit">
+    <select name="limit" id="limit">
         [% limits = [ 10, 20, 50, 100, 200, 300, 400, 500, 1000 ] %]
         [% FOREACH l IN limits %]
                 [% IF l == limit %]
-                    <option value="[% l %]" selected="selected">[% l %]</option>
+                    <option value="[% l | html %]" selected="selected">[% l | html %]</option>
                 [% ELSE %]
-                    <option value="[% l %]">[% l %]</option>
+                    <option value="[% l | html %]">[% l | html %]</option>
                 [% END %]
         [% END %]
     </select>
-
-    <input type="submit" value="Update" />
 </form>
 
-<div class="pages">[% pagination_bar %]</div>
+<div class="pages">[% pagination_bar | $raw %]</div>
 [% UNLESS ( errors ) %]
-<table>
-<tr>[% FOREACH header_ro IN header_row %]<th>[% header_ro.cell %]</th>[% END %]</tr>
-[% FOREACH result IN results %]
-<tr>
-    [% FOREACH cell IN result.cells %]<td>[% cell.cell %]</td>[% END %]
-</tr>
-[% END %]
-</table>
-<form action="/cgi-bin/koha/reports/guided_reports.pl" method="post">
-<fieldset class="action">
-<label for="format">Download the report: </label>
-<select name="format" id="format">
-<option value="csv">Comma separated text</option>
-<option value="tab">Tab separated text</option>
-<option value="ods">Open Document Spreadsheet</option>
-</select>
-<input type="hidden" name="sql" value="[% sql |html %]" />
-<input type="hidden" name="phase" value="Export" />
-<input type="submit" name="submit" value="Download" /></fieldset>
-<input type="hidden" name="reportname" value="[% name %]" />
-</form>
+    <table>
+        <tr>
+            [% FOREACH header_ro IN header_row %]
+                <th>[% header_ro.cell | html %]</th>
+            [% END %]
+        </tr>
+        [% FOREACH result IN results %]
+            <tr>
+                [% FOREACH cells IN result.cells %]
+                    <td>[% cells.cell | $raw %]</td>
+                [% END %]
+            </tr>
+        [% END %]
+    </table>
 [% END %]
+
+[% INCLUDE 'chart.inc' %]
+
 [% END %]
 
 [% IF ( create ) %]
-<script type="text/javascript">
-$(document).ready(function() {
-    load_group_subgroups();
-});
-</script>
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post" class="validated">
 <fieldset class="rows">
 <legend>Create report from SQL</legend>
 <ol>
     <li><label for="reportname" class="required">Report name:</label>
-        [% IF ( reportname ) %]<input type="text" class="required" required="required" id="reportname" name="reportname" value="[% reportname %]" size="50"/>
+        [% IF ( reportname ) %]<input type="text" class="required" required="required" id="reportname" name="reportname" value="[% reportname | html %]" size="50"/>
         [% ELSE %]<input type="text" class="required" required="required" id="reportname" name="reportname" size="50" />[% END %] <span class="required">Required</span>
     </li>
     [% PROCESS group_and_subgroup_selection %]
@@ -874,7 +892,7 @@ $(document).ready(function() {
   <li><label for="public">Report is public:</label><select id="public" name="public"> <option value="0" selected="selected">No (default)</option> <option value="1">Yes</option> </select></li>
 [% END %]
 [% IF (usecache) %] <li>
-<label for="cache_expiry">Cache expiry:</label><input type="text" id="cache_expiry" name="cache_expiry" value="[% cache_expiry %]"></input>
+<label for="cache_expiry">Cache expiry:</label><input type="text" id="cache_expiry" name="cache_expiry" value="[% cache_expiry | html %]"></input>
 <select id="cache_expiry_units" name="cache_expiry_units">
 <option value="seconds" selected="selected">Seconds (default)</option>
 <option value="minutes">Minutes</option>
@@ -882,13 +900,13 @@ $(document).ready(function() {
 <option value="days">Days</option>
 </select>
 </li>[% END %]
-    <li><label for="notes">Notes:</label> <textarea id="notes" name="notes" cols="50" rows="2">[% notes %]</textarea></li>
+    <li><label for="notes">Notes:</label> <textarea id="notes" name="notes" cols="50" rows="2">[% notes | html %]</textarea></li>
 </ol>
 </fieldset>
 <fieldset class="rows">
 <legend>SQL:</legend>
 <div style="margin:1em;">
-<textarea id="sql" name="sql" class="required" required="required" cols="50" rows="10">[% sql %]</textarea> <span class="required">Required</span>
+<textarea id="sql" name="sql" class="required" required="required" cols="50" rows="10">[% sql | html %]</textarea> <span class="required">Required</span>
 </div>
 </fieldset>
 
@@ -898,60 +916,50 @@ $(document).ready(function() {
 </form>
 [% END %]
 
-[% IF ( compound ) %]
-<form action="/cgi-bin/koha/reports/guided_reports.pl" method="post">
-Master: <select name="master">
-[% FOREACH savedreport IN savedreports %]
-<option value="[% savedreport.id %]">[% savedreport.report_name %]</option>
-[% END %]
-</select>
-&nbsp;
-Sub report:<select name="subreport">
-[% FOREACH savedreport IN savedreports %]
-<option value="[% savedreport.id %]">[% savedreport.report_name %]</option>
-[% END %]
-</select>
-<br />
-<input type="hidden" name="phase" value="Save Compound" />
-<input type="submit" name="submit" value="Save compound" />
-</form>
-[% END %]
-
-[% IF ( save_compound ) %]
-[% master %] <br />
-[% subsql %]
-[% END %]
-
-
-[% IF ( retresults ) %]
+[% IF saved_results %]
 <h1>Saved report results</h1>
-<h2>[% name %]</h2>
-<p>[% notes %]</p>
+<h2>[% name | html %]</h2>
+<p>[% notes | html %]</p>
 <table>
-[% FOREACH result IN results %]
-[% result.row %]
+[% FOREACH rows IN saved_results %]
+<tr>
+[% FOREACH col IN rows %]
+<td>[% col | html %]</td>
+[% END %]
+<tr>
 [% END %]
 </table>
 [% END %]
 
 [% IF ( showsql ) %]
 <fieldset class="rows">
-    <legend>[% reportname %]</legend>
+    <legend>[% reportname | html %]</legend>
     <ol>
-        [% IF ( notes ) %]<li><span class="label">Notes:</span> [% notes %]</li>[% ELSE %][% END %]
-        <li><textarea id="sql">[% sql %]</textarea></li>
+        [% IF ( notes ) %]<li><span class="label">Notes:</span> [% notes | html %]</li>[% ELSE %][% END %]
+        <li><textarea id="sql">[% sql | html %]</textarea></li>
     </ol>
 </fieldset>
 [% END %]
 
+[% IF ( save_successful ) %]
+[% UNLESS ( errors ) %]
+</br>
+<div id="report_updated">
+    <div class="dialog message">
+        <p>Your report "[% reportname | html %]" has been saved</p>
+    </div>
+</div>
+[% END %]
+[% END %]
+
 [% IF ( editsql ) %]
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post" class="validated">
 <input type="hidden" name="phase" value="Update SQL" />
-<input type="hidden" name="id" value="[% id %]"/>
+<input type="hidden" name="id" value="[% id | html %]"/>
 <fieldset class="rows">
 <legend>Edit SQL report</legend>
 <ol>
-<li><label for="reportname" class="required">Report name: </label><input type="text" id="reportname" name="reportname" value="[% reportname %]" size="50" class="required" required="required" /> <span class="required">Required</span></li>
+<li><label for="reportname" class="required">Report name: </label><input type="text" id="reportname" name="reportname" value="[% reportname | html %]" size="50" class="required" required="required" /> <span class="required">Required</span></li>
 [% PROCESS group_and_subgroup_selection %]
 [% IF (public) %]
   <li><label for="public">Report is public:</label><select id="public" name="public"> <option value="0">No (default)</option> <option value="1" selected="selected">Yes</option> </select></li>
@@ -959,7 +967,7 @@ Sub report:<select name="subreport">
   <li><label for="public">Report is public:</label><select id="public" name="public"> <option value="0" selected="selected">No (default)</option> <option value="1">Yes</option> </select></li>
 [% END %]
 [% IF (usecache) %] <li>
-<label for="cache_expiry">Cache expiry:</label><input type="text" id="cache_expiry" name="cache_expiry" value="[% cache_expiry %]"></input>
+<label for="cache_expiry">Cache expiry:</label><input type="text" id="cache_expiry" name="cache_expiry" value="[% cache_expiry | html %]"></input>
 <select id="cache_expiry_units" name="cache_expiry_units">
 <option value="seconds">Seconds (default)</option>
 <option value="minutes">Minutes</option>
@@ -967,14 +975,14 @@ Sub report:<select name="subreport">
 <option value="days">Days</option>
 </select>
 </li>[% END %]
-<li><label for="notes">Notes:</label><textarea id="notes" name="notes" cols="50" rows="2">[% notes %]</textarea></li>
+<li><label for="notes">Notes:</label><textarea id="notes" name="notes" cols="50" rows="2">[% notes | html %]</textarea></li>
 </ol>
 </fieldset>
 
 <fieldset class="rows">
     <legend>SQL:</legend>
     <div style="margin:1em;">
-        <textarea id="sql" name="sql" class="required" required="required" cols="50" rows="10">[% sql %]</textarea> <span class="required">Required</span>
+        <textarea id="sql" name="sql" class="required" required="required" cols="50" rows="10">[% sql | html %]</textarea> <span class="required">Required</span>
     </div>
 </fieldset>
 
@@ -986,35 +994,20 @@ Sub report:<select name="subreport">
 
 [% END %]
 
-[% IF ( save_successful ) %]
-[% UNLESS ( errors ) %]
-<h2>Your report has been saved</h2>
-<h4>[% reportname %]</h4>
-<ul>
-    [% IF ( id ) %]
-    <li><a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% id %]&amp;phase=Run%20this%20report">Run this report</a></li>
-    [% END %]
-    <li>Access this report from the: <a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved">Saved reports page</a></li>
-    <li>Schedule this report to run using the: <a href="/cgi-bin/koha/tools/scheduler.pl">Scheduler tool</a></li>
-    <li>Return to: <a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved">Guided reports</a></li>
-</ul>
-[% END %]
-[% END %]
-
 [% IF ( errors ) %]
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post">
 <div class="dialog alert">
 <b>The following error was encountered:</b><br />
 [% FOREACH error IN errors %]
-    [% IF ( error.sqlerr ) %]This report contains the SQL keyword <b>[% error.sqlerr %]</b>.
+    [% IF ( error.sqlerr ) %]This report contains the SQL keyword <b>[% error.sqlerr | html %]</b>.
     <br />Use of this keyword is not allowed in Koha reports due to security and data integrity risks. Only SELECT queries are allowed.
     <br />Please return to the &quot;Saved Reports&quot; screen and delete this report or retry creating a new one.
-    [% ELSIF ( error.queryerr ) %]The database returned the following error: <br />[% error.queryerr %]<br />Please check the log for further details.
+    [% ELSIF ( error.queryerr ) %]The database returned the following error: <br />[% error.queryerr | html %]<br />Please check the log for further details.
     [% ELSIF ( error.cache_expiry ) %]Please select a cache expiry less than 30 days.
     [% ELSE %]
     [% END %]
     <div id="onerror_actions">
-        <a href="javascript:window.history.back()" class="button">Return to previous page</a>
+        <a href="#" class="button goback">Return to previous page</a>
     </div>
 [% END %]
 </div>
@@ -1023,9 +1016,12 @@ Sub report:<select name="subreport">
 </form>
 [% END %]
 
-</div>
-</div>
-<div class="yui-b">
+            </main>
+        </div> <!-- /.col-sm-10.col-sm-push-2 -->
+
+        <div class="col-sm-2 col-sm-pull-10">
+            <aside>
+
 
 [% IF ( saved1 ) %]
 <div id="saved-reports-filter">
@@ -1035,46 +1031,590 @@ Sub report:<select name="subreport">
   <fieldset class="brief">
   <h3>Filter</h3>
   <ol>
-    <li><label for="filter_date">Date:</label> <input type="text" id="filter_date" name="filter_date" size="10" value="[% filters.date %]" class="datepicker" />
+    <li><label for="filter_date">Date:</label> <input type="text" id="filter_date" name="filter_date" size="10" value="[% filters.date | html %]" class="datepicker" />
     <div class="hint">[% INCLUDE 'date-format.inc' %]</div>
 
     </li>
-    <li><label for="filter_author">Author:</label> <input type="text" id="filter_author" name="filter_author" value="[% filters.author %]" /></li>
-    <li><label for="filter_keyword">Keyword:</label> <input type="text" id="filter_keyword" name="filter_keyword" value="[% filters.keyword %]" /></li>
+    <li><label for="filter_author">Author:</label> <input type="text" id="filter_author" name="filter_author" value="[% filters.author | html %]" size="16" /></li>
+    <li><label for="filter_keyword">Keyword:</label> <input type="text" id="filter_keyword" name="filter_keyword" value="[% filters.keyword | html %]" size="16" /></li>
   </ol>
   </fieldset>
   <fieldset class="action">
     <input type="submit" value="Apply filter" />
-    <a id="resetReportsFilter" href="?phase=Use saved&clear_filters=1">Clear</a>
+    <a id="resetReportsFilter" href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved&clear_filters=1">Clear</a>
   </fieldset>
 </form>
 </div>
 [% END %]
 
 
-[% INCLUDE 'guided-reports-view.inc' %]
-</div>
-</div>
-<script type="text/javascript">
-//<![CDATA[
-function addColumn() {
-    $("#availableColumns option:selected").clone().appendTo("#selectedColumns").attr("selected", "selected");
-}
-function delColumn() {
-    $("#selectedColumns option:selected").remove();
-}
-$("#column_submit").submit(function() {
-    if ($("#selectedColumns option").size() < 1) {
-        alert(_("No columns selected!"));
-        return false;
-    }
-    $("#selectedColumns option").attr("selected", "selected");  // Select everything still in #selectedColumns
-    return true;
-});
-//]]>
-</script>
-[% INCLUDE 'intranet-bottom.inc' %]
+                [% INCLUDE 'guided-reports-view.inc' %]
+            </aside>
+        </div> <!-- /.col-sm-2.col-sm-pull-10 -->
+     </div> <!-- /.row -->
+
+
+[% MACRO jsinclude BLOCK %]
+    [% Asset.js("js/charts.js") | $raw %]
+    [% Asset.js("lib/d3c3/d3.min.js") | $raw %]
+    [% Asset.js("lib/d3c3/c3.min.js") | $raw %]
+    [% INCLUDE 'calendar.inc' %]
+    [% INCLUDE 'datatables.inc' %]
+    [% IF ( saved1 ) %]
+        [% INCLUDE 'columns_settings.inc' %]
+    [% END %]
+    [% Asset.js( "lib/codemirror/codemirror-compressed.js" ) | $raw %]
+    [% Asset.js( "lib/codemirror/sql.min.js" ) | $raw %]
+    [% Asset.js( "js/mana.js" ) | $raw %]
+    <script>
+
+        function hide_bar_element() {
+            $('#chart-column-horizontal').hide()
+            $('.chart-column-group').each(function( index ) {
+                $( this ).hide();
+            });
+            $('.chart-column-line').each(function( index ) {
+                $( this ).hide()
+            });
+        }
+
+        function show_bar_element() {
+            $('#chart-column-horizontal').show()
+            $('.chart-column-group').each(function( index ) {
+                $( this ).show()
+            });
+            $('.chart-column-line').each(function( index ) {
+                $( this ).show()
+            });
+        }
+
+        function removeColumn(id) {
+            $('#'+id).remove();
+
+            if ( $('.chart-column-conf').length == 1 ) {
+                $('.chart-column-delete').remove();
+            }
+        }
 
+        var MSG_CONFIRM_DELETE = _("Are you sure you want to delete this report? This cannot be undone.");
+        var group_subgroups = {};
+        [% FOREACH group IN groups_with_subgroups %]
+            var gid = "[% group.id | html %]"
+            group_subgroups[gid] = new Array();
+            [% FOREACH subgroup IN group.subgroups %]
+                var sgid = "[% subgroup.id | html %]";
+                var sgname = "[% subgroup.name | html %]";
+                group_subgroups[gid].push([sgid, sgname]);
+            [% END %]
+        [% END %]
+
+        [% IF ( create || editsql || save ) %]
+            var editor = CodeMirror.fromTextArea(sql, {
+                lineNumbers: true,
+                mode: "text/x-sql",
+                lineWrapping: true
+            });
+        [% END %]
+
+        [% IF ( showsql ) %]
+            var editor = CodeMirror.fromTextArea(sql, {
+                lineNumbers: false,
+                mode: "text/x-sql",
+                lineWrapping: true,
+                readOnly: true
+            });
+        [% END %]
+
+        function load_group_subgroups () {
+            var group = $("#group_select").val();
+            var sg = $("#subgroup");
+            $(sg).find('option[value!=""]').each(function() {
+                $(this).remove();
+            });
+            $(sg).hide();
+            if (group) {
+                var select = $(sg).find('select')[0];
+                $.each( group_subgroups[group], function(index, value) {
+                    $('<option value="' + value[0] + '">' + value[1] + '</option>').appendTo(select);
+                } );
+                $("#subgroup, #subgroup *").show();
+            }
+        }
+
+        $(document).ready(function(){
+            var showsql;
+            hide_bar_element();
+
+            if ( $('.chart-column-conf').length == 1 ) {
+                $('.chart-column-delete').remove();
+            }
+
+            $(".chart-column-delete").on('click', function(e){
+                e.preventDefault();
+                removeColumn('column_' + $(this).data('column'));
+            })
+
+            $('#download-chart').click(function() {
+                var svg = '<svg>' + $('#chart svg').html() + '</svg>';
+                this.href = 'data:application/octet-stream;base64,' + btoa(svg);
+                this.setAttribute('download', 'chart.svg');
+            });
+
+            $('#chart-type').change(function() {
+                if ($(this).val() == 'bar') {
+                    show_bar_element();
+                }
+                else {
+                    hide_bar_element();
+                }
+            });
+
+            $('#download-chart').hide();
+            var chart;
+
+            [% IF results && !errors %]
+                $('#draw-chart').click(function() {
+
+                    var x_elements = $('select[name="x"]').val();
+                    var y_elements = [];
+                    var groups = [];
+                    var lines = [];
+                    var options = {};
+
+                    headers = [% header_row.json | $raw %];
+
+                    var results;
+                    if ($('input[name="chart-include-all"]').prop('checked')) {
+                        results = [% allresults.json | $raw %]
+                    }
+                    else {
+                        results = [% results.json | $raw %]
+                    }
+
+                    if ($('input[name="chart-exclude-last"]').prop('checked')) {
+                        results.splice(-1, 1);
+                    }
+
+                    $('select[name="y"]').each(function( index ) {
+                        y_elements.push( $(this).val() );
+                    });
+                    $('select[name="group"]').each(function( index ) {
+                        groups.push( $(this).val() );
+                    });
+                    $('.column-line').each(function( index ) {
+                        if ($(this).prop('checked')) {
+                            lines.push( $(this).attr('name') );
+                        }
+                    });
+
+                    // Remove deleted columns from headers and results.
+                    var deleted_indexes = [];
+                    var kept_headers = [];
+                    $.each(headers, function(index, value) {
+                        if (value.cell != x_elements && $.inArray(value.cell, y_elements) === -1) {
+                            // This header is neither a x element nor in y elements. Don't need it.
+                            deleted_indexes.push(index);
+                        }
+                        else {
+                            kept_headers.push({cell: value.cell});
+                        }
+                    });
+
+                    // Remove coresponding cells.
+                    var kept_results = [];
+                    $.each(results, function(index, value) {
+                        var line = {};
+                        line['cells'] = [];
+                        $.each(value.cells, function(i, val) {
+                            if ($.inArray(i, deleted_indexes) === -1) {
+                                line['cells'].push({cell: val.cell});
+                            }
+                        });
+                        kept_results.push(line);
+                    });
+
+                    options.type = $('select[name="chart-type"]').val();
+                    options.horizontal = $('input[name="column-horizontal"]').prop('checked');
+                    options.lines = lines;
+
+                    chart = create_chart(kept_headers, kept_results, x_elements, y_elements, groups, options);
+                    $("#download-chart,#toggle_chart_settings_hid,#chart").show();
+                    $("#toggle_chart_settings_vis").hide();
+                    $("#chartModal").modal("hide");
+                });
+            [% END %]
+            [% IF ( create ) %]
+                load_group_subgroups();
+            [% END %]
+
+            $('[data-toggle="tooltip"]').tooltip();
+            var columns_settings = [% ColumnsSettings.GetColumns( 'reports', 'saved-sql', 'table_reports', 'json' ) | $raw %];
+
+            $('#limit').change(function() {
+                $('#limitselect').submit();
+            });
+
+            $(document).click(function() {
+                $('#report_updated').hide();
+            });
+
+            $(".goback").on("click",function(e){
+                e.preventDefault();
+                window.history.back();
+            });
+
+            $("body").on("click", ".mana_search_button", function(){
+                $("#mana-loading").show();
+                mana_search($("#mana_search_field").val());
+            });
+
+            $(".ShareButton").on("click", function(){
+                $("#note-error").hide();
+                if($(this).closest("tr").find(".report_notes").text().length < 20 || $(this).closest("tr").find(".report_name").text().length < 20){
+                    $(".shared_infos").hide();
+                    $("#note-error").show();
+                }
+                else{
+                    $("#reportid").val($(this).closest("tr").find(".report_id").text());
+                    $("#shared_id").html($(this).closest("tr").find(".report_id").text());
+                    $("#shared_name").html($(this).closest("tr").find(".report_name").text());
+                    $("#shared_sql").html($(this).closest("tr").find(".report_sql").val());
+                    $("#shared_type").html($(this).closest("tr").find(".report_type").text());
+                    $("#shared_group").html($(this).closest("tr").find(".report_group").text());
+                    $("#shared_notes").html($(this).closest("tr").find(".report_notes").text());
+                }
+            });
+
+            $("#ManaCloseButton").on("click", function() {
+                $(".shared_infos").show();
+            });
+
+            $("#addColumn").on("click",function(){
+                addColumn();
+            });
+
+            $("#delColumn").on("click",function(){
+                delColumn();
+            });
+
+            [% IF (saved1) %]
+                var rtable = KohaTable("table_reports", {
+                    'iDisplayLength': [% Koha.Preference('NumSavedReports') | html %],
+                    'bAutoWidth': false,
+                    'sPaginationType': 'four_button',
+                    'aaSorting': [[ 1, "asc" ]],
+                    'aoColumnDefs': [
+                        { 'bSortable': false, 'bSearchable':false, 'aTargets': [0, -1] },
+                        { 'bSearchable': false, 'aTargets': [3] },
+                        { "aTargets": [ 1, 2 ], "sType": "natural"  },
+                        { "sType": "title-string", "aTargets" : [ "title-string" ] },
+                        { "visible": false, "aTargets" : [ "hidden" ] }
+                    ],
+                    'oLanguage': {
+                        'sZeroRecords': _("No matching reports found")
+                    },
+                }, columns_settings);
+
+                var rtabs = $("#tabs").tabs();
+                rtabs.on("tabsactivate", function(e, ui) {
+                    $("#subgroup_filter option").each(function() {
+                        if($(this).val().length > 0) {
+                            $(this).remove();
+                        }
+                    });
+                    rtable.fnFilter('', 4);
+                    rtable.fnFilter('', 5);
+                    rtable.fnSetColumnVis(4, true);
+                    rtable.fnSetColumnVis(5, true);
+
+                    var g_id = $(ui.newTab).children().attr('id');
+                    var g_name = $(ui.newTab).text();
+                    if ( g_name == _("All") ) {
+                        g_id = "";
+                        g_name = "";
+                    }
+
+                    if (g_id && g_id.length > 0) {
+                        rtable.fnFilter('^' + g_name + '$', 4, true, true, true, false);
+                        rtable.fnSetColumnVis(4, false);
+                        for(var i in group_subgroups[g_id]) {
+                            $("#subgroup_filter").append(
+                                '<option value="' + group_subgroups[g_id][i][0] + '">'
+                                + group_subgroups[g_id][i][1] + '</option>'
+                            );
+                        }
+                        $("#subgroup_filter_block").show();
+                    } else {
+                        $("#subgroup_filter_block").hide();
+                    }
+                });
+                $("#subgroup_filter_block").hide();
+
+                $("#subgroup_filter").change(function() {
+                    var selected = $(this).find('option:selected');
+                    var sg_id = $(selected).val();
+                    var sg_name = $(selected).text();
+                    if (sg_id.length > 0) {
+                        rtable.fnFilter('^' + sg_name + '$', 5, true, true, true, false);
+                        rtable.fnSetColumnVis(5, false);
+                    } else {
+                        rtable.fnFilter('', 5);
+                        rtable.fnSetColumnVis(5, true);
+                    }
+                });
+
+                $("#reports_form").submit(function(){
+                    var checkedItems = $("input[name=ids]:checked");
+                    if ($(checkedItems).size() == 0) {
+                        alert(_("You must select one or more reports to delete"));
+                        return false;
+                    }
+                    $(checkedItems).parents('tr').addClass("warn");
+                    if( confirm(_("Are you sure you want to delete the selected reports?")) ) {
+                        return true;
+                    } else {
+                        $(checkedItems).parents('tr').removeClass("warn");
+                        return false;
+                    }
+                });
+
+                $("body").on("click", ".update_sql", function(e){
+                    e.preventDefault();
+                    var ltitle = $(this).text();
+                    var report_id = $(this).data("report_id");
+                    var page = $(this).attr("href");
+                    $("#update_sql .modal-body").load(page + " div", function(){
+                        var diff1 = $("#col1 .show_sql").text();
+                        var diff2 = $("#col2 .show_sql").text();
+                        var diffs = diffString( escape(diff1), escape(diff2) );
+                        $("#col1 .show_sql,#col2 .show_sql").html(diffs);
+                    });
+                    $('#update_sql').modal('show');
+                    $("#update_sql_button").attr("href", "/cgi-bin/koha/reports/guided_reports.pl?phase=Use saved&op=convert&report_id=" + report_id);
+                });
+
+                $("#update_sql").on("hidden.bs.modal", function(){
+                    $("#update_sql_label").html("");
+                    $("#update_sql .modal-body").html("<div id=\"loading\"><img src=\"[% interface | html %]/[% theme | html %]/img/spinner-small.gif\" alt=\"\" /> "+_("Loading")+"</div>");
+                });
+            [% END %]
+
+            [% IF ( showsql ) %]
+                $("#sql").focus(function() {
+                    $(this).select();
+                });
+            [% END %]
+
+            $(".toggle_sql").click(function(){
+                $("#sql_output").toggle();
+                $("#toggle_sql_hid").toggle();
+                $("#toggle_sql_vis").toggle();
+                if( !showsql ){
+                    showsql = CodeMirror.fromTextArea(sql, {
+                        lineNumbers: false,
+                        mode: "text/x-sql",
+                        lineWrapping: true,
+                        readOnly: true
+                    });
+                }
+            });
+
+            $(".toggle_chart_settings").click(function(){
+                $("#chart, #toggle_chart_settings_hid, #toggle_chart_settings_vis").toggle();
+            });
+
+            $("#table_reports").delegate(".confirmdelete", 'click', function(){
+                $(this).parents('tr').attr("class","warn");
+                if(confirm(_("Are you sure you want to delete this saved report?"))){
+                    return true;
+                } else {
+                    $(this).parents('tr').attr("class","");
+                    return false;
+                }
+            });
+
+            [% IF (create || editsql || save) %]
+                $("#select_group").change(function() {
+                    if($(this).prop('checked')) {
+                        $("#group_input").prop('disabled', true);
+                        $("#groupdesc_input").prop('disabled', true);
+                        $("#group_select").prop('disabled', false);
+                        if ($("#group_select").val().length > 0) {
+                            $("#select_subgroup").prop('checked', true);
+                            $("#select_subgroup").change();
+                            $("#subgroup, #subgroup *").show();
+                        } else {
+                            $("#subgroup").hide();
+                        }
+                    }
+                });
+                $("#create_group").change(function() {
+                    if($(this).prop('checked')) {
+                        $("#group_input").prop('disabled', false);
+                        $("#groupdesc_input").prop('disabled', false);
+                        $("#group_select").prop('disabled', true);
+                        $("#create_subgroup").prop('checked', true).change();
+                        $("#subgroup_select").hide();
+                        $("#subgroup input[type='radio']").hide();
+                        $("#subgroup label[for]").hide();
+                        $("#subgroup_input").show();
+                        $("#subgroupdesc_input").show();
+                        $("#subgroup").show();
+                    }
+                });
+                $("#select_subgroup").change(function() {
+                    if($(this).prop('checked')) {
+                        $("#subgroup_select").prop('disabled', false);
+                        $("#subgroup_input").prop('disabled', true);
+                        $("#subgroupdesc_input").prop('disabled', true);
+                    }
+                });
+                $("#create_subgroup").change(function() {
+                    if($(this).prop('checked')) {
+                        $("#subgroup_input").prop('disabled', false);
+                        $("#subgroupdesc_input").prop('disabled', false);
+                        $("#subgroup_select").prop('disabled', true);
+                    }
+                });
+                $("#select_group").change();
+                $("#select_subgroup").change();
+                $("#group_select").on("change",function(){
+                    load_group_subgroups();
+                });
+            [% END %]
+            $(".delete").on("click",function(){
+                return confirmDelete(MSG_CONFIRM_DELETE);
+            });
+
+            $("#mana_search_form").submit(function(e){
+                e.preventDefault();
+            });
+
+            $("#column_submit").submit(function() {
+                if ($("#selectedColumns option").size() < 1) {
+                    alert(_("No columns selected!"));
+                    return false;
+                }
+                $("#selectedColumns option").attr("selected", "selected");  // Select everything still in #selectedColumns
+                return true;
+            });
+
+            // Mana KB
+            $("body").on("click", ".mana-use", function(e) {
+                e.preventDefault();
+                $(this).find("i").attr("class","fa fa-refresh fa-spin");
+                mana_use( $(this).data("report_id") );
+            });
+
+            $("#mana_search_result").on("hide.bs.modal", function(){
+                $("#mana_result_content").html("");
+                $("#mana_search_field").val("");
+            });
+
+            $(".batch_op").on("click", function(e){
+                e.preventDefault();
+                var target_form = $(this).data("submit");
+                $("#" + target_form ).submit();
+            });
+
+            $("#batch_add_to_list").on("submit", function(e){
+                e.preventDefault();
+                addToList();
+            });
+        });
+
+        function addColumn() {
+            $("#availableColumns option:selected").clone().appendTo("#selectedColumns").attr("selected", "selected");
+        }
+        function delColumn() {
+            $("#selectedColumns option:selected").remove();
+        }
+
+        // Mana KB
+        function mana_use( mana_id ){
+            $.ajax( {
+                type:"POST",
+                url: "/cgi-bin/koha/svc/mana/use",
+                data: {id:mana_id, resource: 'report', saveinbase: 1},
+                dataType: "json",
+            })
+            .done( function (result){
+                if ( result.errmsg ){
+                    alert( result.errmsg );
+                }
+                else{
+                    window.location = ("/cgi-bin/koha/reports/guided_reports.pl?reports=").concat(result.id).concat("&phase=Show%20SQL&mana_success=1");
+                }
+            })
+            .fail(function( error ) {
+                $(".mana_use_status").hide();
+                $("#mana_use_errortext").html( error.status + " " + error.statusText );
+                $("#mana_use_failed").show();
+                $(".mana-use i").attr("class","fa fa-download");
+            });
+        }
+
+        function mana_search( textquery ){
+            $(".mana_search_status").hide();
+            $("#mana_result_content").load("/cgi-bin/koha/svc/mana/search #mana_results", { resource: 'report', id: textquery, usecomments: 1 }, function( response, status, xhr ) {
+
+                    if ( status == "error" ) {
+                        $("#mana_search_errortext").html( xhr.status + " " + xhr.statusText );
+                        $("#mana_search_failed").show();
+                        $("#mana-loading").hide();
+                    } else {
+                        $(".mana_search_status").hide();
+                        $("#mana_search_result_label").text(_("Results from Mana Knowledge Base"));
+                        $("#mana-loading").hide();
+                        $("#mana_results_datatable").dataTable($.extend(true, {}, dataTablesDefaults,{
+                            "sPaginationType":"four_button",
+                            "autoWidth": false,
+                            "columnDefs": [
+                                { "width": "35%", "targets": 1 }
+                            ],
+                            "aoColumnDefs": [
+                                { 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
+                                { "sType": "title-string", "aTargets" : [ "title-string" ] },
+                                { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
+                            ]
+                        }));
+
+                        $(".showbutton").on("click", function(e){
+                            e.preventDefault();
+                            $(this).parent().hide();
+                            $(this).parent().next().show();
+                        });
+
+                        $(".hidebutton").on("click", function(e){
+                            e.preventDefault();
+                            $(this).parent().hide();
+                            $(this).parent().prev().show();
+                        });
+
+                        if($("td.dataTables_empty").length == 0){
+                            $("#mana_search_message").show();
+                        }
+                    }
+                });
+        }
+
+        function addToList() {
+            var biblionumbers = [];
+            $(".bib_to_list").each(function() {
+                var biblionumber = Number( $(this).val() );
+                if( biblionumbers.indexOf( biblionumber ) < 0 ){
+                    biblionumbers.push( biblionumber );
+                }
+            });
+            bibs = biblionumbers.join("/");
+            var url = "/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?biblionumbers=" + bibs;
+            window.open(url, 'Add_to_virtualshelf', 'width=500, height=400, toolbar=false, scrollbars=yes');
+            return false;
+        }
+    </script>
+[% END %]
+
+[% INCLUDE 'intranet-bottom.inc' %]
 
 [% BLOCK group_and_subgroup_selection %]
     <li id="group">
@@ -1082,20 +1622,20 @@ $("#column_submit").submit(function() {
         <input type="radio" name="select_or_create_group"
             id="select_group" checked="checked" />
         <label for="select_group" style="float:none">Select</label>
-        <select name="group" onChange="load_group_subgroups();" id="group_select">
+        <select name="group" id="group_select">
             <option value="">(None)</option>
             [% FOREACH group IN groups_with_subgroups %]
                 [% IF (group.selected) %]
-                    <option value="[% group.id %]" selected="selected">
+                    <option value="[% group.id | html %]" selected="selected">
                 [% ELSE %]
-                    <option value="[% group.id %]">
+                    <option value="[% group.id | html %]">
                 [% END %]
-                    [% group.name %]
+                    [% group.name | html %]
                 </option>
             [% END %]
         </select>
         <input type="radio" name="select_or_create_group" id="create_group" />
-        <label for="create_group" style="float:none">or create</label>
+        <label for="create_group" style="float:none">or create:</label>
         <input type="text" name="group" id="group_input" title="Group code" placeholder="Code" />
         <input type="text" name="groupdesc" id="groupdesc_input" title="Group name" placeholder="Name" />
     </li>
@@ -1110,11 +1650,11 @@ $("#column_submit").submit(function() {
                 [% IF (group.selected) %]
                     [% FOREACH subgroup IN group.subgroups %]
                         [% IF (subgroup.selected) %]
-                            <option value="[% subgroup.id %]" selected="selected">
+                            <option value="[% subgroup.id | html %]" selected="selected">
                         [% ELSE %]
-                            <option value="[% subgroup.id %]">
+                            <option value="[% subgroup.id | html %]">
                         [% END %]
-                            [% subgroup.name %]
+                            [% subgroup.name | html %]
                         </option>
                     [% END %]
                 [% END %]