Fivestar и оценка по нескольким осям

Главные вкладки

Аватар пользователя iflamberg iflamberg 3 июня 2010 в 17:38

Есть галерея, которую должны оценивать судьи и пользователи(оценка "зрительские симпатии"). Соответсвенно, по смыслу, это два блока fivestar, что не предусмотрено этим модулем (буквально вчера, правда, появился dev-билд который умеет). Нашел на этом же форуме вот такой сниплет:

<?php
      $nid 
arg(1);
      
$output '';
      
$tags = array(
        
'Rate' => t('Rate'),
        
'Symphaty' => t('Symphaty'),
      );
        
      foreach (
$tags as $tag => $title) {
        
$votes fivestar_get_votes('node'$nid$tag);
     
        
$values = array(
          
'user' => isset($votes['user']['value']) ? $votes['user']['value'] : NULL,
          
'average' => isset($votes['average']['value']) ? $votes['average']['value'] : NULL,
          
'count' => isset($votes['count']['value']) ? $votes['count']['value'] : NULL,
        );
    
      if (
user_access('rate content')) {
        
$settings = array(
          
'stars' => 10,
          
'allow_clear' => TRUE,
          
'style' => 'average',
          
'text' => 'dual',
          
'content_type' => 'node',
          
'content_id' => $nid,
          
'tag' => $tag,
          
'autosubmit' => TRUE,
          
'title' => $title,
          
'feedback_enable' => TRUE,
          
'labels_enable' => TRUE,
          
'labels' => array(t('Poor'), t('Okay'), t('Good'), t('Great'), t('Awesome')),
        );
     
        
$output .= drupal_get_form('fivestar_custom_widget'$values$settings);
    } else {
        
$output .= '<div class="fivestar-average-rating" style="font-weight:bold;">' $title ':</div>';
        
$output .= theme_fivestar_static($values['average'], 10$tag);
        
$output .= '<div class="description">';
        
$output .= t('Average rating: %average (%count votes)', array('%average' => $values['average'] / 10'%count' => $values['count'] ? $values['count'] : 0));
        
$output .='</div>';
      }
    }
    print 
$output;
?>

Мне, правда, нужно, чтобы судья не имел права оченивать зрительской симпатией, а обычный юзер соответсвенно, судейской оценкой, но я это решил созданием минимодуля, который добавляет два новых permission и правкой сниплета.
А теперь еще хочется для разных осей - разные картинки (ну, типа, для судейской оценки - звёздочки, а для зрительских симпатий - сердечки). Но функция fivestar_custom_widget - не имеет такой опции, насколько я читаю её код.
Теперь я думаю, как лучше? Хакать код модуля или поступить по индусски? По идусски - это взять css-код виджета, исправить там код класса .star на .star1, захардкодить его в , в $output сделать замену .star на .star1. Это сильно пахнет "говнокодом"?

Комментарии