1 |
85ad3d82
|
Assos Assos
|
|
2 |
|
|
|
3 |
|
|
|
4 |
|
|
|
5 |
|
|
|
6 |
|
|
|
7 |
|
|
(function($){
|
8 |
|
|
|
9 |
|
|
Drupal.behaviors.fivestar = {
|
10 |
|
|
attach: function (context) {
|
11 |
|
|
$('div.fivestar-form-item').once('fivestar', function() {
|
12 |
|
|
var $this = $(this);
|
13 |
|
|
var $container = $('<div class="fivestar-widget clearfix"></div>');
|
14 |
|
|
var $select = $('select', $this);
|
15 |
|
|
|
16 |
|
|
|
17 |
|
|
var $cancel = $('option[value="0"]', $this);
|
18 |
|
|
if ($cancel.length) {
|
19 |
|
|
$('<div class="cancel"><a href="#0" title="' + $cancel.text() + '">' + $cancel.text() + '</a></div>')
|
20 |
|
|
.appendTo($container);
|
21 |
|
|
}
|
22 |
|
|
|
23 |
|
|
|
24 |
|
|
var $options = $('option', $this).not('[value="-"], [value="0"]');
|
25 |
|
|
var index = -1;
|
26 |
|
|
$options.each(function(i, element) {
|
27 |
|
|
var classes = 'star-' + (i+1);
|
28 |
|
|
classes += (i + 1) % 2 == 0 ? ' even' : ' odd';
|
29 |
|
|
classes += i == 0 ? ' star-first' : '';
|
30 |
|
|
classes += i + 1 == $options.length ? ' star-last' : '';
|
31 |
|
|
$('<div class="star"><a href="#' + element.value + '" title="' + element.text + '">' + element.text + '</a></div>')
|
32 |
|
|
.addClass(classes)
|
33 |
|
|
.appendTo($container);
|
34 |
|
|
if (element.value == $select.val()) {
|
35 |
|
|
index = i + 1;
|
36 |
|
|
}
|
37 |
|
|
});
|
38 |
|
|
|
39 |
|
|
$container.find('.star:lt(' + index + ')').addClass('on');
|
40 |
|
|
$container.addClass('fivestar-widget-' + ($options.length));
|
41 |
|
|
$container.find('a')
|
42 |
|
|
.bind('click', $this, Drupal.behaviors.fivestar.rate)
|
43 |
|
|
.bind('mouseover', $this, Drupal.behaviors.fivestar.hover);
|
44 |
|
|
|
45 |
|
|
$container.bind('mouseover mouseout', $this, Drupal.behaviors.fivestar.hover);
|
46 |
|
|
|
47 |
|
|
|
48 |
|
|
$select.after($container).css('display', 'none');
|
49 |
|
|
});
|
50 |
|
|
},
|
51 |
|
|
rate: function(event) {
|
52 |
|
|
var $this = $(this);
|
53 |
|
|
var $widget = event.data;
|
54 |
|
|
var value = this.hash.replace('#', '');
|
55 |
|
|
$('select', $widget).val(value).change();
|
56 |
|
|
var $this_star = $this.closest('.star');
|
57 |
|
|
$this_star.prevAll('.star').andSelf().addClass('on');
|
58 |
|
|
$this_star.nextAll('.star').removeClass('on');
|
59 |
|
|
event.preventDefault();
|
60 |
|
|
},
|
61 |
|
|
hover: function(event) {
|
62 |
|
|
var $this = $(this);
|
63 |
|
|
var $widget = event.data;
|
64 |
|
|
var $target = $(event.target);
|
65 |
|
|
var $stars = $('.star', $this);
|
66 |
|
|
|
67 |
|
|
if (event.type == 'mouseover') {
|
68 |
|
|
var index = $stars.index($target.parent());
|
69 |
|
|
$stars.each(function(i, element) {
|
70 |
|
|
if (i <= index) {
|
71 |
|
|
$(element).addClass('hover');
|
72 |
|
|
} else {
|
73 |
|
|
$(element).removeClass('hover');
|
74 |
|
|
}
|
75 |
|
|
});
|
76 |
|
|
} else {
|
77 |
|
|
$stars.removeClass('hover');
|
78 |
|
|
}
|
79 |
|
|
}
|
80 |
|
|
};
|
81 |
|
|
|
82 |
|
|
})(jQuery); |