source: spip-zone/_plugins_/skeleditor/trunk/skeleditor_options.php @ 51735

Last change on this file since 51735 was 51735, checked in by cedric@…, 8 years ago

Un paquet.xml pour skeleditor

File size: 4.2 KB
Line 
1<?php
2/**
3 * Plugin SkelEditor
4 * Editeur de squelette en ligne
5 * (c) 2007-2010 erational
6 * Licence GPL-v3
7 *
8 */
9 
10
11
12/**
13 * Tester avec _request si on est dans l'edition de skeleditor et si oui, retourne l'extension du nom du fichier
14 *
15 * @return string
16 */ 
17function test_skeleditor_edition() {
18$exec = _request('exec');
19$filename = _request('f');
20        if ($exec == 'skeleditor'
21        AND $filename
22        AND $infos = pathinfo($filename)
23        AND $extension = $infos['extension']) 
24        return $extension;
25        else
26        return false;
27       
28} 
29
30/**
31 * Produit les css dans le header_prive si nécessaire
32 *
33 * @param string $flux
34 * @return string
35 */ 
36function skeleditor_insert_head_css($flux){
37        $extension = test_skeleditor_edition();
38                if($extension) {
39                static $done = false;
40                if (!$done) {
41                        $done = true;
42                        $type = "css";
43                        $css = skeleditor_dir($extension, $type);
44                        $flux .= $css; 
45                }
46        }
47return $flux;
48}
49 
50/**
51 * Produit les js dans le header_prive si nécessaire
52 *
53 * @param string $flux
54 * @return string
55 */ 
56function skeleditor_insert_head($flux){
57/*
58        $extension = test_skeleditor_edition();
59                if($extension) {
60                $type = "js";
61                $script = skeleditor_dir($extension, $type);
62                $flux = skeleditor_insert_head_css($flux); // au cas ou il n'est pas implemente
63                $flux .= $script;
64                }*/
65        return $flux;
66}
67
68// pas de compresseur si var_inclure
69if (_request('var_mode')=='inclure')
70        define('_INTERDIRE_COMPACTE_HEAD',true);
71
72function skeleditor_extraire_css($texte){
73        $url_base = url_de_base();
74        $url_page = substr(generer_url_public('A'), 0, -1);
75        $dir = preg_quote($url_page,',').'|'.preg_quote(preg_replace(",^$url_base,",_DIR_RACINE,$url_page),',');
76
77        $css = array();
78        // trouver toutes les css pour les afficher dans le bouton
79        // repris du compresseur
80        foreach (extraire_balises($texte, 'link') as $s) {
81                if (extraire_attribut($s, 'rel') === 'stylesheet'
82                AND (!($type = extraire_attribut($s, 'type'))
83                        OR $type == 'text/css')
84                AND !strlen(strip_tags($s))
85                AND $src = preg_replace(",^$url_base,",_DIR_RACINE,extraire_attribut($s, 'href'))
86                AND (
87                        // regarder si c'est du format spip.php?page=xxx
88                        preg_match(',^('.$dir.')(.*)$,', $src, $r)
89                        OR (
90                                // ou si c'est un fichier
91                                // enlever un timestamp eventuel derriere un nom de fichier statique
92                                $src2 = preg_replace(",[.]css[?].+$,",'.css',$src)
93                                // verifier qu'il n'y a pas de ../ ni / au debut (securite)
94                                AND !preg_match(',(^/|\.\.),', substr($src2,strlen(_DIR_RACINE)))
95                                // et si il est lisible
96                                AND @is_readable($src2)
97                        )
98                )) {
99                        if ($r)
100                                $css[$s] = explode('&',
101                                        str_replace('&amp;', '&', $r[2]), 2);
102                        else
103                                $css[$s] = $src;
104                }
105        }
106        return $css;
107}
108
109function skeleditor_affichage_final($texte){
110        if (isset($_COOKIE['spip_admin']) AND $GLOBALS['html']){
111                if ((defined('_VAR_INCLURE') AND _VAR_INCLURE) OR $GLOBALS['var_inclure']){
112                        $retour = self();
113                        $url = generer_url_ecrire('skeleditor','retour='.$retour.'&f=');                       
114                        $inserer = "<script type='text/javascript'>jQuery(function(){jQuery('.inclure_blocs h6:first-child').each(function(){
115                                jQuery(this).html(\"<a href='$url\"+jQuery(this).html()+\"'>\"+jQuery(this).html()+'<'+'/a>');
116                        })});</script></body>";
117                        $texte = preg_replace(",</body>,",$inserer,$texte);
118                       
119                        $css = skeleditor_extraire_css($texte);
120                        $lienplus = array();
121                        foreach($css as $src){
122                                // si c'est un skel, le trouver
123                                if (is_array($src))
124                                        $src = find_in_path($src."."._EXTENSION_SQUELETTES);
125                                if ($src)
126                                        $lienplus[] = "<a href='$url".urlencode($src)."'"
127                        .">".basename($src)."<\/a>";
128                        }
129                        if (count($lienplus)){
130                                $lienplus = implode('<br />',$lienplus);
131                                $lienplus = "<span class='spip-admin-boutons' id='inclure'>$lienplus<\/span>";
132                        };
133
134                } else {
135                        $lienplus = "<a href='".parametre_url(self(),'var_mode','inclure')."' class='spip-admin-boutons' "
136                        ."id='inclure'>"._T('skeleditor:squelettes')."<\/a>";
137                }
138                if ($lienplus)
139                        $inserer = "<script type='text/javascript'>/*<![CDATA[*/jQuery(function(){jQuery('#spip-admin').append(\"$lienplus\");});/*]]>*/</script></body>";
140                        $texte = preg_replace(",</body>,",$inserer,$texte);
141        }
142        return $texte;
143}
144
145
146?>
Note: See TracBrowser for help on using the repository browser.