Index: js/fivestar.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/fivestar/js/Attic/fivestar.js,v
retrieving revision 1.1.2.5
diff -u -r1.1.2.5 fivestar.js
--- js/fivestar.js 26 Apr 2008 18:30:01 -0000 1.1.2.5
+++ js/fivestar.js 24 Sep 2008 01:10:35 -0000
@@ -233,6 +233,7 @@
},
vote: {
id: $("vote id", data).text(),
+ tag: $("vote tag", data).text(),
type: $("vote type", data).text(),
value: $("vote value", data).text()
},
@@ -318,13 +319,14 @@
* voteResult.result.summary.user The textual description of the user's current vote.
* voteResult.vote.id The id of the item the vote was placed on (such as the nid)
* voteResult.vote.type The type of the item the vote was placed on (such as 'node')
+ * voteResult.vote.tag The multi-axis tag the vote was placed on (such as 'vote')
* voteResult.vote.average The average of the new vote saved
* voteResult.display.stars The type of star display we're using. Either 'average', 'user', or 'combo'.
* voteResult.display.text The type of text display we're using. Either 'average', 'user', or 'combo'.
*/
function fivestarDefaultResult(voteResult) {
// Update the summary text.
- $('div.fivestar-summary-'+voteResult.vote.id).html(voteResult.result.summary[voteResult.display.text]);
+ $('div.fivestar-summary-'+voteResult.vote.tag+'-'+voteResult.vote.id).html(voteResult.result.summary[voteResult.display.text]);
// If this is a combo display, update the average star display.
if (voteResult.display.stars == 'combo') {
$('div.fivestar-form-'+voteResult.vote.id).each(function() {
Index: fivestar.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/fivestar/fivestar.module,v
retrieving revision 1.2.2.100
diff -u -r1.2.2.100 fivestar.module
--- fivestar.module 21 Sep 2008 05:07:44 -0000 1.2.2.100
+++ fivestar.module 24 Sep 2008 01:10:34 -0000
@@ -623,13 +623,15 @@
* A content-type to log the vote to. 'node' is the most common.
* @param cid
* A content id to log the vote to. This would be a node ID, a comment ID, etc.
+ * @param tag
+ * Multi-axis tag to allow multiple votes per node. 'vote' is the most common.
* @param value
* A value from 1-100, representing the vote cast for the content.
* @return
* An XML chunk containing the results of the vote, for use by the client-side
* javascript code.
*/
-function fivestar_vote($type, $cid, $value, $tag = 'vote') {
+function fivestar_vote($type, $cid, $tag, $value) {
_fivestar_cast_vote($type, $cid, $value, $tag);
$result = votingapi_recalculate_results($type, $cid);
@@ -670,6 +672,7 @@
$output .= ''. $value .'';
$output .= ''. $type .'';
$output .= ''. $cid .'';
+ $output .= ''. $tag .'';
$output .= '';
drupal_set_header("Content-Type: text/xml");
@@ -825,7 +828,7 @@
case 'below_static':
$stars = variable_get('fivestar_stars_'. $node->type, 5);
$node->content['fivestar_widget'] = array(
- '#value' => fivestar_static('node', $node->nid, $node->type),
+ '#value' => fivestar_static('node', $node->nid, NULL, $node->type),
'#weight' => strpos($position, 'above') === 0 ? -10 : 50,
);
break;
@@ -943,6 +946,7 @@
'text' => variable_get('fivestar_text_'. $node->type, 'dual'),
'content_type' => $content_type,
'content_id' => $content_id,
+ 'tag' => 'vote',
'autosubmit' => TRUE,
'title' => variable_get('fivestar_title_'. $node->type, 1) ? NULL : FALSE,
'feedback_enable' => variable_get('fivestar_feedback_'. $node->type, 1),
@@ -953,12 +957,12 @@
return fivestar_custom_widget($values, $settings);
}
-function fivestar_static($content_type, $content_id, $node_type = NULL) {
+function fivestar_static($content_type, $content_id, $tag = 'vote', $node_type = NULL) {
global $user;
- $current_avg = votingapi_get_voting_result($content_type, $content_id, 'percent', 'vote', 'average');
- $current_count = votingapi_get_voting_result($content_type, $content_id, 'percent', 'vote', 'count');
- $user_vote = $user->uid ? votingapi_get_vote($content_type, $content_id, 'percent', 'vote', $user->uid) : 0;
+ $current_avg = votingapi_get_voting_result($content_type, $content_id, 'percent', $tag, 'average');
+ $current_count = votingapi_get_voting_result($content_type, $content_id, 'percent', $tag, 'count');
+ $user_vote = $user->uid ? votingapi_get_vote($content_type, $content_id, 'percent', $tag, $user->uid) : 0;
if ($content_type == 'node') {
// Content type should always be passed to avoid this node load.
@@ -1058,13 +1062,14 @@
'#vote_count' => $values['count'],
'#vote_average' => $values['average'],
'#auto_submit' => isset($settings['autosubmit']) ? $settings['autosubmit'] : TRUE,
- '#auto_submit_path' => (!isset($settings['autosubmit']) || $settings['autosubmit']) ? 'fivestar/vote/'. $settings['content_type'] .'/'. $settings['content_id'] : NULL,
+ '#auto_submit_path' => (!isset($settings['autosubmit']) || $settings['autosubmit']) ? 'fivestar/vote/'. $settings['content_type'] .'/'. $settings['content_id'] .'/'. $settings['tag'] : NULL,
'#allow_clear' => $settings['allow_clear'],
'#content_id' => isset($settings['content_id']) ? $settings['content_id'] : NULL,
'#required' => isset($settings['required']) ? $settings['required'] : FALSE,
'#feedback_enable' => isset($settings['feedback_enable']) ? $settings['feedback_enable'] : TRUE,
'#labels_enable' => isset($settings['labels_enable']) ? $settings['labels_enable'] : TRUE,
'#labels' => isset($settings['labels']) ? $settings['labels'] : NULL,
+ '#tag' => isset($settings['tag']) ? $settings['tag'] : 'vote',
);
$form['destination'] = array(
@@ -1122,7 +1127,7 @@
$form['vote']['#default_value'] = $values['user'];
$form['vote']['#attributes']['class'] .= ' fivestar-combo-stars';
$form['#attributes']['class'] .= ' fivestar-combo-stars';
- $static_average = theme('fivestar_static', $values['average'], $settings['stars']);
+ $static_average = theme('fivestar_static', $values['average'], $settings['stars'], $settings['tag']);
if ($settings['text'] == 'none' && !$settings['labels_enable'] && !$settings['feedback_enable']) {
$static_description = NULL;
}
@@ -1243,8 +1248,12 @@
unset($form['vote']['#description']);
}
+ $class = 'fivestar-form';
+ $class .= '-'. (isset($form['vote']['#tag']) ? $form['tag']['#tag'] : 'vote');
+ $class .= '-'. (isset($form['content_id']['#value']) ? $form['content_id']['#value'] : 0);
+
$output = '';
- $output .= '
';
+ $output .= '
';
$output .= drupal_render($form);
$output .= '
';
return $output;
@@ -1258,16 +1267,18 @@
* The desired rating to display out of 100 (i.e. 80 is 4 out of 5 stars)
* @param $stars
* The total number of stars this rating is out of
+ * @param $tag
+ * Allows multiple ratings per node
* @return
* A themed HTML string representing the star widget
*
*/
-function theme_fivestar_static($rating, $stars = 5) {
+function theme_fivestar_static($rating, $stars = 5, $tag = 'vote') {
// Add necessary CSS.
fivestar_add_css();
$output = '';
- $output .= '