source: spip-zone/_plugins_/forms/forms_et_tables_2_5/inc/forms_lier_donnees.php @ 65967

Last change on this file since 65967 was 65967, checked in by sblanc@…, 9 years ago
File size: 7.4 KB
Line 
1<?php
2/*
3 * forms
4 * Gestion de formulaires editables dynamiques
5 *
6 * Auteurs :
7 * Antoine Pitrou
8 * Cedric Morin
9 * Renato
10 * © 2005,2006 - Distribue sous licence GNU/GPL
11 *
12 */
13
14include_spip("inc/presentation");
15include_spip("inc/layer");
16include_spip("base/forms");
17include_spip("inc/forms");
18
19function inc_forms_lier_donnees($type, $id, $script, $deplie=false, $type_table = NULL){
20  global $spip_lang_left, $spip_lang_right, $options;
21        global $connect_statut, $options,$connect_id_auteur, $couleur_claire ;
22
23        if ($type_table===NULL)
24                $type_table = forms_type_table_lier($type, $id);
25        $prefixi18n = forms_prefixi18n($type_table);
26        $lesdonnees = array();
27        //
28        // Afficher les donnees liees, rangees par tables
29        //
30        list($s,$les_donnees, $nombre_donnees) = Forms_formulaire_objet_afficher_donnees($type,$id,$script,$type_table);
31        $form .= Forms_formulaire_objet_chercher_donnee($type,$id,$les_donnees, $script, $type_table);
32       
33        $out = "";
34        $out .= "<a name='tables'></a>";
35        if (_request('cherche_donnee') || _request('ajouter') || $deplie){
36                //adaptation SPIP 2
37                //$bouton = bouton_block_visible("tables_$type_$id");
38                $bouton = bouton_block_depliable(true,"tables_$type_$id");
39                //$debut_block = 'debut_block_visible';
40                $debut_block = 'debut_block_depliable';
41        }
42        else{
43                //adpatation SPIP2
44                //$bouton = bouton_block_invisible("tables_$type_$id");
45                $bouton = bouton_block_depliable(false,"tables_$type_$id");
46                //$debut_block = 'debut_block_invisible';
47                $debut_block = 'bouton_block_depliable';
48        }
49
50        $icone = find_in_path("img_pack/$type_table-24.gif");
51        if (!$icone)
52                $icone = find_in_path("img_pack/$type_table-24.png");
53        if (!$icone)
54                $icone = find_in_path("img_pack/table-24.gif");
55        $out .= debut_cadre_enfonce($icone, true, "", $bouton._T("$prefixi18n:type_des_tables")."($nombre_donnees)");
56
57        $out .= $s;
58       
59        $out .= $debut_block(false,"tables_$type_$id");
60       
61        //
62        // Afficher le formulaire de recherche des donnees des tables
63        //
64
65        $out .= $form;
66        $out .= fin_block(true);
67       
68        $out .= fin_cadre_enfonce(true);
69        return _request('var_ajaxcharset')?$out:("<div id='forms_lier_donnees-$id'>".$out."</div>");
70}
71
72function Forms_formulaire_objet_chercher_donnee($type,$id,$les_donnees, $script, $type_table){
73  global $spip_lang_right,$spip_lang_left,$couleur_claire,$couleur_foncee;
74        $out = "";
75        $recherche = _request('cherche_donnee');
76        $iid = intval($id);
77       
78        if (!include_spip("inc/securiser_action"))
79                include_spip("inc/actions");
80        $redirect = ancre_url(generer_url_ecrire($script,"type=$type&id_$type=$iid"),'tables');
81        if ($type == 'donnee'){
82                $redirect = parametre_url($redirect,'id_form',_request('id_form'));
83                $redirect = parametre_url($redirect,'retour',urlencode(_request('retour')));
84        }
85        $action = generer_action_auteur("forms_lier_donnees","$id,$type,ajouter");
86       
87        $out .= "<form action='$action' method='post' class='ajaxAction' >";
88        $out .= form_hidden($action);
89        $out .= "<input type='hidden' name='redirect' value='$redirect' />";
90        $out .= "<input type='hidden' name='idtarget' value='forms_lier_donnees-$id' />";
91        $out .= "<input type='hidden' name='redirectajax' value='".generer_url_ecrire('forms_lier_donnees',"type=$type&id_$type=$id")."' />";
92        $out .= "<div style='text-align:$spip_lang_left;width:100%;'>";
93        $out .= "<input id ='autocompleteMe' type='text' name='cherche_donnee' value='$recherche' class='forml' style='width:90%;' />";
94
95        if ($type == 'donnee')
96                $les_donnees .= (strlen($les_donnees)?",":"").$iid;
97        $out .= Forms_boite_selection_donnees($recherche?$recherche:((_request('ajouter')!==NULL)?"":$recherche),$les_donnees, $type, $type_table);
98       
99        $script_rech = generer_url_ecrire("recherche_donnees","type=$type&id_$type=$id",true);
100        $out .= "<input type='hidden' name='autocompleteUrl' value='$script_rech' />";
101
102        $out .= "<style type='text/css' media='all'>
103.autocompleter
104{
105        border: 1px solid $couleur_foncee;
106        width: 350px;
107        background-color: $couleur_claire;
108}
109.autocompleter ul li
110{
111        padding: 2px 10px;
112        white-space: nowrap;
113        font-size: 11px;
114}
115.selectAutocompleter
116{
117        background-color: $couleur_foncee;
118}</style>";
119       
120        $out .= "</div>";
121        $out .= "<div class='spip_bouton' style='text-align:$spip_lang_right'>";
122        $out .= "<input type='submit' name='ajouter' value='"._T('bouton_ajouter')."' />";
123        $out .= "</div>";
124        $out .= "</form>";
125        return $out;
126}
127
128function Forms_formulaire_objet_afficher_donnees($type,$id, $script, $type_table='table'){
129        return Forms_afficher_liste_donnees_liees(
130                $type, 
131                $id, 
132                strncmp($type,"donnee",6)==0?"donnee_liee":"donnee",
133                $type_table,
134                'forms_lier_donnees', 
135                "forms_lier_donnees-$id", 
136                "type=$type&id_$type=$id",
137                self());
138}
139
140function Forms_boite_selection_donnees($recherche, $les_donnees, $type, $type_table){
141        $out = "";
142        $liste_res = Forms_liste_recherche_donnees($recherche,$les_donnees,$type,$type_table);
143        if (count($liste_res)){
144                $nb_ligne = 0;
145                foreach($liste_res as $titre=>$donnees){
146                        $out .= "<option value=''>$titre</option>";
147                        foreach($donnees as $id_donnee=>$champs){
148                                $nb_ligne++;
149                                $out .= "<option value='$id_donnee'>&nbsp;&nbsp;&nbsp;";
150                                $out .= implode (", ",$champs);
151                                $out .= "</option>";
152                        }
153                }
154                $nb_ligne = min(50,max(10,round($nb_ligne/4)));
155                $out = "<select name='id_donnee_liee[]' multiple='multiple' class='fondl' style='width:100%' size='$nb_ligne'>"
156                  .$out .= "</select>";
157        }
158        $out .= "<input id='_id_donnee_liee' type='hidden' name='_id_donnee_liee' value='' />";
159        return $out;
160}
161
162function Forms_liste_recherche_donnees($recherche,$les_donnees,$type,$type_table,$max_items=-1){
163        if (strncmp($type,'donnees',6)==0)
164                $linkable = false;
165        else   
166                $linkable = true;
167        $table = array();
168        if ($recherche===NULL && $max_items==-1)
169                $max_items = 200;
170        //if ($recherche!==NULL){
171                include_spip('base/abstract_sql');
172                $in = calcul_mysql_in('d.id_donnee',$les_donnees,'NOT');
173                $limit = "";
174                if ($max_items>0)
175                        $limit = "LIMIT 0,".intval($max_items);
176                if (!strlen($recherche)){
177                        $res = spip_query($r="SELECT d.id_donnee FROM spip_forms_donnees AS d
178                          JOIN spip_forms AS f ON f.id_form=d.id_form
179                          WHERE d.statut!='poubelle' AND f.type_form="._q($type_table)
180                          . ($linkable?" AND f.linkable='oui'":"")
181                          . " AND $in GROUP BY d.id_donnee ORDER BY f.id_form,d.id_donnee $limit");
182                }
183                else {
184                        $res = spip_query($s = "SELECT c.id_donnee FROM spip_forms_donnees_champs AS c
185                        JOIN spip_forms_donnees AS d ON d.id_donnee = c.id_donnee
186                        JOIN spip_forms AS f ON d.id_form = f.id_form
187                        WHERE d.statut!='poubelle' AND f.type_form="._q($type_table)
188                        . ($linkable?" AND f.linkable='oui'":"")
189                        ." AND $in AND valeur LIKE "._q("$recherche%")." GROUP BY c.id_donnee ORDER BY f.id_form,d.id_donnee $limit");
190                        //adapation SPIP2
191                        //if (spip_num_rows($res)<10){
192                        if (sql_count($res)<10){
193                                $res = spip_query($s = "SELECT c.id_donnee FROM spip_forms_donnees_champs AS c
194                                JOIN spip_forms_donnees AS d ON d.id_donnee = c.id_donnee
195                                JOIN spip_forms AS f ON d.id_form = f.id_form
196                                WHERE d.statut!='poubelle' AND f.type_form="
197                                ._q($type_table)
198                                . ($linkable?" AND f.linkable='oui'":"")
199                                ." AND $in AND valeur LIKE "._q("%$recherche%")." GROUP BY c.id_donnee ORDER BY f.id_form,d.id_donnee $limit");
200                        }
201                }
202                while ($row = spip_fetch_array($res)){
203                        list($id_form,$titreform,$type_form,$t) = Forms_liste_decrit_donnee($row['id_donnee'],true, $linkable);
204                        if (!count($t))
205                                list($id_form,$titreform,$type_form,$t) = Forms_liste_decrit_donnee($row['id_donnee'],false, $linkable);
206                        if (count($t))
207                                $table[$titreform][$row['id_donnee']]=$t;
208                }
209        //}
210        return $table;
211}
212
213?>
Note: See TracBrowser for help on using the repository browser.