diff --git a/src/Resources/contao/classes/RateIt.php b/src/Resources/contao/classes/RateIt.php index 934ed34..0abe01e 100644 --- a/src/Resources/contao/classes/RateIt.php +++ b/src/Resources/contao/classes/RateIt.php @@ -31,8 +31,8 @@ namespace cgoIT\rateit; use cgoIT\rateit\RateItFrontend; - -define(RETURN_AJAX_HEADER, 'Content-Type: text/html'); +use SimpleAjax\Event\SimpleAjax; +use Symfony\Component\HttpFoundation\JsonResponse; class RateIt extends \Frontend { @@ -65,7 +65,7 @@ class RateIt extends \Frontend { * @param integer id - The id of key to register a rating for. * @param integer percent - The rating in percentages. */ - function doVote() { + public function doVote(SimpleAjax $event) { if ($this->Input->get('do') == 'rateit') { $ip = $_SERVER['REMOTE_ADDR']; @@ -78,9 +78,10 @@ class RateIt extends \Frontend { $arrRkey = explode('|', $rkey); foreach ($arrRkey as $key) { if (!is_numeric($key)) { - header(RETURN_AJAX_HEADER); - echo $GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']; - exit; + $return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']]; + $response = new JsonResponse($return); + $event->setResponse($response); + return; } $id = $rkey; } @@ -88,9 +89,10 @@ class RateIt extends \Frontend { if (is_numeric($rkey)) { $id = $rkey; } else { - header(RETURN_AJAX_HEADER); - echo $GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']; - exit; + $return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']]; + $response = new JsonResponse($return); + $event->setResponse($response); + return; } } @@ -98,16 +100,18 @@ class RateIt extends \Frontend { if (is_numeric($percent) && $percent < 101) { $rating = $percent; } else { - header(RETURN_AJAX_HEADER); - echo $GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']; - exit; + $return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']]; + $response = new JsonResponse($return); + $event->setResponse($response); + return; } //Make sure that the ratable type is 'page' or 'ce' or 'module' if (!($type === 'page' || $type === 'article' || $type === 'ce' || $type === 'module' || $type === 'news' || $type === 'faq' || $type === 'galpic' || $type === 'news4ward')) { - header(RETURN_AJAX_HEADER); - echo $GLOBALS['TL_LANG']['rateit']['error']['invalid_type']; - exit; + $return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_type']]; + $response = new JsonResponse($return); + $event->setResponse($response); + return; } $strHash = sha1(session_id() . (!$GLOBALS['TL_CONFIG']['disableIpCheck'] ? \Environment::get('ip') : '') . 'FE_USER_AUTH'); @@ -156,7 +160,7 @@ class RateIt extends \Frontend { $arrSet = array('pid' => $ratableKeyId['id'], 'tstamp' => time(), 'ip_address' => $ip, - 'memberid' => isset($userId) ? $userId : null, + 'memberid' => isset($userId) ? $userId : null, 'rating' => $rating, 'createdat'=> time() ); @@ -171,9 +175,9 @@ class RateIt extends \Frontend { $rating = $this->rateItFrontend->loadRating($id, $type); - header(RETURN_AJAX_HEADER); - echo $this->rateItFrontend->getStarMessage($rating); - exit; + $return = [$this->rateItFrontend->getStarMessage($rating)]; + $response = new JsonResponse($return); + $event->setResponse($response); } } diff --git a/src/Resources/contao/config/config.php b/src/Resources/contao/config/config.php index f8344fb..2dabacc 100644 --- a/src/Resources/contao/config/config.php +++ b/src/Resources/contao/config/config.php @@ -34,7 +34,6 @@ use cgoIT\rateit\RateItBackend; * Hooks */ $GLOBALS['TL_HOOKS']['generatePage'][] = array('cgoIT\\rateit\\RateItPage', 'generatePage'); -$GLOBALS['TL_HOOKS']['simpleAjax'][] = array('cgoIT\\rateit\\RateIt', 'doVote'); $GLOBALS['TL_HOOKS']['parseArticles'][] = array('cgoIT\\rateit\\RateItNews', 'parseArticle'); $GLOBALS['TL_HOOKS']['getContentElement'][] = array('cgoIT\\rateit\\RateItFaq', 'getContentElementRateIt'); $GLOBALS['TL_HOOKS']['parseTemplate'][] = array('cgoIT\\rateit\\RateItArticle', 'parseTemplateRateIt'); @@ -45,7 +44,7 @@ $GLOBALS['TL_HOOKS']['parseTemplate'][] = array('cgoIT\\rateit\\RateItA array_insert($GLOBALS['BE_MOD']['content'], count($GLOBALS['BE_MOD']['content']), array('rateit' => array ( 'callback' => 'cgoIT\\rateit\\RateItBackendModule', - 'icon' => rateit\RateItBackend::image('icon'), + 'icon' => rateit\RateItBackend::image('icon'), 'stylesheet' => rateit\RateItBackend::css('backend'), 'javascript' => rateit\RateItBackend::js('RateItBackend') ) diff --git a/src/Resources/contao/config/event_listeners.php b/src/Resources/contao/config/event_listeners.php new file mode 100644 index 0000000..0b6d088 --- /dev/null +++ b/src/Resources/contao/config/event_listeners.php @@ -0,0 +1,9 @@ + array( + array(new RateIt(), 'doVote') + ), +); diff --git a/src/Resources/public/js/rateit-uncompressed.js b/src/Resources/public/js/rateit-uncompressed.js index 9db4672..22db8a3 100644 --- a/src/Resources/public/js/rateit-uncompressed.js +++ b/src/Resources/public/js/rateit-uncompressed.js @@ -3,24 +3,24 @@ var RateItRating; function doRateIt() { if (window.MooTools) { var RateItRatings = new Class({ - + Implements: Options, - + options: { step: 0.1, /* Schrittweite */ readonly: false, /* Bewertungen zulassen */ resetable: false /* Nicht zurücksetzbar */ }, - + initialize: function(options) { - + this.setOptions(options); - + $$('.rateItRating').each(function(el) { this.initMe(el); }.bind(this)); }, - + initMe: function(el) { //Does this if the browser is NOT IE6. IE6 users don't deserve fancy ratings. >:( if (!Browser.ie || Browser.version > 6) { @@ -31,7 +31,7 @@ function doRateIt() { el.selected = el.wrapper.getElement('.rateItRating-selected'); el.hover = el.wrapper.getElement('.rateItRating-hover'); el.widthFx = new Fx.Tween(el.selected, {property:'width', link:'chain'}); - + var backgroundImage = this.getBackgroundImage(el.wrapper); this.options.starwidth = backgroundImage.width; this.options.starheight = backgroundImage.height / 3; // da immer drei Sterne "übereinander" gebraucht werden @@ -41,77 +41,77 @@ function doRateIt() { if (this.options.starheight === undefined || this.options.starheight < 16) { this.options.starheight = 16; } - + this.setBackgroundPosition(el.selected, -1 * this.options.starheight); this.setBackgroundPosition(el.hover, -1 * 2 * this.options.starheight); - + el.starPercent = this.getStarPercent(el.id); el.ratableId = this.getRatableId(el.id); el.ratableType = this.getRatableType(el.id); - + // Maximalwert (=Anzahl Sterne) ermitteln this.options.max = this.getRatableMaxValue(el.id); - + // Höhe für selected und hover einstellen el.selected.setStyle('height', this.options.starheight); el.hover.setStyle('height', this.options.starheight); - + // Wrapper-Größe so anpassen, dass alle Sterne angezeigt werden el.wrapper.setStyle('width', this.options.starwidth * this.options.max); el.wrapper.setStyle('height', this.options.starheight); - + // Breite des rateItRating-selected divs setzen this.fillVote(el.starPercent, el); - + // Breite f�r rateItRating-selected div ermitteln el.currentFill = this.getFillPercent(el.starPercent); - + if (el.rateable) { - el.mouseCrap = function(e) { + el.mouseCrap = function(e) { var fill = e.event.layerX; if (!fill) { fill = e.event.offsetX; } var fillPercent = this.getVotePercent(fill); var nextStep = Math.ceil((fillPercent / 100) * this.options.max); - + var w = nextStep * this.options.starwidth; if (el.hover.getStyle('width').toInt() != w) { el.selected.setStyle('display', 'none'); el.hover.setStyle('width', Math.min(w, this.options.starwidth * this.options.max)); el.hover.setStyle('display', 'block'); } - + var newFill = nextStep / this.options.max * 100; this.fillVote(newFill, el); }.bind(this); - - el.wrapper.addEvent('mouseenter', function(e) { + + el.wrapper.addEvent('mouseenter', function(e) { el.wrapper.addEvent('mousemove', el.mouseCrap); }); - + el.wrapper.addEvent('mouseleave', function(e) { el.removeEvent('mousemove'); - + el.hover.setStyle('width', 0); el.hover.setStyle('display', 'none'); el.selected.setStyle('display', 'block'); - + el.widthFx.start(el.currentFill); }); - + el.wrapper.addEvent('click', function(e) { el.currentFill = el.newFill; el.wrapper.removeEvents(); el.textEl.oldTxt = el.textEl.get('text'); el.textEl.set('html', '          '); el.textEl.addClass('loading'); - + // falls aus LightBox, entsprechendes ursprüngliches Rating aktualisieren if (typeof($('.mbrateItRating')) != 'undefined' && el.id.indexOf('mb') == 0) { var mbid = el.id; mbid = mbid.replace('mb', ''); - + if (typeof(arrRatings) == 'object') { for (var ri = 0; ri < arrRatings.length; ri++) { if (arrRatings[ri].rateItID == mbid) { @@ -121,7 +121,7 @@ function doRateIt() { } } } - + if (typeof($(mbid)) != 'undefined') { var origWrapper = $(mbid).getElement('.wrapper'); origWrapper.removeEvents(); @@ -140,28 +140,28 @@ function doRateIt() { } } } - + var votePercent = this.getVotePercent(el.newFill); if (this.options.url != null) { new Request({ url:this.options.url, onComplete:el.updateText }) - .post({vote:votePercent,id:el.ratableId,type:el.ratableType}); + .post({vote:votePercent,id:el.ratableId,type:el.ratableType}); } }.bind(this)); - + el.updateText = function(text) { error = text.split('ERROR:')[1]; el.textEl.removeClass('loading'); if (error) { el.showError(error); return false; } el.textEl.set('text', text); - + // falls aus LightBox, entsprechendes ursprüngliches Rating aktualisieren if (typeof($('.mbrateItRating')) != 'undefined' && el.id.indexOf('mb') == 0) { var mbid = el.getAttribute('id'); mbid = mbid.replace('mb', ''); - + if (typeof(arrRatings) == 'object') { for (var ri = 0; ri < arrRatings.length; ri++) { if (arrRatings[ri].rateItID == mbid) { @@ -170,7 +170,7 @@ function doRateIt() { } } } - + if (typeof($(mbid)) != 'undefined') { $(mbid).getElement('.ratingText').set('text', text); } @@ -186,7 +186,7 @@ function doRateIt() { } }; } - + el.showError = function(error) { el.textEl.addClass('ratingError'); el.textEl.set('text', error); @@ -202,15 +202,15 @@ function doRateIt() { el.remove(); } }, - + fillVote: function(percent, el) { el.newFill = this.getFillPercent(percent); if (this.getVotePercent(el.newFill) > 100) { el.newFill = this.getFillPercent(100); } el.selected.setStyle('width', el.newFill); }, - + getStarPercent: function(id) { - /* Format = anyStringHere--_(scale); + /* Format = anyStringHere--_(scale); * Example: RateItRatings-5-3_5 //Primary key id = 5, 3/5 stars. */ var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/); if (stars != null) { @@ -222,42 +222,42 @@ function doRateIt() { return 0; } }, - + // Ermittelt die Breite des rateItRating-selected divs getFillPercent: function (starPercent) { return (starPercent / 100) * (this.options.starwidth * this.options.max); }, - + // Aus der Breite des rateItRating-selected divs die Prozentzahl ermitteln getVotePercent: function(actVote) { var starsWidth = this.options.starwidth * this.options.max; var percent = (actVote / starsWidth * 100).round(2); return percent; }, - + getRatableId: function(id) { var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/); return stars != null ? stars[1] : ''; }, - + getRatableType: function(id) { var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/); return stars != null ? stars[2] : ''; }, - + getRatableMaxValue: function(id) { var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/); return stars != null ? stars[4].toInt() : 0; }, - + setBackgroundPosition: function(el, pos) { el.setStyle('background-position', '0% ' + pos + 'px'); }, - + getBackgroundImagePath: function(el) { return el.getStyle('background-image'); }, - + getBackgroundImage: function(el) { var reg_imgFile = /url\s*\(["']?(.*)["']?\)/i; var dummy = document.createElement('img'); @@ -267,40 +267,40 @@ function doRateIt() { dummy.src = string; return dummy; } - + }); - + window.addEvent('domready', function(e) { - RateItRating = new RateItRatings({url:'bundles/cgoitrateit/public/php/rateit-ajax.php?do=rateit'}); + RateItRating = new RateItRatings({url:'SimpleAjaxFrontend.php?do=rateit'}); }); } else if (window.jQuery) { // the rateit plugin as an Object (function() { - + RateItRatings = { - + options: { step: 0.1, /* Schrittweite */ readonly: false, /* Bewertungen zulassen */ resetable: false /* Nicht zurücksetzbar */ }, - - // this should be called first before doing anything else + + // this should be called first before doing anything else initialize: function(options) { if (typeof options == 'object' && typeof options['url'] != 'undefined') this.options.url = options['url']; - + var self = this; jQuery('.rateItRating').each(function(i, element) { self.initMe(element); }); - + return this; }, - + initMe: function(element) { var self = this; - + //Does this if the browser is NOT IE6. IE6 users don't deserve fancy ratings. >:( if (!Browser.Engine.trident4) { var el = jQuery(element); @@ -311,7 +311,7 @@ function doRateIt() { // el.data('offset', getPosition(element).x); el.data('selected', el.find('.rateItRating-selected')); el.data('hover', el.find('.rateItRating-hover')); - + jQuery.when(self.getBackgroundImage(el.data('wrapper'))).done(function(backgroundImageSize) { self.options.starwidth = backgroundImageSize[0]; self.options.starheight = backgroundImageSize[1] / 3; // da immer drei Sterne "übereinander" gebraucht werden @@ -322,57 +322,57 @@ function doRateIt() { if (self.options.starheight === undefined || self.options.starheight < 16) { self.options.starheight = 16; } - + self.setBackgroundPosition(el.data('selected'), -1 * self.options.starheight); self.setBackgroundPosition(el.data('hover'), -1 * 2 * self.options.starheight); - + el.data('starPercent', self.getStarPercent(el.data('id'))); el.data('ratableId', self.getRatableId(el.data('id'))); el.data('ratableType', self.getRatableType(el.data('id'))); - + // Maximalwert (=Anzahl Sterne) ermitteln self.options.max = self.getRatableMaxValue(el.data('id')); - + // Höhe für selected und hover einstellen el.data('selected').css('height', self.options.starheight); el.data('hover').css('height', self.options.starheight); - + // Wrapper-Größe so anpassen, dass alle Sterne angezeigt werden el.data('wrapper').css('width', self.options.starwidth * self.options.max); el.data('wrapper').css('height', self.options.starheight); - + // Breite des rateItRating-selected divs setzen self.fillVote(el.data('starPercent'), el); - + // Breite für rateItRating-selected div ermitteln el.data('currentFill', self.getFillPercent(el.data('starPercent'))); - + if (el.data('rateable')) { el.data('wrapper').mouseenter(function(event) { el.data('selected').hide(500, "easeInOutQuad"); el.data('hover').show(); el.data('wrapper').mousemove({'el': el, 'self': self}, self.mouseCrap); }); - + el.data('wrapper').mouseleave(function(event) { el.data('wrapper').unbind('mousemove'); el.data('hover').hide(); el.data('selected').show(); el.data('selected').animate({width: el.data('currentFill')}, 500); }); - + el.data('wrapper').click(function(event) { el.data('currentFill', el.data('newFill')); el.data('wrapper').unbind(); el.data('oldTxt', el.data('textEl').text()); el.data('textEl').html('          '); el.data('textEl').addClass('loading'); - + // falls aus LightBox, entsprechendes ursprüngliches Rating aktualisieren if (typeof(jQuery('.mbrateItRating')) != 'undefined' && el.data('id').indexOf('mb') == 0) { var mbid = el.data('id'); mbid = mbid.replace('mb', ''); - + if (typeof(arrRatings) == 'object') { for (var ri = 0; ri < arrRatings.length; ri++) { if (arrRatings[ri].rateItID == mbid) { @@ -382,7 +382,7 @@ function doRateIt() { } } } - + if (typeof(jQuery('#' + jEscape(mbid))) != 'undefined') { var origWrapper = jQuery('#' + jEscape(mbid)).find('.wrapper'); origWrapper.unbind(); @@ -401,7 +401,7 @@ function doRateIt() { } } } - + var votePercent = self.getVotePercent(el.data('newFill')); if (self.options.url != null) { jQuery.ajax({ @@ -414,43 +414,43 @@ function doRateIt() { } }); } - + el.data('updateText', self.updateText); } else { alert("Ich bin ein IE6"); } }, - + fillVote: function(percent, el) { el.data('newFill', this.getFillPercent(percent)); if (this.getVotePercent(el.data('newFill')) > 100) { el.data('newFill', this.getFillPercent(100)); } el.data('selected').css('width', el.data('newFill')); }, - + mouseCrap: function(event) { var el = event.data['el']; var self = event.data['self']; - + var fill = event.originalEvent.layerX; if (!fill) { fill = event.originalEvent.offsetX; } var fillPercent = self.getVotePercent(fill); var nextStep = Math.ceil((fillPercent / 100) * self.options.max); - + var w = nextStep * self.options.starwidth; if (parseInt(el.data('hover').css('width')) != w) { el.data('selected').css('display', 'none'); el.data('hover').css('width', Math.min(w, self.options.starwidth * self.options.max)); el.data('hover').css('display', 'block'); } - + var newFill = nextStep / self.options.max * 100; self.fillVote(newFill, el); }, - + getStarPercent: function(id) { - /* Format = anyStringHere--_(scale); + /* Format = anyStringHere--_(scale); * Example: RateItRatings-5-3_5 //Primary key id = 5, 3/5 stars. */ var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/); if (stars != null) { @@ -462,42 +462,42 @@ function doRateIt() { return 0; } }, - + // Ermittelt die Breite des rateItRating-selected divs getFillPercent: function (starPercent) { return (starPercent / 100) * (this.options.starwidth * this.options.max); }, - + // Aus der Breite des rateItRating-selected divs die Prozentzahl ermitteln getVotePercent: function(actVote) { var starsWidth = this.options.starwidth * this.options.max; var percent = (actVote / starsWidth * 100).toFixed(2); return percent; }, - + getRatableId: function(id) { var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/); return stars != null ? stars[1] : ''; }, - + getRatableType: function(id) { var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/); return stars != null ? stars[2] : ''; }, - + getRatableMaxValue: function(id) { var stars = id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/); return stars != null ? parseInt(stars[4]) : 0; }, - + setBackgroundPosition: function(el, pos) { el.css('background-position', '0% ' + pos + 'px'); }, - + getBackgroundImagePath: function(el) { return el.css("background-image"); }, - + getBackgroundImage: function(el) { var dfd = jQuery.Deferred(); var backgroundImageSize = new Array(); @@ -515,13 +515,13 @@ function doRateIt() { }); return dfd.promise(); }, - + updateText: function(el, text) { error = text.split('ERROR:')[1]; el.data('textEl').removeClass('loading'); if (error) { this.RateItRating.showError(el, error); return false; } el.data('textEl').text(text); - + // falls aus LightBox, entsprechendes ursprüngliches Rating aktualisieren if (typeof(jQuery('.mbrateItRating')) != 'undefined' && el.data('id').indexOf('mb') == 0) { var mbid = el.attr('id'); @@ -535,7 +535,7 @@ function doRateIt() { } } } - + if (typeof(jQuery('#' + jEscape(mbid))) != 'undefined') { jQuery('#' + jEscape(mbid)).find('.ratingText').text(text); } @@ -550,7 +550,7 @@ function doRateIt() { } } }, - + showError: function(el, error) { el.data('textEl').addClass('ratingError'); //oldTxt = el.data('textEl').text(); @@ -561,9 +561,9 @@ function doRateIt() { }, 2000); } }; - + })(jQuery); - + jQuery(document).ready(function() { jQuery.ajax({ type: "GET", @@ -579,9 +579,9 @@ function doRateIt() { async: false, cache: true }); - RateItRating = Object.create(RateItRatings).initialize({url:'bundles/cgoitrateit/public/php/rateit-ajax.php?do=rateit'}); + RateItRating = Object.create(RateItRatings).initialize({url:'SimpleAjaxFrontend.php?do=rateit'}); }); - + var jEscape = function(jquery) { jquery = jquery.replace(new RegExp("\\$", "g"), "\\$"); jquery = jquery.replace(new RegExp("\~", "g"), "\\~"); @@ -595,6 +595,6 @@ function doRateIt() { } } -onReadyRateIt(function() { +onReadyRateIt(function() { doRateIt(); -}); \ No newline at end of file +}); diff --git a/src/Resources/public/js/rateit.js b/src/Resources/public/js/rateit.js index 91dbf85..c1d6469 100644 --- a/src/Resources/public/js/rateit.js +++ b/src/Resources/public/js/rateit.js @@ -9,7 +9,7 @@ var votePercent=this.getVotePercent(el.newFill);if(this.options.url!=null){new R el.textEl.set('text',text);if(typeof($('.mbrateItRating'))!='undefined'&&el.id.indexOf('mb')==0){var mbid=el.getAttribute('id');mbid=mbid.replace('mb','');if(typeof(arrRatings)=='object'){for(var ri=0;ri100){el.newFill=this.getFillPercent(100);} -el.selected.setStyle('width',el.newFill);},getStarPercent:function(id){var stars=id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);if(stars!=null){var score=stars[3].toFloat();var scale=stars[4].toFloat();var percent=(score/scale)*100;return percent;}else{return 0;}},getFillPercent:function(starPercent){return(starPercent/100)*(this.options.starwidth*this.options.max);},getVotePercent:function(actVote){var starsWidth=this.options.starwidth*this.options.max;var percent=(actVote/starsWidth*100).round(2);return percent;},getRatableId:function(id){var stars=id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);return stars!=null?stars[1]:'';},getRatableType:function(id){var stars=id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);return stars!=null?stars[2]:'';},getRatableMaxValue:function(id){var stars=id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);return stars!=null?stars[4].toInt():0;},setBackgroundPosition:function(el,pos){el.setStyle('background-position','0% '+pos+'px');},getBackgroundImagePath:function(el){return el.getStyle('background-image');},getBackgroundImage:function(el){var reg_imgFile=/url\s*\(["']?(.*)["']?\)/i;var dummy=document.createElement('img');var string=this.getBackgroundImagePath(el);string=string.match(reg_imgFile)[1];string=string.replace('\"','');dummy.src=string;return dummy;}});window.addEvent('domready',function(e){RateItRating=new RateItRatings({url:'bundles/cgoitrateit/public/php/rateit-ajax.php?do=rateit'});});}else if(window.jQuery){(function(){RateItRatings={options:{step:0.1,readonly:false,resetable:false},initialize:function(options){if(typeof options=='object'&&typeof options['url']!='undefined') +el.selected.setStyle('width',el.newFill);},getStarPercent:function(id){var stars=id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);if(stars!=null){var score=stars[3].toFloat();var scale=stars[4].toFloat();var percent=(score/scale)*100;return percent;}else{return 0;}},getFillPercent:function(starPercent){return(starPercent/100)*(this.options.starwidth*this.options.max);},getVotePercent:function(actVote){var starsWidth=this.options.starwidth*this.options.max;var percent=(actVote/starsWidth*100).round(2);return percent;},getRatableId:function(id){var stars=id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);return stars!=null?stars[1]:'';},getRatableType:function(id){var stars=id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);return stars!=null?stars[2]:'';},getRatableMaxValue:function(id){var stars=id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);return stars!=null?stars[4].toInt():0;},setBackgroundPosition:function(el,pos){el.setStyle('background-position','0% '+pos+'px');},getBackgroundImagePath:function(el){return el.getStyle('background-image');},getBackgroundImage:function(el){var reg_imgFile=/url\s*\(["']?(.*)["']?\)/i;var dummy=document.createElement('img');var string=this.getBackgroundImagePath(el);string=string.match(reg_imgFile)[1];string=string.replace('\"','');dummy.src=string;return dummy;}});window.addEvent('domready',function(e){RateItRating=new RateItRatings({url:'SimpleAjaxFrontend.php?do=rateit'});});}else if(window.jQuery){(function(){RateItRatings={options:{step:0.1,readonly:false,resetable:false},initialize:function(options){if(typeof options=='object'&&typeof options['url']!='undefined') this.options.url=options['url'];var self=this;jQuery('.rateItRating').each(function(i,element){self.initMe(element);});return this;},initMe:function(element){var self=this;if(!Browser.Engine.trident4){var el=jQuery(element);el.data('id',el.attr('id'));el.data('rateable',el.attr('rel')=='not-rateable'?false:true);el.data('wrapper',el.find('.wrapper'));el.data('textEl',el.find('.ratingText'));el.data('selected',el.find('.rateItRating-selected'));el.data('hover',el.find('.rateItRating-hover'));jQuery.when(self.getBackgroundImage(el.data('wrapper'))).done(function(backgroundImageSize){self.options.starwidth=backgroundImageSize[0];self.options.starheight=backgroundImageSize[1]/3;});if(self.options.starwidth===undefined||self.options.starwidth<16){self.options.starwidth=16;} if(self.options.starheight===undefined||self.options.starheight<16){self.options.starheight=16;} self.setBackgroundPosition(el.data('selected'),-1*self.options.starheight);self.setBackgroundPosition(el.data('hover'),-1*2*self.options.starheight);el.data('starPercent',self.getStarPercent(el.data('id')));el.data('ratableId',self.getRatableId(el.data('id')));el.data('ratableType',self.getRatableType(el.data('id')));self.options.max=self.getRatableMaxValue(el.data('id'));el.data('selected').css('height',self.options.starheight);el.data('hover').css('height',self.options.starheight);el.data('wrapper').css('width',self.options.starwidth*self.options.max);el.data('wrapper').css('height',self.options.starheight);self.fillVote(el.data('starPercent'),el);el.data('currentFill',self.getFillPercent(el.data('starPercent')));if(el.data('rateable')){el.data('wrapper').mouseenter(function(event){el.data('selected').hide(500,"easeInOutQuad");el.data('hover').show();el.data('wrapper').mousemove({'el':el,'self':self},self.mouseCrap);});el.data('wrapper').mouseleave(function(event){el.data('wrapper').unbind('mousemove');el.data('hover').hide();el.data('selected').show();el.data('selected').animate({width:el.data('currentFill')},500);});el.data('wrapper').click(function(event){el.data('currentFill',el.data('newFill'));el.data('wrapper').unbind();el.data('oldTxt',el.data('textEl').text());el.data('textEl').html('          ');el.data('textEl').addClass('loading');if(typeof(jQuery('.mbrateItRating'))!='undefined'&&el.data('id').indexOf('mb')==0){var mbid=el.data('id');mbid=mbid.replace('mb','');if(typeof(arrRatings)=='object'){for(var ri=0;ri').attr('src',string).load(function(){backgroundImageSize.push(this.width);backgroundImageSize.push(this.height);dfd.resolve(backgroundImageSize);});return dfd.promise();},updateText:function(el,text){error=text.split('ERROR:')[1];el.data('textEl').removeClass('loading');if(error){this.RateItRating.showError(el,error);return false;} el.data('textEl').text(text);if(typeof(jQuery('.mbrateItRating'))!='undefined'&&el.data('id').indexOf('mb')==0){var mbid=el.attr('id');mbid=mbid.replace('mb','');if(typeof(arrRatings)=='object'){for(var ri=0;ri