Fix for Bug 7135: Save button options
authorOwen Leonard <oleonard@myacpl.org>
Thu, 3 Nov 2011 18:54:39 +0000 (14:54 -0400)
committerPaul Poulain <paul.poulain@biblibre.com>
Tue, 13 Dec 2011 17:01:33 +0000 (18:01 +0100)
This patch adds a jQuery plugin which will cause
an element to remain "fixed" at the top of the
screen if it would otherwise scroll up out of
view.

The license of this plugin is "This plugin is as free as fresh
air. Feel free to use it anywhere.".

Signed-off-by: Liz Rea <wizzyrea@gmail.com>
I tested this on Chrome OSX
saving works
changing framework works
scrolling works, obviously.
tabbing through the records works
z39 button works as expected

Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
updated patch comment about licensing of the plugin

koha-tmpl/intranet-tmpl/prog/en/css/addbiblio.css
koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/jquery.fixFloat.js [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt

index 3cf2e88..d2489b3 100644 (file)
@@ -144,4 +144,9 @@ a.tagnum {
 
 .yui-gf .yui-u {
        width: 79.2%;
 
 .yui-gf .yui-u {
        width: 79.2%;
+}
+/* Class to be added to toolbar when it starts being fixed at the top of the screen*/
+.floating {
+       -webkit-box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .5);
+       box-shadow: 0px 3px 2px 0px rgba(0, 0, 0, .5);
 }
\ No newline at end of file
 }
\ No newline at end of file
diff --git a/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/jquery.fixFloat.js b/koha-tmpl/intranet-tmpl/prog/en/lib/jquery/plugins/jquery.fixFloat.js
new file mode 100644 (file)
index 0000000..9fb63e0
--- /dev/null
@@ -0,0 +1,67 @@
+/* Source: http://www.webspeaks.in/2011/07/new-gmail-like-floating-toolbar-jquery.html
+   Revision: http://jsfiddle.net/pasmalin/AyjeZ/
+*/
+(function($){
+  $.fn.fixFloat = function(options){
+
+    var defaults = {
+      enabled: true
+    };
+    var options = $.extend(defaults, options);
+
+    var offsetTop;    /**Distance of the element from the top of window**/
+    var s;        /**Scrolled distance from the top of window through which we have moved**/
+    var fixMe = true;
+    var repositionMe = true;
+
+    var tbh = $(this);
+    var originalOffset = tbh.position().top;  /**Get the actual distance of the element from the top mychange:change to position better work**/
+
+    if (tbh.css('position')!='absolute') {
+      var tbhBis = $("<div></div>");
+      tbhBis.css({"display":tbh.css("display"),"visibility":"hidden"});
+      tbhBis.width(tbh.outerWidth(true));
+      tbhBis.height(tbh.outerHeight(true));
+      tbh.after(tbhBis);
+      tbh.width(tbh.width());
+      tbh.css({'position':'absolute'});
+    }
+      tbh.css({'z-index':1000});
+
+    if(options.enabled){
+      $(window).scroll(function(){
+        var offsetTop = tbh.offset().top;  /**Get the current distance of the element from the top **/
+        var s = parseInt($(window).scrollTop(), 10);  /**Get the from the top of wondow through which we have scrolled**/
+        var fixMe = true;
+        if(s > offsetTop){
+          fixMe = true;
+        }else{
+          fixMe = false;
+        }
+
+        if(s < originalOffset){
+          repositionMe = true;
+        }else{
+          repositionMe = false;
+        }
+
+        if(fixMe){
+          var cssObj = {
+            'position' : 'fixed',
+            'top' : '0px'
+          }
+          tbh.css(cssObj);
+          tbh.addClass("floating");
+        }
+        if(repositionMe){
+          var cssObj = {
+            'position' : 'absolute',
+            'top' : originalOffset
+          }
+          tbh.css(cssObj);
+          tbh.removeClass("floating");
+        }
+      });
+    }
+  };
+})(jQuery);
\ No newline at end of file
index 65feefb..62f5d87 100644 (file)
@@ -2,6 +2,7 @@
 <title>Koha &rsaquo; Cataloging &rsaquo; [% IF ( biblionumber ) %]Editing [% title |html %] (Record Number [% biblionumber %])[% ELSE %]Add MARC Record[% END %]</title>
 [% INCLUDE 'doc-head-close.inc' %]
 <script type="text/javascript" src="[% themelang %]/lib/yui/plugins/bubbling-min.js"></script>
 <title>Koha &rsaquo; Cataloging &rsaquo; [% IF ( biblionumber ) %]Editing [% title |html %] (Record Number [% biblionumber %])[% ELSE %]Add MARC Record[% END %]</title>
 [% INCLUDE 'doc-head-close.inc' %]
 <script type="text/javascript" src="[% themelang %]/lib/yui/plugins/bubbling-min.js"></script>
+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
 <script type="text/javascript">
 //<![CDATA[
 
 <script type="text/javascript">
 //<![CDATA[
 
@@ -709,6 +710,7 @@ function unHideSubfield(index,labelindex) { // FIXME :: is it used ?
        // prepare DOM for YUI Toolbar
 
         $(document).ready(function() {
        // prepare DOM for YUI Toolbar
 
         $(document).ready(function() {
+        $('#toolbar').fixFloat();
                $("#z3950searchc").empty();
         $("#savebutton").empty();
            yuiToolbar();
                $("#z3950searchc").empty();
         $("#savebutton").empty();
            yuiToolbar();