source: spip-zone/_plugins_/assoc/inc/assoc_panel.php @ 30362

Last change on this file since 30362 was 30362, checked in by sourrisseau@…, 12 years ago
File size: 7.9 KB
Line 
1<?php
2
3// suppression d'une association
4function delete_association(){
5        $cle = $_POST['cle'];
6        $id = $_POST['id'];
7        spip_query("DELETE FROM `association` WHERE `cle` = $cle and `id`=$id");
8}
9
10
11/*
12 * Modele pour les diferents type de panneaux
13 * 
14 */
15abstract class assoc_panel{
16
17        private $nom;
18        private $les_widgets;   
19        private $css_jss;
20        private $autre_dir="";
21        private $autre_js="";
22        private $autre_css="";
23
24       
25        /*
26         * Le constructeur est chargé de construire le html 
27         * plus exactement il  recupere les 'widget'
28         * chargé de donnee des possibilite de recherche par exemple
29         */
30        function __construct($nom="",$dir="",$js="",$css=""){
31                $this->nom  = $nom;
32                $this->autre_dir  = $dir;
33                $this->autre_js  = $js;
34                $this->autre_css  = $css;
35        }
36       
37        function get_panel(){
38                // On recupere les widgets
39                $this->les_widgets  = $this->widgets();
40                // On recupere la/les css et le(s) js
41                $this->css_jss =  $this->css_js();
42                // On construit le panel
43                return  $this->do_panel();
44        }
45       
46       
47        // on va recuperer la css en chargeant le dossier
48        // css approprie en l'englobant dans des balises styles
49        function css_js(){
50               
51                $nom = $this->nom; 
52                $rep = 'assoc';
53                if ($this->autre_dir !="") $rep = $this->autre_dir;
54               
55               
56                $fichier = dirname (__FILE__)."/../../../plugins/assoc/css/assoc.css";
57                $open = fopen($fichier, "r");
58                $retour = fread($open, filesize($fichier) );
59                $css =  "<style id='style_assoc_panel'>".$retour."</style>";
60                fclose($open);
61               
62                /* On test si on demande un autre js */
63                $file = $nom;
64                if ($this->autre_css !="") $file = $this->autre_css;
65                $fichier = dirname (__FILE__)."/../../../plugins/$rep/css/$file.css";
66                if(file_exists($fichier)){
67                        $open = fopen($fichier, "r");
68                        $retour .= fread($open, filesize($fichier) );
69                        fclose($open);
70                        $css .=  "<style id='style_assoc_panel'>".$retour."</style>";
71                }
72               
73                /* On test si on demande un autre js */
74                $file = $nom;
75                if ($this->autre_js !="") $file = $this->autre_js;
76                $fichier = dirname (__FILE__)."/../../../plugins/$rep/js/$file.js";
77                if(file_exists($fichier)){
78                        $open = fopen($fichier, "r");
79                        $retour = fread($open, filesize($fichier) );
80                        fclose($open);
81                        $js =  "<script id='js_assoc_panel'>".$retour."</script>";
82                }
83                return $css.$js;
84               
85        }
86       
87        // fonction qui va construire le panneau
88        // il va egalement recuperer les widgets
89        function do_panel(){
90                // on recupêre les style globaux
91                $css_js = $this->css_jss;
92               
93                $zone = $this->zone;
94                $recherche = $this->les_widgets['panel_recherche'];
95                $assoc = $this->les_widgets['panel_assoc'];
96               
97                // On va recuperer la taille de chaque element
98                $a = $this->les_widgets['taille'];
99                $taille = explode(",",$a);
100                $large = $taille[0];
101                $haut = $taille[1];
102               
103                $haut_insert = $taille[3];
104               
105                // la recherche
106                $large_recherche = $taille[2];
107                $haut_recherche = $haut-16-$haut_insert;
108               
109                // les resultats
110                $large_resultat = 100 - $large_recherche;
111                $haut_resultat = $haut - 16 - $haut_insert;
112               
113                $style = '
114                        <style type="text/css">
115                                        #panel_conteneur {width : '.$large.'px ; height : '.$haut.'px }
116                                        #panel_recherche { width : '.$large_recherche.'% ; height : '.$haut_recherche.'px}
117                                        #panel_resultat {   width : '.$large_resultat.'% ; height : '.$haut_resultat.'px ; }           
118                                        #panel_assoc {  height : '.$haut_insert.'px ;  }
119                       
120                        </style>
121                ';
122       
123               
124                $retour ="
125                                <div id='panel_conteneur'>
126                                        <div id='panel_relative'>
127                                                <div id='panel_haut' class='pb' onclick='class_assoc.close()'><span id='fermer_panel' />Fermer</div>
128                                                <div id='panel_recherche' class='pb'>$recherche</div>
129                                                <div id='panel_resultat' class='pb'></div>
130                                                <div id='panel_assoc' class='pb'>$assoc</div>
131                                        </div>
132                                        $css_js
133                                        $style
134                                </div>
135                                ";
136
137                return $retour;
138               
139        }
140       
141        function get_pagination(){
142                return "<p id='pagination'>
143                                        <span class='btn-nav' id='retour5' onclick='class_assoc.pagination(-5)'>  </span>
144                                        <span class='btn-nav' id='retour1' onclick='class_assoc.pagination(-1)'></span>
145                                        <span>page</span>
146                                        <span class='btn-nav' id='avance1' onclick='class_assoc.pagination(1)'></span>
147                                        <span class='btn-nav' id='avance5' onclick='class_assoc.pagination(5)'> </span>
148                                </p>";
149        }
150       
151        // insertion d'une association
152        function add(){
153               
154                include_spip("inc/filtres");
155                               
156                // on securise certaine donne avant l'insertion en base
157                $titre = "";
158                $descriptif = "";
159                if (isset($_POST['titre']))$titre = trim(corriger_caracteres($_POST['titre'])); 
160                if (isset($_POST['descriptif']))$descriptif = trim(corriger_caracteres($_POST['descriptif'])); 
161                if (strlen($titre)>150)$titre ="";
162                if (strlen($descriptif)>255)$descriptif ="";
163               
164       
165                // on recupere les autres donnees
166                $id = $_POST['id'];
167                $id_lien = $_POST['id_lien'];
168                $type_id = trim(corriger_caracteres($_POST['type_id']));
169                $type_lien = trim(corriger_caracteres($_POST['type_lien']));
170                if (strlen($type_id)>20)return;
171                if (strlen($type_lien)>20)return;
172               
173                // on test que le lien n'existe pas deja
174                // prevoir les tests ci lien deja existant
175                $nb = sql_select("'cle'", "association", "id=$id and id_lien=$id_lien and type_id='$type_id' and type_lien='$type_lien'");
176                if (sql_count($nb) >=1) return;
177               
178                       
179                // on envoi la requete
180                //      id      id_lien         type_id         type_lien       titre   descriptif      type
181                $tab = array("id"=>$id, "id_lien"=> $id_lien, "type_id"=> $type_id,     "type_lien"=>$type_lien, 
182                        "titre"=>$titre, "descriptif"=> $descriptif);
183
184                sql_insertq("association",$tab);
185               
186        }
187       
188       
189        // recherche
190        abstract function find();
191       
192       
193        // On va passer nos sympathique widget
194        abstract function widgets();
195}
196
197
198class panel_article extends  assoc_panel {
199       
200        public function find(){
201                /* On va recuperer l'ensemble des parametres venant de la recherche */
202                $debut = $_POST["debut"];
203                $fin = $_POST["fin"];
204                $page = $_POST["page"] * 10; 
205                $rub = $_POST["rubrique"];
206
207               
208                $tab = array ("rubrique" => $rub , "debut" => $debut ,"fin" => $fin ,"page" => $page );
209                $xml = new SimpleXMLElement(recuperer_fond("fonds/recherche/article",$tab));
210
211                // on recupere le nbre d'article
212                // s'il n'y en a pas on affiche pas de resultat
213                $taille = count($xml->article);
214               
215                if ($taille==0) return "Aucun résultat pour votre recherche d'article ";
216
217                $pagin = $this->get_pagination();
218                $pagin = str_replace("page",$_POST["page"],$pagin);
219               
220                $retour = "$pagin<table><tr><td width='100'><strong>Date</strong></td><td width='180'><strong>Titre</strong></td><td width='190'><strong>texte</strong></td><td width='90'><strong>Rub</strong></td><td width='60'></td></tr>";
221
222                for($i=0; $i <$taille;$i++){
223                        $id = $xml->article[$i]->id;
224                       
225                        $retour .= "<tr>";
226                        $retour .= "<td>".$xml->article[$i]->date."</td>";
227                        $retour .= "<td class='titre' value='$id'>".$xml->article[$i]->titre."</td>";
228                        $retour .= "<td>".$xml->article[$i]->texte."</td>";
229                        $retour .= "<td>".$xml->article[$i]->rubrique."</td>";
230                        $retour .= "<td class='preselect' onclick='class_assoc.associer($id)'>associer</td>";
231                        $retour .= "</tr>";
232                }
233                echo $retour."</table>";
234        }
235
236       
237        public function widgets(){
238                $tab["panel_recherche"] = recuperer_fond("fonds/panel_recherche/panel_article");
239                $tab["panel_assoc"] = "<fieldset>
240                                                                        <legend>Associer</legend>
241                                                                        <p id='titre_art'></p>
242                                                                        <input type='button' value='Associer' onclick='class_assoc.associer()' />
243                                                                </fieldset>
244                                                        ";
245                // Pour la taille :
246                // largeur du panneau global en px
247                // hauteur du panneau global en px
248                // largeur de la zone de recherche en %
249                // hauteur de la zone de insertion en px
250                $tab["taille"] = '950,550,23,60';
251                return $tab;
252        }
253       
254}
255
256
257class panel_rubrique extends  assoc_panel {
258       
259        public function find(){
260       
261        }
262
263        public function widgets(){
264                $tab["panel_recherche"] = recuperer_fond("fonds/panel_recherche/panel_rubrique");
265                $tab["panel_assoc"] = "";
266                $tab["taille"] = '400,300,100,0';
267                return $tab;
268        }
269       
270}
271
272
273?>
Note: See TracBrowser for help on using the repository browser.