Boujour chers Développeurs,
Voici mon code:
Le principe de ce code consiste à :
- tester dans l'url de l'article en cours, l'exixtance d'une clé (key)
- si la clé n'existe pas alors on affiche un compteur qui affiche un bouton au bout d'un certain temps(60s);
sinon on masque le competur
- après un click sur le bouton affiché par le compteur on recupère l'ID de l'article
- ensuite on code cet ID en MD5 et on ajoute dans l'URL comme etant la clé(key)
- On effectue une verification de la clé; si elle est identique du a l'ID codé en MD5 alors on masque le compteur, sinon on effiche un message d'erreur.
voila en resumé ce que j'essaie de faire. Mon souci c'est je n'arrive pas à masquer le compteur.
C'est pour quoi j'oriente vers vous pour une precieuse aide.
Merci d'avance très chers développeurs.
Voici mon code:
Code HTML:
<script type="text/javascript"> var url= document.location; <?php // Recupérer l'ID de l'article en cours $articleId = (JRequest::getVar('option')==='com_content' && JRequest::getVar('view')==='article')? JRequest::getInt('id') : 0; // si on est sur un article alors calculer la clef //if( isset($_GET['Itemid'] ) ) { $PointURLkey=substr(md5($_GET['Itemid']),0,8); } if(isset($articleId)) { $PointURLkey=substr(md5($articleId),0,8); } else { $PointURLkey=""; } ?> function redirectionJavascript(){ // Clé a ajouter dans l'url de l'article document.location.href=url+'&key=<?php echo $PointURLkey; ?> '; } var tick = function ($el, duration) { 'use strict'; $el.attr('data-duration', duration); $el.find('.duration').html(duration); if (duration > 60) { $el.addClass('full'); } if (duration < -60) { $el.addClass('full negative'); } }; (function ($) { 'use strict'; $.fn.timer = function (options) { var settings = $.extend({ duration: 60, unit: 's' }, options); var updateEverySecond = 1000; var updateEveryMinute = 60 * 1000; return this.each(function () { var duration = settings.duration; var unit = settings.unit; var updateInterval; if (unit === 'm') { updateInterval = updateEveryMinute; } else if (unit === 's') { updateInterval = updateEverySecond; } else if (unit === 'h') { // if provided e.g. 2 hours convert it to 120 minutes unit = 'm'; duration = duration * 60; updateInterval = updateEveryMinute; } else { throw 'The provided unit "' + unit + '" is unsupported! Supported units are "s", "m" and "h".'; } var $$ = $(this); $$.html('<div class="timer-grpe"><div class="timer-bg"><span class="duration"></span><small class="unit"></small></div>' + '<div class="timer-half-container right"><div class="timer-half right"></div></div>' + '<div class="timer-half-container left"><div class="timer-half left"></div></div></div>'); $$.addClass('timer'); $$.find('.unit').html(unit); // start ticking tick($$, duration); /* global setInterval */ setInterval(function () { tick($$, duration); if(duration===60) { $$.html('<input name="bouton_points" type="button" value="<?php echo JText::_('COM_CONTENT_BUTTON_TIMER'); ?>" onclick="redirectionJavascript()">'); } else{ duration++; } }, updateInterval); }); }; }(jQuery)); </script> <script type="text/javascript"> <?php //$msgError = 'Vous avez deja visité cette page'; $articleId = (JRequest::getVar('option')==='com_content' && JRequest::getVar('view')==='article')? JRequest::getInt('id') : 0; // vérification si les clefs sont égaux // ceci pour eviter qu'on tape une clé quelonque pour avoir les points if(isset($_GET['key'])) { $Verificationkey=substr(md5($articleId),0,8); if($Verificationkey==$_GET['key']) { ?> /* on arrête le compteur en ne faisant rien / plus de point a prendre */ //echo $msgError; document.getElementById('timer-7').style.display = 'none'; <?php } else { /*Afficher une message d'erreur, url non valide mais pas obligatoire */ } } else { // sinon afficher le compteur if($PointURLkey=substr(md5($articleId),0,8)) // Activer uniquement si Itemid existe {?> $(document).ready(function () { $('#timer-7').timer({duration:0, unit: 's'}); }) <?php } } ?> </script> <div class="countdown"> <div id="timer-7" class="timer"></div></div> <div class="msgError"><?php echo $msgError; ?></div>
- tester dans l'url de l'article en cours, l'exixtance d'une clé (key)
- si la clé n'existe pas alors on affiche un compteur qui affiche un bouton au bout d'un certain temps(60s);
sinon on masque le competur
- après un click sur le bouton affiché par le compteur on recupère l'ID de l'article
- ensuite on code cet ID en MD5 et on ajoute dans l'URL comme etant la clé(key)
- On effectue une verification de la clé; si elle est identique du a l'ID codé en MD5 alors on masque le compteur, sinon on effiche un message d'erreur.
voila en resumé ce que j'essaie de faire. Mon souci c'est je n'arrive pas à masquer le compteur.
C'est pour quoi j'oriente vers vous pour une precieuse aide.
Merci d'avance très chers développeurs.
Commentaire