jQuery(document).ready(function($){
// @todo: use $.on in future versions (needs jQuery 1.7+)
$(document).delegate('.ratings:not(.rated) a', 'click', function(event){
event.preventDefault();
var control = $(this).parents('.ratings');
$.ajax({
url: (typeof atom_config !== 'undefined') ? atom_config.blog_url : post_ratings.blog_url,
type: 'GET',
dataType: 'json',
context: this,
data: ({
post_id: control.data('post'),
rate: $(this).parents('li').index(),
}),
beforeSend: function(){
control.removeClass('error').addClass('loading');
},
error: function(){
control.addClass('error');
},
success: function(response){
// we have an error, display it
if(response.error){
control.addClass('error').find('.meta').html(response.error);
$('a', control).remove();
return;
}
// no error, replace the control html with the new one
control.replaceWith($(response.html));
// other plugins can hook into this event.
// (the response object contains more info than we used here)
control.trigger('rated_post', response);
}
});
return true;
});
});