From: <var...@us...> - 2010-04-15 16:27:26
|
Revision: 7340 http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7340&view=rev Author: vargenau Date: 2010-04-15 16:27:18 +0000 (Thu, 15 Apr 2010) Log Message: ----------- Make RateIt plugin work for Gforge Modified Paths: -------------- trunk/lib/wikilens/Buddy.php trunk/lib/wikilens/RatingsDb.php trunk/themes/default/wikicommon.js trunk/themes/gforge/templates/body.tmpl trunk/themes/gforge/themeinfo.php Added Paths: ----------- trunk/themes/gforge/templates/ratings.tmpl trunk/themes/gforge/wikilens.js Modified: trunk/lib/wikilens/Buddy.php =================================================================== --- trunk/lib/wikilens/Buddy.php 2010-04-15 15:26:08 UTC (rev 7339) +++ trunk/lib/wikilens/Buddy.php 2010-04-15 16:27:18 UTC (rev 7340) @@ -55,11 +55,12 @@ extract($dbh->_table_names); $query = "SELECT raterpage, COUNT(rateepage) as numrating" . " FROM $rating_tbl r, $page_tbl p " - . " WHERE ratingvalue > 0 AND numrating > 5" +// . " WHERE ratingvalue > 0 AND numrating > 5" + . " WHERE ratingvalue > 0" . " GROUP BY raterpage" . " ORDER BY numrating" . " LIMIT 10"; - $result = $dbh->query($query); + $result = $dbh->_dbh->query($query); } else { // from 10 random raters of this page (non-SQL) ; Modified: trunk/lib/wikilens/RatingsDb.php =================================================================== --- trunk/lib/wikilens/RatingsDb.php 2010-04-15 15:26:08 UTC (rev 7339) +++ trunk/lib/wikilens/RatingsDb.php 2010-04-15 16:27:18 UTC (rev 7340) @@ -517,7 +517,7 @@ . " FROM $rating_tbl r, $page_tbl p " . $where . $orderbyStr; - $result = $dbi->query($query); + $result = $dbi->_dbh->query($query); return $result; } Modified: trunk/themes/default/wikicommon.js =================================================================== --- trunk/themes/default/wikicommon.js 2010-04-15 15:26:08 UTC (rev 7339) +++ trunk/themes/default/wikicommon.js 2010-04-15 16:27:18 UTC (rev 7340) @@ -10,6 +10,16 @@ var use_path_info = true; */ +function escapeQuotes(text) { + var re=new RegExp("'","g"); + text=text.replace(re,"\\'"); + re=new RegExp('"',"g"); + text=text.replace(re,'"'); + re=new RegExp("\\n","g"); + text=text.replace(re,"\\n"); + return text; +} + function WikiURL(page) { if (typeof page == "undefined") page = pagename; Modified: trunk/themes/gforge/templates/body.tmpl =================================================================== --- trunk/themes/gforge/templates/body.tmpl 2010-04-15 15:26:08 UTC (rev 7339) +++ trunk/themes/gforge/templates/body.tmpl 2010-04-15 16:27:18 UTC (rev 7340) @@ -15,7 +15,24 @@ </div> <?php } ?> <div id="content"> -<h1><?= $HEADER ?></h1> +<?php +if (ENABLE_RATEIT && !empty($user) && $user->isAuthenticated() && $page->exists()) + $rating = 1; +else + $rating = 0; +?> +<!-- Page title --> +<a name="top" id="contentTop"></a> +<h1 class="firstHeading<?= $rating ? '-rating' : '' ?>"><?= $HEADER ?></h1> +<?php if ($rating && $request->getArg('action') == 'browse') { ?> +<?= Template('ratings') ?> +<?php } elseif ($rating && $WikiTheme->DUMP_MODE) { ?> +<div id="rateit-widget-top"> +<?php + $loader = new WikiPluginLoader(); + printXML($loader->expandPI("<"."?plugin RateIt show=text ?".">", $request, $dbi->_markup)); +?></div> +<?php } ?> <br /> <?= $CONTENT ?> </div> Added: trunk/themes/gforge/templates/ratings.tmpl =================================================================== --- trunk/themes/gforge/templates/ratings.tmpl (rev 0) +++ trunk/themes/gforge/templates/ratings.tmpl 2010-04-15 16:27:18 UTC (rev 7340) @@ -0,0 +1,8 @@ +<?php // -*-php-*- +rcs_id('$Id: ratings.tmpl 6899 2009-06-05 07:16:56Z rurban $'); +?> +<!-- Ratings --> +<?php if (!$WikiTheme->DUMP_MODE) { + $loader = new WikiPluginLoader(); + printXML($loader->expandPI("<"."?plugin RateIt show=top imgPrefix=BStar ?".">", $request, $dbi->_markup)); +} ?> Modified: trunk/themes/gforge/themeinfo.php =================================================================== --- trunk/themes/gforge/themeinfo.php 2010-04-15 15:26:08 UTC (rev 7339) +++ trunk/themes/gforge/themeinfo.php 2010-04-15 16:27:18 UTC (rev 7340) @@ -9,8 +9,9 @@ rcs_id('$Id$'); require_once('lib/WikiTheme.php'); +require_once('themes/wikilens/themeinfo.php'); -class WikiTheme_gforge extends WikiTheme { +class WikiTheme_gforge extends WikiTheme_Wikilens { function header() { global $HTML, $group_id, $group_public_name, $request, $project; @@ -64,6 +65,28 @@ } + function initGlobals() { + global $request; + static $already = 0; + if (!$already) { + $script_url = deduce_script_name(); + $script_url .= '/'. $GLOBALS['group_name'] ; + if ((DEBUG & _DEBUG_REMOTE) and isset($_GET['start_debug'])) + $script_url .= ("?start_debug=".$_GET['start_debug']); + $folderArrowPath = dirname($this->_findData('images/folderArrowLoading.gif')); + $pagename = $request->getArg('pagename'); + $this->addMoreHeaders(JavaScript('', array('src' => $this->_findData("wikilens.js")))); + $js = "var data_path = '". javascript_quote_string(DATA_PATH) ."';\n" + // Temp remove pagename because of XSS warning + // ."var pagename = '". javascript_quote_string($pagename) ."';\n" + ."var script_url= '". javascript_quote_string($script_url) ."';\n" + ."var stylepath = data_path+'/".javascript_quote_string($this->_theme)."/';\n" + ."var folderArrowPath = '".javascript_quote_string($folderArrowPath)."';\n" + ."var use_path_info = " . (USE_PATH_INFO ? "true" : "false") .";\n"; + $this->addMoreHeaders(JavaScript($js)); + $already = 1; + } + } function load() { $this->initGlobals(); Added: trunk/themes/gforge/wikilens.js =================================================================== --- trunk/themes/gforge/wikilens.js (rev 0) +++ trunk/themes/gforge/wikilens.js 2010-04-15 16:27:18 UTC (rev 7340) @@ -0,0 +1,142 @@ +// Wikilens Javascript functions. +// $Id: wikilens.js 7138 2009-09-17 10:11:31Z rurban $ + +// Globals: + +/* +var data_path = '/phpwiki-cvs'; +var pagename = 'HomePage'; +var script_url= '/wikicvs'; +var stylepath = data_path+'/themes/MonoBook/'; +*/ + +var rating = new Array; var prediction = new Array; +var avg = new Array; var numusers = 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 = '/phpwiki-cvs/themes/MonoBook/images/RateIt'; +var rateit_imgsrc = '/plugins/wiki/themes/gforge/images/RateIt'; +var rateit_action = 'RateIt'; +// + +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'); + var cancel = imgId + imgPrefix + 'Cancel'; + var curr_rating = rating[imgId]; + var curr_pred = prediction[imgId]; + var title = ''; + 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]; + } + } + 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; + var j = i/2; + if (ratingvalue > 0) { + if (curr_rating) { + document[imgName].onmouseout = function() { displayRating(imgId,imgPrefix,curr_rating,0,0) }; + } else if (curr_pred) { + document[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]; + } + } else { + document[imgName].onmouseout = function() { displayRating(imgId,imgPrefix,0,0,0) }; + document[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]; + imgType = 'R'; + } else if (i<=(ratingvalue*2)) { + imgType = 'O'; + } + document[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); +} +function clickRating(imgPrefix,pagename,version,imgId,dimension,newrating) { + var actionImg = imgId+'Action'; + var top = document.getElementById('rateit-widget-top'); + var nusers = numusers[imgId]; + var old_rating = rating[imgId]; + 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]--; + } + } + rating[imgId] = 0; + } 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 ((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; + } + rating[imgId] = newrating; + } +} +function submitRating(actionImg,page,version,dimension,newrating) { + //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; +} +function deleteRating(actionImg, page, dimension) { + //TODO: GET => DELETE 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) + '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; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |