]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - themes/wikilens/wikilens.js
Remove CVS backend
[SourceForge/phpwiki.git] / themes / wikilens / wikilens.js
1 // Wikilens Javascript functions.
2
3 function displayRating(imgId, imgPrefix, ratingvalue, pred, init) {
4   var ratings = new Array('Not Rated','Awful','Very Poor','Poor','Below Average',
5                           'Average','Above Average','Good','Very Good','Excellent','Outstanding');
6   var cancel = imgId + imgPrefix + 'Cancel';
7   var curr_rating = rating[imgId];
8   var curr_pred = prediction[imgId];
9   var title = '';
10   if (init) { // re-initialize titles
11     title = msg_curr_rating+curr_rating+' '+ratings[curr_rating*2];
12     var linebreak = '. '; //&#xD or &#13 within IE only;
13     if (pred) {
14       title = title+' '+msg_curr_prediction+ curr_pred+' '+ratings[curr_pred*2];
15     }
16   }
17   for (var i=1; i<=10; i++) {
18     var imgName = imgId + i;
19     var imgSrc = rateit_imgsrc;
20     if (init) {
21       if (curr_rating) document[cancel].style.display = 'inline';
22       document[imgName].title = title;
23       var j = i/2;
24       if (ratingvalue > 0) {
25         if (curr_rating) {
26           document[imgName].onmouseout = function() { displayRating(imgId,imgPrefix,curr_rating,0,0) };
27         } else if (curr_pred) {
28           document[imgName].onmouseout = function() { displayRating(imgId,imgPrefix,curr_pred,1,0) };
29         }
30         if (curr_rating != ratingvalue) {
31           document[imgName].title = msg_chg_rating+curr_rating+' '+ratings[curr_rating*2]+msg_to+j+' '+ratings[i];
32         } 
33       } else {
34         document[imgName].onmouseout = function() { displayRating(imgId,imgPrefix,0,0,0) };
35         document[imgName].title = msg_add_rating+j+' '+ratings[i];
36       }
37     }
38     var imgType = 'N';
39     if (pred) {
40       if (init)
41         document[imgName].title = title+linebreak+msg_add_rating+ratings[i];
42       imgType = 'R';
43     } else if (i<=(ratingvalue*2)) {
44       imgType = 'O';
45     }
46     document[imgName].src = imgSrc + imgPrefix + imgType + ((i%2) ? 'k1' : 'k0') + '.png';
47   }
48 }
49 function sprintfRating(s, num, count) {
50     var num1 = num.toString().replace(/\.(\d).*/, '.$1');
51     return s.replace(/\%.1f/, num1).replace(/\%d/, count);
52 }
53 function clickRating(imgPrefix,pagename,version,imgId,dimension,newrating) {
54   var actionImg = imgId+'Action';
55   var top = document.getElementById('rateit-widget-top');
56   var nusers = numusers[imgId];
57   var old_rating = rating[imgId];
58   if (newrating == 'X') {
59     deleteRating(actionImg,pagename,dimension);
60     displayRating(imgId,imgPrefix,0,0,1);
61     if (top && nusers) {
62         var sum1 = avg[imgId] * nusers;
63         var new_avg;
64         if (nusers > 1)
65             new_avg = (sum1 - old_rating)  / (nusers-1);
66         else    
67             new_avg = 0.0;
68         if (new_avg.toString() != "NaN") {
69             top.childNodes[0].innerHTML = sprintfRating(msg_rating_votes, new_avg, nusers-1);
70             avg[imgId] = new_avg;
71             numusers[imgId]--;
72         }
73     }
74     rating[imgId] = 0;
75   } else {
76     submitRating(actionImg,pagename,version,dimension,newrating);
77     displayRating(imgId,imgPrefix,newrating,0,1);
78     if (top && nusers) {
79         var new_avg;
80         var sum1 = avg[imgId] * nusers;
81         if (old_rating && (old_rating > 0)) {
82             new_avg = (sum1 + newrating - old_rating)  / nusers;
83         } else {
84             new_avg = (sum1 + newrating) / (nusers + 1);
85             avg[imgId] = new_avg;
86             numusers[imgId]++;
87         }
88         if ((rating != rating[imgId]) && (new_avg.toString() != "NaN")) {
89             top.childNodes[0].innerHTML = sprintfRating(msg_rating_votes, new_avg, numusers[imgId]);
90         }
91     } else if (top) {
92         top.childNodes[0].innerHTML = sprintfRating(msg_rating_votes, newrating, 1);
93         avg[imgId] = newrating;
94         numusers[imgId] = 1;
95     }
96     rating[imgId] = newrating;
97   }
98 }
99 function submitRating(actionImg,page,version,dimension,newrating) {
100   //TODO: GET => PUT request
101   // currently ratings are changed with side-effect, but GET should be side-effect free.
102   var myRand = Math.round(Math.random()*(1000000));
103   var imgSrc = WikiURL(page) + 'version=' + version + '&action=' + rateit_action + '+&mode=add&rating=' + newrating + '&dimension=' + dimension + '&nocache=1&nopurge=1&rand=' + myRand;
104   //alert('submitRating("'+actionImg+'", "'+page+'", '+version+', '+dimension+', '+newrating+') => '+imgSrc);
105   document[actionImg].title = msg_thanks;
106   document[actionImg].src = imgSrc;
107 }
108 function deleteRating(actionImg, page, dimension) {
109   //TODO: GET => DELETE request
110   // currently ratings are changed with side-effect, but GET should be side-effect free.
111   var myRand = Math.round(Math.random()*(1000000));
112   var imgSrc = WikiURL(page) + 'action=' + rateit_action + '&mode=delete&dimension=' + dimension + '&nocache=1&nopurge=1&rand=' + myRand;
113   //alert('deleteRating("'+actionImg+'", "'+page+'", '+version+', '+dimension+')');
114   document[actionImg].title = msg_rating_deleted;
115   document[actionImg].src = imgSrc;
116 }