source: spip-zone/_plugins_/couteau_suisse/cout_pipelines.php @ 72059

Last change on this file since 72059 was 72059, checked in by patfr@…, 7 years ago

Déménagement de l'icone du Couteau Suisse

File size: 10.9 KB
Line 
1<?php
2
3if(!defined("_ECRIRE_INC_VERSION")) return;
4
5// attention, ici il se peut que le plugin ne soit pas initialise (cas des .js/.css par exemple)
6if(defined('_LOG_CS')) cs_log("inclusion de cout_pipelines.php");
7
8// fonction d'erreur indispensable a tous les pipelines
9function cs_deferr($f) {
10        spip_log(_L("Pipeline CS : fonction '$f' non definie !"));
11}
12
13/*********
14 * PRIVE *
15 *********/
16
17// ajout d'un onglet sur la page de configuration de SPIP<3
18function couteau_suisse_ajouter_onglets($flux){
19        include_spip('inc/autoriser');
20        $arg = $flux['args']=='configuration' || $flux['args']=='plugins';
21        // si on est admin...
22        if($arg && autoriser('configurer', 'cs'))
23                $flux['data']['couteau_suisse']= new Bouton(cs_icone(24), 'couteau:titre', generer_url_ecrire('admin_couteau_suisse'));
24        return $flux;
25}
26
27function eval_metas_pipelines(&$flux, $pipe){
28        global $cs_metas_pipelines;
29        if(isset($cs_metas_pipelines[$pipe])) eval($cs_metas_pipelines[$pipe]);
30        return $flux;
31}
32function couteau_suisse_affiche_gauche($flux){
33        return eval_metas_pipelines($flux, 'affiche_gauche');
34}
35function couteau_suisse_affiche_droite($flux){
36        return eval_metas_pipelines($flux, 'affiche_droite');
37}
38function couteau_suisse_affiche_milieu($flux){
39        return eval_metas_pipelines($flux, 'affiche_milieu');
40}
41function couteau_suisse_boite_infos($flux){
42        return eval_metas_pipelines($flux, 'boite_infos');
43}
44function couteau_suisse_pre_boucle($flux){
45        return eval_metas_pipelines($flux, 'pre_boucle');
46}
47
48function couteau_suisse_header_prive($flux_){
49        global $cs_metas_pipelines;
50        $flux = '';
51        if(isset($cs_metas_pipelines['header_prive'])) eval($cs_metas_pipelines['header_prive']);
52        cs_compile_header($flux,'css', '_prive', false); cs_compile_header($flux, 'js', '_prive');
53        return $flux_ . $flux;
54}
55
56
57/**********
58 * PUBLIC *
59 **********/
60
61function couteau_suisse_insert_head_css($flux_ = '', $prive = false){
62        static $done = false;
63        if($done) return $flux_;
64        $done = true;
65        global $cs_metas_pipelines;
66        $flux = '';
67        if(isset($cs_metas_pipelines['insert_head_css'])) eval($cs_metas_pipelines['insert_head_css']);
68        cs_compile_header($flux, 'css');
69        return $flux_ . $flux;
70}
71
72function couteau_suisse_insert_head($flux_){
73        global $cs_metas_pipelines;
74        $flux = '';
75        if(isset($cs_metas_pipelines['insert_head'])) eval($cs_metas_pipelines['insert_head']);
76        cs_compile_header($flux, 'js');
77        return $flux_ 
78                . couteau_suisse_insert_head_css() // en cas d'absence de balise #INSERT_HEAD_CSS
79                . $flux;
80}
81
82function couteau_suisse_affichage_final($flux){
83        eval_metas_pipelines($flux, 'affichage_final');
84        return cs_nettoie($flux);
85}
86
87function couteau_suisse_recuperer_fond($flux){
88        $fond = &$flux['args']['fond']; $texte = &$flux['data']['texte'];
89        eval_metas_pipelines($flux, 'recuperer_fond');
90        cs_nettoie($texte);
91        return $flux;
92}
93
94/********
95 * TYPO *
96 ********/
97
98function couteau_suisse_nettoyer_raccourcis_typo($flux){
99        return eval_metas_pipelines($flux, 'nettoyer_raccourcis_typo');
100}
101function couteau_suisse_pre_propre($flux){
102        return eval_metas_pipelines($flux, 'pre_propre');
103}
104function couteau_suisse_pre_typo($flux){
105        return eval_metas_pipelines($flux, 'pre_typo');
106}
107function couteau_suisse_post_propre($flux){
108        eval_metas_pipelines($flux, 'post_propre');
109        // tracage des echappements SPIP (<html/><code/><cadre/> etc.) pour les traitements (s'il y en a) venant apres propre()
110        // Note : SPIP echappe egalement les modeles
111        if($GLOBALS['cs_post_propre']) {
112                if(strpos($flux, '<span class="base64"')!==false)
113                        $flux = preg_replace(',<span class="base64"[^>]+></span>,', _CS_HTMLA.'$0'._CS_HTMLB, $flux);
114                if(strpos($flux, '<div class="base64"')!==false)
115                        $flux = preg_replace(',<div class="base64"[^>]+></div>,', _CS_HTMLA.'$0'._CS_HTMLB, $flux);
116        }
117        return $flux;
118}
119
120function couteau_suisse_post_typo($flux){
121        return eval_metas_pipelines($flux, 'post_typo');
122}
123
124/********
125 * BASE *
126 *******/
127
128function couteau_suisse_pre_edition($flux){
129        return eval_metas_pipelines($flux, 'pre_edition');
130}
131function couteau_suisse_post_edition($flux){
132        return eval_metas_pipelines($flux, 'post_edition');
133}
134
135/**********
136 * DIVERS *
137 *********/
138
139function couteau_suisse_formulaire_verifier($flux){
140        return eval_metas_pipelines($flux, 'formulaire_verifier');
141}
142
143function couteau_suisse_taches_generales_cron($flux){
144        return eval_metas_pipelines($flux, 'taches_generales_cron');
145}
146
147// pipeline SPIP<2.1
148function couteau_suisse_creer_chaine_url($flux){
149        return eval_metas_pipelines($flux, 'creer_chaine_url');
150}
151// pipelines SPIP>=2.1
152function couteau_suisse_arbo_creer_chaine_url($flux){
153        return eval_metas_pipelines($flux, 'arbo_creer_chaine_url');
154}
155function couteau_suisse_propres_creer_chaine_url($flux){
156        return eval_metas_pipelines($flux, 'propres_creer_chaine_url');
157}
158// pipelines SPIP>=2.0
159function couteau_suisse_declarer_tables_interfaces($flux){
160        if(function_exists('cs_table_des_traitements')) cs_table_des_traitements($flux['table_des_traitements']);
161        return eval_metas_pipelines($flux, 'declarer_tables_interfaces');
162}
163
164// eux fonctions obsoletes, conservees pour SPIP<3.0 :
165// le contenu du sous-menu est gere par les lames elles-memes
166function couteau_suisse_bt_toolbox($params) {
167        global $cs_metas_pipelines;
168        if(!isset($cs_metas_pipelines['bt_toolbox'])) return $params;
169        $flux = '';
170        eval($cs_metas_pipelines['bt_toolbox']);
171        $tableau_formulaire = '
172 <table class="spip_barre" style="width: auto; padding: 1px!important; border-top: 0px;" summary="">'
173        . str_replace(array('@@champ@@','@@span@@'), array($params['champ'], 'span style="vertical-align:75%;"'), $flux) . '
174 </table>';
175        $params['flux'] .= produceWharf('couteau_suisse', '', $tableau_formulaire);
176        return $params;
177}
178// bouton principal du Couteau Suisse
179function couteau_suisse_bt_gadgets($params) {
180        global $cs_metas_pipelines;
181        if(!isset($cs_metas_pipelines['bt_toolbox'])) return $params;
182        $params['flux'] .= bouton_barre_racc("swap_couche('".$GLOBALS['numero_block']['couteau_suisse']."','');", cs_icone(24), _T('couteauprive:raccourcis_barre'), $params['help']);
183        return $params;
184}
185
186function couteau_suisse_porte_plume_barre_pre_charger($flux){
187        eval_metas_pipelines($flux, 'porte_plume_barre_pre_charger');
188        $barres = pipeline('porte_plume_cs_pre_charger', array());
189        $r = array(
190                "id" => 'couteau_suisse_drop',
191                "name" => _T('couteau:pp_couteau_suisse_drop'),
192                "className" => 'couteau_suisse_drop',
193                "replaceWith" => '',
194                "display" => true,
195        );
196        foreach($barres as $barre=>$menu) {
197                $r["dropMenu"] = $menu;
198                $flux[$barre]->ajouterApres('grpCaracteres', $r);
199        }
200        return $flux;
201}
202
203function couteau_suisse_porte_plume_lien_classe_vers_icone($flux){
204        global $cs_metas_pipelines;
205        if (isset($cs_metas_pipelines['porte_plume_lien_classe_vers_icone'])) {
206                $flux['couteau_suisse_drop'] = 'couteau-19.png';
207                // chemin des icones-typo de couleur
208                _chemin(sous_repertoire(_DIR_VAR, 'couteau-suisse'));
209                eval($cs_metas_pipelines['porte_plume_lien_classe_vers_icone']);
210        }
211        return $flux;
212}
213
214// pipeline maison : bouton sous un drop Couteau Suisse
215function couteau_suisse_porte_plume_cs_pre_charger($flux){
216        return eval_metas_pipelines($flux, 'porte_plume_cs_pre_charger');
217}
218
219
220// compatibilite avec le plugin Facteur
221function couteau_suisse_facteur_pre_envoi($flux){
222        return eval_metas_pipelines($flux, 'facteur_pre_envoi');
223}
224
225// pipeline maison : pre-affichage de la description d'un outil
226// flux['outil'] est l'id de l'outil, $flux['actif'] est l'etat de l'outil, flux['texte'] est le texte de description
227function couteau_suisse_pre_description_outil($flux) {
228        global $cs_metas_pipelines;
229        $id = &$flux['outil']; $texte = &$flux['texte'];
230        if(isset($cs_metas_pipelines['pre_description_outil']))
231                eval($cs_metas_pipelines['pre_description_outil']);
232        return $flux;
233}
234// A l'issue du telechargement d'un fichier distant
235function couteau_suisse_fichier_distant($flux) {
236        global $cs_metas_pipelines;
237        if(isset($cs_metas_pipelines['fichier_distant']))
238                eval($cs_metas_pipelines['fichier_distant']);
239        return $flux;
240}
241
242// callback pour la fonction cs_compile_pipe()
243function cs_compile_header_callback($matches) {
244if(defined('_LOG_CS')) cs_log(" -- compilation d'un header. Code CSS : ".couper($matches[1], 150));
245        return cs_recuperer_code($matches[1]);
246}
247
248// recherche et compilation par SPIP du contenu d'un fichier .html : <cs_html>contenu</cs_html>
249// $type = 'css' ou 'js'
250function cs_compile_header(&$flux, $type_, $suffixe='', $rem=true) {
251//if(defined('_LOG_CS')) cs_log(" -- recherche de compilations necessaires du header.");
252        global $cs_metas_pipelines;
253        if(isset($cs_metas_pipelines[$type = 'header_'.$type_.$suffixe])) {
254                $header = &$cs_metas_pipelines[$type];
255                if(strpos($header, '<cs_html>')!==false) {
256                        $header = preg_replace_callback(',<cs_html>(.*)</cs_html>,Ums', 'cs_compile_header_callback', $header);
257                        // sauvegarde en metas
258                        ecrire_meta('tweaks_pipelines', serialize($cs_metas_pipelines));
259                        ecrire_metas();
260                        ecrire_fichier(_DIR_CS_TMP.$type.'.html', "<!-- Fichier de controle $type_ pour le plugin 'Couteau Suisse' -->\n\n$header");
261                }
262                $flux .= $header;
263        }
264        if($rem)
265                $flux = strlen(trim($flux))?"\n<!-- Debut CS -->\n$flux\n<!-- Fin CS -->\n\n":"\n<!-- CS vide -->\n\n";
266}
267
268// construction d'un hit
269// (recherche et compilation par SPIP du contenu d'un fichier .html : <cs_html>contenu</cs_html>)
270// $type = 'css' ou 'js'
271function cs_header_hit(&$flux, $type, $suffixe='') {
272        $f = "header$suffixe.$type";
273        $nom = sous_repertoire(_DIR_VAR,'couteau-suisse') . $f;
274        $tmp = _DIR_CS_TMP . $f;
275        if(!file_exists($tmp) || !file_exists($nom) || $GLOBALS['var_mode']=='recalcul') {
276                if (lire_fichier(_DIR_CS_TMP."header.$type.html", $t) && strlen($t)) {
277                        if(strpos($t, '<cs_html>')!==false)
278                                $t = preg_replace_callback(',<cs_html>(.*)</cs_html>,Ums', 'cs_compile_header_callback', $t);
279                        ecrire_fichier($nom, $t, true);
280                        ecrire_fichier($tmp, $t, true);
281                } else {
282                        if(defined('_LOG_CS')) cs_log(" -- fichier $fo illisible. hit non construit");
283                        return;
284                }
285        }
286        switch($type) {
287                case 'js': $flux .= '<script src="'.$nom.'" type="text/javascript"></script>'; break;
288                case 'css': include_spip('inc/filtres');
289                        $flux .= '<link rel="stylesheet" href="'.direction_css($nom).'" type="text/css" media="all" />'; break;
290        }
291}
292
293/**
294 * recupere le resultat du calcul d'une compilation de code de squelette (marcimat)
295 * $coucou = $this->recuperer_code('[(#AUTORISER{ok}|oui)coucou]');
296 */
297function cs_recuperer_code(&$code) {//, $contexte=array(), $options = array(), $connect=''){
298        $fond = _DIR_CS_TMP . md5($code);
299        $base = $fond . '.html';
300        if(!file_exists($base) OR $GLOBALS['var_mode']=='recalcul')
301                ecrire_fichier($base, $code);
302        include_spip('public/assembler');
303        $fond = str_replace('../', '', $fond);
304//      return recuperer_fond($fond, array('fond'=>$fond));
305        $f = inclure_page($fond, array('fond'=>$fond));
306        return $f['texte'];
307}
308
309
310/*
311if(defined('_LOG_CS')) cs_log("INIT : cout_pipelines, lgr=" . strlen($cs_metas_pipelines['pipelines']));
312if(!$GLOBALS['cs_pipelines']) include_once(_DIR_CS_TMP.'pipelines.php');
313if(defined('_LOG_CS')) cs_log(' -- sortie de cout_pipelines... cs_pipelines = ' . intval($GLOBALS['cs_pipelines']));
314*/
315?>
Note: See TracBrowser for help on using the repository browser.