PHP Classes

File: Script/static/js/jquery/rating.js

Recommend this page to a friend!
  Classes of Pierre-Henry Soria   H2OGame PHP Game Engine   Script/static/js/jquery/rating.js   Download  
File: Script/static/js/jquery/rating.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: H2OGame PHP Game Engine
Application to manage an online games platform
Author: By
Last change:
Date: 2 years ago
Size: 7,908 bytes
 

Contents

Class file image Download
/************************************************************************ ************************************************************************* pHS pH Star @Name : jRating - jQuery Plugin (modified in pHRating by PH) @Revison : 2.2 @Date : 26/01/2011 @Author: ALPIXEL - (www.myjqueryplugins.com - www.alpixel.fr) @License : Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php @modified : This code has been modified by PH, pH7 Developers Team. ************************************************************************** *************************************************************************/ (function($) { $.fn.pHRating = function(op) { var defaults = { /** String vars **/ url : H2OUrl.base + '?m=game&c=ratingajax&a=show', bigStarUrl : H2OUrl.base + 'static/img/icon/m_star.png', // URL of the icon m_star.png smallStarUrl : H2OUrl.base + 'static/img/icon/s_star.png', // URL of the icon s_star.png type : 'big', // can be set to 'small' or 'big' /** Boolean vars **/ step:false, // if true, mouseover binded star by star, isDisabled:false, showRateInfo: true, /** Integer vars **/ length:5, // number of star to display decimalLength : 0, // number of decimals.. Max 3, but you can complete the function 'getNote' rateMax : 20, // maximal rate - integer from 0 to 9999 (or more) rateInfosX : -45, // relative position in X axis of the info box when mouseover rateInfosY : 5, // relative position in Y axis of the info box when mouseover /** Functions **/ onSuccess : null, onError : null }; if(this.length>0) return this.each(function() { var opts = $.extend(defaults, op), newWidth = 0, starWidth = 0, starHeight = 0, bgUrl = ''; if($(this).hasClass('jDisabled') || opts.isDisabled) var jDisabled = true; else var jDisabled = false; getStarWidth(); $(this).height(starHeight); var average = parseFloat($(this).attr('id').split('_')[0]), id = parseInt($(this).attr('id').split('_')[1]), // get the id of the box for database widthRatingContainer = starWidth*opts.length, // Width of the Container widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container quotient = $('<div>', { 'class' : 'pHRatingColor', css:{ width:widthColor } }).appendTo($(this)), average = $('<div>', { 'class' : 'pHRatingAverage', css:{ width:0, top:- starHeight } }).appendTo($(this)), pHStar = $('<div>', { 'class' : 'pHStar', css:{ width:widthRatingContainer, height:starHeight, top:- (starHeight*2), background: 'url('+bgUrl+') repeat-x' } }).appendTo($(this)); $(this).css({width: widthRatingContainer,overflow:'hidden',zIndex:1,position:'relative'}); if(!jDisabled) $(this).bind({ mouseenter : function(e){ var realOffsetLeft = findRealLeft(this); var relativeX = e.pageX - realOffsetLeft; if (opts.showRateInfo) var tooltip = $('<p>',{ 'class' : 'pHRatingInfo', html : getNote(relativeX)+' <span class="maxRate">/ '+opts.rateMax+'</span>', css : { top: (e.pageY + opts.rateInfosY), left: (e.pageX + opts.rateInfosX) } }).appendTo('body').show(); }, mouseover : function(e){ $(this).css('cursor','pointer'); }, mouseout : function(){ $(this).css('cursor','default'); average.width(0); }, mousemove : function(e){ var realOffsetLeft = findRealLeft(this); var relativeX = e.pageX - realOffsetLeft; if(opts.step) newWidth = Math.floor(relativeX/starWidth)*starWidth + starWidth; else newWidth = relativeX; average.width(newWidth); if (opts.showRateInfo) $("p.pHRatingInfo") .css({ left: (e.pageX + opts.rateInfosX) }) .html(getNote(newWidth) +' <span class="maxRate">/ '+opts.rateMax+'</span>'); }, mouseleave : function(){ $("p.pHRatingInfo").remove(); }, click : function(e){ $(this).unbind().css('cursor','default').addClass('jDisabled'); if (opts.showRateInfo) $("p.pHRatingInfo").fadeOut('fast',function(){$(this).remove();}); e.preventDefault(); var rate = getNote(newWidth); average.width(newWidth); $.post(opts.url,{ id : id, score : rate, action : 'rating' }, function(data) { var txt_class = '.pHS' + id + '_txt'; if(data.status == 1) $(txt_class).html(data.txt).show('slow'); else $(txt_class).addClass('alert-message error').html(data.txt).delay(3000).fadeOut(); }, 'json' ); } }); function getNote(relativeX) { var noteBrut = parseFloat((relativeX*100/widthRatingContainer)*opts.rateMax/100); switch(opts.decimalLength) { case 1 : var note = Math.round(noteBrut*10)/10; break; case 2 : var note = Math.round(noteBrut*100)/100; break; case 3 : var note = Math.round(noteBrut*1000)/1000; break; default : var note = Math.round(noteBrut*1)/1; } return note; }; function getStarWidth(){ switch(opts.type) { case 'small' : starWidth = 12; // width of the picture small.png starHeight = 10; // height of the picture small.png bgUrl = opts.smallStarUrl; break; default : starWidth = 23; // width of the picture m_star.png starHeight = 20; // height of the picture m_star.png bgUrl = opts.bigStarUrl; } }; function findRealLeft(obj) { if( !obj ) return 0; return obj.offsetLeft + findRealLeft( obj.offsetParent ); }; }); } })(jQuery);