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

Last change on this file since 99950 was 99950, checked in by abelass@…, 3 years ago

expression régulière qui prend en compte les attributs

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