source: spip-zone/_plugins_/edition_directe/branches/3.0/edition_directe_pipelines.php @ 118388

Last change on this file since 118388 was 118388, checked in by Rainer Müller, 12 months ago

v3.3.2 - eviter des erreurs php dans l'espace publique

File size: 4.4 KB
Line 
1<?php
2/**
3 * Utilisations de pipelines par Edition_directe
4 *
5 * @plugin     Edition_directe
6 * @copyright  2011 - 2019
7 * @author     Rainer Müller
8 * @licence    GNU/GPL
9 * @package    SPIP\Edition_directe\Pipelines
10 */
11
12
13// styles
14function edition_directe_header_prive($flux) {
15        $flux .= '<link rel="stylesheet" href="' . find_in_path('css/edition_directe_styles.css') . '" type="text/css" media="all" />';
16
17        return $flux;
18}
19
20// Ajouter le formulaire upload
21function edition_directe_affiche_gauche($flux) {
22        include_spip('edition_directe_fonctions');
23
24        $objets_edition_directe = objets_edition_directe();
25        if ($en_cours = trouver_objet_exec($flux['args']['exec']) and $type = $en_cours['type'] and in_array($type, $objets_edition_directe) and $id_table_objet = $en_cours['id_table_objet'] and ($id = intval($flux['args'][$id_table_objet]) or $id = 0 - $GLOBALS['visiteur_session']['id_auteur']) and autoriser('joindredocument', $type, $id)) {
26
27                if ($id > 0)
28                        $flux['data'] .= recuperer_fond('prive/objets/editer/colonne_document', array (
29                                'objet' => $type,
30                                'id_objet' => $id
31                        ));
32        }
33
34        return $flux;
35}
36
37// Modifié la page de l'objet
38function edition_directe_recuperer_fond($flux) {
39        include_spip('edition_directe_fonctions');
40        include_spip('inc/autoriser');
41        $fond = $flux['args']['fond'];
42        $contexte = isset($flux['args']['contexte']) ? $flux['args']['contexte'] : array ();
43        $texte = $flux['data']['texte'];
44
45        // Seulement dans l'espace priv&eacute;
46        if (test_espace_prive() and
47                $exec =_request('exec') and
48                $objet_exec = trouver_objet_exec($exec) and
49                $objet = $objet_exec['type'] and
50                $id = $objet_exec['id_table_objet'] and
51                $contexte['objet'] = $objet and
52                $contexte['id_objet'] = $contexte[$id] and
53                autoriser('modifier', $objet, $contexte['id_objet'])) {
54                // On cherche les objets actifs pour l'édition directe
55                $objets = objets_edition_directe();
56
57                // Les objets éditables déclarés
58                $objets_dispos = lister_objets(array ());
59
60                // Insertion du formulaire d'édition
61                if (in_array($objet, $objets)) {
62                        if ($fond == 'prive/squelettes/contenu/' . $objet) {
63                                $edition = recuperer_fond('prive/echafaudage/contenu/objet_edit_directe', $contexte, array (
64                                        'ajax' => true
65                                ));
66                                $icone = '
67                                        <span class="icone_edition_directe icone active">
68                                                <a class="ajax" href="' . generer_action_auteur('edition_directe_auteur', 'inactive-' . $objet, generer_url_ecrire($objet, $id . '=' . $contexte['id_objet'], false)) . '" title="' . _T('edir:desactiver_edition_directe_objet') . $objet . '">
69                                                        <img src="' . find_in_path('prive/themes/spip/images/edir-24.png') . '"/>
70                                                        <b>' . _T('edir:titre_plugin') . '</b>
71                                                </a>
72                                        </span>';
73                                $patterns = array (
74                                        '/class=\'icone/',
75                                        '/<!--\/hd-->/',
76                                        '/<h1(.*?)>/',
77                                );
78
79                                $replacements = array (
80                                        'class="icone invisible',
81                                        $edition . '<!--/hd-->',
82                                        $icone . '<h1 $1>',
83
84                                );
85                                $flux['data']['texte'] = preg_replace($patterns, $replacements, $texte, 1);
86                        }
87                        // Suppression de la prévisualisation
88                        if ($fond == 'prive/objets/contenu/' . $objet) {
89                                $flux['data']['texte'] = '';
90                        }
91                }
92                elseif ($fond == 'prive/squelettes/contenu/' . $objet and in_array($objet, $objets_dispos)) {
93                        $icone = '
94                                        <span class="icone_edition_directe icone inactive">
95                                                <a class="ajax" href="' . generer_action_auteur('edition_directe_auteur', 'active-' . $objet, generer_url_ecrire($objet, $id . '=' . $contexte['id_objet'], false)) . '" title="' . _T('edir:activer_edition_directe_objet') . $objet . '">
96                                                        <img src="' . find_in_path('prive/themes/spip/images/edir-24.png') . '"/>
97                                                        <b>' . _T('edir:titre_plugin') . '</b>
98                                                </a>
99                                        </span>';
100                        $patterns = array (
101                                '/<h1(.*?)>/',
102                        );
103                        $replacements = array (
104                                $icone . '<h1 $1>',
105                        );
106                        $flux['data']['texte'] = preg_replace($patterns, $replacements, $texte, 1);
107                }
108        }
109
110        return $flux;
111}
112
113// Gérer le retour après validation du formulaire
114function edition_directe_formulaire_traiter($flux) {
115        $objets = objets_edition_directe();
116        $form = $flux['args']['form'];
117        $objet = str_replace('editer_', '', $form);
118
119        if (in_array($objet, $objets) and ! $_REQUEST['redirect'] and _request('exec')) {
120                if ($objet == 'site') {
121                        $id_objet = $flux['data']['id_syndic'];
122                        $flux['data']['redirect'] = generer_url_ecrire($objet, 'id_syndic=' . $id_objet);
123                }
124                elseif ($id_objet = $flux['data']['id_' . $objet])
125                        $flux['data']['redirect'] = generer_url_ecrire($objet, 'id_' . $objet . '=' . $id_objet);
126        }
127
128        return $flux;
129}
Note: See TracBrowser for help on using the repository browser.