[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / exec / mots_edit.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2011 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 include_spip('inc/presentation');
16 include_spip('base/abstract_sql');
17
18 // http://doc.spip.org/@exec_mots_edit_dist
19 function exec_mots_edit_dist()
20 {
21 exec_mots_edit_args(intval(_request('id_mot')),
22 intval(_request('id_groupe')),
23 _request('new'),
24 // Secu un peu superfetatoire car seuls les admin generaux les verront;
25 // mais si un jour on relache les droits, vaut mieux blinder.
26 preg_replace('/\W/','',_request('table')),
27 preg_replace('/\W/','', _request('table_id')),
28 _request('titre'),
29 _request('redirect'),
30 intval(_request('ajouter_id_article')));
31 }
32
33 // attention, ajouter_id_article n'est pas forcement un id d'article
34
35 // http://doc.spip.org/@exec_mots_edit_args
36 function exec_mots_edit_args($id_mot, $id_groupe, $new, $table='', $table_id='', $titre='', $redirect='', $ajouter_id_article='')
37 {
38 global $spip_lang_right, $connect_statut, $les_notes;
39
40 $autoriser_editer = $editer = false;
41 if ($new=='oui')
42 $autoriser_editer = true;
43 if (($new=='oui') OR $autoriser_editer)
44 $editer = true;
45 $ok = false;
46
47 $row = sql_fetsel("*", "spip_mots", "id_mot=$id_mot");
48 if ($row) {
49 $id_mot = $row['id_mot'];
50 $titre_mot = $row['titre'];
51 $descriptif = $row['descriptif'];
52 $texte = $row['texte'];
53 $extra = $row['extra'];
54 $id_groupe = $row['id_groupe'];
55 $onfocus ='';
56 $autoriser_editer = autoriser('modifier', 'mot', $id_mot, null, array('id_groupe' => $id_groupe));
57 if (!_request('edit'))
58 $editer = false;
59 else
60 $editer = $autoriser_editer;
61 $ok = true;
62 }
63 else {
64 $row = sql_countsel('spip_groupes_mots',
65 ($table ? "tables_liees REGEXP '(^|,)$table($|,)'" : '')
66 //($table ? "$table='oui'" : '')
67 );
68
69 if (!$new OR !autoriser('modifier', 'mot', $id_mot, null, array('id_groupe' => $id_groupe)) OR (!$row AND !$table)) {
70 include_spip('inc/minipres');
71 echo minipres(_T('info_mot_sans_groupe'));
72 } else {
73 $id_mot = 0;
74 $descriptif = $texte = '';
75 if (!$row) {
76 // cas pathologique:
77 // creation d'un mot sans groupe de mots cree auparavant
78 // (ne devrait arriver qu'en cas d'appel explicite ou
79 // destruction concomittante des groupes de mots idoines)
80 if ($redirect)
81 $redirect = '&redirect=' . $redirect;
82 if ($titre)
83 $titre = "&titre=".rawurlencode($titre);
84 include_spip('inc/headers');
85 redirige_par_entete(redirige_action_auteur('instituer_groupe_mots', $table, 'mots_edit', "new=$new&table=$table&table_id=$table_id&ajouter_id_article=$ajouter_id_article$titre$redirect", true));
86 }
87 $ok = true;
88 }
89 }
90 if ($ok) {
91 pipeline('exec_init',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>''));
92
93 $commencer_page = charger_fonction('commencer_page', 'inc');
94 $out = $commencer_page("&laquo; ".sinon($titre_mot,_T('texte_nouveau_mot'))." &raquo;", "naviguer", "mots") . debut_gauche('',true);
95
96
97 //////////////////////////////////////////////////////
98 // Boite "voir en ligne"
99 //
100
101 if ($id_mot) {
102 $out .= debut_boite_info(true);
103 $out .= "\n<div style='font-weight: bold; text-align: center' class='verdana1 spip_xx-small'>"
104 . _T('titre_gauche_mots_edit')
105 . "<br /><span class='spip_xx-large'>"
106 . $id_mot
107 . '</span></div>';
108 $out .= voir_en_ligne ('mot', $id_mot, false, 'racine-24.gif', false, false);
109 $out .= fin_boite_info(true);
110
111 // Logos du mot-clef
112 $flag_editable = autoriser('modifier', 'mot', $id_mot, null, array('id_groupe' => $id_groupe));
113 $iconifier = charger_fonction('iconifier', 'inc');
114 $out .= $iconifier('id_mot', $id_mot, 'mots_edit', false, $flag_editable);
115 } else $flag_editable = false;
116
117 //
118 // Afficher les boutons de creation
119 //
120
121 $res ='';
122
123 if ($id_groupe AND autoriser('modifier','groupemots',$id_groupe)) {
124 $res = icone_horizontale(_T('icone_modif_groupe_mots'), generer_url_ecrire("mots_type","id_groupe=$id_groupe"), "groupe-mot-24.gif", "edit.gif", false)
125 . icone_horizontale(_T('icone_creation_mots_cles'), generer_url_ecrire("mots_edit", "new=oui&id_groupe=$id_groupe&redirect=" . generer_url_retour('mots_tous')), "mot-cle-24.gif", "creer.gif", false);
126 }
127
128 $out .= pipeline('affiche_gauche',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>''))
129 . bloc_des_raccourcis($res . icone_horizontale(_T('icone_voir_tous_mots_cles'), generer_url_ecrire("mots_tous",""), "mot-cle-24.gif", "rien.gif", false))
130 . creer_colonne_droite('',true)
131 . pipeline('affiche_droite',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>''))
132 . debut_droite('',true);
133
134
135 // --- Voir le mot ----
136
137 $out .= debut_cadre_relief("mot-cle-24.gif",true,'','','mot-voir',$editer?'none':'');
138 if ($flag_editable)
139 $out .= icone_inline(_T('icone_modifier_mot'), generer_url_ecrire('mots_edit',"id_mot=$id_mot&edit=oui"), "mot-cle-24.gif", "rien.gif",$spip_lang_right,false," onclick=\"$('#mot-editer').show();$('#mot-voir').hide();return false;\"");
140 $out .= gros_titre(sinon($titre_mot,_T('texte_nouveau_mot')),'',false);
141 $out .= "<div class='nettoyeur'></div>";
142
143 $contenu_mot = "";
144
145 if ($descriptif) {
146 $contenu_mot .= "<div style='border: 1px dashed #aaaaaa; ' class='verdana1 spip_small'>"
147 . "<b>" . _T('info_descriptif') . "</b> "
148 . propre($descriptif)
149 . "&nbsp; "
150 . "</div>";
151 }
152
153 if (strlen($texte)>0){
154 $contenu_mot .= "<p class='verdana1 spip_small'>"
155 . propre($texte)
156 . "</p>";
157 }
158
159 if ($les_notes) {
160 $contenu_mot .= debut_cadre_relief('',true)
161 . "<div dir='" . lang_dir() ."' class='arial11'>"
162 . justifier("<b>"._T('info_notes')."&nbsp;:</b> ".$les_notes)
163 . "</div>"
164 . fin_cadre_relief(true);
165 }
166
167 $contexte = array('id'=>$id_mot);
168 // permettre aux plugin de faire des modifs ou des ajouts
169 $contenu_mot = pipeline('afficher_contenu_objet',
170 array(
171 'args'=>array(
172 'type'=>'mot',
173 'id_objet'=>$id_mot,
174 'contexte'=>$contexte
175 ),
176 'data'=> $contenu_mot
177 )
178 );
179 $out .= $contenu_mot;
180
181 if ($id_mot) {
182
183 if ($connect_statut == "0minirezo")
184 $aff_articles = "'prepa','prop','publie','refuse'";
185 else
186 $aff_articles = "'prop','publie'";
187
188 $out .= afficher_objets('rubrique','<b>' . _T('info_rubriques_liees_mot') . '</b>', array("FROM" => 'spip_rubriques AS rubrique LEFT JOIN spip_mots_rubriques AS lien ON lien.id_rubrique=rubrique.id_rubrique', 'WHERE' => "lien.id_mot=$id_mot", 'ORDER BY' => "rubrique.titre"));
189
190 $out .= afficher_objets('article',_T('info_articles_lies_mot'), array('FROM' => "spip_articles AS articles LEFT JOIN spip_mots_articles AS lien ON lien.id_article=articles.id_article", 'WHERE' => "lien.id_mot=$id_mot AND articles.statut IN ($aff_articles)", 'ORDER BY' => "articles.date DESC"));
191
192 $out .= afficher_objets('breve','<b>' . _T('info_breves_liees_mot') . '</b>', array("FROM" => 'spip_breves AS breves LEFT JOIN spip_mots_breves AS lien ON lien.id_breve=breves.id_breve', 'WHERE' => "lien.id_mot=$id_mot", 'ORDER BY' => "breves.date_heure DESC"));
193
194 $out .= afficher_objets('site','<b>' . _T('info_sites_lies_mot') . '</b>', array("FROM" => 'spip_syndic AS syndic LEFT JOIN spip_mots_syndic AS lien ON lien.id_syndic=syndic.id_syndic', 'WHERE' => "lien.id_mot=$id_mot", 'ORDER BY' => "syndic.nom_site DESC"));
195
196 }
197
198 $out .= pipeline('affiche_milieu',array('args'=>array('exec'=>'mots_edit','id_mot'=>$id_mot),'data'=>''))
199 . fin_cadre_relief(true);
200
201 // --- Editer le mot ----
202
203 if ($autoriser_editer){
204 $out .= "<div id='mot-editer'".($editer?"":" class='none'").'>';
205 $contexte = array(
206 'icone_retour'=>icone_inline(_T('icone_retour'),($editer AND $redirect)?rawurldecode($redirect): generer_url_ecrire('mots_edit','id_mot='.$id_mot,false,true), "mot-cle-24.gif", "rien.gif",$GLOBALS['spip_lang_left'],false,($editer AND $redirect)?"":" onclick=\"$('#mot-editer').hide();$('#mot-voir').show();return false;\""),
207 'redirect'=>$redirect?rawurldecode($redirect):generer_url_ecrire('mots_edit','id_mot='.$id_mot,'&',true),
208 'titre'=>sinon($titre_mot,$titre),
209 'new'=>$new == "oui"?$new:$id_mot,
210 'id_groupe'=>$id_groupe,
211 'config_fonc'=>'mots_edit_config',
212 'ajouter_id_article' => $ajouter_id_article,
213 'table'=>$table,
214 'table_id'=>$table_id
215 );
216
217 $out .= recuperer_fond("prive/editer/mot", $contexte);
218 $out .= '</div>';
219
220 }
221
222 echo $out, fin_gauche(), fin_page();
223 }
224 }
225
226 ?>