|
From: <var...@us...> - 2021-07-23 16:20:13
|
Revision: 10360
http://sourceforge.net/p/phpwiki/code/10360
Author: vargenau
Date: 2021-07-23 16:20:12 +0000 (Fri, 23 Jul 2021)
Log Message:
-----------
Update wikilens.js from Fusionforge
Modified Paths:
--------------
trunk/themes/wikilens/wikilens.js
Modified: trunk/themes/wikilens/wikilens.js
===================================================================
--- trunk/themes/wikilens/wikilens.js 2021-07-23 15:22:08 UTC (rev 10359)
+++ trunk/themes/wikilens/wikilens.js 2021-07-23 16:20:12 UTC (rev 10360)
@@ -1,12 +1,32 @@
// Wikilens Javascript functions.
+// Globals:
+
+var rating = new Array; var prediction = new Array;
+var avg = new Array; var numusers = new Array;
+var canRate = new Array;
+var msg_rating_votes = "Rating: %.1f (%d votes)";
+var msg_curr_rating = "Your current rating: ";
+var msg_curr_prediction = "Your current prediction: ";
+//var msg_chg_rating = "Change your rating from ";
+var msg_to = " to ";
+var msg_add_rating = "Add your rating: ";
+var msg_thanks = "Thanks!";
+var msg_rating_deleted = "Rating deleted!";
+
+var rateit_imgsrc = '/themes/wikilens/images/RateIt';
+var rateit_action = 'RateIt';
+var idTop = '';
+//
+
function displayRating(imgId, imgPrefix, ratingvalue, pred, init) {
var ratings = new Array('Not Rated','Awful','Very Poor','Poor','Below Average',
- 'Average','Above Average','Good','Very Good','Excellent','Outstanding');
+ 'Average','Above Average','Good','Very Good','Excellent','Outstanding');
var cancel = imgId + imgPrefix + 'Cancel';
var curr_rating = rating[imgId];
var curr_pred = prediction[imgId];
var title = '';
+ var imgSrc = rateit_imgsrc;
if (init) { // re-initialize titles
title = msg_curr_rating+curr_rating+' '+ratings[curr_rating*2];
var linebreak = '. '; //
 or 
 within IE only;
@@ -13,42 +33,115 @@
if (pred) {
title = title+' '+msg_curr_prediction+ curr_pred+' '+ratings[curr_pred*2];
}
+ if (canRate[imgId]) {
+ if (curr_rating) {
+ document.getElementById(cancel).style.display = 'inline';
+ }
+ else {
+ document.getElementById(cancel).style.display = 'none';
+ }
+ }
}
for (var i=1; i<=10; i++) {
var imgName = imgId + i;
- var imgSrc = rateit_imgsrc;
if (init) {
- if (curr_rating) document[cancel].style.display = 'inline';
- document[imgName].title = title;
+ //document[imgName].title = title;
var j = i/2;
if (ratingvalue > 0) {
if (curr_rating) {
- document[imgName].onmouseout = function() { displayRating(imgId,imgPrefix,curr_rating,0,0) };
+ document.getElementById(imgName).onmouseout = function() { displayRating(imgId,imgPrefix,avg[imgId],0,0) };
} else if (curr_pred) {
- document[imgName].onmouseout = function() { displayRating(imgId,imgPrefix,curr_pred,1,0) };
+ document.getElementById(imgName).onmouseout = function() { displayRating(imgId,imgPrefix,curr_pred,1,0) };
}
- if (curr_rating != ratingvalue) {
- document[imgName].title = msg_chg_rating+curr_rating+' '+ratings[curr_rating*2]+msg_to+j+' '+ratings[i];
- }
+ if (curr_rating != ratingvalue && typeof(msg_chg_rating) != "undefined") {
+ document.getElementById(imgName).title = msg_chg_rating+curr_rating+' '+ratings[curr_rating*2]+msg_to+j+' '+ratings[i];
+ }
} else {
- document[imgName].onmouseout = function() { displayRating(imgId,imgPrefix,0,0,0) };
- document[imgName].title = msg_add_rating+j+' '+ratings[i];
+ document.getElementById(imgName).onmouseout = function() { displayRating(imgId,imgPrefix,avg[imgId],0,0) };
+ document.getElementById(imgName).title = msg_add_rating+j+' '+ratings[i];
}
}
var imgType = 'N';
if (pred) {
if (init)
- document[imgName].title = title+linebreak+msg_add_rating+ratings[i];
+ document.getElementById(imgName).title = title+linebreak+msg_add_rating+ratings[i];
imgType = 'R';
} else if (i<=(ratingvalue*2)) {
imgType = 'O';
}
- document[imgName].src = imgSrc + imgPrefix + imgType + ((i%2) ? 'k1' : 'k0') + '.png';
+ document.getElementById(imgName).src = imgSrc + imgPrefix + imgType + ((i%2) ? 'k1' : 'k0') + '.png';
}
}
+
+function displayRating2(imgId, imgPrefix, ratingvalue, pred, init) {
+ var ratings = new Array('Not Rated','Awful','Very Poor','Poor','Below Average',
+ 'Average','Above Average','Good','Very Good','Excellent','Outstanding');
+ var cancel = imgId + imgPrefix + 'Cancel';
+ var curr_rating = rating[imgId];
+ var curr_pred = prediction[imgId];
+ var title = '';
+ var imgSrc = rateit_imgsrc;
+ if (init) { // re-initialize titles
+ title = msg_curr_rating+curr_rating+' '+ratings[curr_rating*2];
+ var linebreak = '. '; //
 or 
 within IE only;
+ if (pred) {
+ title = title+' '+msg_curr_prediction+ curr_pred+' '+ratings[curr_pred*2];
+ }
+ if (curr_rating) {
+ document.getElementById(cancel).style.display = 'inline';
+ }
+ else {
+ document.getElementById(cancel).style.display = 'none';
+ }
+ }
+ for (var i=1; i<=10; i++) {
+ var imgName = imgId + i;
+ if (init) {
+ //document[imgName].title = title;
+ var j = i/2;
+ if (ratingvalue > 0) {
+ if (curr_rating) {
+ document.getElementById(imgName).onmouseout = function() { displayRating(imgId,imgPrefix,avg[imgId],0,0) };
+ } else if (curr_pred) {
+ document.getElementById(imgName).onmouseout = function() { displayRating(imgId,imgPrefix,curr_pred,1,0) };
+ }
+ if (curr_rating != ratingvalue && typeof(msg_chg_rating) != "undefined") {
+ document.getElementById(imgName).title = msg_chg_rating+curr_rating+' '+ratings[curr_rating*2]+msg_to+j+' '+ratings[i];
+ }
+ } else {
+ document.getElementById(imgName).onmouseout = function() { displayRating(imgId,imgPrefix,avg[imgId],0,0) };
+ document.getElementById(imgName).title = msg_add_rating+j+' '+ratings[i];
+ }
+ }
+ var imgType = 'N';
+ if (pred) {
+ if (init)
+ document.getElementById(imgName).title = title+linebreak+msg_add_rating+ratings[i];
+ imgType = 'R';
+ } else {
+ if (ratingvalue <= curr_rating) {
+ if (i <= (ratingvalue * 2))
+ imgType = 'Rp';
+ else
+ if (i <= (curr_rating * 2))
+ imgType = 'R';
+ }
+ else {
+ if (i <= (curr_rating * 2))
+ imgType = 'Rp';
+ else
+ if (i <= (ratingvalue * 2))
+ imgType = 'Rm';
+ }
+ }
+ document.getElementById(imgName).src = imgSrc + imgPrefix + imgType + ((i%2) ? 'k1' : 'k0') + '.png';
+ }
+}
+
function sprintfRating(s, num, count) {
- var num1 = num.toString().replace(/\.(\d).*/, '.$1');
- return s.replace(/\%.1f/, num1).replace(/\%d/, count);
+ var num1 = Math.round(num * 10) / 10;
+ if (count < 2) s = s.replace(/votes/, 'vote');
+ return s.replace(/\%.1f/, num1).replace(/\%d/, count);
}
function clickRating(imgPrefix,pagename,version,imgId,dimension,newrating) {
var actionImg = imgId+'Action';
@@ -55,45 +148,50 @@
var top = document.getElementById('rateit-widget-top');
var nusers = numusers[imgId];
var old_rating = rating[imgId];
+ var sum1 = avg[imgId] * nusers;
+ var new_avg;
if (newrating == 'X') {
deleteRating(actionImg,pagename,dimension);
- displayRating(imgId,imgPrefix,0,0,1);
if (top && nusers) {
- var sum1 = avg[imgId] * nusers;
- var new_avg;
- if (nusers > 1)
- new_avg = (sum1 - old_rating) / (nusers-1);
- else
- new_avg = 0.0;
- if (new_avg.toString() != "NaN") {
- top.childNodes[0].innerHTML = sprintfRating(msg_rating_votes, new_avg, nusers-1);
- avg[imgId] = new_avg;
- numusers[imgId]--;
+ if (old_rating && old_rating > 0) {
+ if (nusers > 1) {
+ new_avg = (sum1 - old_rating) / (nusers - 1);
+ numusers[imgId]--;
}
+ else {
+ new_avg = 0;
+ numusers[imgId] = 0;
+ }
+ }
+ if (new_avg.toString() != "NaN" && idTop == imgId) {
+ avg[imgId] = new_avg;
+ top.childNodes[0].innerHTML = sprintfRating(msg_rating_votes, new_avg, nusers-1);
+ }
}
rating[imgId] = 0;
+ displayRating2(imgId,imgPrefix,0,0,1);
} else {
submitRating(actionImg,pagename,version,dimension,newrating);
- displayRating(imgId,imgPrefix,newrating,0,1);
if (top && nusers) {
- var new_avg;
- var sum1 = avg[imgId] * nusers;
- if (old_rating && (old_rating > 0)) {
- new_avg = (sum1 + newrating - old_rating) / nusers;
- } else {
- new_avg = (sum1 + newrating) / (nusers + 1);
- avg[imgId] = new_avg;
- numusers[imgId]++;
+ if (old_rating && (old_rating > 0)) {
+ new_avg = (sum1 + newrating - old_rating) / nusers;
+ } else {
+ new_avg = (sum1 + newrating) / (nusers + 1);
+ numusers[imgId]++;
+ }
+ if (new_avg.toString() != "NaN" && idTop == imgId) {
+ avg[imgId] = new_avg;
+ if (newrating != rating[imgId]) {
+ top.childNodes[0].innerHTML = sprintfRating(msg_rating_votes, new_avg, numusers[imgId]);
}
- if ((rating != rating[imgId]) && (new_avg.toString() != "NaN")) {
- top.childNodes[0].innerHTML = sprintfRating(msg_rating_votes, new_avg, numusers[imgId]);
- }
- } else if (top) {
- top.childNodes[0].innerHTML = sprintfRating(msg_rating_votes, newrating, 1);
- avg[imgId] = newrating;
- numusers[imgId] = 1;
+ }
+ } else if (top && idTop == imgId) {
+ top.childNodes[0].innerHTML = sprintfRating(msg_rating_votes, newrating, 1);
+ avg[imgId] = newrating;
+ numusers[imgId] = 1;
}
rating[imgId] = newrating;
+ displayRating2(imgId,imgPrefix,newrating,0,1);
}
}
function submitRating(actionImg,page,version,dimension,newrating) {
@@ -100,10 +198,9 @@
//TODO: GET => PUT request
// currently ratings are changed with side-effect, but GET should be side-effect free.
var myRand = Math.round(Math.random()*(1000000));
- var imgSrc = WikiURL(page) + 'version=' + version + '&action=' + rateit_action + '+&mode=add&rating=' + newrating + '&dimension=' + dimension + '&nocache=1&nopurge=1&rand=' + myRand;
- //alert('submitRating("'+actionImg+'", "'+page+'", '+version+', '+dimension+', '+newrating+') => '+imgSrc);
- document[actionImg].title = msg_thanks;
- document[actionImg].src = imgSrc;
+ var imgSrc = WikiURL(page) + 'version=' + version + '&action=' + rateit_action + '&mode=add&rating=' + newrating + '&dimension=' + dimension + '&nocache=1&nopurge=1&rand=' + myRand;
+ document.getElementById(actionImg).title = msg_thanks;
+ document.getElementById(actionImg).src = imgSrc;
}
function deleteRating(actionImg, page, dimension) {
//TODO: GET => DELETE request
@@ -110,7 +207,6 @@
// currently ratings are changed with side-effect, but GET should be side-effect free.
var myRand = Math.round(Math.random()*(1000000));
var imgSrc = WikiURL(page) + 'action=' + rateit_action + '&mode=delete&dimension=' + dimension + '&nocache=1&nopurge=1&rand=' + myRand;
- //alert('deleteRating("'+actionImg+'", "'+page+'", '+version+', '+dimension+')');
- document[actionImg].title = msg_rating_deleted;
- document[actionImg].src = imgSrc;
+ document.getElementById(actionImg).title = msg_rating_deleted;
+ document.getElementById(actionImg).src = imgSrc;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|