0e1354bf8fb7a9c1e0cbcb43a2b0832576a6da93
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2014 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
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 \***************************************************************************/
13 if (!defined('_ECRIRE_INC_VERSION')) return;
15 // http://doc.spip.org/@balise_FORMULAIRE_ADMIN
16 function balise_FORMULAIRE_ADMIN ($p) {
17 return calculer_balise_dynamique($p,'FORMULAIRE_ADMIN', array());
20 # on ne peut rien dire au moment de l'execution du squelette
22 // http://doc.spip.org/@balise_FORMULAIRE_ADMIN_stat
23 function balise_FORMULAIRE_ADMIN_stat($args, $context_compil) {
27 # les boutons admin sont mis d'autorite si absents
28 # donc une variable statique controle si FORMULAIRE_ADMIN a ete vu.
29 # Toutefois, si c'est le debuger qui appelle,
30 # il peut avoir recopie le code dans ses donnees et il faut le lui refounir.
31 # Pas question de recompiler: ca fait boucler !
32 # Le debuger transmet donc ses donnees, et cette balise y retrouve son petit.
34 // http://doc.spip.org/@balise_FORMULAIRE_ADMIN_dyn
35 function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
38 static $dejafait = false;
40 if (!@$_COOKIE['spip_admin'])
43 if (!is_array($debug)) {
48 if (empty($debug['sourcefile'])) return '';
49 foreach($debug['sourcefile'] as $k => $v) {
50 if (strpos($v,'administration.') !== false)
51 return $debug['resultat'][$k . 'tout'];
57 include_spip('inc/autoriser');
58 include_spip('base/abstract_sql');
63 // Preparer le #ENV des boutons
67 // Pas de "modifier ce..." ? -> donner "acces a l'espace prive"
69 $env['ecrire'] = _DIR_RESTREINT_ABS
;
71 $env['divclass'] = $float;
72 $env['lang'] = admin_lang();
73 $env['calcul'] = (_request('var_mode') ?
'recalcul' : 'calcul');
74 $env['debug'] = ((defined('_VAR_PREVIEW') AND _VAR_PREVIEW
) ?
"" : admin_debug());
75 $env['analyser'] = (!$env['debug'] AND !$GLOBALS['xhtml']) ?
'' : admin_valider();
76 $env['inclure'] = ((defined('_VAR_INCLURE') AND _VAR_INCLURE
)?
'inclure':'');
79 $env['use_cache'] = ' *';
81 if (isset($debug['validation'])) {
82 $env['xhtml_error'] = $debug['validation'];
85 $env['_pipelines']['formulaire_admin']=array();
87 return array('formulaires/administration', 0, $env);
90 // Afficher le bouton 'Modifier ce...'
91 // s'il y a un $id_XXX defini globalement par spip_register_globals
92 // Attention a l'ordre dans la boucle:
93 // on ne veut pas la rubrique si un autre bouton est possible
95 // http://doc.spip.org/@admin_objet
96 function admin_objet()
98 include_spip('inc/urls');
101 $trouver_table = charger_fonction('trouver_table','base');
102 $objets = urls_liste_objets(false);
103 $objets = array_diff($objets, array('rubrique'));
104 array_unshift($objets, 'rubrique');
105 foreach ($objets as $obj) {
107 if ($type==objet_type($type,false)
108 AND $_id_type = id_table_objet($type)
109 AND isset($GLOBALS['contexte'][$_id_type])
110 AND $id = $GLOBALS['contexte'][$_id_type]
112 AND $id=intval($id)) {
113 $id = sql_getfetsel($_id_type, table_objet_sql($type), "$_id_type=".intval($id));
115 $env[$_id_type] = $id;
116 $env['objet'] = $type;
117 $env['id_objet'] = $id;
119 str_replace('&', '&', generer_url_entite($id,$obj,'','',false));
120 if ($desc = $trouver_table(table_objet_sql($type))
121 AND isset($desc['field']['id_rubrique'])
122 AND $type != 'rubrique') {
123 unset($env['id_rubrique']);
124 unset($env['voir_rubrique']);
125 if (admin_preview($type, $id, $desc))
126 $env['preview']=parametre_url(self(),'var_mode','preview','&');
135 // http://doc.spip.org/@admin_preview
136 function admin_preview($type, $id, $desc=null)
138 if (defined('_VAR_PREVIEW') AND _VAR_PREVIEW
) return '';
141 $trouver_table = charger_fonction('trouver_table','base');
142 $desc = $trouver_table(table_objet_sql($type));
144 if (!$desc OR !isset($desc['field']['statut']))
147 include_spip('inc/autoriser');
148 if (!autoriser('previsualiser')) return '';
150 $notpub = sql_in("statut", array('prop', 'prive'));
152 if ($type == 'article' AND $GLOBALS['meta']['post_dates'] != 'oui')
153 $notpub .= " OR (statut='publie' AND date>".sql_quote(date('Y-m-d H:i:s')).")";
155 return sql_fetsel('1', table_objet_sql($type), id_table_objet($type)."=".$id." AND ($notpub)");
159 // Regler les boutons dans la langue de l'admin (sinon tant pis)
162 // http://doc.spip.org/@admin_lang
163 function admin_lang()
165 $alang = sql_getfetsel('lang', 'spip_auteurs', "login=" . sql_quote(preg_replace(',^@,','',@$_COOKIE['spip_admin'])));
166 if (!$alang) return '';
168 $l = lang_select($alang);
169 $alang = $GLOBALS['spip_lang'];
170 if ($l) lang_select();
174 // http://doc.spip.org/@admin_valider
175 function admin_valider()
179 return ((@$xhtml !== 'true') ?
180 (parametre_url(self(), 'var_mode', 'debug', '&')
181 .'&var_mode_affiche=validation') :
182 ('http://validator.w3.org/check?uri='
183 . rawurlencode("http://" . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
186 // http://doc.spip.org/@admin_debug
187 function admin_debug()
190 (isset($GLOBALS['forcer_debug']) AND $GLOBALS['forcer_debug'])
191 OR (isset($GLOBALS['bouton_admin_debug']) AND $GLOBALS['bouton_admin_debug'])
193 defined('_VAR_MODE') AND _VAR_MODE
== 'debug'
194 AND $_COOKIE['spip_debug']
196 ) AND autoriser('debug')
198 ?
parametre_url(self(),'var_mode', 'debug', '&'): '';