Bug 17418 - Move staff client home page JavaScript to the footer
authorOwen Leonard <oleonard@myacpl.org>
Mon, 10 Oct 2016 09:52:51 +0000 (05:52 -0400)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 16 Dec 2016 11:53:39 +0000 (11:53 +0000)
This patch alters the header and footer include files so that JavaScript
can be included in either one or the other. As a proof of concept, the
staff client home page is updated to include JS in the footer instead
of the header.

The processing of JavaScript included on individual pages can now be
similar to how it is done in the OPAC. A block is created with the
page's JavaScript which is then processed in js_includes.inc in the
correct order, after other required js assets.

On pages which have been modified to allow JavaScript to be moved to the
footer you must add a variable to the template: [% SET footerjs = 1 %].
Eventually all staff client templates should be modified so that setting
a flag is not required.

"[% MACRO jsinclude BLOCK %]" is used instead of "[% BLOCK %]" and "[%
PROCESS %]" because MACRO allows the template directives to be
processed correctly when included by intranet-bottom.inc.

To test, apply the patch and view the staff client home page.

- Confirm that you get a confirmation when deleting a news item from the
  home page.
- Enable the CircAutocompl system preference and test that patron
  autocomplete works from the "Check out" tab from the staff home page
  and from other pages where the "Check out" tab is present.
- Test that JavaScript is working correctly on other pages like
  Circulation, Preferences, etc.

Signed-off-by: Claire Gravely <claire_gravely@hotmail.com>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc
koha-tmpl/intranet-tmpl/prog/en/includes/intranet-bottom.inc
koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc
koha-tmpl/intranet-tmpl/prog/en/includes/patron-search-box.inc
koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt

index cd3919d..2f8e9af 100644 (file)
@@ -21,4 +21,6 @@
 [% END %]
 [% IF ( IntranetUserCSS ) %]<style type="text/css">[% IntranetUserCSS %]</style>[% END %]
 
-[% INCLUDE js_includes.inc %]
+[% UNLESS ( footerjs ) %]
+    [% INCLUDE js_includes.inc %]
+[% END %]
index f9103ce..275bc43 100644 (file)
@@ -66,5 +66,9 @@
     [% END %]
 [% END %]
     <span id="audio-alert"></span>
+    [% IF ( footerjs ) %]
+        [% INCLUDE js_includes.inc %]
+        [% jsinclude # Parse the page template's JavaScript block if necessary %]
+    [% END %]
     </body>
 </html>
index 141e53e..326f22a 100644 (file)
         });
     </script>
 [% END %]
+
+[% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
+    [% IF ( CircAutocompl ) %]
+        <script type="text/javascript">
+            $(document).ready(function(){
+                $( "#findborrower" ).autocomplete({
+                    source: "/cgi-bin/koha/circ/ysearch.pl",
+                    minLength: 3,
+                    select: function( event, ui ) {
+                        $( "#findborrower" ).val( ui.item.cardnumber );
+                        $("#patronsearch").submit();
+                        return false;
+                    }
+                })
+                .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
+                    return $( "<li></li>" )
+                    .data( "ui-autocomplete-item", item )
+                    .append( "<a>" + item.surname + ", " + item.firstname + " (" + item.cardnumber + ") <small>" + item.dateofbirth + " " + item.address + " " + item.city + " " + item.zipcode + " " + item.country + "</small></a>" )
+                    .appendTo( ul );
+                };
+            });
+        </script>
+    [% END %]
+[% END %]
index 1980318..cb13280 100644 (file)
@@ -1,25 +1,4 @@
-[% IF ( CAN_user_circulate_circulate_remaining_permissions ) %][% IF ( CircAutocompl ) %]<script type="text/javascript">
-//<![CDATA[
-$(document).ready(function(){
-    $( "#findborrower" ).autocomplete({
-        source: "/cgi-bin/koha/circ/ysearch.pl",
-        minLength: 3,
-        select: function( event, ui ) {
-            $( "#findborrower" ).val( ui.item.cardnumber );
-            $("#patronsearch").submit();
-            return false;
-        }
-    })
-    .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
-        return $( "<li></li>" )
-        .data( "ui-autocomplete-item", item )
-        .append( "<a>" + item.surname + ", " + item.firstname + " (" + item.cardnumber + ") <small>" + item.dateofbirth + " " + item.address + " " + item.city + " " + item.zipcode + " " + item.country + "</small></a>" )
-        .appendTo( ul );
-    };
-
-});
-//]]>
-</script>[% END %]
+[% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
     <div id="circ_search" class="residentsearch">
     <p class="tip">Enter patron card number or partial name:</p>
     <form action="/cgi-bin/koha/circ/circulation.pl" id="patronsearch" method="post">
index 060ba39..f1afe8e 100644 (file)
@@ -1,19 +1,9 @@
 [% USE Koha %]
+[% SET footerjs = 1 %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha staff client</title>
 <link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/mainpage.css" />
 [% INCLUDE 'doc-head-close.inc' %]
-<style type="text/css"> </style>
-<script type="text/javascript">
-//<![CDATA[
-var MSG_CONFIRM_DELETE = _("Are you sure you want to delete this news item? This cannot be undone.");
-    $(document).ready(function(){
-        $(".news_delete").on("click", function(){
-            return confirmDelete(MSG_CONFIRM_DELETE);
-        });
-    });
-//]]>
-</script>
 </head>
 <body id="main_intranet-main" class="main">
 [% INCLUDE 'header.inc' %]
@@ -208,5 +198,17 @@ var MSG_CONFIRM_DELETE = _("Are you sure you want to delete this news item? This
     </div>
 </div>
 
+[% MACRO jsinclude BLOCK %]
+    <script type="text/javascript">
+    //<![CDATA[
+    var MSG_CONFIRM_DELETE = _("Are you sure you want to delete this news item? This cannot be undone.");
+        $(document).ready(function(){
+            $(".news_delete").on("click", function(){
+                return confirmDelete(MSG_CONFIRM_DELETE);
+            });
+        });
+    //]]>
+    </script>
+[% END %]
 <!-- the main div is closed in intranet-bottom.inc -->
 [% INCLUDE 'intranet-bottom.inc' %]