source: spip-zone/_plugins_/compositions/trunk/formulaires/editer_composition_objet.php @ 57712

Last change on this file since 57712 was 57712, checked in by joseph@…, 8 years ago

Un formulaire de sélection des compositions à la SPIP 3 : plus compact

File size: 3.5 KB
Line 
1<?php
2/*
3 * Plugin Compositions
4 * (c) 2007-2009 Cedric Morin
5 * Distribue sous licence GPL
6 *
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11include_spip('inc/compositions');
12/**
13 * Chargement des donnees du formulaire
14 *
15 * @param string $type
16 * @param int $id
17 * @return array
18 */
19function formulaires_editer_composition_objet_charger($type,$id){
20        $valeurs = array();
21        $table_objet_sql = table_objet_sql($type);
22        $id_table_objet = id_table_objet($type);
23        $valeurs[$id_table_objet] = intval($id);
24
25        $valeurs['editable'] = true;
26        $valeurs['id'] = "$type-$id";
27        $valeurs['id_objet'] = $id;
28        $valeurs['objet'] = $type;
29
30        $row = sql_fetsel('composition,composition_lock',$table_objet_sql,"$id_table_objet=".intval($id));
31        $valeurs['composition'] = $row['composition'];
32        $valeurs['composition_lock'] = $row['composition_lock'];
33       
34        if ($type=='rubrique')
35                $valeurs['composition_branche_lock'] = sql_getfetsel('composition_branche_lock',$table_objet_sql,"$id_table_objet=".intval($id));
36
37        $trouver_table = charger_fonction('trouver_table', 'base');
38        $desc = $trouver_table($table_objet_sql);
39        if (isset($desc['field']['id_rubrique'])) {
40                $_id_rubrique = ($type == 'rubrique') ? 'id_parent' : 'id_rubrique';
41                $id_rubrique = sql_getfetsel($_id_rubrique,$table_objet_sql,"$id_table_objet=".intval($id),'','','','',$serveur);
42                $valeurs['composition_heritee'] = compositions_heriter($type, $id_rubrique);
43                $valeurs['verrou_branche'] = compositions_verrou_branche($id_rubrique);
44        } else {
45                $valeurs['composition_heritee'] = '';
46                $valeurs['verrou_branche'] = false;
47        }
48        $valeurs['composition_verrouillee'] = compositions_verrouiller($type, $id);
49
50        $valeurs['compositions'] = compositions_lister_disponibles($type);
51        $valeurs['_compositions'] = reset($valeurs['compositions']); // on ne regarde qu'un seul type
52        if (is_array($valeurs['_compositions']) AND !isset($valeurs['_compositions'][''])){
53                $valeurs['_compositions'] = array_merge(
54                        array(''=>array('nom'=>_T('compositions:composition_defaut'),'description'=>'','icon'=>'','configuration'=>'')),
55                        $valeurs['_compositions']
56                );
57        }
58       
59        // Si on herite d'une composition
60        // On modifie le tableau des compositions
61        if ($valeurs['composition_heritee'] AND $valeurs['composition_heritee'] != '-') {
62                $compo_defaut = $valeurs['_compositions'][$valeurs['composition_heritee']];
63                $compo_vide = $valeurs['_compositions'][''];
64                unset($valeurs['_compositions'][$valeurs['composition_heritee']]);
65                unset($valeurs['_compositions']['']);
66                $valeurs['_compositions'] = array_merge(
67                        array('' => $compo_defaut,'-' => $compo_vide),
68                        $valeurs['_compositions']
69                );
70        }
71       
72        $valeurs['_hidden'] = "<input type='hidden' name='$id_table_objet' value='$id' />";
73
74        if (!autoriser('styliser',$type,$id))
75                $valeurs['editable'] = false;
76
77        return $valeurs;
78}
79
80/**
81 * Traitement
82 *
83 * @param string $type
84 * @param int $id
85 * @return array
86 */
87function formulaires_editer_composition_objet_traiter($type,$id){
88        $valeurs = array();
89        $table_objet_sql = table_objet_sql($type);
90        $id_table_objet = id_table_objet($type);
91        $update = array();
92
93        if (!is_null($p = _request('composition')))
94                $update['composition'] = $p;
95
96        if (autoriser('webmestre'))
97                $update['composition_lock'] = _request('composition_lock')?1:0;
98               
99        if (autoriser('webmestre') AND $type == 'rubrique')
100                $update['composition_branche_lock'] = _request('composition_branche_lock')?1:0;
101
102        sql_updateq($table_objet_sql,$update,"$id_table_objet=".intval($id));
103
104        // mettre a jour la liste des types de compo en cache
105        compositions_cacher();
106        return array('message_ok'=>'','editable'=>true);
107}
Note: See TracBrowser for help on using the repository browser.