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

plg
2006-03-18 00:27:48

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

plg
2006-03-17 23:37:12

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 !

pfrize
2006-03-17 23:24:30

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

plg
2006-03-17 22:39:55

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

pfrize
2006-03-17 22:09:31

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

pfrize
2006-03-17 22:07:44

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

plg
2006-03-17 21:29:57

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.

pfrize
2006-03-17 19:29:42

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;
}
--------------------------------------------------------------------

mathiasm
2006-03-15 18:18:18

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>
pfrize
2006-03-15 14:49:26

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

pfrize
2006-03-11 00:03:51

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

pfrize
2006-03-10 23:19:50

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

plg
2006-03-10 23:04:15

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.

VDigital
2006-03-10 22:55:56

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.

pfrize
2006-03-10 22:46:28

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

Pied de page des forums

Propulsé par FluxBB

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