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

Last change on this file since 111913 was 111913, checked in by arnaud.berard@…, 14 months ago

Bon alors en test un essai pour trouver un fichier scss cssifié
c'est pas fiable (ni très propre) ça marche que quand on est dans css/

  • [ ] Gestion des fichiers scss
    • [-] Trouver le fichier source depuis un fichier "cssifié"

Une fois le fichier passé par la balise #CSS on a plus de trace du chemin
pour le moment/test on extrapole juste sur un find_in_path sur le dossier css/

  • [ ] Trouver le chemin d'un fichier qui est passé par un preprocss ?

en fait meme en utilisant la class scssphp->getParsedFiles() vu que on passe par le contenu du fichier
parssé par le filtre/balise on a pas le chemin.

  • ? pourquoi on met pas le path dans le nom du fichier ou dans l'arbo du cache ?
File size: 5.9 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        }
47        return $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 = skeleditor_trouver_source($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                                // var_dump($src2);
104                                $file = preg_replace(",[?]\d+$,","",$src2);
105                                if (strncmp($file,_DIR_VAR,strlen(_DIR_VAR))==0){
106                                        lire_fichier($file,$c);
107                                        if (preg_match(",^\/\*\s*(#@.*)\s*\*\/,Uims",$c,$m)){
108                                                $inc = explode("#@",$m[1]);
109                                                $inc = array_map('trim',$inc);
110                                                $inc = array_filter($inc);
111                                                foreach($inc as $i){
112                                                        if (!in_array($i,$css))
113                                                                $css["$s:$i"] = $i;
114                                                }
115                                        }
116                                }
117                                else
118                                        $css[$s] = $file;
119                        }
120                }
121        }
122        return $css;
123}
124
125function skeleditor_trouver_source($src){
126                // enlever un timestamp eventuel derriere un nom de fichier statique
127                $source_file = preg_replace(",[.]css[?].+$,",'.css',$src);
128                // est-ce un fichier scss cssifié
129                if(preg_match("/-cssify-[\w\d]*.css/s",$source_file)){
130                        $scss_file = preg_replace(",local/cache-scss/([a-z0-9\-\_]*)-cssify-[\w\d]*.css,s",'${1}.scss', $source_file);
131
132
133                        // var_dump(find_in_path('theme.scss','css/'));
134
135                        (find_in_path($scss_file,'css/')) ? $source_file = find_in_path($scss_file,'css/') : $source_file = null ;
136
137                }
138                // var_dump($source_file);
139                return $source_file;
140}
141
142
143function skeleditor_affichage_final($texte){
144        if (isset($_COOKIE['spip_admin'])
145          AND $GLOBALS['html']
146          AND isset($GLOBALS['visiteur_session']['statut'])
147                AND $GLOBALS['visiteur_session']['statut']
148          AND intval($GLOBALS['visiteur_session']['statut'])<"1comite"
149          AND include_spip("inc/autoriser")
150          AND autoriser("skeleditor")
151        ){
152                if ((defined('_VAR_INCLURE') AND _VAR_INCLURE) OR (isset($GLOBALS['var_inclure']) and $GLOBALS['var_inclure']) ){
153                        $retour = self();
154                        $url = generer_url_ecrire('skeleditor','retour='.$retour.'&f=');
155                        $inserer = "<script type='text/javascript'>jQuery(function(){jQuery('.inclure_blocs h6:first-child').each(function(){
156                                jQuery(this).html(\"<a class='sepopin' href='$url\"+jQuery(this).html()+\"'>\"+jQuery(this).html()+'<'+'/a>');
157                        });"
158                        //."jQuery('a.sepopin').click(function(){if (jQuery.modalbox) jQuery.modalbox(parametre_url(this.href,'var_zajax','contenu'));return false;});"
159                        ."});</script><style>.spip-admin-boutons {display:block;float:left;margin-right:10px; max-height:300px; overflow:auto;} .spip-admin-boutons a{display:block;opacity:0.7;} .spip-admin-boutons:hover,.spip-admin-boutons a:hover {opacity:1.0;}</style>
160                        </body>";
161                        $texte = preg_replace(",</body>,",$inserer,$texte);
162
163                        $css = skeleditor_extraire_css($texte);
164                        $lienplus = array();
165                        foreach($css as $src){
166                                // si c'est un skel, le trouver
167                                if (is_array($src))
168                                        $src = find_in_path($src[0]."."._EXTENSION_SQUELETTES);
169                                if ($src)
170                                        $lienplus[] = "<a href='$url".urlencode($src)."'"
171                        .">".basename($src)."<\/a>";
172                        }
173                        if (count($lienplus)){
174                                $lienplus = implode('',$lienplus);
175                                $lienplus = "<span class='spip-admin-boutons' id='inclure'>$lienplus<\/span>";
176                        };
177
178                } else {
179                        $lienplus = "<a href='".parametre_url(self(),'var_mode','inclure')."' class='spip-admin-boutons' "
180                        ."id='inclure'>"._T('skeleditor:squelettes')."<\/a>";
181                }
182                if ($lienplus)
183                        $inserer = "<script type='text/javascript'>/*<![CDATA[*/jQuery(function(){jQuery('#spip-admin').append(\"$lienplus\");});/*]]>*/</script></body>";
184                        $texte = preg_replace(",</body>,",$inserer,$texte);
185        }
186        return $texte;
187}
188
189
190?>
Note: See TracBrowser for help on using the repository browser.