/[openfoncier]/trunk/app/om_widget.class.php
ViewVC logotype

Annotation of /trunk/app/om_widget.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 88 - (hide annotations)
Thu Aug 25 09:59:07 2011 UTC (13 years, 5 months ago) by fraynaud
File size: 8946 byte(s)
Réorganisation du dossier spécifique de l'application

1 fraynaud 88 <?php
2     /**
3     * Ce fichier permet de declarer la classe table.
4     *
5     * @package openmairie
6     * @link http://www.openmairie.org/
7     * @version SVN : $Id$
8     */
9    
10     /**
11     *
12     */
13     require_once PATH_OPENMAIRIE."om_table.class.php";
14     /**
15     * Cette classe permet de 'tabler' les champs suivant une requete
16     */
17     class widget extends table {
18    
19     /**
20     *
21     *
22     * @param array $params
23     * @param array $href
24     * @param mixed $db
25     * @param string $style Prefixe de la classe CSS a utiliser
26     * @param boolean $onglet
27     * @return void
28     */
29     function display($params = array(), $href = array(), $db = NULL, $class = "tab", $onglet = false) {
30    
31     //
32     $this->db = $db;
33     //
34     $this->setParams($params);
35     // Construction de la requete
36     $this->composeQuery();
37    
38     // Calcul du nombre total de resultats de la requete
39     $nbligne = $db->getOne($this->sqlC);
40    
41     // Calcul du nombre total de resultats different si on detecte un
42     // group by dans la requete
43     if (preg_match("/group by/i", $this->tri) == 1) {
44     $res1 = $db->query($this->sqlG);
45     $nbligne = $res1->numRows();
46     }
47    
48     // Execution de la requete a partir de l'enregistrement $premier avec
49     // la limite $this->serie
50     $res = $db->limitquery($this->sql, $this->getParam("premier"), $this->serie);
51    
52     // Verification d'erreur sur le resultat de la requete
53     if (database::isError($res)) {
54    
55     // Appel de la methode de gestion des erreurs
56     echo "<pre>";
57     echo $res->getDebugInfo()."\n".$res->getMessage();
58     echo "</pre>";
59     echo "</div></div>";
60     die();
61    
62     } else {
63    
64     // Recuperation des infos sur la table
65     // ( oracle: recuperation immediate (en dynamique) )
66     $info = $this->getColumnsName($res);
67    
68     // Affichage de la table
69     echo "<!-- tab-tab -->\n";
70     echo "<table class=\"".$class."-tab\">\n";
71    
72     // Affichage de la ligne d'entete du tableau
73     // false car tab non dynamique (pas d'onglet)
74     $this->displayHeader($href, $info, $class, $onglet);
75    
76     // Calcul du nombre de colonnes
77     $nbchamp = count($info);
78    
79     // Gestion d'une classe css differente une ligne sur deux
80     $odd = 0;
81    
82     // Affichage des lignes de tableaux
83     echo "\t<!-- tab-data -->\n";
84    
85     // Si aucun resultat, on affiche une ligne avec un message
86     // indiquant qu'il n'y a aucun enregistrement
87     if ($nbligne == 0) {
88    
89     echo "\t<tr class=\"".$class."-data empty\">\n";
90     echo "<td colspan=\"".(count($href)+$nbchamp)."\">";
91     echo _("Aucun enregistrement.");
92     echo "</td>";
93     echo "\t</tr>\n";
94    
95     }
96    
97     //$countHrefColumns = $this->countHrefColumns($href);
98    
99     // Boucle sur les resultats de la requete
100     while ($row =& $res->fetchRow()) {
101     // Gestion des options
102     $option_style = "";
103     $option_href = false;
104     foreach($this->options as $option) {
105     if ($option["type"] == "condition") {
106     foreach($option["case"] as $case) {
107     if (isset($row[$this->getKeyForColumnName($option["field"])])
108     and in_array($row[$this->getKeyForColumnName($option["field"])], $case["values"])) {
109     $option_style .= (isset($case["style"]) ? " ".$case["style"] : "");
110     if (isset($case["href"])) {
111     $option_href = $case["href"];
112     }
113     }
114     }
115     }
116     }
117    
118     //
119     $links = $href;
120     if ($option_href != false) {
121     $links = $option_href;
122     }
123    
124     // Affichage d'une ligne de tableau
125     echo "\t<tr";
126     echo " class=\"";
127     echo $class."-data";
128     echo $option_style;
129     echo " ".($odd % 2 == 0 ? "odd" : "even");
130     echo "\">\n";
131    
132     // Gestion d'une classe css differente une ligne sur deux
133     $odd += 1;
134    
135     //
136     if ($countHrefColumns != 0) {
137     echo "\t\t<td class=\"icons\">";
138     echo "&nbsp;";
139     }
140    
141     // Affichage des liens en debut de ligne
142     foreach ($links as $key => $elem) {
143    
144     // Les liens a afficher en debut de tableau sont les
145     // valeurs href[2] a [n] donc > 1
146     if ($key > 0
147     and $links[$key]['lien'] != ""
148     and $links[$key]['lien'] != "#"
149     and $links[$key]['lib'] != "") {
150    
151     //
152     echo "<a ";
153     if ($onglet == false or $key > 2) {
154     echo "href=\"".$links[$key]['lien'].urlencode($row[0]).$links[$key]['id']."\"";
155     } else {
156     echo "href=\"";
157     echo "#";
158     echo "\" ";
159     echo " onclick=\"ajaxIt('".$this->getParam("obj")."','";
160     echo $links[$key]['lien'].urlencode($row[0]).$links[$key]['id'];
161     echo "');\"";
162     }
163     echo ">";
164     echo $links[$key]['lib'];
165     echo "</a>";
166     echo "&nbsp;";
167    
168     }
169    
170     }
171    
172     //
173     if ($countHrefColumns != 0) {
174     echo "</td>\n";
175     }
176    
177     // Pour chaque colonne du tableau
178     foreach ($row as $key => $elem) {
179    
180     // Affichage de la cellule sans lien
181     echo "\t\t<td ";
182     echo "class=\"col-".$key."";
183     if ($key == 0) {
184     echo " firstcol";
185     }
186     if ($key == count($row)-1) {
187     echo " lastcol";
188     }
189     if (is_numeric($elem)) {
190     echo " right";
191     }
192     if (preg_match("/@/", $elem)) {
193     echo " left";
194     }
195     echo "\"";
196     echo ">";
197    
198     // Affichage d'un lien mailto si on detecte un @
199     if (preg_match("/@/", $elem)) {
200     echo "<a href='mailto:".$elem."' ";
201     echo "title=\""._("Envoyer un mail a cette adresse")."\">";
202     echo "<span class=\"ui-icon ui-icon-mail-closed\"></span>";
203     echo "</a>";
204     }
205    
206     //
207     echo $elem;
208     echo "</td>\n";
209    
210     }
211    
212    
213    
214     // Fermeture de la balise ligne de tableau
215     echo "\t</tr>\n";
216    
217     }
218    
219     // Fermeture de la balise table
220     echo "</table>\n";
221    
222     // Libere le resultat de la requete
223     $res->free();
224    
225     }
226    
227    
228     }
229    
230     /**
231     *
232     *
233     * @param array $href
234     * @param array $info
235     * @param string $style Prefixe de la classe CSS a utiliser
236     * @param boolean $onglet
237     * @return void
238     */
239     function displayHeader($href, $info, $class = "tab", $onglet = false) {
240    
241     //
242     echo "\t<!-- tab-head -->\n";
243     // Ouverture de la ligne
244     echo "\t<tr class=\"ui-tabs-nav ui-accordion ui-state-default ".$class."-title\">\n";
245     // Ouverture de la 1ERE cellule
246    
247     // Nom des champs en entete de colonne
248     foreach ($info as $key => $elem) {
249     echo "\t\t<th class=\"title\">";
250     echo ucwords($elem['name']);
251     echo "</th>\n";
252     }
253     echo "\t</tr>\n";
254    
255     }
256     }
257    
258     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26