diff client/digitallibrary/jquery/jquery.digilib.js @ 613:53ee659e2d00 jquery

keeping img tag for embedded mode seems to work now
author robcast
date Sun, 16 Jan 2011 00:56:59 +0100
parents fb94f1b74d59
children 0bd19b6cede4 5a7f82f10a5d
line wrap: on
line diff
--- a/client/digitallibrary/jquery/jquery.digilib.js	Fri Jan 14 17:07:09 2011 +0100
+++ b/client/digitallibrary/jquery/jquery.digilib.js	Sun Jan 16 00:56:59 2011 +0100
@@ -214,7 +214,10 @@
         
     // returns parameters taken from embedded img-element
     var parseImgParams = function($elem) {
-        var src = $elem.children('img').attr('src');
+        var src = $elem.find('img').first().attr('src');
+        if (!src) {
+            return null;
+        }
         var pos = src.indexOf('?');
         var query = (pos < 0) ? '' : src.substring(pos + 1);
         var scalerUrl = src.substring(0, pos);
@@ -265,29 +268,36 @@
     
     // creates HTML structure for digilib in elem
     var setupScalerDiv = function ($elem, settings) {
+        var rewrite;
         if (settings.interactionMode === 'fullscreen') {
             // fullscreen
             var imgSize = getFullscreenImgSize($elem);
             settings.dw = imgSize.width;
             settings.dh = imgSize.height;
-            // create new html
-            $elem.empty(); // TODO: should we keep stuff for customization?
+            $img = $('<img/>');
             var scalerUrl = getScalerString(settings);
-            var scalerHTML = '<div class="scaler"><img class="pic"/></div>'; 
-            $elem.append(scalerHTML);
-            var $img = $elem.find("img.pic");
             $img.attr('src', scalerUrl);
-            //$img.load(scalerImgLoaded);
+            $img.addClass('pic');
         } else {
-            // embedded mode -- keep inner img
-            var $img = $elem.detach('img');
-            $elem.empty(); // TODO: should we keep stuff for customization?
-            $img.addClass('pic');
-            var $scaler = $('<div class="scaler"/>');
-            $scaler.append($img);
-            $elem.append($scaler);
-            //$img.load(scalerImgLoaded);
+            // embedded mode -- try to keep img tag
+            var $img = $elem.find('img');
+            if ($img.length > 0) {
+                console.debug("img detach:",$img);
+                $img.detach();
+                $img.addClass('picsi');
+            } else {
+                $img = $('<img/>');
+                var scalerUrl = getScalerString(settings);
+                $img.attr('src', scalerUrl);
+                $img.addClass('pic');
+            }
         }
+        // create new html
+        $elem.empty(); // TODO: should we keep stuff for customization?
+        var $scaler = $('<div class="scaler"/>');
+        $elem.append($scaler);
+        $scaler.append($img);
+        $img.load(scalerImgLoadedFn(settings));
     };
         
     // creates HTML structure for buttons in elem
@@ -312,7 +322,7 @@
                 $button.addClass('button-' + buttonName);
                 // let the clicked <a> element know about the digilib context 
                 $a.data('digilib', { 'name' : buttonName, 'settings' : settings } );
-                $a.bind('click', function(){
+                $a.bind('click', function() {
                     // get the context settings
                     var data = $(this).data('digilib');
                     // find the action for the clicked element
@@ -328,6 +338,12 @@
         return $buttonsDiv;
     };
     
+    // returns function for load event of scaler img
+    var scalerImgLoadedFn = function(settings) {
+        return function() {
+            console.debug("img loaded! settings=", settings);
+        };
+    };
     // hook plugin into jquery
     $.fn.digilib = function(method) {
         if (methods[method]) {