# HG changeset patch # User hertzhaft # Date 1332884133 -7200 # Node ID 89c5b56933af26db4027e14e737cdee89a3fd2c0 # Parent f6292c6ec440c775061f209abe9f78bf50076cd7 Ticket #9: new option 'showPageButtons', function 'disableButtons' diff -r f6292c6ec440 -r 89c5b56933af webapp/src/main/webapp/jquery/jquery.digilib.buttons.js --- a/webapp/src/main/webapp/jquery/jquery.digilib.buttons.js Tue Mar 27 09:32:24 2012 +0200 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.buttons.js Tue Mar 27 23:35:33 2012 +0200 @@ -157,6 +157,10 @@ var defaults = { // buttons (reference added later) 'buttons' : null, + // disabled buttons (should be an array of button names) + 'buttonsDisabled' : [], + // show buttons needed for consecutive (book-like) consultation of image files + 'showPageButtons' : true, // defaults for digilib buttons 'buttonSettings' : { 'fullscreen' : { @@ -165,6 +169,7 @@ 'buttonSetWidth' : 36, 'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","pagewidth","back","fwd","page","about","reset","toggleoptions"], 'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","size","calibrationx","scale","lessoptions"], + 'pageSet' : ["back","fwd","page"], 'buttonSets' : ['standardSet', 'specialSet'] }, 'embedded' : { @@ -172,6 +177,7 @@ 'buttonSetWidth' : 18, 'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","about","reset","toggleoptions"], 'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","scale","lessoptions"], + 'pageSet' : ["back","fwd","page"], 'buttonSets' : ['standardSet', 'specialSet'] } }, @@ -229,13 +235,19 @@ fn.createButton = createButton; fn.highlightButtons = highlightButtons; fn.setButtonAction = setButtonAction; + fn.findButtonByName = findButtonByName; }; // plugin initialization var init = function (data) { console.debug('initialising buttons plugin. data:', data); + var settings = data.settings; // add insets data.currentInsets['buttons'] = getInsets(data); + if (!settings.showPageButtons) { + var pageSet = settings.buttonSettings[settings.interactionMode].pageSet; + $.merge(settings.buttonsDisabled, pageSet); + } // install event handler var $data = $(data); $data.bind('setup', handleSetup); @@ -249,6 +261,7 @@ for (var i = 0; i < settings.visibleButtonSets; ++i) { showButtons(data, true, i); } + disableButtons(data); }; /** @@ -284,17 +297,14 @@ var tooltip = buttonConfig.tooltip; var icon = imagePath + buttonConfig.icon; // construct the button html - var $button = $('
'); - var $a = $(''); - var $img = $(''); - $div.append($button); - $button.append($a); - $a.append($img); - // add attributes and bindings - $button.attr('title', tooltip); - $button.attr('id', cssPrefix+'button-'+buttonName); - $button.addClass(cssPrefix+'button-'+buttonName); - $img.attr('src', icon); + var html = '\ +
\ + \ + \ + \ +
'; + var $button = $(html); + $button.appendTo($div); // create handler for the buttons $button.on('click.digilib', (function () { // we create a new closure to capture the value of action @@ -402,7 +412,7 @@ var $buttons = data.$elem.find('div.'+cssPrefix+'buttons:visible'); // include hidden? // add a class for highlighted button var highlight = function (name, on) { - var $button = $buttons.find('div.'+cssPrefix+'button-' + name); + var $button = findButtonByName(data, name); if (on) { $button.addClass(cssPrefix+'button-on'); } else { @@ -424,6 +434,29 @@ highlight('zoomin', ! isFullArea(data.zoomArea)); }; + // find a button + var findButtonByName = function (data, name) { + var $elem = data.$elem; + var cssPrefix = data.settings.cssPrefix; + var $button = $elem.find('#'+cssPrefix+'button-'+name); + console.debug("find button", name, $button); + return $button; + }; + + // hide disabled buttons + var disableButtons = function (data, buttonnames) { + // if present, buttonnames should be an array of button names + var $elem = data.$elem; + var settings = data.settings; + var cssPrefix = settings.cssPrefix; + var disabled = buttonnames || settings.buttonsDisabled; + $.each(disabled, function(index, name) { + var $button = findButtonByName(data, name); + $button.addClass(cssPrefix+'disabled'); + }); + console.debug('disabled buttons:', disabled); + }; + // set standard button "onclick" field to a new action var setButtonAction = function(buttonName, action) { var button = buttons[buttonName]; diff -r f6292c6ec440 -r 89c5b56933af webapp/src/main/webapp/jquery/jquery.digilib.css --- a/webapp/src/main/webapp/jquery/jquery.digilib.css Tue Mar 27 09:32:24 2012 +0200 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.css Tue Mar 27 23:35:33 2012 +0200 @@ -4,6 +4,10 @@ * Martin Raspe, Robert Casties, 11.1.2011 */ +div.dl-digilib .dl-disabled { + display: none; +} + div.dl-digilib, div.dl-digilib button, div.dl-digilib input { diff -r f6292c6ec440 -r 89c5b56933af webapp/src/main/webapp/jquery/jquery.digilib.dialogs.js --- a/webapp/src/main/webapp/jquery/jquery.digilib.dialogs.js Tue Mar 27 09:32:24 2012 +0200 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.dialogs.js Tue Mar 27 23:35:33 2012 +0200 @@ -132,16 +132,19 @@ fn.withdraw($scaleDiv); }); // position the element next to the scale button - var $button = $elem.find('#'+cssPrefix+'button-scale'); - // var $button = digilib.buttons['scale'].button; - var buttonRect = geom.rectangle($button); $scaleDiv.fadeIn(); $select.focus(); - var divRect = geom.rectangle($scaleDiv); - $scaleDiv.offset({ - left : Math.abs(buttonRect.x - divRect.width - 4), - top : buttonRect.y + 4 - }); + if (digilib.plugins.buttons == null) { + fn.centerOnScreen($scaleDiv) + } else { + var $button = fn.findButtonByName(data, 'scale'); + var buttonRect = geom.rectangle($button); + var divRect = geom.rectangle($scaleDiv); + $scaleDiv.offset({ + left : Math.abs(buttonRect.x - divRect.width - 4), + top : buttonRect.y + 4 + }); + } }; var setButtonActions = function () {