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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 126 - (show annotations)
Tue Sep 20 15:12:14 2011 UTC (13 years, 4 months ago) by fraynaud
File size: 8975 byte(s)
coorection + servitudes


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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26