Comment masquer un div après un test

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Comment masquer un div après un test

    Boujour 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>
    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.

  • #2
    Re : Comment masquer un div après un test

    Pourquoi ne pas simplement ajouter un test php dans vos div countdown et msgerreor ?
    Code:
    <div class="countdown" <?php if(isset($_GET['key'])) {?> style="display:none" <?php }?> >
    D'autre part, il ne vous manquerait pas un = dans le test
    Code:
     if($PointURLkey=substr(md5($articleId),0,8))
    ?

    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire

    Annonce

    Réduire
    Aucune annonce pour le moment.

    Partenaire de l'association

    Réduire

    Hébergeur Web PlanetHoster
    Travaille ...
    X