source: pmb4.2/trunk/fuentes/pmb/includes/tree.inc.php @ 828

Last change on this file since 828 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 5.2 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: tree.inc.php,v 1.5 2015-04-03 11:16:21 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9//Création d'un arbre de navigation dans les catégories
10
11function gen_div($categ_parent,$level,$prefix_name, $is_last, $last_before, $js) {
12        global $cnt;
13        global $base_path;
14       
15        //On cherche d'abord les dossiers
16        //$requete="select distinct a0.categ_id as id,a0.categ_libelle as libelle from categories as a0, categories as a1 where a0.categ_parent=$categ_parent and a1.categ_parent=a0.categ_id ";
17        $requete="SELECT distinct a0.categ_id as id, a0.categ_libelle as libelle, IF(a1.categ_id is null,0,1) AS dossier, a0.categ_parent as parent FROM categories a0 left JOIN categories a1 ON a1.categ_parent = a0.categ_id where a0.categ_parent=$categ_parent order by libelle ";
18        $resultat=pmb_mysql_query($requete);
19        $d=0;
20        $f=0;
21        while ($res=pmb_mysql_fetch_object($resultat)) {
22                if (!$res->dossier) {
23                        $docs[ID][$f]=$res->id;
24                        $docs[LIBELLE][$f]=$res->libelle;
25                        $f++;
26                        } else {
27                                $folders[ID][$d]=$res->id;
28                                $folders[LIBELLE][$d]=$res->libelle;
29                                $d++;
30                                }
31        }
32       
33        if (!isset($folders[ID])) $folders[ID]=array();
34       
35        for ($i=0; $i<count($folders[ID]); $i++) {
36                echo "<div id=\"".$prefix_name.".".$i."\">";
37                $t_l=explode(",",$last_before);
38                for ($j=0; $j<$level-1; $j++) {
39                        if (!$t_l[$j]) $img_vert="$base_path/images/tree/ftv2vertline.gif"; else $img_vert="$base_path/images/tree/ftv2blank.gif";
40                        echo "<img src=\"$img_vert\" border=0 align=\"center\">";
41                }
42                if (($i==count($folders[ID])-1)&&(count($docs)==0)) $img_node="$base_path/images/tree/ftv2plastnode.gif"; else $img_node="$base_path/images/tree/ftv2pnode.gif";
43                if (($i==count($folders[ID])-1)&&(count($docs)==0)) $last=1; else $last=0; 
44                echo "<img src=\"".$img_node."\" border=0 align=center onClick=\"expand('".$prefix_name.".".$i."',$last)\" id=\"node-".$prefix_name.".".$i."\">";
45                echo "<img src=\"$base_path/images/tree/ftv2folderclosed.gif\" border=0 align=center id=\"folder-".$prefix_name.".".$i."\">";
46                $nb_notices=$cnt[$folders[ID][$i]];
47                $link=str_replace("!!id!!",$folders[ID][$i],$js);
48                if ($nb_notices) echo "<a href=\"\" onClick=\"$link\">".$folders[LIBELLE][$i]." ($nb_notices)</a>"; else echo $folders[LIBELLE][$i];
49                flush();
50                echo "<div id=\"".$prefix_name.".".$i."-contains"."\" style=\"display:none\">";
51                $last_before_=$last_before;
52                if ($last_before_!="") $last_before_.=",";
53                $last_before_.=$last;
54                gen_div($folders[ID][$i],$level+1,$prefix_name.".".$i,$last,$last_before_,$js);
55               
56                echo "</div>\n";
57                echo "</div>\n";
58        }
59       
60        for ($i=0; $i<count($docs[ID]); $i++) {
61                $link=str_replace("!!id!!",$docs[ID][$i],$js);
62                echo "<div id=\"doc-".$prefix_name.".".$i."\">";
63                $t_l=explode(",",$last_before);
64                for ($j=0; $j<$level-1; $j++) {
65                        if (!$t_l[$j]) $img_vert="$base_path/images/tree/ftv2vertline.gif"; else $img_vert="$base_path/images/tree/ftv2blank.gif";
66                        echo "<img src=\"$img_vert\" border=0 align=\"center\">";
67                }
68                if ($i==count($docs[ID])-1) $img_node="$base_path/images/tree/ftv2lastnode.gif"; else $img_node="$base_path/images/tree/ftv2node.gif";
69                echo "<img src=\"".$img_node."\" border=0 align=center>";
70                echo "<img src=\"$base_path/images/tree/ftv2doc.gif\" border=0 align=center>";
71                $nb_notices=$cnt[$docs[ID][$i]];
72                if ($nb_notices!=0) echo "<a href=\"\" onClick=\"$link\">".$docs[LIBELLE][$i]." ($nb_notices)</a>"; else echo $docs[LIBELLE][$i];
73                echo "</div>\n";
74                flush();
75        }
76}
77
78function tree($js)
79{
80        global $base_path;
81        global $cnt;
82        echo "<script>
83        function expand(div_name, last) {
84     if (last) {
85         nodep=\"$base_path/images/tree/ftv2plastnode.gif\";
86         nodem=\"$base_path/images/tree/ftv2mlastnode.gif\";
87     } else {
88         nodep=\"$base_path/images/tree/ftv2pnode.gif\";
89         nodem=\"$base_path/images/tree/ftv2mnode.gif\";
90     }
91     div_contain=document.getElementById(div_name+\"-contains\");
92     if (div_contain.style.display==\"none\") {
93          div_contain.style.display=\"block\";
94          document.getElementById(\"node-\"+div_name).setAttribute(\"src\",nodem);
95          document.getElementById(\"folder-\"+div_name).setAttribute(\"src\",\"$base_path/images/tree/ftv2folderopen.gif\");
96     } else {
97          div_contain.style.display=\"none\";
98          document.getElementById(\"node-\"+div_name).setAttribute(\"src\",nodep);
99          document.getElementById(\"folder-\"+div_name).setAttribute(\"src\",\"$base_path/images/tree/ftv2folderclosed.gif\");
100     }
101        }
102        </script>
103        <div id=\"1\"><img src=\"$base_path/images/tree/ftv2folderopen.gif\" border=0 align=\"center\">Catégories";
104
105        $categ_id=0;
106        $level=1;
107        $prefix_name="1";
108       
109        for ($i=1; $i<=4; $i++)
110        {
111                $requete="select count(notice_id), categ$i from notices group by categ$i";
112                $resultat=pmb_mysql_query($requete);
113                while (list($n,$c)=pmb_mysql_fetch_row($resultat)) {
114                        $cnt[$c]+=$n;
115                }
116        }
117        gen_div($categ_id,$level,$prefix_name,1,"",$js);
118        echo "</div>";
119}
Note: See TracBrowser for help on using the repository browser.