feature 2384: improve average rating calculation (final)

git-svn-id: http://piwigo.org/svn/trunk@11839 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rvelices
2011-07-26 19:04:50 +00:00
parent 630c4bb85e
commit c0bb4dfb43
8 changed files with 33 additions and 25 deletions
+7
View File
@@ -191,6 +191,12 @@ SELECT COUNT(*)
;'; ;';
list($nb_comments) = pwg_db_fetch_row(pwg_query($query)); list($nb_comments) = pwg_db_fetch_row(pwg_query($query));
$query = '
SELECT COUNT(*)
FROM '.RATE_TABLE.'
;';
list($nb_rates) = pwg_db_fetch_row(pwg_query($query));
$template->assign( $template->assign(
array( array(
'PHPWG_URL' => PHPWG_URL, 'PHPWG_URL' => PHPWG_URL,
@@ -213,6 +219,7 @@ $template->assign(
'DB_USERS' => l10n_dec('%d user', '%d users', $nb_users), 'DB_USERS' => l10n_dec('%d user', '%d users', $nb_users),
'DB_GROUPS' => l10n_dec('%d group', '%d groups', $nb_groups), 'DB_GROUPS' => l10n_dec('%d group', '%d groups', $nb_groups),
'DB_COMMENTS' => l10n_dec('%d comment', '%d comments', $nb_comments), 'DB_COMMENTS' => l10n_dec('%d comment', '%d comments', $nb_comments),
'DB_RATES' => sprintf('%d rates', $nb_rates),
'U_CHECK_UPGRADE' => PHPWG_ROOT_PATH.'admin.php?action=check_upgrade', 'U_CHECK_UPGRADE' => PHPWG_ROOT_PATH.'admin.php?action=check_upgrade',
'U_PHPINFO' => PHPWG_ROOT_PATH.'admin.php?action=phpinfo', 'U_PHPINFO' => PHPWG_ROOT_PATH.'admin.php?action=phpinfo',
'PHP_DATATIME' => $php_current_timestamp, 'PHP_DATATIME' => $php_current_timestamp,
+1
View File
@@ -78,6 +78,7 @@ jQuery().ready(function(){
(<a href="{$unvalidated.URL}">{$unvalidated.INFO}</a>) (<a href="{$unvalidated.URL}">{$unvalidated.INFO}</a>)
{/if} {/if}
</li> </li>
<li>{$DB_RATES}</li>
</ul> </ul>
</dd> </dd>
</dl> </dl>
+1 -1
View File
@@ -31,7 +31,7 @@
$page['show_comments'] = false; $page['show_comments'] = false;
foreach ($related_categories as $category) foreach ($related_categories as $category)
{ {
if ($category['commentable'] == 'true') if ($category['commentable'])
{ {
$page['show_comments'] = true; $page['show_comments'] = true;
break; break;
+3 -1
View File
@@ -160,6 +160,7 @@ $lang['Authorized'] = "Authorized";
$lang['Automatic correction'] = "Automatic correction"; $lang['Automatic correction'] = "Automatic correction";
$lang['automatic order'] = 'automatic order'; $lang['automatic order'] = 'automatic order';
$lang['Available only with HTML format'] = "Available only with HTML format"; $lang['Available only with HTML format'] = "Available only with HTML format";
$lang['Average rate'] = "Average rate";
$lang['average time'] = "average time"; $lang['average time'] = "average time";
$lang['Batch management'] = "Batch management"; $lang['Batch management'] = "Batch management";
$lang['Batch Manager'] = 'Batch Manager'; $lang['Batch Manager'] = 'Batch Manager';
@@ -547,7 +548,8 @@ $lang['Quick Local Synchronization'] = "Quick Local Synchronization";
$lang['Random photo'] = "Random photo"; $lang['Random photo'] = "Random photo";
$lang['randomly represented'] = "random representative"; $lang['randomly represented'] = "random representative";
$lang['ranks'] = "ranks"; $lang['ranks'] = "ranks";
$lang['Rate date'] = "Rating date"; $lang['Rate'] = "Rate";
$lang['Rate date'] = "Rate date";
$lang['Rating by guests'] = "Rating by guests"; $lang['Rating by guests'] = "Rating by guests";
$lang['Rating'] = "Rating"; $lang['Rating'] = "Rating";
$lang['read local listing.xml and update'] = "read local listing.xml and update"; $lang['read local listing.xml and update'] = "read local listing.xml and update";
+6 -7
View File
@@ -35,29 +35,28 @@ $lang_info['code'] = "en";
$lang_info['zero_plural'] = "1"; $lang_info['zero_plural'] = "1";
$lang['%.2f (rated %d times)'] = "%.2f (rated %d times)";
$lang['%d Kb'] = "%d Kb";
$lang['%d album updated'] = "%d album updated"; $lang['%d album updated'] = "%d album updated";
$lang['%d albums updated'] = "%d albums updated"; $lang['%d albums updated'] = "%d albums updated";
$lang['%d comment to validate'] = "%d comment to validate"; $lang['%d comment to validate'] = "%d comment to validate";
$lang['%d comments to validate'] = "%d comments to validate";
$lang['%d new comment'] = "%d new comment";
$lang['%d new comments'] = "%d new comments";
$lang['%d comment'] = "%d comment"; $lang['%d comment'] = "%d comment";
$lang['%d comments to validate'] = "%d comments to validate";
$lang['%d comments'] = "%d comments"; $lang['%d comments'] = "%d comments";
$lang['%d hit'] = "%d hit"; $lang['%d hit'] = "%d hit";
$lang['%d hits'] = "%d hits"; $lang['%d hits'] = "%d hits";
$lang['%d Kb'] = "%d Kb";
$lang['%d new comment'] = "%d new comment";
$lang['%d new comments'] = "%d new comments";
$lang['%d new photo'] = "%d new photo"; $lang['%d new photo'] = "%d new photo";
$lang['%d new photos'] = "%d new photos"; $lang['%d new photos'] = "%d new photos";
$lang['%d new user'] = "%d new user"; $lang['%d new user'] = "%d new user";
$lang['%d new users'] = "%d new users"; $lang['%d new users'] = "%d new users";
$lang['%d rates'] = "%d rates";
$lang['About'] = "About"; $lang['About'] = "About";
$lang['All tags'] = "All tags"; $lang['All tags'] = "All tags";
$lang['Any tag'] = "Any tag"; $lang['Any tag'] = "Any tag";
$lang['At least one listed rule must be satisfied.'] = "At least one listed criterion must be satisfied."; $lang['At least one listed rule must be satisfied.'] = "At least one listed criterion must be satisfied.";
$lang['At least one tag must match'] = "At least one tag must match"; $lang['At least one tag must match'] = "At least one tag must match";
$lang['Author'] = "Author"; $lang['Author'] = "Author";
$lang['Average rate'] = "Average rate";
$lang['Albums'] = "Albums"; $lang['Albums'] = "Albums";
$lang['Album'] = "Album"; $lang['Album'] = "Album";
$lang['Close this window'] = "Close this window"; $lang['Close this window'] = "Close this window";
@@ -104,7 +103,7 @@ $lang['Posted on'] = "Posted on";
$lang['Profile'] = "Profile"; $lang['Profile'] = "Profile";
$lang['Quick connect'] = "Quick connect"; $lang['Quick connect'] = "Quick connect";
$lang['RSS feed'] = "RSS feed"; $lang['RSS feed'] = "RSS feed";
$lang['Rate'] = "Rate"; $lang['Rating score'] = "Rating score";
$lang['Register'] = "Register"; $lang['Register'] = "Register";
$lang['Registration'] = "Registration"; $lang['Registration'] = "Registration";
$lang['Related tags'] = "Related tags"; $lang['Related tags'] = "Related tags";
+2 -9
View File
@@ -313,22 +313,15 @@ UPDATE '.USER_CACHE_CATEGORIES_TABLE.'
case 'rate' : case 'rate' :
{ {
include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php'); include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php');
rate_picture( rate_picture($page['image_id'], $_POST['rate']);
$page['image_id'],
isset($_POST['rate']) ? $_POST['rate'] : $_GET['rate']
);
redirect($url_self); redirect($url_self);
} }
case 'edit_comment' : case 'edit_comment' :
{ {
check_pwg_token(); check_pwg_token();
include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php'); include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php');
check_input_parameter('comment_to_edit', $_GET, false, PATTERN_ID); check_input_parameter('comment_to_edit', $_GET, false, PATTERN_ID);
$author_id = get_comment_author_id($_GET['comment_to_edit']); $author_id = get_comment_author_id($_GET['comment_to_edit']);
if (can_manage_comment('edit', $author_id)) if (can_manage_comment('edit', $author_id))
{ {
if (!empty($_POST['content'])) if (!empty($_POST['content']))
@@ -441,7 +434,7 @@ $result = pwg_query($query);
$related_categories = array(); $related_categories = array();
while ($row = pwg_db_fetch_assoc($result)) while ($row = pwg_db_fetch_assoc($result))
{ {
$row['commentable'] = boolean_to_string($row['commentable']); $row['commentable'] = get_boolean($row['commentable']);
array_push($related_categories, $row); array_push($related_categories, $row);
} }
usort($related_categories, 'global_rank_compare'); usort($related_categories, 'global_rank_compare');
+1
View File
@@ -69,6 +69,7 @@ function updateRating(e)
onSuccess: function(result) { onSuccess: function(result) {
gUserRating = rateButton.initialRateValue; gUserRating = rateButton.initialRateValue;
for (var i=0; i<gRatingButtons.length; i++) gRatingButtons[i].disabled=false; for (var i=0; i<gRatingButtons.length; i++) gRatingButtons[i].disabled=false;
if (gRatingOptions.onSuccess) gRatingOptions.onSuccess(result);
if (gRatingOptions.updateRateElement) gRatingOptions.updateRateElement.innerHTML = gRatingOptions.updateRateText; if (gRatingOptions.updateRateElement) gRatingOptions.updateRateElement.innerHTML = gRatingOptions.updateRateText;
if (gRatingOptions.ratingSummaryElement) if (gRatingOptions.ratingSummaryElement)
{ {
+12 -7
View File
@@ -196,13 +196,12 @@ y.callService(
{if $display_info.average_rate and isset($rate_summary)} {if $display_info.average_rate and isset($rate_summary)}
<tr id="Average"> <tr id="Average">
<td class="label">{'Rating'|@translate}</td> <td class="label">{'Rating score'|@translate}</td>
<td class="value" id="ratingSummary"> <td class="value">
{if $rate_summary.count} {if $rate_summary.count}
{assign var='rate_text' value='%.2f (rated %d times)'|@translate} <span id="ratingScore">{$rate_summary.score}</span> <span id="ratingCount">({assign var='rate_text' value='%d rates'|@translate}{$pwg->sprintf($rate_text, $rate_summary.count)})</span>
{$pwg->sprintf($rate_text, $rate_summary.score, $rate_summary.count, $rate_summary.average)}
{else} {else}
{'no rate'|@translate} <span id="ratingScore">{'no rate'|@translate}</span> <span id="ratingCount"></span>
{/if} {/if}
</td> </td>
</tr> </tr>
@@ -228,8 +227,14 @@ y.callService(
{footer_script} {footer_script}
var _pwgRatingAutoQueue = _pwgRatingAutoQueue||[]; var _pwgRatingAutoQueue = _pwgRatingAutoQueue||[];
_pwgRatingAutoQueue.push( {ldelim}rootUrl: '{$ROOT_URL}', image_id: {$current.id}, _pwgRatingAutoQueue.push( {ldelim}rootUrl: '{$ROOT_URL}', image_id: {$current.id},
updateRateText: "{'Update your rating'|@translate|@escape:'javascript'}", updateRateElement: document.getElementById("updateRate"), onSuccess : function(rating) {ldelim}
ratingSummaryText: "{'%.2f (rated %d times)'|@translate|@escape:'javascript'}", ratingSummaryElement: document.getElementById("ratingSummary"){rdelim} ); var e = document.getElementById("updateRate");
if (e) e.innerHTML = "{'Update your rating'|@translate|@escape:'javascript'}";
e = document.getElementById("ratingScore");
if (e) e.innerHTML = rating.score;
e = document.getElementById("ratingCount");
if (e) e.innerHTML = "({'%d rates'|@translate|@escape:'javascript'})".replace( "%d", rating.count);
{rdelim}{rdelim} );
{/footer_script} {/footer_script}
{/strip} {/strip}
</div> </div>