Bug 3134: [Follow-up] Ability to select multiple reports to delete at once
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / reports / guided_reports_start.tt
index 21d8235..60bbe28 100644 (file)
 <style type="text/css">
     #sql { width: 90%; height: 9em;}
 </style>
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.pager.js"></script>
+[% IF ( saved1 ) %]
+<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
+[% INCLUDE 'datatables-strings.inc' %]
+<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
+[% END %]
 
 <script type="text/javascript">
 //<![CDATA[
+[% IF (dateformat == 'metric' && saved1) %]
+dt_add_type_uk_date();
+[% END %]
+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();
+    }
+}
+
 $(document).ready(function(){
+
+[% IF (saved1) %]
+    [% IF (dateformat == "metric") %]
+        dt_add_type_uk_date();
+    [% END %]
+    var rtable = $("#table_reports").dataTable($.extend(true, {}, dataTablesDefaults, {
+        'bAutoWidth': false,
+        'sDom': 't<"bottom pager"ilpf>',
+        'sPaginationType': 'four_button',
+        'aLengthMenu': [[10, 20, 50, 100, -1], [10, 20, 50, 100, "All"]],
+        'iDisplayLength': 20,
+        'aaSorting': [[ 1, "asc" ]],
+        'aoColumnDefs': [
+            { 'bSortable': false, 'bSearchable':false, 'aTargets': [0, -1, -2, -3, -4] },
+            { 'bSearchable': false, 'aTargets': [3, 4] }
+        ],
+        'oLanguage': {
+            'sZeroRecords': _("No matching reports found")
+        }
+    }));
+
+    var rtabs = $("#tabs").tabs();
+    rtabs.bind("tabsshow", 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.tab).attr('id')
+        var g_name = $(ui.tab).text();
+        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 + '$', 4, true, true, true, false);
+            rtable.fnSetColumnVis(4, false);
+        } else {
+            rtable.fnFilter('', 4);
+            rtable.fnSetColumnVis(4, 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;
+        }
+        return confirm(_("Are you sure you want to delete the selected reports?"));
+    });
+[% END %]
+
 [% IF ( showsql ) %]
     $("#sql").focus(function() {
         $(this).select();
@@ -33,7 +141,7 @@ $(document).ready(function(){
 [% IF ( saved1 ) %]
     $(".confirmdelete").click(function(){
         $(this).parents('tr').attr("class","warn");
-        if(confirm("Are you sure you want to "+$(this).attr("title")+"?")){
+        if(confirm(_("Are you sure you want to delete this saved report?"))){
             return true;
         } else {
             $(this).parents('tr').attr("class","");
@@ -41,24 +149,56 @@ $(document).ready(function(){
         }
     });
 [% END %]
-  // call the tablesorter plugin
-  $("#table_reports").tablesorter({
-    sortList: [[1,0]],
-    headers: {
-       6: { sorter: false},
-       7: { sorter: false},
-       8: { sorter: false},
-       9: { sorter: false},
-      10: { sorter: false}
-    }
-  }).tablesorterPager({
-    container:     $("#pagertable_reports"),
-    positionFixed: false,
-    size:          20
-  });
   // redefine the datepicker's default because reports require ISO
   // http://jqueryui.com/demos/datepicker/#option-dateFormat
   $( ".datepicker" ).datepicker( "option", "dateFormat", "yy-mm-dd" );
+
+[% 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>
@@ -128,59 +268,95 @@ canned reports and writing custom SQL reports.</p>
 [% IF ( saved1 ) %]
 [% IF ( savedreports ) %]<h1>Saved reports</h1>
 
-<div id="pagertable_reports">
-[% INCLUDE 'table-pager.inc' perpage='20' %]
-</div>
-
-<table id="table_reports" class="tablesorter">
-<thead>
- <tr>
-  <th>ID</th>
-  <th>Report name</th>
-  <th>Type</th>
-  <th>Notes</th>
-  <th>Author</th>
-  <th>Creation date</th>
-  <th>Public</th>
-  [% IF (usecache) %] <th>Cache expiry (seconds)</th> [% END %]
-  <th>Saved results</th>
-  <th>Saved SQL</th>
-  <th>&nbsp;</th>
-  <th>&nbsp;</th>
- </tr>
-</thead>
-<tbody>
-[% FOREACH savedreport IN savedreports %]
-[% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
-<td>[% savedreport.id %]</td>
-<td>[% savedreport.report_name %]</td>
-<td>[% savedreport.type %]</td>
-<td>[% savedreport.notes %]</td>
-<td>[% savedreport.borrowersurname %][% IF ( savedreport.borrowerfirstname ) %], [% savedreport.borrowerfirstname %][% END %] ([% savedreport.borrowernumber %])</td>
-<td>[% savedreport.date_created %]</td>
-[% IF (savedreport.public) %]
-<td>Yes</td>
-[% ELSE %]
-<td>No</td>
-[% 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>
-        <a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&amp;phase=Show%20SQL">Show</a> 
-        [% IF ( CAN_user_reports_create_reports ) %]
-            &nbsp; <a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&amp;phase=Edit%20SQL">Edit</a>
+<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>
         [% END %]
-    </td>
-<td><a href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&amp;phase=Run%20this%20report">Run</a>
-<a href="/cgi-bin/koha/tools/scheduler.pl?id=[% savedreport.id %]">Schedule</a></td>
-    [% IF ( CAN_user_reports_create_reports ) %]
-        <td><a class="confirmdelete" title="Delete this saved report" href="/cgi-bin/koha/reports/guided_reports.pl?reports=[% savedreport.id %]&amp;phase=Delete%20Saved">Delete</a></td>
-    [% END %]
-</tr>
-[% END %]
-</tbody>
-</table>
+    </ul>
+    <div id="reports">
+        <div id="subgroup_filter_block">
+            <label for="subgroup_filter">Subgroup:</label>
+            <select id="subgroup_filter">
+                <option value="">All</option>
+            </select>
+        </div>
+<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">
+            <thead>
+                <tr>
+                    <th>&nbsp;</th>
+                    <th>ID</th>
+                    <th>Report name</th>
+                    <th>Type</th>
+                    <th>Group</th>
+                    <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>Saved results</th>
+                    <th>&nbsp;</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>
+                            [% IF ( savedreport.report_name ) %]
+                                [% savedreport.report_name %]
+                            [% 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>[% savedreport.date_created %]</td>
+                        [% IF (savedreport.public) %]
+                        <td>Yes</td>
+                        [% ELSE %]
+                        <td>No</td>
+                        [% 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>
+                            <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="icon-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="icon-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="icon-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="icon-play"></i> Run</a></li>
+                                    <li><a href="/cgi-bin/koha/tools/scheduler.pl?id=[% savedreport.id %]"><i class="icon-time"></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="icon-remove"></i> Delete</a></li>
+                                    [% END %]
+                                </ul>
+                            </div>
+                        </td>
+                    </tr>
+                [% END %]
+            </tbody>
+        </table>
+        <fieldset class="action">
+            <input type="submit" value="Delete selected" />
+        </fieldset>
+    </form>
+    </div>
+</div>
 [% ELSE %]<div class="dialog message">
     [% IF (filter_set) %]
     <h4>No saved reports match your criteria. </h4>
@@ -219,15 +395,15 @@ canned reports and writing custom SQL reports.</p>
 <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>
-<ol><li><label for="areas">Choose: </label><select name="areas" id="areas">
+<ol><li><label for="area">Choose: </label><select name="area" id="area">
 [% FOREACH area IN areas %]
 <option value="[% area.id %]">[% area.name %]</option>
 [% END %]
 </select></li>
 [% 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</public> </select></li>
+  <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>
 [% ELSE %]
-  <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</public> </select></li>
+  <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>
@@ -239,7 +415,7 @@ canned reports and writing custom SQL reports.</p>
 </select>
 </li>[% END %]
 </ol>
-<ofieldset>
+</fieldset>
 <fieldset class="action">
 <input type="hidden" name="phase" value="Report on this Area" />
 <input type="submit" name="submit" value="Next &gt;&gt;" />
@@ -275,9 +451,9 @@ canned reports and writing custom SQL reports.</p>
 
 <!--- Summary and Matrix reports have not yet been implemented-->
 <!--<div class="yui-u">Summary:
-<img src="/intranet-tmpl/prog/img/reports-summary-graphic.gif" /></div>
+<img src="[% interface %]/[% theme %]/img/reports-summary-graphic.gif" /></div>
 <div class="yui-u">Matrix:
-<img src="/intranet-tmpl/prog/img/reports-matrix-graphic.gif" /></div>-->
+<img src="[% interface %]/[% theme %]/img/reports-matrix-graphic.gif" /></div>-->
 
 [% END %]
 
@@ -387,11 +563,13 @@ canned reports and writing custom SQL reports.</p>
     </fieldset>
 
 [% IF ( definitions ) %]
-<fieldset><legend>Dictionary definitions</legend><table>
+<fieldset><legend>Dictionary definitions</legend>
+<table>
 [% FOREACH definition IN definitions %]
     <tr><td><input type="checkbox" name="definition" value="[% definition.id %]" /> [% definition.name %]</td></tr>
 [% END %]
 </table>
+</fieldset>
 [% END %]
 
 <fieldset class="action"><input type="hidden" name="phase" value="Choose these criteria" />
@@ -485,12 +663,14 @@ canned reports and writing custom SQL reports.</p>
 <form action="/cgi-bin/koha/reports/guided_reports.pl" method="post">
 <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 %]" />
 <fieldset class="rows">
 <legend>Save your custom report</legend>
 <ol>
     <li><label for="reportname">Report name: </label><input type="text" id="reportname" name="reportname" /></li>
+    [% PROCESS group_and_subgroup_selection %]
     <li><label for="notes">Notes:</label> <textarea name="notes" id="notes"></textarea></li>
 </ol></fieldset>
 <fieldset class="action"><input type="hidden" name="phase" value="Save Report" />
@@ -498,28 +678,93 @@ canned reports and writing custom SQL reports.</p>
 </form>
 [% END %]
 
+[% IF ( warn_authval_problem ) %]
+     <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>
+[% END %]
+
 [% IF ( enter_params ) %]
     <form action='/cgi-bin/koha/reports/guided_reports.pl'>
-        <input type='hidden' name='phase' value='Run this report' />
         <input type='hidden' name='reports' value="[% reports %]" />
+    [% 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>
+            [% 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>)
+                    you selected does not exist.
+                </p>
+            [% END %]
+        </div>
+        <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 %]
         <fieldset class="rows">
             <ol>
-        [% FOREACH sql_param IN sql_params %]
-            [% 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" />
-                </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>
-            [% ELSE %]
-                <li><label for="sql_params_[% sql_param.labelid %]">[% sql_param.entry %]:</label> [% sql_param.input %]</li>
+            [% FOREACH sql_param IN sql_params %]
+                [% 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" />
+                    </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>
+                [% ELSE %]
+                    <li><label for="sql_params_[% sql_param.labelid %]">[% sql_param.entry %]:</label> [% sql_param.input %]</li>
+                [% END %]
             [% END %]
-        [% END %]
             </ol>
         </fieldset>
         <fieldset class="action"><input type="submit" value="Run the report" /></fieldset>
+    [% END %]
     </form>
 [% END %]
 
@@ -528,6 +773,30 @@ canned reports and writing custom SQL reports.</p>
 [% 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>
+
+<form action="/cgi-bin/koha/reports/guided_reports.pl" method="get">
+    <input type="hidden" name="phase" value="Run this report"/>
+    <input type="hidden" name="reports" value="[% report_id %]"/>
+
+    [% FOREACH p IN sql_params %]
+        <input type="hidden" name="sql_params" value="[% p %]"/>
+    [% END %]
+
+    <label for="limit">Rows per page: </label>
+    <select name="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>
+                [% ELSE %]
+                    <option value="[% l %]">[% l %]</option>
+                [% END %]
+        [% END %]
+    </select>
+
+    <input type="submit" value="Update" />
+</form>
+
 <div class="pages">[% pagination_bar %]</div>
 [% UNLESS ( errors ) %]
 <table>
@@ -553,6 +822,11 @@ canned reports and writing custom SQL reports.</p>
 [% 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">
 <fieldset class="rows">
 <legend>Create report from SQL</legend>
@@ -561,10 +835,12 @@ canned reports and writing custom SQL reports.</p>
         [% IF ( reportname ) %]<input type="text" id="reportname" name="reportname" value="[% reportname %]" />
         [% ELSE %]<input type="text" id="reportname" name="reportname" />[% END %] 
     </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</public> </select></li>
+  <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>
 [% ELSE %]
-  <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</public> </select></li>
+  <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>
@@ -652,10 +928,11 @@ Sub report:<select name="subreport">
 <legend>Edit SQL report</legend>
 <ol>
 <li><label for="reportname">Report name:</label><input type="text" id="reportname" name="reportname" value="[% reportname %]" size="50" /></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</public> </select></li>
+  <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>
 [% ELSE %]
-  <li><label for="public">Report is public:</label><select id="public" name="public"> <option value="0" selected="selelcted">No (default)</option> <option value="1">Yes</public> </select></li>
+  <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>
@@ -732,6 +1009,7 @@ Sub report:<select name="subreport">
     <li><label for="filter_author">Author:</label> <input type="text" id="filter_author" name="filter_author" value="[% filter_author %]" /></li>
     <li><label for="filter_keyword">Keyword:</label> <input type="text" id="filter_keyword" name="filter_keyword" value="[% filter_keyword %]" /></li>
   </ol>
+  </fieldset>
   <fieldset class="action"><input type="submit" value="Apply filter" /></fieldset>
 </form>
 </div>
@@ -760,3 +1038,56 @@ $("#column_submit").submit(function() {
 //]]>
 </script>
 [% INCLUDE 'intranet-bottom.inc' %]
+
+
+[% BLOCK group_and_subgroup_selection %]
+    <li id="group">
+        <label>Report group:</label>
+        <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">
+            <option value="">(None)</option>
+            [% FOREACH group IN groups_with_subgroups %]
+                [% IF (group.selected) %]
+                    <option value="[% group.id %]" selected="selected">
+                [% ELSE %]
+                    <option value="[% group.id %]">
+                [% END %]
+                    [% group.name %]
+                </option>
+            [% END %]
+        </select>
+        <input type="radio" name="select_or_create_group" id="create_group" />
+        <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>
+    <li id="subgroup">
+        <label>Report subgroup:</label>
+        <input type="radio" name="select_or_create_subgroup"
+            id="select_subgroup" checked="checked" />
+        <label for="select_subgroup" style="float:none">Select</label>
+        <select name="subgroup" id="subgroup_select">
+            <option value="">(None)</option>
+            [% FOREACH group IN groups_with_subgroups %]
+                [% IF (group.selected) %]
+                    [% FOREACH subgroup IN group.subgroups %]
+                        [% IF (subgroup.selected) %]
+                            <option value="[% subgroup.id %]" selected="selected">
+                        [% ELSE %]
+                            <option value="[% subgroup.id %]">
+                        [% END %]
+                            [% subgroup.name %]
+                        </option>
+                    [% END %]
+                [% END %]
+            [% END %]
+        </select>
+        <input type="radio" name="select_or_create_subgroup"
+            id="create_subgroup" />
+        <label for="create_subgroup" style="float:none">or create</label>
+        <input type="text" name="subgroup" id="subgroup_input" title="Subgroup code" placeholder="Code" />
+        <input type="text" name="subgroupdesc" id="subgroupdesc_input" title="Subgroup name" placeholder="Name" />
+    </li>
+[% END %]