•  » Plugins
  •  » [1.7RC1]Utilisation set_filename dans un plugin

#1 2007-04-05 09:52:21

flipflip
Membre
Lyon
2005-03-19
2316

[1.7RC1]Utilisation set_filename dans un plugin

Salut, je me pose une grande question pour mon plugin. Pour ceux qui ont utilisé mon mod, il affiche en bas de la page thumbnail un formulaire pour choisir les différentes options. J'essai de reproduire le même comportement mais en utilisant le principe de la barre de menu. Malheureusement je ne sais pas trop comment faire. Pour le moment j'en suis là :

Code:

  function category_default()
  {
    global $user, $template;
    //$me = get_plugin_data($plugin_id);
    
    if($user['id'] <> 2)
    {
      // Intégration du formulaire sous les images
      $template->set_filenames(
        array('DownloadMulti_category' => dirname(__FILE__).'/template/DmCategory.tpl') );

      $template->assign_var_from_handle('DmCategory', 'DownloadMulti_category');
    }
  }

Et je l'appel par add_event_handler('loc_end_index_thumbnails', array(&$obj, 'category_default') );. J'avoue être un peu largué :(

Dernière modification par flipflip (2007-04-05 09:53:23)


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#2 2007-04-05 17:10:15

rvelices
Équipe Piwigo
2005-12-29
1417

Re: [1.7RC1]Utilisation set_filename dans un plugin

T'as bien vu que l'interaction entre plugins et le systeme de templates est le point faible du systeme de plugins.

3 solutions:

a. l'utilisateur doit lui meme rajouter {DmCategory} quelque part dans le template

b. j'ai rajoute dans index.tpl 2 variables generiques: PLUGIN_INDEX_CONTENT_BEGIN et PLUGIN_INDEX_CONTENT_END. Ceci est sous svn, mais je croix que je l'ai fait apres la RC1. Donc a la place de assign_var_from_handle , tu devrais avoir

Code:

$dm_html = $template->parse('DownloadMulti_category', true);
$template->concat_var('PLUGIN_INDEX_CONTENT_END', $dm_html);

Le concat_var est a utiliser a la place de assign_var de sorte que tous les plugins puissent ajouter leur contenu.

c. Tu fais un $template->concat_var('THUMBNAILS', $dm_html); a la fin (sur l'evenement loc_end_index).

Hors ligne

#3 2007-04-06 12:03:01

flipflip
Membre
Lyon
2005-03-19
2316

Re: [1.7RC1]Utilisation set_filename dans un plugin

Salut, alors la solution a. ne convient pas avec la nouvelle logique qui est de ne plus toucher au noyau PhpWebGallery, la b. ne me convient pas car je suis en rc1 et je n'ai pas mis à jour par rapport au svn donc reste la solution c. Pour ceux que ça intéresse voila comment j'ai codé le bazar.

Code:

  function category_default()
  {
    global $user, $template;
    //$me = get_plugin_data($plugin_id);
    
    if($user['id'] <> 2)
    {
      // Intégration du formulaire sous les images
      $template->set_filenames(
        array('DownloadMulti_category' => dirname(__FILE__).'/template/DmCategory.tpl')
      );
      
      // Juste pour tester l'affichage
      $template->assign_var('DOWNLOADMULTI_TEST', 'toto');
      
      $dm_html = $template->parse('DownloadMulti_category', true);
      $template->concat_var('THUMBNAILS', $dm_html);
    }

Je l'appel depuis le fichier main.inc.php par add_event_handler('loc_end_index', array(&$obj, 'category_default') ); et dans mon fichier template j'ai juste mis {DOWNLOADMULTI_TEST}.

Voila c'est tout, merci rvelices. J'adapterais pour la rc2.


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#4 2007-04-06 12:34:14

flipflip
Membre
Lyon
2005-03-19
2316

Re: [1.7RC1]Utilisation set_filename dans un plugin

Au contraire il y aurais peut être comme un problème. Si j'utlise loc_end_index le template s'affiche sur toute les pages alors que moi je le veux uniquement lorsqu'un visiteur est dans une catégorie. Pour cela il y a loc_end_index_thumbnails mais rien ne ce passe.


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#5 2007-04-06 18:39:11

gbo
Membre
PACA
2006-11-01
1214

Re: [1.7RC1]Utilisation set_filename dans un plugin

rvelices a écrit:

j'ai rajoute dans index.tpl 2 variables generiques: PLUGIN_INDEX_CONTENT_BEGIN et PLUGIN_INDEX_CONTENT_END. .

Merci Rvelices
Si PLUGIN_INDEX_CONTENT_BEGIN est juste aprés {MENUBAR}
Cela devrait résoudre mon souci pour l'affichage de l'édito.
Je ferai des tests avec la RC2

Hors ligne

#6 2007-04-09 19:04:51

gbo
Membre
PACA
2006-11-01
1214

Re: [1.7RC1]Utilisation set_filename dans un plugin

C'est une avancée de la RC2, mais ...
Je n'arrive pas à reproduire ma présentation

La variable est positionnée ainsi (après la fin de  titre page)

</div> <!-- titrePage -->
{PLUGIN_INDEX_CONTENT_BEGIN}
<!-- BEGIN calendar -->


Je l'attendais ici;

{MENUBAR}
<div  id="content">
{PLUGIN_INDEX_CONTENT_BEGIN}, pour gérer les éditos sur la 1° page avant <h2>{TITLE}</h2>

Peut on avoir le beurre et l'argent du beurre ?

Hors ligne

#7 2007-04-09 21:53:41

rvelices
Équipe Piwigo
2005-12-29
1417

Re: [1.7RC1]Utilisation set_filename dans un plugin

EX-FTB a écrit:

Peut on avoir le beurre et l'argent du beurre ?

Non pas vraiment.
Sinon il faudrait mettre toutes les 2 lignes du template une variable du style PLUGIN_....

Hors ligne

#8 2007-04-14 13:53:40

gbo
Membre
PACA
2006-11-01
1214

Re: [1.7RC1]Utilisation set_filename dans un plugin

OK, no problem.
J’adapterai mon fichier TPL.

Hors ligne

#9 2007-05-03 17:41:36

flipflip
Membre
Lyon
2005-03-19
2316

Re: [1.7RC1]Utilisation set_filename dans un plugin

Je reviens sur le sujet. Je suis passé en RC2 et j'ai essayé de modifier mon code. Il ressemble à ça :

Code:

  function category_default()
  {
    global $user, $template, $conf, $prefixeTable, $page, $lang;
    
    if($user['id'] <> 2)
    {
      // Intégration du formulaire sous les images
      $template->set_filenames(
        array('DownloadMulti_category' => dirname(__FILE__).'/template/DmCategory.tpl')
      );
      $dm_html = $template->parse('DownloadMulti_category', true);
      
      // Récupération du groupe utilisateur autorisé à télécharger les images
      $query = '
          SELECT group_id
          FROM '.USER_GROUP_TABLE.'
          WHERE user_id = '.$user['id'].'
      ;';
      $result = pwg_query($query);
...
      // Gestion du template
      $template->concat_var('PlUGIN_INDEX_CONTENT_END', $dm_html);
    }

Ensuite je l'appel depuis le main.inc.php avec :

Code:

add_event_handler('loc_begin_index_thumbnails', array(&$DlMulti, 'category_default') );

Malheureusement rien ne s'affiche sur aucune page et je n'ai aucune erreur de chargement. Alors que si je fais un truc malpropre :

Code:

  function category_default()
  {
    global $user, $template, $conf, $prefixeTable, $page, $lang;
    

    if($user['id'] <> 2)
    {
      echo $user['id']; <--- PAS PROPRE
      // Intégration du formulaire sous les images
      $template->set_filenames(
        array('DownloadMulti_category' => dirname(__FILE__).'/template/DmCategory.tpl')
      );
      $dm_html = $template->parse('DownloadMulti_category', true);

J'ai bien une réaction, ça m'affiche bien l'identifiant de l'utilisateur avec bien sur une belle erreur de header mais c'est normal.

Dernière modification par flipflip (2007-05-03 17:54:15)


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#10 2007-05-03 19:28:50

rvelices
Équipe Piwigo
2005-12-29
1417

Re: [1.7RC1]Utilisation set_filename dans un plugin

est-ce que DmCategory.tpl sort qq chose ?

peux tu dumper la variable dm_html pour voir s'il y a qq chose dedans ?

Hors ligne

#11 2007-05-04 09:38:51

flipflip
Membre
Lyon
2005-03-19
2316

Re: [1.7RC1]Utilisation set_filename dans un plugin

J'ai fait un var_dump($dm_html) et j'obtient ça :

Code:

string(41) "<div id="download">
  <h2></h2>

</div>

"

Ca correspond bien avec mon fichier DmCategory.tpl mais il manque tout ce qui est au milieu :

Code:

<div id="download">
  <h2>{DlMulti_TITLE}</h2>

  <!-- BEGIN form -->
  <fieldset id="field_1">
    <legend>{lang:dl_legend_select}</legend>
    <input name="mode" type="radio" value="{form.INPUT_VALUE_THUMBNAIL}" checked="checked" />{lang:dl_thumbnail}<br />
    <input name="mode" type="radio" value="{form.INPUT_VALUE_NORMAL}" />{lang:dl_normal}<br />
    <!-- BEGIN high -->
    <input name="mode" type="radio" value="{form.high.INPUT_VALUE_HIGH}" />{lang:dl_high}<br />
    <!-- END high -->
    <span>
      <input name="all" type="button" value="{lang:dl_select_all}" OnClick="cocher('dl');" />
    <input name="reset" type="reset" value="{lang:dl_uncheck}" />
      <input name="select" type="submit" value="{lang:dl_select}" />
    </span>
  </fieldset>
  </form>
  <fieldset id="field_2">
    <legend>{lang:dl_title}</legend>
    <form action="./plugins/download_multi/preview.php" method="post">
      <input name="preview" type="submit" value="{lang:dl_preview}" />
    </form>
    <form action="./plugins/download_multi/panier.php?src=name" method="post">
      <input name="submit" type="submit" value="{lang:dl_start}" />
    </form>
    </fieldset>
  <!-- END form -->
  <!-- BEGIN check -->
  <div class="infos">
    {lang:dl_message_01}{thumbnails.download.check.NB}{lang:dl_message_02}<br />
    {lang:dl_message_03}
    <form action="./modules/download_multi/index.php?act=del_cart&cat={thumbnails.download.check.U_CAT}" method="post">
      <input name="trash" type="submit" value="{lang:dl_trash}" />
    </form>
  </div>
  <!-- END check -->
</div>

Voici ma fonction :

Code:

  // Affichage du formulaire sous les vignettes
  function category_default()
  {
    global $user, $template, $conf, $prefixeTable, $page, $lang;
    
    if($user['id'] <> 2)
    {
      // Intégration du formulaire sous les images
      $template->set_filenames(
        array('DownloadMulti_category' => dirname(__FILE__).'/template/DmCategory.tpl')
      );
      $dm_html = $template->parse('DownloadMulti_category', true);
      
      // Récupération du groupe utilisateur autorisé à télécharger les images
      $query = '
          SELECT group_id
          FROM '.USER_GROUP_TABLE.'
          WHERE user_id = '.$user['id'].'
      ;';
      $result = pwg_query($query);

      while($row = mysql_fetch_array($result))
      {
        // Compare le groupe de l'utilisateur avec le groupe
        // authorisé à télécharger
        if ( $row['group_id'] == $this->my_config['group_id'] )
        {
          $redirect_to = isset($_POST['redirect']) ? $_POST['redirect'] : '';

          // Titre du bloc en bas de la des vignettes
          $template->assign_var('DlMulti_TITLE',$lang['dl_title']);
          
          // Compte le nombre de lignes pour le visiteur
          $query = '
            SELECT COUNT(*) AS nb_line
            FROM '.$prefixeTable.'download_multi
            WHERE id_user = '.$user['id'].'
          ;';
          $row = mysql_fetch_array(pwg_query($query));

          // Si le nombre de lignes est supérieur à 0
          // alors on affiche le message d'avertissement
          // utilisateur
          if ($row['nb_line'] > 0)
          {
            $template->assign_block_vars('check',
              array('NB' => $row['nb_line'],
                    'U_CAT' => duplicate_index_URL()
                )
              );
          }

          // Si la page de départ est une catégorie
          // on gère l'affichage ou non du téléchargement
          // des images hautes définitions
          if (isset($page['category']['name']))
          {
            // Sélection du répetoire de base pour la
            // catégorie en cours de visite
            // Permet de contréler la prÚsence du
            // répertoire pwg_high
            // si il y est présent alors on affiche la
            // possibilité de télécharger les images
            // hautes définitions
            $query1 = '
              SELECT dir
              FROM '.CATEGORIES_TABLE.'
              WHERE id = '.$page['category']['id'].'
            ;';

            $row1 = mysql_fetch_array(pwg_query($query1));

            $template->assign_block_vars('form',
              array(
                'INPUT_VALUE_NORMAL' => 'normal',
                'INPUT_VALUE_THUMBNAIL' => 'thumbnail',
                'U_CAT' => duplicate_index_URL(),
              )
            );

            // Si il n'y a aucun images en hautes dÚfinitions
            // ou l'utilisateur n'a pas le droit aux hautes définitions
            // alors la ligne de téléchargement des hautes définitions
            // ne s'affiche pas
            if(is_dir(PHPWG_ROOT_PATH.'/galleries/'.$row1['dir'].'/pwg_high')
            and ($user['enabled_high'] == 'true'))
            {
              $template->assign_block_vars('form.high',
                array(
                  'INPUT_VALUE_HIGH' => 'high',
                )
              );
            }
          }
          else
          {
            $template->assign_block_vars('form',
              array(
                'INPUT_VALUE_NORMAL' => 'normal',
                'INPUT_VALUE_THUMBNAIL' => 'thumbnail',
                'U_CAT' => duplicate_index_URL(),
              )
            );

            // Si l'utilisateur n'a droit aux hautes définitions
            // la possibilité de télécharger les hautes définitions
            // s'affiche
            if($user['enabled_high'] == 'true')
            {
              $template->assign_block_vars('form.high',
                array(
                  'INPUT_VALUE_HIGH' => 'high',
                )
              );
            }
          }
        }
      }

      // Gestion du template
      $template->concat_var('PlUGIN_INDEX_CONTENT_END', $dm_html);
    }
  }

Dernière modification par flipflip (2007-05-04 09:42:13)


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#12 2007-05-04 13:16:20

rvelices
Équipe Piwigo
2005-12-29
1417

Re: [1.7RC1]Utilisation set_filename dans un plugin

Je pense que tu dois mettre la ligne
$dm_html = $template->parse('DownloadMulti_category', true);
juste avant concat_var ...

dans ton cas ca ne sert a rien le assign_block_vars apres avoir fait le parse ...

Hors ligne

#13 2007-05-04 13:32:10

flipflip
Membre
Lyon
2005-03-19
2316

Re: [1.7RC1]Utilisation set_filename dans un plugin

Effectivement si je parse avant d'avoir fait quoi que ce soit c'est pas top. Au contraire j'ai fait ce que tu m'a dit mais je n'ai toujours pas d'affichage alors que si je refais mon var_dump($dm_html) tout s'affiche même les valeurs de template que j'ai définis dans ma fonction.


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

  •  » Plugins
  •  » [1.7RC1]Utilisation set_filename dans un plugin

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact