Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

flipflip
2007-05-04 13:32:10

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.

rvelices
2007-05-04 13:16:20

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

flipflip
2007-05-04 09:38:51

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);
    }
  }
rvelices
2007-05-03 19:28:50

est-ce que DmCategory.tpl sort qq chose ?

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

flipflip
2007-05-03 17:41:36

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.

gbo
2007-04-14 13:53:40

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

rvelices
2007-04-09 21:53:41

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

gbo
2007-04-09 19:04:51

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 ?

gbo
2007-04-06 18:39:11

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

flipflip
2007-04-06 12:34:14

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.

flipflip
2007-04-06 12:03:01

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.

rvelices
2007-04-05 17:10:15

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

flipflip
2007-04-05 09:52:21

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é :(

Pied de page des forums

Propulsé par FluxBB

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