/[openfoncier]/branches/3.1.0-arles/app/om_widget.class.php
ViewVC logotype

Annotation of /branches/3.1.0-arles/app/om_widget.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 126 - (hide annotations)
Tue Sep 20 15:12:14 2011 UTC (13 years, 4 months ago) by fraynaud
Original Path: trunk/app/om_widget.class.php
File size: 8975 byte(s)
coorection + servitudes


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 fraynaud 126 $countHrefColumns=0;
34 fraynaud 88 //
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