Annonce

#1 2006-03-10 22:46:28

pfrize
Membre
2006-03-09
73

listes déroulantes dans le "menubar" ?

J'ai l'intention de reproduire le layout visible sur http://www.frize.de/photo/index.htm : un "menubar" fixe à gauche et un "content" "scrollable". Avec ce design, je peux afficher des images jusqu'à 800px de large et 600px de haut sans obliger l'utilisateur à "scroller". J'ai donc besoin de listes déroulantes pour les options de menu et en particulier la liste des catégories. 1. Est-ce faisable uniquement avec les php et les tpl d'un template ? 2. Quelqu'un pourrait-il me mettre sur la voie ?

Merci !
Philippe

Hors ligne

#2 2006-03-10 22:55:56

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: listes déroulantes dans le "menubar" ?

Déjà, deux choses:
- Très beau modèle en effet, sobre, vraiment nickel.
- Oui, ça devrait être faisable.
Sans toucher au php, je ne pense pas mais une dupli de category.php actuelle en tant que base de départ.
On en reparlera sans aucun doute.

Encore une brillante idée.


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#3 2006-03-10 23:04:15

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12644

Re: listes déroulantes dans le "menubar" ?

pfrize a écrit:

J'ai donc besoin de listes déroulantes pour les options de menu et en particulier la liste des catégories.

Regardes comment je fais ça dans search.php + search.tpl, il y a des fonctions presque toutes faites pour afficher une liste des catégories.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#4 2006-03-10 23:19:50

pfrize
Membre
2006-03-09
73

Re: listes déroulantes dans le "menubar" ?

Mais oui, en effet ! Moi qui espérait me coucher pas trop tard ce soir... Je vais voir ça tout de suite.
Tiens, au fait, il manque un </td> au bout de la ligne 83 de search.tpl (on va encore me dire que je me trompe de forum...)

Merci beaucoup !
Philippe

Hors ligne

#5 2006-03-11 00:03:51

pfrize
Membre
2006-03-09
73

Re: listes déroulantes dans le "menubar" ?

Je suis coincé.
J'ai réussi à insérer une liste déroulante des catégories en recopiant un module de search.php dans category.php :
------------------
$query = '
SELECT name,id,date_last,nb_images,global_rank,uppercats
  FROM '.CATEGORIES_TABLE;
if ($user['forbidden_categories'] != '')
{
  $query.= '
  WHERE id NOT IN ('.$user['forbidden_categories'].')';
}
$query.= '
;';
$selecteds = array();
display_select_cat_wrapper($query, $selecteds, 'category_option', false);
------------------
...et en créant une "form" dans category.tpl :
------------------
<dt><a href="{U_HOME}">{L_SEARCH_CATEGORIES}</a></dt>
<dd>
    <form name="catlist">
        <select name="cat[]">
            <!-- BEGIN category_option -->
            <option value="{category_option.VALUE}">{category_option.OPTION}</option>
            <!-- END category_option -->
        </select>
    </form>
</dd>
------------------
...mais je ne sais pas :

- quelle "action" donner à la "form"

- ou, mieux, pour éviter d'ajouter un bouton "submit", pas d'action, mais insérer dans le "select" quelque chose du genre "onchange=jump(targ,selObj,restore)' où "onchange" est une fonction javascript :
------------------
<script type="text/JavaScript">
    <!--
    function jump(targ,selObj,restore){
        eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
        if (restore) selObj.selectedIndex=0;
    }
    //-->
</script>
------------------
Si près du but...

Bonne nuit
Philippe

Hors ligne

#6 2006-03-15 14:49:26

pfrize
Membre
2006-03-09
73

Re: listes déroulantes dans le "menubar" ?

S'il vous plaît, please, bitte ? Voyez comme j'ai avancé :
http://www.frize.de/gallery
(bon, d'accord, encore pas mal de ménage à faire, mais l'idée est là...)

Philippe

Hors ligne

#7 2006-03-15 18:18:18

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: listes déroulantes dans le "menubar" ?

si tu n 'as pas envie d'installer la version de dev, tout le cosde est là:
http://mcode1.free.fr/pwgbsf/category.p … dar=posted

tu as 2 listes déroulantes qui agissent sur changement:
PAr ex.:

Code:

<select onchange="document.location = this.options[this.selectedIndex].value;">
        <option value="./category.php?calendar=created&amp;image_order=0" SELECTED>Par défaut</option>
        <option value="./category.php?calendar=created&amp;image_order=1" >Note moyenne</option>
        <option value="./category.php?calendar=created&amp;image_order=2" >Plus vues</option>
        <option value="./category.php?calendar=created&amp;image_order=3" >Date de création</option>
        <option value="./category.php?calendar=created&amp;image_order=4" >Date d'ajout</option>
        <option value="./category.php?calendar=created&amp;image_order=5" >Nom du fichier</option>
      </select>

Hors ligne

#8 2006-03-17 19:29:42

pfrize
Membre
2006-03-09
73

Re: listes déroulantes dans le "menubar" ?

z0rglub,

J'y suis presque arrivé en réécrivant "get_html_menu_category" dans functions_html.inc.php.

Encore quelques petits problèmes à régler :
- sur la page d'accueil, la dropdown n'affiche que le 1er niveau et le lien vers les cat sans images ne fonctionne pas (pourquoi ?) - sur les autres pages ça a l'air de marcher ;
- encore un peu de CSS à ajouter pour décaler les niveaux
- je ne suis pas sûr qu'on puisse inclure une image (icône "NEW") dans une option de dropdown.

Philippe

PS. Voilà la fonction réécrite :
--------------------------------------------------------------------
function get_html_menu_category($categories) {
    global $page, $lang;
    $level = 0;
    $menu = '';
    foreach ($categories as $category) {
        $level = substr_count($category['global_rank'], '.') + 1;
        $url = add_session_id(PHPWG_ROOT_PATH.'category.php?cat='.$category['id']);
        $menu .= "\n<option value=".$url." class='".$level."'";
        if (isset($page['cat']) and is_numeric($page['cat']) and $category['id'] == $page['cat']) {
            $menu .= " selected ";
        }
        $menu .= ">".$category['name'];
        if ($category['nb_images'] > 0) {
            $menu .= " [".$category['nb_images']."]";
            $menu.= get_icon($category['date_last']);
        }
        $menu .= "</option>";
    }
    return $menu;
}
--------------------------------------------------------------------

Hors ligne

#9 2006-03-17 21:29:57

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12644

Re: listes déroulantes dans le "menubar" ?

Tu n'aurais pas dû modifier la fonction get_html_menu_category, mais bien utiliser la fonction display_select_cat_wrapper comme tu avais commencé, elle est faite pour afficher les catégories dans une liste déroulante. Pourquoi réinventer la roue ? Dans ton template, tu mets :

Code:

<option value="./category.php?cat={category_option.VALUE}">{category_option.OPTION}</option>

et roulez :-)

pfrize a écrit:

je ne suis pas sûr qu'on puisse inclure une image (icône "NEW") dans une option de dropdown.

Je suis sûr qu'on ne peut pas en HTML pur, sous entendu sans faire une grosse bidouille bien lourde en Javascript.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#10 2006-03-17 22:07:44

pfrize
Membre
2006-03-09
73

Re: listes déroulantes dans le "menubar" ?

Merci, mais il y a aussi des problèmes avec ta solution.

- j'ai rétabli la version originale de functions_html_inc.php
- j'ai remodifié category.php pour y inclure le bout de search.php
- j'ai ajouté dans category.tpl :

        <form>
            <select onchange="document.location = this.options[this.selectedIndex].value;">
            <!-- BEGIN category_option -->
            <option value="./category.php?cat={category_option.VALUE}">{category_option.OPTION}</option>
            <!-- END category_option -->
            </select>
        </form>

Les problèmes subsistants :
- pas de nombre d'images indiqué à côté du nom des catégories
- impossible de sélectionner la 1ère cat dans la liste (ici, "Photography"), probablement parce qu'il faudrait que la liste commence par une option sans lien du genre "Select a cat:"

Philippe

Hors ligne

#11 2006-03-17 22:09:31

pfrize
Membre
2006-03-09
73

Re: listes déroulantes dans le "menubar" ?

Oops - j'ai oublié de mentionner le 3ème problème :
- pas d'"option selected", donc la liste déroulante affiche toujours par défaut la 1ère cat et non la cat affichée

Hors ligne

#12 2006-03-17 22:39:55

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12644

Re: listes déroulantes dans le "menubar" ?

pfrize a écrit:

Les problèmes subsistants :
- pas de nombre d'images indiqué à côté du nom des catégories

1. dans include/functions_category.inc.php, fonction display_select_categories, avant :

Code:

    $template->assign_block_vars(

insères

Code:

if (isset($category['nb_images']))
{
  $option.= ' ['.$category['nb_images'].']';
}

2. dans category.php, pour la requête qui servira à display_select_cat_wrapper, ajoutes la sélection de nb_images :

Code:

$query = '
SELECT name,id,date_last,nb_images,global_rank,uppercats,nb_images
  FROM '.CATEGORIES_TABLE.'
;';

pfrize a écrit:

- impossible de sélectionner la 1ère cat dans la liste (ici, "Photography"), probablement parce qu'il faudrait que la liste commence par une option sans lien du genre "Select a cat:"

Dans category.php, avant d'appeler display_select_cat_wrapper, insères

Code:

$template->assign_block_vars(
  $blockname,
  array(
    'VALUE'=> 0,
    'OPTION' => 'Select a cat:'
    )
  );

pfrize a écrit:

- pas d'"option selected", donc la liste déroulante affiche toujours par défaut la 1ère cat et non la cat affichée

Toujours dans category.php, changes ton appel de display_select_cat_wrapper en :

Code:

display_select_cat_wrapper($query, array($page['cat']), 'category_option', false);

Puis dans ton template, il te faut :

Code:

<option value="./category.php?cat={category_option.VALUE}" {category_option.SELECTED}>{category_option.OPTION}</option>

(quand je te dis que display_select_cat_wrapper est prévue pour faire ça...)


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#13 2006-03-17 23:24:30

pfrize
Membre
2006-03-09
73

Re: listes déroulantes dans le "menubar" ?

Merci, c'est presque parfait... :
1. Je n'ai pas ajouté nb_images dans la requête parce que la donnée y figure déjà et que la rajouter une seconde fois ne semble pas changer grand-chose.
2. L'avant-dernière ligne du code ci-dessous ne fonctionne pas : la 1ère option "select a cat" n'apparaît pas dans la liste. Me serais-je trompé qq part ?

$query = 'SELECT name,id,date_last,nb_images,global_rank,uppercats FROM '.CATEGORIES_TABLE;
if ($user['forbidden_categories'] != '') {
    $query.= ' WHERE id NOT IN ('.$user['forbidden_categories'].')';
}
$query.= ';';
$selecteds = array();
$template->assign_block_vars($blockname, array('VALUE'=>0, 'OPTION'=>'Select a cat:'));
display_select_cat_wrapper($query, array($page['cat']), 'category_option', false);

Hors ligne

#14 2006-03-17 23:37:12

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12644

Re: listes déroulantes dans le "menubar" ?

pfrize a écrit:

1. Je n'ai pas ajouté nb_images dans la requête parce que la donnée y figure déjà et que la rajouter une seconde fois ne semble pas changer grand-chose.

Très juste :-)

pfrize a écrit:

2. L'avant-dernière ligne du code ci-dessous ne fonctionne pas : la 1ère option "select a cat" n'apparaît pas dans la liste. Me serais-je trompé qq part ?

- ton $selecteds ne sert à rien.
- remplace $blockname par 'category_option'

Un petit effort, on y est preque !


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#15 2006-03-18 00:27:48

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12644

Re: listes déroulantes dans le "menubar" ?

pfrize, tu abordes des sujets intéressants, mais j'ai besoin de topics distincts pour y répondre. Ton dernier post n'a plus rien à voir avec le titre du topic...


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

Pied de page des forums

Propulsé par FluxBB

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