Mercurial > hg > digilib
comparison client/digitallibrary/jquery/jquery.digilib.js @ 606:d08d095430c3 jquery
keeping img tag for embedded mode seems to work now
author | robcast |
---|---|
date | Sun, 16 Jan 2011 00:56:59 +0100 |
parents | 959bf7c3d684 |
children | dc6b2e7f3621 3d654db7d7d6 |
comparison
equal
deleted
inserted
replaced
605:959bf7c3d684 | 606:d08d095430c3 |
---|---|
212 return parseQueryString(location.search.slice(1)); | 212 return parseQueryString(location.search.slice(1)); |
213 }; | 213 }; |
214 | 214 |
215 // returns parameters taken from embedded img-element | 215 // returns parameters taken from embedded img-element |
216 var parseImgParams = function($elem) { | 216 var parseImgParams = function($elem) { |
217 var src = $elem.children('img').attr('src'); | 217 var src = $elem.find('img').first().attr('src'); |
218 if (!src) { | |
219 return null; | |
220 } | |
218 var pos = src.indexOf('?'); | 221 var pos = src.indexOf('?'); |
219 var query = (pos < 0) ? '' : src.substring(pos + 1); | 222 var query = (pos < 0) ? '' : src.substring(pos + 1); |
220 var scalerUrl = src.substring(0, pos); | 223 var scalerUrl = src.substring(0, pos); |
221 var hash = parseQueryString(query); | 224 var hash = parseQueryString(query); |
222 hash.scalerBaseUrl = scalerUrl; | 225 hash.scalerBaseUrl = scalerUrl; |
263 return geom.size(winW, winH); | 266 return geom.size(winW, winH); |
264 }; | 267 }; |
265 | 268 |
266 // creates HTML structure for digilib in elem | 269 // creates HTML structure for digilib in elem |
267 var setupScalerDiv = function ($elem, settings) { | 270 var setupScalerDiv = function ($elem, settings) { |
271 var rewrite; | |
268 if (settings.interactionMode === 'fullscreen') { | 272 if (settings.interactionMode === 'fullscreen') { |
269 // fullscreen | 273 // fullscreen |
270 var imgSize = getFullscreenImgSize($elem); | 274 var imgSize = getFullscreenImgSize($elem); |
271 settings.dw = imgSize.width; | 275 settings.dw = imgSize.width; |
272 settings.dh = imgSize.height; | 276 settings.dh = imgSize.height; |
273 // create new html | 277 $img = $('<img/>'); |
274 $elem.empty(); // TODO: should we keep stuff for customization? | |
275 var scalerUrl = getScalerString(settings); | 278 var scalerUrl = getScalerString(settings); |
276 var scalerHTML = '<div class="scaler"><img class="pic"/></div>'; | |
277 $elem.append(scalerHTML); | |
278 var $img = $elem.find("img.pic"); | |
279 $img.attr('src', scalerUrl); | 279 $img.attr('src', scalerUrl); |
280 //$img.load(scalerImgLoaded); | 280 $img.addClass('pic'); |
281 } else { | 281 } else { |
282 // embedded mode -- keep inner img | 282 // embedded mode -- try to keep img tag |
283 var $img = $elem.detach('img'); | 283 var $img = $elem.find('img'); |
284 $elem.empty(); // TODO: should we keep stuff for customization? | 284 if ($img.length > 0) { |
285 $img.addClass('pic'); | 285 console.debug("img detach:",$img); |
286 var $scaler = $('<div class="scaler"/>'); | 286 $img.detach(); |
287 $scaler.append($img); | 287 $img.addClass('picsi'); |
288 $elem.append($scaler); | 288 } else { |
289 //$img.load(scalerImgLoaded); | 289 $img = $('<img/>'); |
290 } | 290 var scalerUrl = getScalerString(settings); |
291 $img.attr('src', scalerUrl); | |
292 $img.addClass('pic'); | |
293 } | |
294 } | |
295 // create new html | |
296 $elem.empty(); // TODO: should we keep stuff for customization? | |
297 var $scaler = $('<div class="scaler"/>'); | |
298 $elem.append($scaler); | |
299 $scaler.append($img); | |
300 $img.load(scalerImgLoadedFn(settings)); | |
291 }; | 301 }; |
292 | 302 |
293 // creates HTML structure for buttons in elem | 303 // creates HTML structure for buttons in elem |
294 var setupButtons = function ($elem, settings, buttonGroup) { | 304 var setupButtons = function ($elem, settings, buttonGroup) { |
295 if (settings.interactionMode === 'fullscreen') { | 305 if (settings.interactionMode === 'fullscreen') { |
310 // add attributes and bindings | 320 // add attributes and bindings |
311 $button.attr('title', buttonSettings.tooltip); | 321 $button.attr('title', buttonSettings.tooltip); |
312 $button.addClass('button-' + buttonName); | 322 $button.addClass('button-' + buttonName); |
313 // let the clicked <a> element know about the digilib context | 323 // let the clicked <a> element know about the digilib context |
314 $a.data('digilib', { 'name' : buttonName, 'settings' : settings } ); | 324 $a.data('digilib', { 'name' : buttonName, 'settings' : settings } ); |
315 $a.bind('click', function(){ | 325 $a.bind('click', function() { |
316 // get the context settings | 326 // get the context settings |
317 var data = $(this).data('digilib'); | 327 var data = $(this).data('digilib'); |
318 // find the action for the clicked element | 328 // find the action for the clicked element |
319 console.log(data.settings.buttons[data.name].onclick); | 329 console.log(data.settings.buttons[data.name].onclick); |
320 }); | 330 }); |
326 }; | 336 }; |
327 } | 337 } |
328 return $buttonsDiv; | 338 return $buttonsDiv; |
329 }; | 339 }; |
330 | 340 |
341 // returns function for load event of scaler img | |
342 var scalerImgLoadedFn = function(settings) { | |
343 return function() { | |
344 console.debug("img loaded! settings=", settings); | |
345 }; | |
346 }; | |
331 // hook plugin into jquery | 347 // hook plugin into jquery |
332 $.fn.digilib = function(method) { | 348 $.fn.digilib = function(method) { |
333 if (methods[method]) { | 349 if (methods[method]) { |
334 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); | 350 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); |
335 } else if (typeof(method) === 'object' || !method) { | 351 } else if (typeof(method) === 'object' || !method) { |