comparison webapp/src/main/webapp/jquery/jquery.digilib.regions.js @ 1091:897268e47ce4

some events: newRegion and regionClick
author hertzhaft
date Fri, 12 Oct 2012 20:16:40 +0200
parents 16215fc22fbf
children 4964a1e252eb
comparison
equal deleted inserted replaced
1090:436b59ff76fd 1091:897268e47ce4
39 }; 39 };
40 // affine geometry plugin 40 // affine geometry plugin
41 var geom = null; 41 var geom = null;
42 42
43 var buttons = { 43 var buttons = {
44 defineurlregion : { 44 defineregion : {
45 onclick : "defineURLRegion", 45 onclick : "defineUserRegion",
46 tooltip : "define a region", 46 tooltip : "define a region",
47 icon : "addregion.png" 47 icon : "addregion.png"
48 }, 48 },
49 removeurlregion : { 49 removeregion : {
50 onclick : "removeURLRegion", 50 onclick : "removeUserRegion",
51 tooltip : "delete the last region", 51 tooltip : "delete the last user defined region",
52 icon : "delregion.png" 52 icon : "delregion.png"
53 }, 53 },
54 removeallurlregions : { 54 removeallregions : {
55 onclick : "removeAllURLRegions", 55 onclick : "removeAllUserRegions",
56 tooltip : "delete all regions", 56 tooltip : "delete all user defined regions",
57 icon : "delallregions.png" 57 icon : "delallregions.png"
58 }, 58 },
59 regions : { 59 regions : {
60 onclick : "toggleRegions", 60 onclick : "toggleRegions",
61 tooltip : "show or hide regions", 61 tooltip : "show or hide regions",
62 icon : "regions.png" 62 icon : "regions.png"
63 }, 63 },
64 regioninfo : { 64 regioninfo : {
65 onclick : "showRegionInfo", 65 onclick : "showRegionInfo",
66 tooltip : "show information about regions", 66 tooltip : "show information about user defined regions",
67 icon : "regioninfo.png" 67 icon : "regioninfo.png"
68 } 68 }
69 }; 69 };
70 70
71 var defaults = { 71 var defaults = {
79 'processHtmlRegions' : false, 79 'processHtmlRegions' : false,
80 // region defined by users and in the URL 80 // region defined by users and in the URL
81 'processUserRegions' : true, 81 'processUserRegions' : true,
82 // callback for click on region 82 // callback for click on region
83 'onClickRegion' : null, 83 'onClickRegion' : null,
84 // callback when new user region is defined
85 'onNewRegion' : null,
84 // turn any region into a clickable link to its detail view (DEPRECATED) 86 // turn any region into a clickable link to its detail view (DEPRECATED)
85 'autoZoomOnClick' : false, 87 'autoZoomOnClick' : false,
86 // css selector for area elements (must also be marked with class "dl-keep") 88 // css selector for area/a elements (must also be marked with class "dl-keep")
87 'htmlRegionsSelector' : 'map.dl-regioncontent area, map.dl-regioncontent a', 89 'htmlRegionsSelector' : 'map.dl-regioncontent area, map.dl-regioncontent a',
88 // buttonset of this plugin 90 // buttonset of this plugin
89 'regionSet' : ['regions', 'defineurlregion', 'removeurlregion', 'removeallurlregions', 'regioninfo', 'lessoptions'], 91 'regionSet' : ['regions', 'defineregion', 'removeregion', 'removeallregions', 'regioninfo', 'lessoptions'],
90 // url param for regions 92 // url param for regions
91 'rg' : null, 93 'rg' : null,
92 // region attributes to copy from HTML 94 // region attributes to copy from HTML
93 'regionAttributes' : { 95 'regionAttributes' : {
94 'id' :1, 96 'id' :1,
101 }; 103 };
102 104
103 var actions = { 105 var actions = {
104 106
105 // define a region interactively with two clicked points 107 // define a region interactively with two clicked points
106 defineURLRegion : function(data) { 108 defineUserRegion : function(data) {
107 if (!data.settings.isRegionVisible) { 109 if (!data.settings.isRegionVisible) {
108 alert("Please turn on regions visibility!"); 110 alert("Please turn on regions visibility!");
109 return; 111 return;
110 } 112 }
111 var cssPrefix = data.settings.cssPrefix; 113 var cssPrefix = data.settings.cssPrefix;
118 // overlay prevents other elements from reacting to mouse events 120 // overlay prevents other elements from reacting to mouse events
119 var $overlay = $('<div class="'+cssPrefix+'overlay" style="position:absolute"/>'); 121 var $overlay = $('<div class="'+cssPrefix+'overlay" style="position:absolute"/>');
120 $body.append($overlay); 122 $body.append($overlay);
121 bodyRect.adjustDiv($overlay); 123 bodyRect.adjustDiv($overlay);
122 var attr = {'class' : cssPrefix+"regionURL"}; 124 var attr = {'class' : cssPrefix+"regionURL"};
123 var $regionDiv = addRegionDiv(data, data.regionsURL, data.regionsURL.length, attr); 125 var $regionDiv = addRegionDiv(data, data.userRegions, data.userRegions.length, attr);
124 126
125 // mousedown handler: start sizing 127 // mousedown handler: start sizing
126 var regionStart = function (evt) { 128 var regionStart = function (evt) {
127 pt1 = geom.position(evt); 129 pt1 = geom.position(evt);
128 // setup and show zoom div 130 // setup and show zoom div
156 $overlay.off("mouseup.dlRegion", regionEnd); 158 $overlay.off("mouseup.dlRegion", regionEnd);
157 $overlay.remove(); 159 $overlay.remove();
158 // clip region 160 // clip region
159 clickRect.clipTo(scalerRect); 161 clickRect.clipTo(scalerRect);
160 clickRect.adjustDiv($regionDiv); 162 clickRect.adjustDiv($regionDiv);
161 storeURLRegion(data, $regionDiv); 163 var region = storeUserRegion(data, $regionDiv);
162 // fn.redisplay(data); 164 // fn.redisplay(data);
163 fn.highlightButtons(data, 'addregion', 0); 165 fn.highlightButtons(data, 'defineregion', 0);
164 redisplay(data); 166 redisplay(data);
167 $(data).trigger('newRegion', region);
165 return false; 168 return false;
166 }; 169 };
167 170
168 // bind start zoom handler 171 // bind start zoom handler
169 $overlay.one('mousedown.dlRegion', regionStart); 172 $overlay.one('mousedown.dlRegion', regionStart);
170 fn.highlightButtons(data, 'addregion', 1); 173 fn.highlightButtons(data, 'defineregion', 1);
171 }, 174 },
172 175
173 // remove the last added URL region 176 // remove the last added URL region
174 removeURLRegion : function (data) { 177 removeUserRegion : function (data) {
175 if (!data.settings.isRegionVisible) { 178 if (!data.settings.isRegionVisible) {
176 alert("Please turn on regions visibility!"); 179 alert("Please turn on regions visibility!");
177 return; 180 return;
178 } 181 }
179 var r = data.regionsURL.pop(); 182 var r = data.userRegions.pop();
180 // no more URL regions to delete 183 // no more URL regions to delete
181 if (r == null) return; 184 if (r == null) return;
182 var $regionDiv = r.$div; 185 var $regionDiv = r.$div;
183 $regionDiv.remove(); 186 $regionDiv.remove();
184 redisplay(data); 187 redisplay(data);
185 }, 188 },
186 189
187 // remove all manually added regions (defined through URL "rg" parameter) 190 // remove all manually added regions (defined through URL "rg" parameter)
188 removeAllURLRegions : function (data) { 191 removeAllUserRegions : function (data) {
189 if (!data.settings.isRegionVisible) { 192 if (!data.settings.isRegionVisible) {
190 alert("Please turn on regions visibility!"); 193 alert("Please turn on regions visibility!");
191 return; 194 return;
192 } 195 }
193 var cssPrefix = data.settings.cssPrefix; 196 var cssPrefix = data.settings.cssPrefix;
194 var $regions = data.$elem.find('div.'+cssPrefix+'regionURL'); 197 var $regions = data.$elem.find('div.'+cssPrefix+'regionURL');
195 $regions.remove(); 198 $regions.remove();
196 data.regionsURL = []; // remove only URL regions 199 data.userRegions = []; // remove only URL regions
197 redisplay(data); 200 redisplay(data);
198 }, 201 },
199 202
200 // show/hide regions 203 // show/hide regions
201 toggleRegions : function (data) { 204 toggleRegions : function (data) {
248 }); 251 });
249 $info.fadeIn(); 252 $info.fadeIn();
250 fn.centerOnScreen(data, $info); 253 fn.centerOnScreen(data, $info);
251 }, 254 },
252 255
253 // show region coordinates in an edit line 256 // display region coordinates in an edit line
254 showRegionCoords : function (data) { 257 showRegionCoords : function (data, region) {
255 var $elem = data.$elem; 258 var $elem = data.$elem;
256 var cssPrefix = data.settings.cssPrefix; 259 var cssPrefix = data.settings.cssPrefix;
257 var infoselector = '#'+cssPrefix+'regionInfo'; 260 // var infoselector = '#'+cssPrefix+'regionInfo';
258 if (fn.find(data, infoselector)) { 261 // var $info = fn.find(data, infoselector);
259 fn.withdraw($info); 262 var coords = regionCoordsString(region, ',');
260 return;
261 }
262 var html = '\ 263 var html = '\
263 <div id="'+cssPrefix+'regionInfo" class="'+cssPrefix+'keep '+cssPrefix+'regionInfo">\ 264 <div id="'+cssPrefix+'regionInfo" class="'+cssPrefix+'keep '+cssPrefix+'regionInfo">\
264 <input name="coords" type="text" size="30" maxlength="40"/>\ 265 <input name="coords" type="text" size="30" maxlength="40" value="'+coords+'"/>\
265 <input type="button" name="close" />\
266 </div>'; 266 </div>';
267 $info = $(html); 267 var $info = $(html);
268 $info.appendTo($elem); 268 $info.appendTo($elem);
269 var bind = function(name) { 269 $input = $info.find('input');
270 $info.find('.'+name).on('click.regioninfo', function () { 270 $input.on('focus.regioninfo', function (event) {
271 $info.find('div.'+cssPrefix+'info').hide(); 271 this.select();
272 $info.find('div.'+cssPrefix+name).show(); 272 });
273 fn.centerOnScreen(data, $info); 273 $input.on('blur.regioninfo', function (event) {
274 });
275 };
276 $info.bind('button').on('click.regioninfo', function () {
277 fn.withdraw($info); 274 fn.withdraw($info);
275 return false;
278 }); 276 });
277 $input.on('keypress.regioninfo', function (event) {
278 fn.withdraw($info);
279 return false;
280 });
281 $input.prop("readonly",true);
279 $info.fadeIn(); 282 $info.fadeIn();
280 fn.centerOnScreen(data, $info); 283 fn.centerOnScreen(data, $info);
281 } 284 $input.focus();
282 285 console.debug('showRegionCoords', coords);
286
287 }
283 }; 288 };
284 289
285 // store a region div 290 // store a region div
286 var storeURLRegion = function (data, $regionDiv) { 291 var storeUserRegion = function (data, $regionDiv) {
287 var regions = data.regionsURL; 292 var regions = data.userRegions;
288 var rect = geom.rectangle($regionDiv); 293 var rect = geom.rectangle($regionDiv);
289 var rectangle = data.imgTrafo.invtransform(rect); 294 var rectangle = data.imgTrafo.invtransform(rect);
290 rectangle.$div = $regionDiv; 295 rectangle.$div = $regionDiv;
291 regions.push(rectangle); 296 regions.push(rectangle);
292 console.debug("storeURLregion", data.regionsURL, "rectangle", rectangle); 297 console.debug("storeUserRegion", data.userRegions, "rectangle", rectangle);
298 return rectangle;
293 }; 299 };
294 300
295 // open region as detail 301 // open region as detail
296 var openDetail = function (data, region) { 302 var openDetail = function (data, region) {
297 digilib.actions.zoomArea(data, region); 303 digilib.actions.zoomArea(data, region);
298 }; 304 };
299 305
300 // make a coords string 306 // make a coords string
301 var regionCoordsString = function (rect, sep) { 307 var regionCoordsString = function (rect, sep) {
308 if (sep == null) sep = ','; // comma as default separator
302 return [ 309 return [
303 fn.cropFloatStr(rect.x), 310 fn.cropFloatStr(rect.x),
304 fn.cropFloatStr(rect.y), 311 fn.cropFloatStr(rect.y),
305 fn.cropFloatStr(rect.width), 312 fn.cropFloatStr(rect.width),
306 fn.cropFloatStr(rect.height) 313 fn.cropFloatStr(rect.height)
310 // html for later insertion 317 // html for later insertion
311 var regionInfoHTML = function (data) { 318 var regionInfoHTML = function (data) {
312 var cssPrefix = data.settings.cssPrefix; 319 var cssPrefix = data.settings.cssPrefix;
313 var $infoDiv = $('<div class="'+cssPrefix+'info '+cssPrefix+'html"/>'); 320 var $infoDiv = $('<div class="'+cssPrefix+'info '+cssPrefix+'html"/>');
314 $infoDiv.append($('<div/>').text('<map class="'+cssPrefix+'keep '+cssPrefix+'regioncontent">')); 321 $infoDiv.append($('<div/>').text('<map class="'+cssPrefix+'keep '+cssPrefix+'regioncontent">'));
315 $.each(data.regionsURL, function(index, r) { 322 $.each(data.userRegions, function(index, r) {
316 var coords = regionCoordsString(r, ','); 323 var coords = regionCoordsString(r, ',');
317 $infoDiv.append($('<div/>').text('<area coords="' + coords + '"/>')); 324 $infoDiv.append($('<div/>').text('<area coords="' + coords + '"/>'));
318 }); 325 });
319 $infoDiv.append($('<div/>').text('</map>')); 326 $infoDiv.append($('<div/>').text('</map>'));
320 return $infoDiv; 327 return $infoDiv;
322 329
323 // SVG-style 330 // SVG-style
324 var regionInfoSVG = function (data) { 331 var regionInfoSVG = function (data) {
325 var cssPrefix = data.settings.cssPrefix; 332 var cssPrefix = data.settings.cssPrefix;
326 var $infoDiv = $('<div class="'+cssPrefix+'info '+cssPrefix+'svgattr"/>'); 333 var $infoDiv = $('<div class="'+cssPrefix+'info '+cssPrefix+'svgattr"/>');
327 $.each(data.regionsURL, function(index, r) { 334 $.each(data.userRegions, function(index, r) {
328 var coords = regionCoordsString(r, ' '); 335 var coords = regionCoordsString(r, ' ');
329 $infoDiv.append($('<div/>').text('"' + coords + '"')); 336 $infoDiv.append($('<div/>').text('"' + coords + '"'));
330 }); 337 });
331 return $infoDiv; 338 return $infoDiv;
332 }; 339 };
333 340
334 // CSV-style 341 // CSV-style
335 var regionInfoCSV = function (data) { 342 var regionInfoCSV = function (data) {
336 var cssPrefix = data.settings.cssPrefix; 343 var cssPrefix = data.settings.cssPrefix;
337 var $infoDiv = $('<div class="'+cssPrefix+'info '+cssPrefix+'csv"/>'); 344 var $infoDiv = $('<div class="'+cssPrefix+'info '+cssPrefix+'csv"/>');
338 $.each(data.regionsURL, function(index, r) { 345 $.each(data.userRegions, function(index, r) {
339 var coords = regionCoordsString(r, ','); 346 var coords = regionCoordsString(r, ',');
340 $infoDiv.append($('<div/>').text(index+1 + ": " + coords)); 347 $infoDiv.append($('<div/>').text(index+1 + ": " + coords));
341 }); 348 });
342 return $infoDiv; 349 return $infoDiv;
343 }; 350 };
344 351
345 // digilib-style (h,w@x,y) 352 // digilib-style (h,w@x,y)
346 var regionInfoDigilib = function (data) { 353 var regionInfoDigilib = function (data) {
347 var cssPrefix = data.settings.cssPrefix; 354 var cssPrefix = data.settings.cssPrefix;
348 var $infoDiv = $('<div class="'+cssPrefix+'info '+cssPrefix+'digilib"/>'); 355 var $infoDiv = $('<div class="'+cssPrefix+'info '+cssPrefix+'digilib"/>');
349 $.each(data.regionsURL, function(index, r) { 356 $.each(data.userRegions, function(index, r) {
350 if (r.fromHtml) return; 357 if (r.fromHtml) return;
351 var coords = r.toString(); 358 var coords = r.toString();
352 $infoDiv.append($('<div/>').text(coords)); 359 $infoDiv.append($('<div/>').text(coords));
353 }); 360 });
354 return $infoDiv; 361 return $infoDiv;
369 if (settings.showRegionNumbers) { 376 if (settings.showRegionNumbers) {
370 var $regionLink = $('<a class="'+cssPrefix+'regionnumber">'+index+'</a>'); 377 var $regionLink = $('<a class="'+cssPrefix+'regionnumber">'+index+'</a>');
371 if (attributes) $regionLink.attr(attributes); 378 if (attributes) $regionLink.attr(attributes);
372 $regionDiv.append($regionLink); 379 $regionDiv.append($regionLink);
373 } 380 }
374 var url = null;
375 if (attributes) { 381 if (attributes) {
376 // copy attributes to div except href 382 // copy attributes to div except href
377 if (attributes.href) { 383 if (attributes.href) {
378 url = attributes.href; 384 region.href = attributes.href;
379 // copy attributes 385 // copy attributes
380 var attrs = $.extend({}, attributes); 386 var attrs = $.extend({}, attributes);
381 delete attrs.href; 387 delete attrs.href;
382 $regionDiv.attr(attrs); 388 $regionDiv.attr(attrs);
383 } else { 389 } else {
389 if (settings.onClickRegion == null) settings.onClickRegion = openDetail; 395 if (settings.onClickRegion == null) settings.onClickRegion = openDetail;
390 } 396 }
391 // handle click events on div 397 // handle click events on div
392 var region = regions[index]; 398 var region = regions[index];
393 $regionDiv.on('click.dlRegion', function(evt) { 399 $regionDiv.on('click.dlRegion', function(evt) {
394 if (settings.fullRegionLinks && url) { 400 $(data).trigger('regionClick', region);
395 //TODO: how about target?
396 window.location = url;
397 }
398 if (evt.target !== $regionDiv.get(0)) {
399 // this was not our event
400 return;
401 }
402 if (typeof settings.onClickRegion === 'function') {
403 // execute callback
404 settings.onClickRegion(data, region);
405 }
406 }); 401 });
407 return $regionDiv; 402 return $regionDiv;
408 }; 403 };
409 404
410 // create a region div from the data.regions array 405 // create a region div from the data.regions array
421 // create regions from URL parameters 416 // create regions from URL parameters
422 var createRegionsFromURL = function (data) { 417 var createRegionsFromURL = function (data) {
423 var cssPrefix = data.settings.cssPrefix; 418 var cssPrefix = data.settings.cssPrefix;
424 var attr = {'class' : cssPrefix+"regionURL"}; 419 var attr = {'class' : cssPrefix+"regionURL"};
425 unpackRegions(data); 420 unpackRegions(data);
426 var regions = data.regionsURL; 421 var regions = data.userRegions;
427 $.each(regions, function(index, region) { 422 $.each(regions, function(index, region) {
428 createRegionDiv(data, regions, index, attr); 423 createRegionDiv(data, regions, index, attr);
429 }); 424 });
430 }; 425 };
431 426
432 // create regions from HTML 427 // create regions from HTML
433 var createRegionsFromHTML = function (data) { 428 var createRegionsFromHTML = function (data) {
434 var cssPrefix = data.settings.cssPrefix; 429 var cssPrefix = data.settings.cssPrefix;
435 var regions = data.regionsHTML; 430 var regions = data.htmlRegions;
436 // regions are defined in "area" tags 431 // regions are defined in "area" tags
437 var $content = data.$elem.find(data.settings.htmlRegionsSelector); 432 var $content = data.$elem.find(data.settings.htmlRegionsSelector);
438 console.debug("createRegionsFromHTML. Number of elems: ", $content.length); 433 console.debug("createRegionsFromHTML. Number of elems: ", $content.length);
439 $content.each(function(index, area) { 434 $content.each(function(index, area) {
440 var $area = $(area); 435 var $area = $(area);
506 } 501 }
507 }; 502 };
508 503
509 // show regions 504 // show regions
510 var renderRegions = function (data, anim) { 505 var renderRegions = function (data, anim) {
511 $.each(data.regionsHTML, function(index, region) { 506 $.each(data.htmlRegions, function(index, region) {
512 renderRegion(data, region, anim); 507 renderRegion(data, region, anim);
513 }); 508 });
514 $.each(data.regionsURL, function(index, region) { 509 $.each(data.userRegions, function(index, region) {
515 renderRegion(data, region, anim); 510 renderRegion(data, region, anim);
516 }); 511 });
517 }; 512 };
518 513
514 // read region data from URL parameters
519 var unpackRegions = function (data) { 515 var unpackRegions = function (data) {
520 // create regions from parameters
521 var rg = data.settings.rg; 516 var rg = data.settings.rg;
522 if (rg == null) return; 517 if (rg == null) return;
523 var regions = data.regionsURL; 518 var regions = data.userRegions;
524 var rs = rg.split(","); 519 var rs = rg.split(",");
525 for (var i = 0; i < rs.length; i++) { 520 for (var i = 0; i < rs.length; i++) {
526 var r = rs[i]; 521 var r = rs[i];
527 var pos = r.split("/", 4); 522 var pos = r.split("/", 4);
528 var rect = geom.rectangle(pos[0], pos[1], pos[2], pos[3]); 523 var rect = geom.rectangle(pos[0], pos[1], pos[2], pos[3]);
529 regions.push(rect); 524 regions.push(rect);
530 } 525 }
531 }; 526 };
532 527
533 // pack regions array into a parameter string 528 // pack user regions array into a URL parameter string
534 var packRegions = function (data) { 529 var packRegions = function (data) {
535 var regions = data.regionsURL; 530 var regions = data.userRegions;
536 if (!regions.length) { 531 if (!regions.length) {
537 data.settings.rg = null; 532 data.settings.rg = null;
538 return; 533 return;
539 } 534 }
540 var rg = ''; 535 var rg = '';
553 var redisplay = function (data) { 548 var redisplay = function (data) {
554 if (data.settings.processUserRegions) { 549 if (data.settings.processUserRegions) {
555 packRegions(data); 550 packRegions(data);
556 } 551 }
557 fn.redisplay(data); 552 fn.redisplay(data);
553 };
554
555 // event handler, gets called when a newRegion event is triggered
556 var handleNewRegion = function (evt, region) {
557 var data = this;
558 var settings = data.settings;
559 console.debug("regions: handleNewRegion", region);
560 if (typeof settings.onNewRegion === 'function') {
561 // execute callback
562 return settings.onNewRegion(data, region);
563 }
564 if (typeof settings.onNewRegion === 'string') {
565 // execute action
566 return actions[settings.onNewRegion](data, region);
567 }
568 };
569
570 // event handler, gets called when a regionClick event is triggered
571 var handleRegionClick = function (evt, region) {
572 var data = this;
573 var settings = data.settings;
574 console.debug("regions: handleRegionClick", region);
575 if (region.href) {
576 // follow the href attribute of the region area
577 window.location = region.href; //TODO: how about target?
578 }
579 if (typeof settings.onClickRegion === 'function') {
580 // execute callback
581 return settings.onClickRegion(data, region);
582 }
583 if (typeof settings.onClickRegion === 'string') {
584 // execute action
585 return actions[settings.onClickRegion](data, region);
586 }
558 }; 587 };
559 588
560 // event handler, reads region parameter and creates region divs 589 // event handler, reads region parameter and creates region divs
561 var handleSetup = function (evt) { 590 var handleSetup = function (evt) {
562 var data = this; 591 var data = this;
614 console.debug('initialising regions plugin. data:', data); 643 console.debug('initialising regions plugin. data:', data);
615 var $elem = data.$elem; 644 var $elem = data.$elem;
616 var settings = data.settings; 645 var settings = data.settings;
617 var cssPrefix = data.settings.cssPrefix; 646 var cssPrefix = data.settings.cssPrefix;
618 // region arrays 647 // region arrays
619 data.regionsURL = []; 648 data.userRegions = [];
620 data.regionsHTML = []; 649 data.htmlRegions = [];
621 // install event handlers 650 // install event handlers
622 var $data = $(data); 651 var $data = $(data);
623 $data.on('setup', handleSetup); 652 $data.on('setup', handleSetup);
624 $data.on('update', handleUpdate); 653 $data.on('update', handleUpdate);
654 $data.on('newRegion', handleNewRegion);
655 $data.on('regionClick', handleRegionClick);
625 // install buttons 656 // install buttons
626 if (settings.processUserRegions) { 657 if (settings.processUserRegions) {
627 // add "rg" to digilibParamNames: TODO - check with settings.additionalParamNames? 658 // add "rg" to digilibParamNames
628 // settings.digilibParamNames.push('rg'); 659 // settings.digilibParamNames.push('rg');
660 // TODO: this leads double params, because
661 // settings.additionalParamNames is created earlier than this plugin's init() action
629 if (digilib.plugins.buttons != null) { 662 if (digilib.plugins.buttons != null) {
630 installButtons(data); 663 installButtons(data);
631 } 664 }
632 } 665 }
633 }; 666 };