From 9c96b905ff3327ad5264b794048b6c71bbc5e4ee Mon Sep 17 00:00:00 2001 From: rvelices Date: Tue, 15 Jul 2008 01:29:23 +0000 Subject: - image rating on picture page done through ajax (tested safari/ie 6&7/ff) git-svn-id: http://piwigo.org/svn/trunk@2435 68402e56-0260-453c-a942-63ccdbb3a9ee --- template/yoga/rating.js | 142 ++++++++++++++++++++++++++---------------------- 1 file changed, 76 insertions(+), 66 deletions(-) (limited to 'template/yoga/rating.js') diff --git a/template/yoga/rating.js b/template/yoga/rating.js index a4f8f86b8..682ab10d0 100644 --- a/template/yoga/rating.js +++ b/template/yoga/rating.js @@ -1,90 +1,100 @@ -makeNiceRatingForm(); +var gRatingOptions, gRatingButtons, gUserRating; -function makeNiceRatingForm() +function makeNiceRatingForm(options) { - var form = document.getElementById('rateForm'); - if (!form) return; //? template changed - gRatingButtons = form.getElementsByTagName('input'); + gRatingOptions = options || {}; + var form = document.getElementById('rateForm'); + if (!form) return; //? template changed - gUserRating = ""; - for (var i=0; i0 && rateButton.previousSibling.nodeType == 3 /*TEXT_NODE*/) - rateButton.parentNode.removeChild(rateButton.previousSibling); + if (i!=gRatingButtons.length-1 && rateButton.nextSibling.nodeType == 3 /*TEXT_NODE*/) + rateButton.parentNode.removeChild(rateButton.nextSibling); + if (i>0 && rateButton.previousSibling.nodeType == 3 /*TEXT_NODE*/) + rateButton.parentNode.removeChild(rateButton.previousSibling); - if(window.addEventListener){ // Mozilla, Netscape, Firefox - rateButton.addEventListener("click", updateRating, false ); - rateButton.addEventListener("mouseout", resetRatingStarDisplay, false ); - rateButton.addEventListener("mouseover", updateRatingStarDisplayEvt, false ); - } - else if(window.attachEvent) { // IE - rateButton.attachEvent("onclick", updateRating); - rateButton.attachEvent("onmouseout", resetRatingStarDisplay); - rateButton.attachEvent("onmouseover", updateRatingStarDisplayEvt); - } - } - resetRatingStarDisplay(); + if(window.addEventListener){ // Mozilla, Netscape, Firefox + rateButton.addEventListener("click", updateRating, false ); + rateButton.addEventListener("mouseout", resetRatingStarDisplay, false ); + rateButton.addEventListener("mouseover", updateRatingStarDisplayEvt, false ); + } + else if(window.attachEvent) { // IE + rateButton.attachEvent("onclick", updateRating); + rateButton.attachEvent("onmouseout", resetRatingStarDisplay); + rateButton.attachEvent("onmouseover", updateRatingStarDisplayEvt); + } + } + resetRatingStarDisplay(); } function resetRatingStarDisplay() { - updateRatingStarDisplay( gUserRating ); + updateRatingStarDisplay( gUserRating ); } function updateRatingStarDisplay(userRating) { - for (i=0; i=rateButton.initialRateValue ) - { - rateButton.className = "rateButtonStarFull"; - } - else - { - rateButton.className = "rateButtonStarEmpty"; - } - } + for (var i=0; i=gRatingButtons[i].initialRateValue ) ? "rateButtonStarFull" : "rateButtonStarEmpty"; } function updateRatingStarDisplayEvt(e) { - if (e.target) - updateRatingStarDisplay(e.target.initialRateValue); - else //IE - updateRatingStarDisplay(e.srcElement.initialRateValue); + updateRatingStarDisplay( + e.target ? e.target.initialRateValue : e.srcElement.initialRateValue); } function updateRating(e) { - if (e.target) - var rateButton = e.target; - else //IE - var rateButton = e.srcElement; - if (rateButton.initialRateValue == gUserRating) - return false; //nothing to do - // some ajax here one day would be nice - rateButton.value = rateButton.initialRateValue; // put back real value - return true; + var rateButton = e.target || e.srcElement; + if (rateButton.initialRateValue == gUserRating) + return false; //nothing to do + + for (var i=0; i