Créer une condition selon le mode édition

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

  • Créer une condition selon le mode édition

    Bonjour,

    Je débute et je voudrai créer une condition par rapport au mode édition, afin que la DIV incluant l'éditeur (component) puisse être pleine page (sans la colonne de droite) lorsque que l'on travaille sur un article.

    Ma page comporte les DIV et les CSS suivants:
    Code HTML:
    <div id="main">
    	<div id="main_left">
    		<jdoc:include type="message" />
    		<jdoc:include type="component" />
    	</div>
    	<div id="main_right">
    		<jdoc:include type="modules" name="position-2" style="none" />
    		<jdoc:include type="modules" name="position-3" style="none" />
    		<jdoc:include type="modules" name="position-4" style="none" />
    	</div>
    	<div id="main_bottom"></div>
    </div>
    
    
    #main {
    	width: 900px;
    	margin: 0 auto;
    }
    #main_left {
    	float: left;
    	width: 600px;
    }
    #main_right {
    	float: left;
    	width: 300px;
    }
    #main_bottom {
    	margin: 0 auto;
    	clear:both;
    }
    J'ai essayé d'insérer le code suivant dans le head de la page :
    Code PHP:
    <?php
    if (!$app->input->getCmd('task''') == 'edit')
    {
        
    $mainclass "editing";
    }
    else
    {
        
    $mainclass "noediting";
    }
    ?>
    puis de modifier la page et fichier CSS tel quel:
    Code HTML:
    <div id="main">
    	<div id="main_left" class="<?php echo $mainclass ?>">
    		<jdoc:include type="message" />
    		<jdoc:include type="component" />
    	</div>
    	<div id="main_right" class="<?php echo $mainclass ?>">
    		<jdoc:include type="modules" name="position-2" style="none" />
    		<jdoc:include type="modules" name="position-3" style="none" />
    		<jdoc:include type="modules" name="position-4" style="none" />
    	</div>
    	<div id="main_bottom"></div>
    </div>
    
    
    #main {
    	width: 900px;
    	margin: 0 auto;
    }
    #main_left.noediting{
    	float: left;
    	width: 600px;
    }
    #main_right.noediting{
    	float: left;
    	width: 300px;
    }
    #main_left.editing{
    	width: 100%;
    }
    #main_right.editing{
    	width: 0px;
    	height: 0px;
    }
    #main_bottom {
    	margin: 0 auto;
    	clear:both;
    }
    Mais je n'arrive pas à le faire fonctionner.
    Pourriez-vous m'aider?
    Auriez-vous une meilleure méthode ou un meilleur code à me conseiller?

    Merci
    Nico

  • #2
    Re : Créer une condition selon le mode édition

    Bonjour,

    Tout bêtement par exemple, quelque chose du genre

    Code PHP:
    if (!$app->input->getCmd('task', '') == 'edit') 

        $mainclass = ""; 

    else 

        $mainclass = "_left"; 

    ?>
    <div id="main">
        <div id="main<?php echo $mainclass?>">
            <jdoc:include type="message" />
            <jdoc:include type="component" />
        </div>
           <?php if ($mainclass == '_left' ) : ?>
        <div id="main_right">
            <jdoc:include type="modules" name="position-2" style="none" />
            <jdoc:include type="modules" name="position-3" style="none" />
            <jdoc:include type="modules" name="position-4" style="none" />
        </div>
            <?php endif ; ?>
        <div id="main_bottom"></div>
    </div>


    #main {
        width: 900px;
        margin: 0 auto;
    }
    #main_left {
        float: left;
        width: 600px;
    }
    #main_right {
        float: left;
        width: 300px;
    }
    #main_bottom {
        margin: 0 auto;
        clear:both;
    }
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Créer une condition selon le mode édition

      Merci Jisse mais je n'arrive pas à le faire fonctionner correctement... le "else" ne s'applique pas!
      Je te donne les détails ci-dessous, aurais-tu une idée de la source du problème? Merci

      J'ai ajouté le code suivant dans le <head>:
      Code:
          <?php
          if (!$app->input->getCmd('task', '') == 'edit')
          {
          	$mainclass = "_test";
          }
          else
          { 
          	$mainclass = "_left";
          }
          ?>
      J'ai ajouté temporairement "_test" pour voir ce qui se passait.
      Puis j'ai modifié le code tel que:
      Code:
      <div id="main">
          <div id="main<?php echo $mainclass ?>">
              <jdoc:include type="message" />
              <jdoc:include type="component" />
          </div>
          <?php if ($mainclass == '_left' ) : ?>
          <div id="main_right">
              <jdoc:include type="modules" name="position-2" style="none" />
              <jdoc:include type="modules" name="position-3" style="none" />
              <jdoc:include type="modules" name="position-4" style="none" />
          </div>
          <?php endif ; ?>
          <div id="main_bottom"></div>
      </div>
      mais dans tous les modes (public, authentifié et en éditant un article), il n'y a que la valeur "_test" qui s'ajoute dans <div id="main<?php echo $mainclass ?>">

      La valeur alternative (_left) qui devrait être présente par défaut, n'apparaît jamais.

      Merci de ton aide

      Commentaire


      • #4
        Re : Créer une condition selon le mode édition

        Et que raconte
        Code PHP:
        <?php
            
        echo '<pre>' var_dump$app->input ) ; echo '</pre>' ; exit(0);
            if (!
        $app->input->getCmd('task''') == 'edit')
            {
                
        $mainclass "_test";
            }
            else
            { 
                
        $mainclass "_left";
            }
            
        ?>
        Evidemment à appeler uniquement pour un edit...
        Tu sauras au moins ce que raconte le Jinput sur ce coup là
        L'utilisation de var_dump pour tracer une variable ou un objet fait gagner pas mal de temps.
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : Créer une condition selon le mode édition

          Merci Jissse.
          J'ai ajouté la ligne et ma page me donne une suite de donnée commençant par:
          Code:
          object(JInput)#10 (4) {
            ["options":protected]=>
            array(0) {
            }
          Excuses-moi pour mon manque de connaissance, mais est-ce normal?
          Est-ce que cette ligne sert de débug et tu as besoin de l'ensemble des infos?
          Merci

          Commentaire


          • #6
            Re : Créer une condition selon le mode édition

            Explores tout l'objet pour voir s'il y a bien un task dans le lot..
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : Créer une condition selon le mode édition

              Non, aucun "task" inscrit dans la page.

              Commentaire


              • #8
                Re : Créer une condition selon le mode édition

                Bonjour,

                Dans l'URL d'édition d'un article il y a index.php?option=com_content&view=form&layout=edit mais pas de task.

                Je propose donc d'utiliser layout au lieu de task
                Code PHP:
                if (!$app->input->getCmd('layout''') == 'edit'
                Pour distinguer l'édition d'un article de l'édition d'un profil ou d'un lien web, il faut tester les trois variables option, view et layout, ce qui donnerait quelque chose comme
                Code PHP:
                $option $app->input->getCmd('option''');
                $view   $app->input->getCmd('view''');
                $layout $app->input->getCmd('layout''');
                if (
                $option == 'com_content' && $view == 'form' && $layout == 'edit')
                {
                    
                $mainclass 'editing';
                }
                else
                {
                    
                $mainclass 'noediting';

                Amicalement,
                Rajoz

                Commentaire


                • #9
                  Re : Créer une condition selon le mode édition

                  Wouaaa excellent, cela fonctionne!
                  Merci pour votre aide Jisse et Rajoz

                  Envoyé par Rajoz Voir le message
                  Bonjour,

                  Dans l'URL d'édition d'un article il y a index.php?option=com_content&view=form&layout=edit mais pas de task.

                  Je propose donc d'utiliser layout au lieu de task
                  Code PHP:
                  if (!$app->input->getCmd('layout''') == 'edit'
                  Pour distinguer l'édition d'un article de l'édition d'un profil ou d'un lien web, il faut tester les trois variables option, view et layout, ce qui donnerait quelque chose comme
                  Code PHP:
                  $option $app->input->getCmd('option''');
                  $view   $app->input->getCmd('view''');
                  $layout $app->input->getCmd('layout''');
                  if (
                  $option == 'com_content' && $view == 'form' && $layout == 'edit')
                  {
                      
                  $mainclass 'editing';
                  }
                  else
                  {
                      
                  $mainclass 'noediting';

                  Amicalement,
                  Rajoz

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X