Umstellung auf eigene Ajax-Verarbeitung über Route "rateit"
This commit is contained in:
		| @@ -21,8 +21,7 @@ | ||||
| 	"require":{ | ||||
| 		"php":">=7.0", | ||||
| 		"contao/core-bundle": "^4.4", | ||||
| 		"cgo-it/contao-xls_export-bundle": "^4.0", | ||||
| 		"richardhj/contao-simple-ajax": "^1.3" | ||||
| 		"cgo-it/contao-xls_export-bundle": "^4.0" | ||||
| 	}, | ||||
| 	"require-dev": { | ||||
|         "contao/manager-plugin": "^2.0" | ||||
|   | ||||
| @@ -6,6 +6,8 @@ use Contao\CoreBundle\ContaoCoreBundle; | ||||
| use Contao\ManagerPlugin\Bundle\Config\BundleConfig; | ||||
| use Contao\ManagerPlugin\Bundle\BundlePluginInterface; | ||||
| use Contao\ManagerPlugin\Bundle\Parser\ParserInterface; | ||||
| use Symfony\Component\Config\Loader\LoaderResolverInterface; | ||||
| use Symfony\Component\HttpKernel\KernelInterface; | ||||
|  | ||||
| /** | ||||
|  * Plugin for the Contao Manager. | ||||
| @@ -25,4 +27,15 @@ class ContaoManagerPlugin implements BundlePluginInterface | ||||
|                 ->setReplace(['rate-it']), | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getRouteCollection(LoaderResolverInterface $resolver, KernelInterface $kernel) | ||||
|     { | ||||
|         return $resolver | ||||
|             ->resolve(__DIR__.'/Resources/config/routing.yml') | ||||
|             ->load(__DIR__.'/Resources/config/routing.yml') | ||||
|             ; | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										34
									
								
								src/Controller/AjaxRateItController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/Controller/AjaxRateItController.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| <?php | ||||
| /** | ||||
|  * Created by PhpStorm. | ||||
|  * User: darko | ||||
|  * Date: 23.10.17 | ||||
|  * Time: 23:55 | ||||
|  */ | ||||
|  | ||||
| namespace cgoIT\rateit\Controller; | ||||
|  | ||||
| use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||||
| use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||||
| use Symfony\Component\HttpFoundation\JsonResponse; | ||||
| use cgoIT\rateit\RateIt; | ||||
|  | ||||
| class AjaxRateItController extends Controller { | ||||
|     /** | ||||
|      * Handles rating requests. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * | ||||
|      * @Route("/rateit", name="ajax_rateit", defaults={"_scope" = "frontend", "_token_check" = false}) | ||||
|      */ | ||||
|     public function ajaxAction() { | ||||
|  | ||||
|         $this->container->get('contao.framework')->initialize(); | ||||
|  | ||||
|         $controller = new RateIt(); | ||||
|  | ||||
|         $response = $controller->doVote(); | ||||
|         $response->send(); | ||||
|     } | ||||
|  | ||||
| } | ||||
							
								
								
									
										3
									
								
								src/Resources/config/routing.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/Resources/config/routing.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| ajax_rateit: | ||||
|     resource: "@CgoITRateItBundle/Controller/" | ||||
|     type: annotation | ||||
| @@ -31,7 +31,6 @@ | ||||
| namespace cgoIT\rateit; | ||||
|  | ||||
| use cgoIT\rateit\RateItFrontend; | ||||
| use SimpleAjax\Event\SimpleAjax; | ||||
| use Symfony\Component\HttpFoundation\JsonResponse; | ||||
|  | ||||
| class RateIt extends \Frontend { | ||||
| @@ -65,127 +64,108 @@ class RateIt extends \Frontend { | ||||
| 	 * @param integer id      - The id of key to register a rating for. | ||||
| 	 * @param integer percent - The rating in percentages. | ||||
| 	 */ | ||||
| 	public function doVote(SimpleAjax $event) { | ||||
| 		$input = $event->getEnvironment()->getInputProvider(); | ||||
| 	public function doVote() { | ||||
| 		$ip = $_SERVER['REMOTE_ADDR']; | ||||
|  | ||||
|     if ((true === $input->hasParameter('do')) | ||||
|         && ('rateit' === $input->getParameter('do')) | ||||
|     ) { | ||||
| 			$ip = $_SERVER['REMOTE_ADDR']; | ||||
| 		$rkey = $this->Input->post('id'); | ||||
| 		$percent = $this->Input->post('vote'); | ||||
| 		$type = $this->Input->post('type'); | ||||
|  | ||||
| 			$rkey = $input->getParameter('id'); | ||||
| 			$percent = $input->getParameter('vote'); | ||||
| 			$type = $input->getParameter('type'); | ||||
|  | ||||
| 			//Make sure that the ratable ID is a number and not something crazy. | ||||
| 			if (strstr($rkey, '|')) { | ||||
| 				$arrRkey = explode('|', $rkey); | ||||
| 				foreach ($arrRkey as $key) { | ||||
| 					if (!is_numeric($key)) { | ||||
| 						$return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']]; | ||||
| 						$response = new JsonResponse($return); | ||||
| 						$event->setResponse($response); | ||||
| 						return $event; | ||||
| 					} | ||||
| 					$id = $rkey; | ||||
| 				} | ||||
| 			} else { | ||||
| 				if (is_numeric($rkey)) { | ||||
| 					$id = $rkey; | ||||
| 				} else { | ||||
| 		//Make sure that the ratable ID is a number and not something crazy. | ||||
| 		if (strstr($rkey, '|')) { | ||||
| 			$arrRkey = explode('|', $rkey); | ||||
| 			foreach ($arrRkey as $key) { | ||||
| 				if (!is_numeric($key)) { | ||||
| 					$return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']]; | ||||
| 					$response = new JsonResponse($return); | ||||
| 					$event->setResponse($response); | ||||
| 					return $event; | ||||
| 					return new JsonResponse($return); | ||||
| 				} | ||||
| 				$id = $rkey; | ||||
| 			} | ||||
|  | ||||
| 			//Make sure the percent is a number and under 100. | ||||
| 			if (is_numeric($percent) && $percent < 101) { | ||||
| 				$rating = $percent; | ||||
| 		} else { | ||||
| 			if (is_numeric($rkey)) { | ||||
| 				$id = $rkey; | ||||
| 			} else { | ||||
| 				$return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']]; | ||||
| 				$response = new JsonResponse($return); | ||||
| 				$event->setResponse($response); | ||||
| 				return $event; | ||||
| 				return new JsonResponse($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')) { | ||||
| 				$return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_type']]; | ||||
| 				$response = new JsonResponse($return); | ||||
| 				$event->setResponse($response); | ||||
| 				return $event; | ||||
| 			} | ||||
|  | ||||
| 			$strHash = sha1(session_id() . (!$GLOBALS['TL_CONFIG']['disableIpCheck'] ? \Environment::get('ip') : '') . 'FE_USER_AUTH'); | ||||
|  | ||||
| 			// FrontendUser auslesen | ||||
| 			if (FE_USER_LOGGED_IN) { | ||||
| 				$objUser = $this->Database->prepare("SELECT pid FROM tl_session WHERE hash=?") | ||||
| 												  ->limit(1) | ||||
| 												  ->execute($strHash); | ||||
|  | ||||
| 				if ($objUser->numRows) { | ||||
| 					$userId = $objUser->pid; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
|  | ||||
| 			$ratableKeyId = $this->Database->prepare('SELECT id FROM tl_rateit_items WHERE rkey=? and typ=?') | ||||
| 								->execute($id, $type) | ||||
| 								->fetchAssoc(); | ||||
|  | ||||
| 			$canVote = false; | ||||
| 			if (isset($userId)) { | ||||
| 				$countUser = $this->Database->prepare('SELECT * FROM tl_rateit_ratings WHERE pid=? and memberid=?') | ||||
| 								->execute($ratableKeyId['id'], $userId) | ||||
| 								->count(); | ||||
| 			} | ||||
| 			$countIp = $this->Database->prepare('SELECT * FROM tl_rateit_ratings WHERE pid=? and ip_address=?') | ||||
| 			            ->execute($ratableKeyId['id'], $ip) | ||||
| 			            ->count(); | ||||
|  | ||||
| 			// Die with an error if the insert fails (duplicate IP or duplicate member id for a vote). | ||||
| 			if ((!$this->allowDuplicatesForMembers && (isset($countUser) ? $countUser == 0 : false)) || ($this->allowDuplicatesForMembers && isset($userId))) { | ||||
| 				// Insert the data. | ||||
| 				$arrSet = array('pid' => $ratableKeyId['id'], | ||||
| 							'tstamp' => time(), | ||||
| 							'ip_address' => $ip, | ||||
| 						   'memberid' => isset($userId) ? $userId : null, | ||||
| 							'rating' => $rating, | ||||
| 							'createdat'=> time() | ||||
| 					); | ||||
| 				$this->Database->prepare('INSERT INTO tl_rateit_ratings %s') | ||||
| 							   ->set($arrSet) | ||||
| 							   ->execute(); | ||||
| 	      } elseif (!isset($countUser) && ((!$this->allowDuplicates && $countIp == 0) || $this->allowDuplicates)) { | ||||
| 				// Insert the data. | ||||
| 				$arrSet = array('pid' => $ratableKeyId['id'], | ||||
| 							'tstamp' => time(), | ||||
| 							'ip_address' => $ip, | ||||
| 					    'memberid' => isset($userId) ? $userId : null, | ||||
| 							'rating' => $rating, | ||||
| 							'createdat'=> time() | ||||
| 					); | ||||
| 				$this->Database->prepare('INSERT INTO tl_rateit_ratings %s') | ||||
| 							   ->set($arrSet) | ||||
| 							   ->execute(); | ||||
| 	      } else { | ||||
| 					$return = [$GLOBALS['TL_LANG']['rateit']['error']['duplicate_vote']]; | ||||
| 					$response = new JsonResponse($return); | ||||
| 					$event->setResponse($response); | ||||
| 					return $event; | ||||
| 	      } | ||||
|  | ||||
| 			$rating = $this->rateItFrontend->loadRating($id, $type); | ||||
|  | ||||
| 			$return = [$this->rateItFrontend->getStarMessage($rating)]; | ||||
| 			$response = new JsonResponse($return); | ||||
| 			$event->setResponse($response); | ||||
| 			return $event; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 		//Make sure the percent is a number and under 100. | ||||
| 		if (is_numeric($percent) && $percent < 101) { | ||||
| 			$rating = $percent; | ||||
| 		} else { | ||||
| 			$return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_rating']]; | ||||
| 			return new JsonResponse($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')) { | ||||
| 			$return = [$GLOBALS['TL_LANG']['rateit']['error']['invalid_type']]; | ||||
| 			return new JsonResponse($return); | ||||
| 		} | ||||
|  | ||||
| 		$strHash = sha1(session_id() . (!$GLOBALS['TL_CONFIG']['disableIpCheck'] ? \Environment::get('ip') : '') . 'FE_USER_AUTH'); | ||||
|  | ||||
| 		// FrontendUser auslesen | ||||
| 		if (FE_USER_LOGGED_IN) { | ||||
| 			$objUser = $this->Database->prepare("SELECT pid FROM tl_session WHERE hash=?") | ||||
| 											  ->limit(1) | ||||
| 											  ->execute($strHash); | ||||
|  | ||||
| 			if ($objUser->numRows) { | ||||
| 				$userId = $objUser->pid; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
|  | ||||
| 		$ratableKeyId = $this->Database->prepare('SELECT id FROM tl_rateit_items WHERE rkey=? and typ=?') | ||||
| 							->execute($id, $type) | ||||
| 							->fetchAssoc(); | ||||
|  | ||||
| 		$canVote = false; | ||||
| 		if (isset($userId)) { | ||||
| 			$countUser = $this->Database->prepare('SELECT * FROM tl_rateit_ratings WHERE pid=? and memberid=?') | ||||
| 							->execute($ratableKeyId['id'], $userId) | ||||
| 							->count(); | ||||
| 		} | ||||
| 		$countIp = $this->Database->prepare('SELECT * FROM tl_rateit_ratings WHERE pid=? and ip_address=?') | ||||
| 		            ->execute($ratableKeyId['id'], $ip) | ||||
| 		            ->count(); | ||||
|  | ||||
| 		// Die with an error if the insert fails (duplicate IP or duplicate member id for a vote). | ||||
| 		if ((!$this->allowDuplicatesForMembers && (isset($countUser) ? $countUser == 0 : false)) || ($this->allowDuplicatesForMembers && isset($userId))) { | ||||
| 			// Insert the data. | ||||
| 			$arrSet = array('pid' => $ratableKeyId['id'], | ||||
| 						'tstamp' => time(), | ||||
| 						'ip_address' => $ip, | ||||
| 					   'memberid' => isset($userId) ? $userId : null, | ||||
| 						'rating' => $rating, | ||||
| 						'createdat'=> time() | ||||
| 				); | ||||
| 			$this->Database->prepare('INSERT INTO tl_rateit_ratings %s') | ||||
| 						   ->set($arrSet) | ||||
| 						   ->execute(); | ||||
|     } elseif (!isset($countUser) && ((!$this->allowDuplicates && $countIp == 0) || $this->allowDuplicates)) { | ||||
| 			// Insert the data. | ||||
| 			$arrSet = array('pid' => $ratableKeyId['id'], | ||||
| 						'tstamp' => time(), | ||||
| 						'ip_address' => $ip, | ||||
| 				    'memberid' => isset($userId) ? $userId : null, | ||||
| 						'rating' => $rating, | ||||
| 						'createdat'=> time() | ||||
| 				); | ||||
| 			$this->Database->prepare('INSERT INTO tl_rateit_ratings %s') | ||||
| 						   ->set($arrSet) | ||||
| 						   ->execute(); | ||||
|     } else { | ||||
| 				$return = [$GLOBALS['TL_LANG']['rateit']['error']['duplicate_vote']]; | ||||
| 				return new JsonResponse($return); | ||||
|     } | ||||
|  | ||||
| 		$rating = $this->rateItFrontend->loadRating($id, $type); | ||||
|  | ||||
| 		$return = [$this->rateItFrontend->getStarMessage($rating)]; | ||||
| 		return new JsonResponse($return); | ||||
| 	} | ||||
| } | ||||
| ?> | ||||
|   | ||||
| @@ -1,18 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| use cgoIT\rateit\RateIt; | ||||
| use SimpleAjax\Event\SimpleAjax; | ||||
|  | ||||
| if (class_exists(SimpleAjax::class)) { | ||||
|     return array | ||||
|     ( | ||||
|         SimpleAjax::NAME => array( | ||||
|             array( | ||||
|                 array(new RateIt(), 'doVote'), | ||||
|                 RateIt::PRIORITY | ||||
|             ) | ||||
|         ) | ||||
|     ); | ||||
| } | ||||
|  | ||||
| return array(); | ||||
| @@ -271,7 +271,7 @@ function doRateIt() { | ||||
| 		}); | ||||
|  | ||||
| 		window.addEvent('domready', function(e) { | ||||
| 			RateItRating = new RateItRatings({url:'SimpleAjaxFrontend.php?do=rateit'}); | ||||
| 			RateItRating = new RateItRatings({url:'rateit'}); | ||||
| 		}); | ||||
| 	} else if (window.jQuery) { | ||||
| 		// the rateit plugin as an Object | ||||
| @@ -579,7 +579,7 @@ function doRateIt() { | ||||
| 				  async: false, | ||||
| 				  cache: true | ||||
| 			}); | ||||
| 			RateItRating = Object.create(RateItRatings).initialize({url:'SimpleAjaxFrontend.php?do=rateit'}); | ||||
| 			RateItRating = Object.create(RateItRatings).initialize({url:'rateit'}); | ||||
| 		}); | ||||
|  | ||||
| 		var jEscape = function(jquery) { | ||||
|   | ||||
| @@ -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;ri<arrRatings.length;ri++){if(arrRatings[ri].rateItID==mbid){arrRatings[ri].description=text;break;}}} | ||||
| if(typeof($(mbid))!='undefined'){$(mbid).getElement('.ratingText').set('text',text);}}else{if(typeof(arrRatings)=='object'){for(var ri=0;ri<arrRatings.length;ri++){if(arrRatings[ri].rateItID==el.id){arrRatings[ri].description=text;break;}}}}};} | ||||
| el.showError=function(error){el.textEl.addClass('ratingError');el.textEl.set('text',error);(function(){el.textEl.set('text',el.textEl.oldTxt);el.textEl.removeClass('ratingError');}).delay(2000);};}else{el.getElement('.ratingText').inject(el,'before');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){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') | ||||
| 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:'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<arrRatings.length;ri++){if(arrRatings[ri].rateItID==mbid){arrRatings[ri].rated=true;arrRatings[ri].width=el.data('hover').css('width');break;}}} | ||||
| @@ -20,5 +20,5 @@ el.data('selected').css('width',el.data('newFill'));},mouseCrap:function(event){ | ||||
| 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){var stars=id.match(/(\d*\|?\d*)-(page|article|ce|module|news|faq|galpic|news4ward)-(\d*\.?\d+)_(\d*\.?\d+)$/);if(stars!=null){var score=parseFloat(stars[3]);var scale=parseFloat(stars[4]);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).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();var reg_imgFile=/url\s*\(["']?(.*)["']?\)/i;var string=this.getBackgroundImagePath(el);string=string.match(reg_imgFile)[1];string=string.replace('\"','');jQuery('<img/>').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<arrRatings.length;ri++){if(arrRatings[ri].rateItID==mbid){arrRatings[ri].description=text;break;}}} | ||||
| if(typeof(jQuery('#'+jEscape(mbid)))!='undefined'){jQuery('#'+jEscape(mbid)).find('.ratingText').text(text);}}else{if(typeof(arrRatings)=='object'){for(var ri=0;ri<arrRatings.length;ri++){if(arrRatings[ri].rateItID==el.data('id')){arrRatings[ri].description=text;break;}}}}},showError:function(el,error){el.data('textEl').addClass('ratingError');el.data('textEl').text(error);setTimeout(function(){el.data('textEl').text(el.data('oldTxt'));el.data('textEl').removeClass('ratingError');},2000);}};})(jQuery);jQuery(document).ready(function(){jQuery.ajax({type:"GET",url:"bundles/cgoitrateit/js/jquery-ui-effects.custom.min.js",dataType:"script",async:false,cache:true});jQuery.ajax({type:"GET",url:"bundles/cgoitrateit/js/helper.min.js",dataType:"script",async:false,cache:true});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"),"\\~");jquery=jquery.replace(new RegExp("\\[","g"),"\\[");jquery=jquery.replace(new RegExp("\\]","g"),"\\]");jquery=jquery.replace(new RegExp("\\|","g"),"\\|");jquery=jquery.replace(new RegExp("\\.","g"),"\\.");jquery=jquery.replace(new RegExp("#","g"),"\\#");return jquery;};}} | ||||
| onReadyRateIt(function(){doRateIt();}); | ||||
| if(typeof(jQuery('#'+jEscape(mbid)))!='undefined'){jQuery('#'+jEscape(mbid)).find('.ratingText').text(text);}}else{if(typeof(arrRatings)=='object'){for(var ri=0;ri<arrRatings.length;ri++){if(arrRatings[ri].rateItID==el.data('id')){arrRatings[ri].description=text;break;}}}}},showError:function(el,error){el.data('textEl').addClass('ratingError');el.data('textEl').text(error);setTimeout(function(){el.data('textEl').text(el.data('oldTxt'));el.data('textEl').removeClass('ratingError');},2000);}};})(jQuery);jQuery(document).ready(function(){jQuery.ajax({type:"GET",url:"bundles/cgoitrateit/js/jquery-ui-effects.custom.min.js",dataType:"script",async:false,cache:true});jQuery.ajax({type:"GET",url:"bundles/cgoitrateit/js/helper.min.js",dataType:"script",async:false,cache:true});RateItRating=Object.create(RateItRatings).initialize({url:'rateit'});});var jEscape=function(jquery){jquery=jquery.replace(new RegExp("\\$","g"),"\\$");jquery=jquery.replace(new RegExp("\~","g"),"\\~");jquery=jquery.replace(new RegExp("\\[","g"),"\\[");jquery=jquery.replace(new RegExp("\\]","g"),"\\]");jquery=jquery.replace(new RegExp("\\|","g"),"\\|");jquery=jquery.replace(new RegExp("\\.","g"),"\\.");jquery=jquery.replace(new RegExp("#","g"),"\\#");return jquery;};}} | ||||
| onReadyRateIt(function(){doRateIt();}); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user