extensions/net.sf.basedb.thumbnails/trunk/resources/thumbnails.js

Code
Comments
Other
Rev Date Author Line
3402 15 Jun 15 nicklas 1
3402 15 Jun 15 nicklas 2 var Thumbnail = function()
3402 15 Jun 15 nicklas 3 {
3402 15 Jun 15 nicklas 4   var thumb = {};
3409 18 Jun 15 nicklas 5   var HOME = null;
3402 15 Jun 15 nicklas 6   
3409 18 Jun 15 nicklas 7   // Add click handler to thumbnail images in the list page
3409 18 Jun 15 nicklas 8   thumb.initElements = function(element, autoInit)
3403 16 Jun 15 nicklas 9   {
3409 18 Jun 15 nicklas 10     if (autoInit == 'thumbnail') 
3403 16 Jun 15 nicklas 11     {
3409 18 Jun 15 nicklas 12       Events.addEventHandler(element, 'click', thumb.showImage);
3409 18 Jun 15 nicklas 13       element.title = 'Click to show full image';
3421 24 Jun 15 nicklas 14       if (element.complete)
3421 24 Jun 15 nicklas 15       {
3421 24 Jun 15 nicklas 16         thumb.imageLoaded(element);
3421 24 Jun 15 nicklas 17       }
3421 24 Jun 15 nicklas 18       else
3421 24 Jun 15 nicklas 19       {
3421 24 Jun 15 nicklas 20         Events.addEventHandler(element, 'load', thumb.onImageLoaded);
3421 24 Jun 15 nicklas 21       }
3409 18 Jun 15 nicklas 22     }
3409 18 Jun 15 nicklas 23     else if (autoInit == 'thumbnail-proxy')
3409 18 Jun 15 nicklas 24     {
3409 18 Jun 15 nicklas 25       // The image file info is on the proxy element
3409 18 Jun 15 nicklas 26       // An <img> is created and inserted as a child to the 'target' element
3409 18 Jun 15 nicklas 27       var fileId = Data.int(element, 'file-id');
3409 18 Jun 15 nicklas 28       var size = Data.get(element, 'size', 'XLARGE');
6047 12 Nov 20 nicklas 29       var rotate = Data.get(element, 'rotate');
6047 12 Nov 20 nicklas 30       var imageIndex = Data.int(element, 'image-index', -1);
3409 18 Jun 15 nicklas 31       var target = Data.get(element, 'target', 'main.properties.content');
3403 16 Jun 15 nicklas 32       
3403 16 Jun 15 nicklas 33       var home = thumb.getHome();
3403 16 Jun 15 nicklas 34       var url = home + 'Thumbnails.servlet?ID='+App.getSessionId();
3403 16 Jun 15 nicklas 35       url += '&file='+fileId;
3409 18 Jun 15 nicklas 36       url += '&size='+size;
6047 12 Nov 20 nicklas 37       if (rotate) url += '&rotate='+rotate;
6047 12 Nov 20 nicklas 38       if (imageIndex >= 0) url += '&index='+imageIndex;
3403 16 Jun 15 nicklas 39       
3403 16 Jun 15 nicklas 40       var img = document.createElement('img');
3403 16 Jun 15 nicklas 41       img.src = url;
6048 12 Nov 20 nicklas 42       img.className = 'thumbnail-img thumbnail-view '+size.toLowerCase()+' loading';
3403 16 Jun 15 nicklas 43       Data.set(img, 'file-id', fileId);
3403 16 Jun 15 nicklas 44       Events.addEventHandler(img, 'click', thumb.showImage);
3421 24 Jun 15 nicklas 45       Events.addEventHandler(img, 'load', thumb.onImageLoaded);
3403 16 Jun 15 nicklas 46       
3409 18 Jun 15 nicklas 47       Doc.element(target).appendChild(img);
3409 18 Jun 15 nicklas 48       Doc.hide(element.parentNode);
3403 16 Jun 15 nicklas 49     }
3403 16 Jun 15 nicklas 50   }
3403 16 Jun 15 nicklas 51   
3403 16 Jun 15 nicklas 52   // Find the <script> tag for 'thumbnail.js' and extract the path to it
3403 16 Jun 15 nicklas 53   thumb.getHome = function()
3403 16 Jun 15 nicklas 54   {
3409 18 Jun 15 nicklas 55     if (HOME != null) return HOME;
3409 18 Jun 15 nicklas 56     
3403 16 Jun 15 nicklas 57     var scripts = document.getElementsByTagName('script');
3403 16 Jun 15 nicklas 58     for (var i = scripts.length - 1; i >= 0; i--)
3403 16 Jun 15 nicklas 59     {
3403 16 Jun 15 nicklas 60       var src = scripts[i].src;
3403 16 Jun 15 nicklas 61       var end = src.indexOf('thumbnails.js');
3403 16 Jun 15 nicklas 62       if (end > 0)
3403 16 Jun 15 nicklas 63       {
3403 16 Jun 15 nicklas 64         var start = src.indexOf(App.getRoot());
3409 18 Jun 15 nicklas 65         HOME = src.substring(start, end);
3403 16 Jun 15 nicklas 66       }
3403 16 Jun 15 nicklas 67     }
3403 16 Jun 15 nicklas 68     // Fallback that should never happen!
3409 18 Jun 15 nicklas 69     if (HOME == null) HOME = App.getRoot() + 'extensions/thumbnails.jar/';
3409 18 Jun 15 nicklas 70     return HOME;
3403 16 Jun 15 nicklas 71   }
3403 16 Jun 15 nicklas 72   
3403 16 Jun 15 nicklas 73   // Show the full image when a thumbnail is clicked
3402 15 Jun 15 nicklas 74   thumb.showImage = function(event)
3402 15 Jun 15 nicklas 75   {
3402 15 Jun 15 nicklas 76     var fileId = Data.int(event.currentTarget, 'file-id');
3402 15 Jun 15 nicklas 77     
3402 15 Jun 15 nicklas 78     var controller = Items.getController('FILE');
3402 15 Jun 15 nicklas 79     var url = App.getRoot() + controller.url;
3402 15 Jun 15 nicklas 80     url += '?ID='+App.getSessionId();
3402 15 Jun 15 nicklas 81     url += '&cmd=ViewFile&item_id='+fileId;
3402 15 Jun 15 nicklas 82
3402 15 Jun 15 nicklas 83     var options = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes';
3402 15 Jun 15 nicklas 84     window.open(url, 'FullImage'+fileId, options);
3402 15 Jun 15 nicklas 85   }
3402 15 Jun 15 nicklas 86   
3421 24 Jun 15 nicklas 87   thumb.onImageLoaded = function(event)
3421 24 Jun 15 nicklas 88   {
3421 24 Jun 15 nicklas 89     thumb.imageLoaded(event.currentTarget);
3421 24 Jun 15 nicklas 90   }
3421 24 Jun 15 nicklas 91   
3421 24 Jun 15 nicklas 92   thumb.imageLoaded = function(element)
3421 24 Jun 15 nicklas 93   {
3421 24 Jun 15 nicklas 94     Doc.removeClass(element, 'loading');
3421 24 Jun 15 nicklas 95   }
3421 24 Jun 15 nicklas 96   
3402 15 Jun 15 nicklas 97   return thumb;
3402 15 Jun 15 nicklas 98 }();
3402 15 Jun 15 nicklas 99
3402 15 Jun 15 nicklas 100 Doc.addElementInitializer(Thumbnail.initElements);