source: extensions/luciano/js/script.js @ 17335

Last change on this file since 17335 was 16048, checked in by plg, 12 years ago

first step to make Luciano compatible with Piwigo 2.4

File size: 4.8 KB
Line 
1function makeNiceRatingForm(options)
2{
3        gRatingOptions = options || {};
4        var form = $('rateForm');
5        if (!form) return;
6
7        gRatingButtons = form.getElements('input');
8        gUserRating = "";
9       
10        gRatingButtons.each(function(el){ if ( el.type=="button" ) { gUserRating = el.value; } });
11
12        gRatingButtons.each(function(el, i){
13               
14                el.initialRateValue = el.value; // save it as a property
15               
16                try { el.type = "button"; } catch (e){}// avoid normal submit (use ajax); not working in IE6
17               
18                //hide the text IE/Opera - breaks safari
19                if (navigator.userAgent.indexOf('AppleWebKit/') == -1 ) el.value = ""; 
20               
21                el.setStyles({
22                        'textIndent' : "-50px",
23                        'marginLeft' : 0,
24                        'marginRight' : 0
25                });
26
27                if (i!=gRatingButtons.length-1 && el.nextSibling.nodeType == 3 /*TEXT_NODE*/)
28                        el.parentNode.removeChild(el.nextSibling);
29                       
30                if (i>0 && el.previousSibling.nodeType == 3 /*TEXT_NODE*/)
31                        el.parentNode.removeChild(el.previousSibling);
32               
33                el.addEvents({
34                        'mouseenter'    : function(){updateRating(el)},
35                        'mouseleave'    : function(){resetRating(el)},
36                        'click'                 : function(e){submitRating(e)}
37                });
38
39        });
40}
41
42function resetRating(el)
43{
44        for (i = 1; i<gRatingButtons.length; i++){
45                gRatingButtons[i].removeClass('rateButtonUserFull2');
46                gRatingButtons[i].removeClass('rateButtonUserHalf2');
47                gRatingButtons[i].removeClass('rateButtonUserEmpty2');
48                gRatingButtons[i].removeClass('rateButtonFull2');
49                gRatingButtons[i].removeClass('rateButtonHalf2');
50                gRatingButtons[i].removeClass('rateButtonEmpty2');
51                if(gRatingButtons[i].value > el.value) break;
52        }
53}
54
55function updateRating(el)
56{
57        for (i = 1; i<gRatingButtons.length; i++){
58                                                                                                                                                                                                                                var newClass = 'rateButton';
59                if(gRatingButtons[i].title <= el.title)                                                                                                                                         newClass = newClass+'User';
60                if(gRatingButtons[i].hasClass('rateButtonFull') || gRatingButtons[i].hasClass('rateButtonUserFull'))            newClass = newClass+'Full2';
61                else if(gRatingButtons[i].hasClass('rateButtonHalf') || gRatingButtons[i].hasClass('rateButtonUserHalf'))       newClass = newClass+'Half2';
62                else                                                                                                                                                                                                            newClass = newClass+'Empty2';
63                gRatingButtons[i].addClass(newClass);
64        }
65}
66
67function setNewRate(score, count, stdev, newRating)
68{
69        var score = score+"";
70        ratingSplitted = score.split('.');
71        starFull = ratingSplitted[0];
72        starHalf = (ratingSplitted[1] > 49) ? true : false;
73       
74        for (i = 1; i<gRatingButtons.length; i++){
75                gRatingButtons[i].removeClass('rateButtonFull');
76                gRatingButtons[i].removeClass('rateButtonHalf');
77                gRatingButtons[i].removeClass('rateButtonEmpty');
78                gRatingButtons[i].removeClass('rateButtonUserFull');
79                gRatingButtons[i].removeClass('rateButtonUserHalf');
80                gRatingButtons[i].removeClass('rateButtonUserEmpty');
81                gRatingButtons[i].removeClass('rateButtonFull2');
82                gRatingButtons[i].removeClass('rateButtonHalf2');
83                gRatingButtons[i].removeClass('rateButtonEmpty2');
84                gRatingButtons[i].removeClass('rateButtonUserFull2');
85                gRatingButtons[i].removeClass('rateButtonUserHalf2');
86                gRatingButtons[i].removeClass('rateButtonUserEmpty2');
87               
88               
89                if(gRatingButtons[i].title <= starFull)                                 gRatingButtons[i].addClass((gRatingButtons[i].title <= newRating) ? 'rateButtonUserFull': 'rateButtonFull');
90                else if(gRatingButtons[i].title == starFull.toInt()+1)
91                        if(gRatingButtons[i].title <= newRating)                        gRatingButtons[i].addClass((starHalf) ? 'rateButtonUserHalf': 'rateButtonUserEmpty');
92                        else                                                                                            gRatingButtons[i].addClass((starHalf) ? 'rateButtonHalf': 'rateButtonEmpty');
93                else                                                                                                    gRatingButtons[i].addClass((gRatingButtons[i].title <= newRating) ? 'rateButtonUserEmpty': 'rateButtonEmpty');
94        }
95}
96
97function submitRating(e)
98{
99        var rateButton = e.target;
100        if (rateButton.initialRateValue == gUserRating)
101                return false; //nothing to do
102
103        for (var i=0; i<gRatingButtons.length; i++) gRatingButtons[i].disabled=true;
104        var y = new PwgWS(gRatingOptions.rootUrl);
105        y.callService(
106                "pwg.images.rate", {image_id: gRatingOptions.image_id, rate: rateButton.initialRateValue } ,
107                {
108                        onFailure: function(num, text) {
109                                alert(num + " " + text);
110                                document.location = rateButton.form.action + "&rate="+rateButton.initialRateValue;
111                        },
112                        onSuccess: function(result)     {
113                                gUserRating = rateButton.initialRateValue;
114                                for (var i=0; i<gRatingButtons.length; i++) gRatingButtons[i].disabled=false;
115                                setNewRate(result.score, result.count, result.stdev, rateButton.initialRateValue);
116                                if (gRatingOptions.ratingSummaryElement)
117                                {
118                                        var t = gRatingOptions.ratingSummaryText;
119                                        var args =[result.score, result.count, result.stdev], idx = 0, rexp = new RegExp( /%\.?\d*[sdf]/ );
120                                        _xxx = t.match( rexp );
121                                        while (idx<args.length) t=t.replace(rexp, args[idx++]);
122                                        gRatingOptions.ratingSummaryElement.innerHTML = t;
123                                }
124                        }
125                }
126        );
127        return false;
128}
Note: See TracBrowser for help on using the repository browser.