# HG changeset patch # User hertzhaft # Date 1294942937 -3600 # Node ID f5d5cae64828591b54a95e12ef28c2aa145bf0ba # Parent 8204615dad77ccd9e4bee9a6cd1683e2eeb14c16 parameter parsing diff -r 8204615dad77 -r f5d5cae64828 client/digitallibrary/jquery/jquery-test.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/jquery/jquery-test.html Thu Jan 13 19:22:17 2011 +0100 @@ -0,0 +1,54 @@ + + + + + Digilib jQuery Test HTML + + + + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+ +
+ + + diff -r 8204615dad77 -r f5d5cae64828 client/digitallibrary/jquery/jquery.digilib.js --- a/client/digitallibrary/jquery/jquery.digilib.js Thu Jan 13 14:52:13 2011 +0100 +++ b/client/digitallibrary/jquery/jquery.digilib.js Thu Jan 13 19:22:17 2011 +0100 @@ -9,7 +9,7 @@ /* base URL to Scaler servlet */ 'scalerUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler', /* digilib image path i.e. fn */ - 'imagePath' : '', + 'fn' : '', /* mode of operation. * fullscreen: takes parameters from page URL, keeps state in page URL * embedded: takes parameters from Javascript options, keeps state inside object @@ -18,23 +18,32 @@ }; /* parameters from the query string */ - var params = {}; + var queryParams = {}; var methods = { init : function(options) { + var settings = $.extend({}, defaults, options); + var isFullscreen = settings.interactionMode === 'fullscreen'; + if (isFullscreen) { + queryParams = parseQueryParams(); + }; return this.each(function() { var $elem = $(this); var data = $elem.data('digilib'); + var elemSettings; // If the plugin hasn't been initialized yet if (!data) { // settings for this digilib instance are merged from defaults and options - var settings = $.extend({}, defaults, options); // merge query parameters - settings = $.extend(settings, parseParams(settings.interactionMode)); + if (isFullscreen) { + elemSettings = $.extend({}, settings, queryParams); + } else { + elemSettings = $.extend({}, settings, parseImgParams($elem)); + }; // store in data element $elem.data('digilib', { target : $elem, - settings : settings + settings : elemSettings }); } }); @@ -52,9 +61,32 @@ }; // returns object with parameters from the query string or an embedded img-tag (depending on interactionMode) - var parseParams = function(interactionMode) { - alert("parseParams() not implemented"); - }; + var parseQueryParams = function() { + return parseQueryString(location.search.slice(1)); + }; + + var parseImgParams = function($elem) { + var src = $elem.children('img').attr('src'); + var pos = src.indexOf('?'); + var query = (pos < 0) ? '' : src.substring(pos + 1); + var scalerUrl = src.substring(0, pos); + var hash = parseQueryString(query); + hash.scalerUrl = scalerUrl; + // console.log(hash); + return hash; + }; + + var parseQueryString = function(query) { + var pairs = query.split("&"); + var hash = {}; + for (var i = 0; i < pairs.length; i++) { + var pair = pairs[i].split("="); + if (pair.length === 2) { + hash[pair[0]] = pair[1] + }; + }; + return hash; + }; // hook plugin into jquery $.fn.digilib = function(method) {