/[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 88 - (show 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 <?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