Langue dans un plugins

Bonjour à tous,

Sur un plugin qui ajoute des champs sur la page article.php avec le hook AdminArticleContent. Je dois afficher un intitulé sur ces champs mais je n'arrive pas à trouver la bonne syntaxe pour afficher le texte issue du fichier fr.php de mon plugin.

J'ai essayé :

 public function AdminArticleContent() {
   echo '<div class="grid gridthumb">';
   echo ' <div class="col sml-12">';
   echo '   <label for="id_mv2articles">';
   echo $this->lang("L_MV2ARTICLES_MP4").'&nbsp;:&nbsp;';
   echo '     <a title="'.$this->getLang("L_MV2ARTICLES_SELECTION").'" id="toggler_mv2articles_mp4" href="javascript:void(0)" onclick="mediasManager.openPopup("id_mv2articles_mp4", true)" style="outline:none; text-decoration: none">+</a>';
   echo '   </label>';
   echo ' </div></div>';
   plxUtils::printInput('mv2articles_mp4',plxUtils::strCheck($mv2articles_mp4),'text','255',false,'full-width','','onkeyup="refreshImg(this.value)"');

}


Le texte traduit s'affiche bien mais la valeur de la variable $mv2articles_mp4 n'est pas récupérée.

Autre test :

 public function AdminArticleContent() {
$string = <<<END
 <?php
   echo '<div class="grid gridthumb">';
   echo ' <div class="col sml-12">';
   echo '   <label for="id_mv2articles">';
   echo $this->lang("L_MV2ARTICLES_MP4").'&nbsp;:&nbsp;';
   echo '     <a title="'.$this->getLang("L_MV2ARTICLES_SELECTION").'" id="toggler_mv2articles_mp4" href="javascript:void(0)" onclick="mediasManager.openPopup("id_mv2articles_mp4", true)" style="outline:none; text-decoration: none">+</a>';
   echo '   </label>';
   plxUtils::printInput('mv2articles_mp4',plxUtils::strCheck(\$mv2articles_mp4),'text','255',false,'full-width','','onkeyup="refreshImg(this.value)"');
   echo ' </div></div>';
 ?>
END;

   echo $string;
 }

Cette fois la variable est ok mais c'est L_MV2ARTICLES_SELECTION qui s'affiche et non la version traduite.

J'ai un string de l'array

Mots clés:

Réponses

  • Slt @flipflip

    la funk lang() fait un "echo" alors que getLang() fait un "return", essaye avec ce code :

       public function AdminArticleContent() {
    ?>
           <div class="grid gridthumb">
               <div class="col sml-12">
                   <label for="id_mv2articles">
                       <?php $this->lang('L_MV2ARTICLES_MP4') ?>&nbsp;:&nbsp;<a title="<?php $this->lang('L_MV2ARTICLES_SELECTION') ?>" id="toggler_mv2articles_mp4" href="javascript:void(0)" onclick="mediasManager.openPopup('id_mv2articles_mp4', true)" style="outline:none; text-decoration: none">+</a>
                   </label>
               </div>
           </div>
    <?php 
           plxUtils::printInput('mv2articles_mp4',plxUtils::strCheck($mv2articles_mp4),'text','255',false,'full-width" onkeyup="refreshImg(this.value)');
       }
    

    Note : ici j'utilise l'attribut $classe de printInput de manière triviale afin d'afficher le onkeyup, vous remarquerez qu'il n'y a pas les double quillemets (") a la fin du paramètre.

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • Salut @Sudwebdesign ,

    C'est presque bon ;)

    Avec ton code les traductions s'affichent mais la valeur de $mv2articles dans le printInput ne s'affiche pas alors qu'elle est bien présente dans le fichier xml.

    J'ai un string de l'array

  • SudwebdesignSudwebdesign Member
    octobre 2019 modifié

    Yep @flipflip

    Pour aller plus loin :

       public function AdminArticleContent() {
    ?>
          <div class="grid gridthumb">
             <div class="col sml-12">
                <label for="id_mv2articles_mp4">
                   <?php $this->lang('L_MV2ARTICLES_MP4') ?>&nbsp;:&nbsp;<a title="<?php $this->lang('L_MV2ARTICLES_SELECTION') ?>" id="toggler_mv2articles_mp4" href="javascript:void(0)" onclick="mediasManager.openPopup('id_mv2articles_mp4', true)" style="outline:none; text-decoration: none">+</a>
                </label>
             </div>
          </div>
    <?php
    #      $mv2articles_mp4 = $this->getParam('$mv2articles_mp4');# Si Viens de la config du plugin (mais cela m'étonnerais) dé-commente cette ligne
          plxUtils::printInput('mv2articles_mp4',$mv2articles_mp4,'text','255',false,'full-width" onkeyup="refreshImg(this.value)');
       }
    

    Notes :

    plxUtils::strCheck() me semble inutile

    le "for" du label est corrigé : il manquait le _mp4 a la fin.

    Si cette variable est a enregistrer ds le xml de l'article, voici les autres hook a utiliser.

    Duplique le code ci-dessous ds ton greffon et ça devrai rouler (Mais c'est peut-être déjà fait) :

       public function plxMotorParseArticle() {
       echo '<?php '; ?>
          $mv2articles_mp4 = plxUtils::getValue($iTags['mv2articles_mp4'][0]);
    ?><?php
       }
       public function AdminArticleParseData(){
       echo'<?php'; ?>
          $mv2articles_mp4 = $result['mv2articles_mp4'];
    ?><?php
       }
       public function AdminArticlePostData() {
       echo '<?php '; ?>
       $mv2articles_mp4 = $_POST['mv2articles_mp4'];
    ?><?php
       }
       public function AdminArticlePreview() {
       echo '<?php '; ?>
          $art['mv2articles_mp4'] = $_POST['mv2articles_mp4'];
    ?><?php
       }
       public function plxAdminEditArticleXml() {
       echo '<?php '; ?>
          $xml .= "\t".'<mv2articles_mp4><![CDATA['.plxUtils::cdataCheck(trim($content['mv2articles_mp4'])).']]></mv2articles_mp4>'."\n";
    ?><?php
       }
    

    Duplique ce code ci-dessous ds le constructeur de ta classe (__contruct) pour que cela fonctionne

             $this->addHook('plxMotorParseArticle', 'plxMotorParseArticle');
             $this->addHook('AdminArticleParseData', 'AdminArticleParseData');
             $this->addHook('AdminArticlePostData', 'AdminArticlePostData');
             $this->addHook('AdminArticlePreview', 'AdminArticlePreview');
             $this->addHook('plxAdminEditArticleXm', 'plxAdminEditArticleXml');
    

    Remarque :

    pour faire cela il y a aussi les plugins champArt et chamPlus, tu peu t'en inspiré, voir les utilisés ;)

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • SudwebdesignSudwebdesign Member
    octobre 2019 modifié

    Un oubli,

    il manque le hook AdminArticleInitData

       public function AdminArticleInitData() {
       echo '<?php '; ?>
          $mv2articles_mp4 = '';
    ?><?php
       }
    

    Et une petite révision du constructeur

             $this->addHook('plxMotorParseArticle', 'plxMotorParseArticle');
             if(defined('PLX_ADMIN')) {
                 $this->addHook('AdminArticleParseData', 'AdminArticleParseData');
                 $this->addHook('AdminArticlePostData', 'AdminArticlePostData');
                 $this->addHook('AdminArticleInitData', 'AdminArticleInitData');
                 $this->addHook('AdminArticlePreview', 'AdminArticlePreview');
                 $this->addHook('plxAdminEditArticleXm', 'plxAdminEditArticleXml');
             }
    

    😉

    Notre temps est la seule monnaie vraie ;)

    Site, Dépôt, framagit, MyShop, Factux

    #mozinor président

  • Merci @Sudwebdesign pour ton aide.

    J'avais oublié ces deux petits plugins, je me suis inspiré de leurs syntaxe et de ce que tu m'a proposé et maintenant tout est ok.

    La fonction ressemble à

    forum publicfunctionAdminArticleContent(){
       $l_selection=$this->getLang('L_MV2ARTICLES_SELECTION');
       $l_mp4=$this->getLang('L_MV2ARTICLES_MP4');
       $l_ogg=$this->getLang('L_MV2ARTICLES_OGV');
       $l_webm=$this->getLang('L_MV2ARTICLES_WEBM');
       $l_default=$this->getLang('L_MV2ARTICLES_DEFAULT');
       $l_background=$this->getLang('L_MV2ARTICLES_BACKGROUND');
       $l_autoplay=$this->getLang('L_MV2ARTICLES_AUTOPLAY');
       $l_controls=$this->getLang('L_MV2ARTICLES_CONTROLS');
       $l_loop=$this->getLang('L_MV2ARTICLES_LOOP');
    
       $string=<<<END
       <div class="gridgridthumb">
         <div class="colsml-12">
           <h2>Vidéo</h2>
           <label for="id_mv2articles">
       $l_mp4&nbsp
             <a title="$l_selection" id="toggler_mv2articles_mp4" href="javascript:void(0)" onclick="mediasManager.openPopup('id_mv2articles_mp4',true)" style="outline:none;text-decoration:none">+</a>
           </label>
       <?php plxUtils::printInput('mv2articles_mp4',plxUtils::strCheck(\$mv2articles_mp4),'text','255',false,'full-width','','onkeyup="refreshImg(this.value)"');?>
         </div>
         <div class="colsml-12">
           <label for="id_mv2articles_ogg">
       $l_ogg&nbsp;
             <a title="$l_selection" id="toggler_mv2articles_ogg" href="javascript:void(0)" onclick="mediasManager.openPopup('id_mv2articles_ogg',true)" style="outline:none;text-decoration:none">+</a>
           </label>
       <?php plxUtils::printInput('mv2articles_ogg',plxUtils::strCheck(\$mv2articles_ogg),'text','255',false,'full-width','','onkeyup="refreshImg(this.value)"');?>
         </div>
         <div class="colsml-12">
           <label for="id_mv2articles_webm">
       $l_webm&nbsp;
             <a title="$l_selection" id="toggler_mv2articles_webm" href="javascript:void(0)" onclick="mediasManager.openPopup('id_mv2articles_webm',true)" style="outline:none;text-decoration:none">+</a>
           </label>
       <?php plxUtils::printInput('mv2articles_webm',plxUtils::strCheck(\$mv2articles_webm),'text','255',false,'full-width','','onkeyup="refreshImg(this.value)"');?>
         </div>
         <div class="colsml-12">
           <label for="id_mv2articles_default">
       $l_default&nbsp;
             <a title="$l_selection" id="toggler_mv2articles_default" href="javascript:void(0)" onclick="mediasManager.openPopup('id_mv2articles_default',true)" style="outline:none;text-decoration:none">+</a>
           </label>
       <?php plxUtils::printInput('mv2articles_default',plxUtils::strCheck(\$mv2articles_default),'text','255',false,'full-width','','onkeyup="refreshImg(this.value)"');?>
         </div>
         <div class="colsml-12">
           <label for="mv2articles_background">
       <?php \$selected=(!empty(\$mv2articles_background))?'checked="checked"':'';?>
       $l_background&nbsp;<input class="no-margin" type="checkbox" id="mv2articles_background" name="mv2articles_background"<?php echo \$selected ?>value="background"/>
           </label>
           <label for="mv2articles_autoplay">
       <?php \$selected=(!empty(\$mv2articles_autoplay))?'checked="checked"':'';
       ?>
       $l_autoplay&nbsp;<input class="no-margin" type="checkbox" id="mv2articles_autoplay" name="mv2articles_autoplay"<?php echo \$selected?> value="autoplay"/>
           </label>
           <label for="mv2articles_controls">
       <?php \$selected=(!empty(\$mv2articles_controls))?'checked="checked"':'';?>
       $l_controls&nbsp;<input class="no-margin" type="checkbox" id="mv2articles_controls" name="mv2articles_controls"<?php echo \$selected?> value="controls"/>
           </label>
           <label for="mv2articles_loop">
       <?php \$selected=(!empty(\$mv2articles_loop))?'checked="checked"':'';?>
       $l_loop&nbsp;<input class="no-margin" type="checkbox" id="mv2articles_loop" name="mv2articles_loop"<?php echo \$selected?> value="loop"/>
           </label>
         </div>
       </div>
    END;
    
       echo $string;
     }
    }
    
    
    

    Nikel maintenant.

    P.S. : le passage avec la balise code du forum fait sauter les espaces :( j'ai remis les plus important.

    J'ai un string de l'array

Connectez-vous ou Inscrivez-vous pour répondre.