Mercurial > hg > digilib-old
comparison client/digitallibrary/jquery/jquery.digilib.js @ 607:f5d5cae64828 jquery
parameter parsing
author | hertzhaft |
---|---|
date | Thu, 13 Jan 2011 19:22:17 +0100 |
parents | aee94e4a8c48 |
children | 774a3f60efd5 |
comparison
equal
deleted
inserted
replaced
606:8204615dad77 | 607:f5d5cae64828 |
---|---|
7 | 7 |
8 var defaults = { | 8 var defaults = { |
9 /* base URL to Scaler servlet */ | 9 /* base URL to Scaler servlet */ |
10 'scalerUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler', | 10 'scalerUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler', |
11 /* digilib image path i.e. fn */ | 11 /* digilib image path i.e. fn */ |
12 'imagePath' : '', | 12 'fn' : '', |
13 /* mode of operation. | 13 /* mode of operation. |
14 * fullscreen: takes parameters from page URL, keeps state in page URL | 14 * fullscreen: takes parameters from page URL, keeps state in page URL |
15 * embedded: takes parameters from Javascript options, keeps state inside object | 15 * embedded: takes parameters from Javascript options, keeps state inside object |
16 */ | 16 */ |
17 'interactionMode' : 'fullscreen' | 17 'interactionMode' : 'fullscreen' |
18 }; | 18 }; |
19 | 19 |
20 /* parameters from the query string */ | 20 /* parameters from the query string */ |
21 var params = {}; | 21 var queryParams = {}; |
22 | 22 |
23 var methods = { | 23 var methods = { |
24 init : function(options) { | 24 init : function(options) { |
25 var settings = $.extend({}, defaults, options); | |
26 var isFullscreen = settings.interactionMode === 'fullscreen'; | |
27 if (isFullscreen) { | |
28 queryParams = parseQueryParams(); | |
29 }; | |
25 return this.each(function() { | 30 return this.each(function() { |
26 var $elem = $(this); | 31 var $elem = $(this); |
27 var data = $elem.data('digilib'); | 32 var data = $elem.data('digilib'); |
33 var elemSettings; | |
28 // If the plugin hasn't been initialized yet | 34 // If the plugin hasn't been initialized yet |
29 if (!data) { | 35 if (!data) { |
30 // settings for this digilib instance are merged from defaults and options | 36 // settings for this digilib instance are merged from defaults and options |
31 var settings = $.extend({}, defaults, options); | |
32 // merge query parameters | 37 // merge query parameters |
33 settings = $.extend(settings, parseParams(settings.interactionMode)); | 38 if (isFullscreen) { |
39 elemSettings = $.extend({}, settings, queryParams); | |
40 } else { | |
41 elemSettings = $.extend({}, settings, parseImgParams($elem)); | |
42 }; | |
34 // store in data element | 43 // store in data element |
35 $elem.data('digilib', { | 44 $elem.data('digilib', { |
36 target : $elem, | 45 target : $elem, |
37 settings : settings | 46 settings : elemSettings |
38 }); | 47 }); |
39 } | 48 } |
40 }); | 49 }); |
41 }, | 50 }, |
42 destroy : function() { | 51 destroy : function() { |
50 }); | 59 }); |
51 } | 60 } |
52 }; | 61 }; |
53 | 62 |
54 // returns object with parameters from the query string or an embedded img-tag (depending on interactionMode) | 63 // returns object with parameters from the query string or an embedded img-tag (depending on interactionMode) |
55 var parseParams = function(interactionMode) { | 64 var parseQueryParams = function() { |
56 alert("parseParams() not implemented"); | 65 return parseQueryString(location.search.slice(1)); |
57 }; | 66 }; |
67 | |
68 var parseImgParams = function($elem) { | |
69 var src = $elem.children('img').attr('src'); | |
70 var pos = src.indexOf('?'); | |
71 var query = (pos < 0) ? '' : src.substring(pos + 1); | |
72 var scalerUrl = src.substring(0, pos); | |
73 var hash = parseQueryString(query); | |
74 hash.scalerUrl = scalerUrl; | |
75 // console.log(hash); | |
76 return hash; | |
77 }; | |
78 | |
79 var parseQueryString = function(query) { | |
80 var pairs = query.split("&"); | |
81 var hash = {}; | |
82 for (var i = 0; i < pairs.length; i++) { | |
83 var pair = pairs[i].split("="); | |
84 if (pair.length === 2) { | |
85 hash[pair[0]] = pair[1] | |
86 }; | |
87 }; | |
88 return hash; | |
89 }; | |
58 | 90 |
59 // hook plugin into jquery | 91 // hook plugin into jquery |
60 $.fn.digilib = function(method) { | 92 $.fn.digilib = function(method) { |
61 if (methods[method]) { | 93 if (methods[method]) { |
62 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); | 94 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); |