source: spip-zone/_plugins_/facteur/trunk/facteur_fonctions.php @ 54249

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

cartouche
lien vers la bonne icone
modernisation du script d'upgrade
grostitre sur la page de configuration
ne pas inclure classes/facteur sur chaque calcul, les scripts qui ont besoin de mailer le font par cette inclusion
ou par inc/envoyer_mail

  • Property svn:executable set to *
File size: 2.0 KB
Line 
1<?php
2/*
3 * Plugin Facteur 2
4 * (c) 2009-2011 Collectif SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11/**
12 * facteur_addstyle
13 * @author Eric Dols
14 *
15 * @param $matches
16 * @return string
17 */
18function facteur_addstyle($matches) {
19
20        // $matches[1]=tag, $matches[2]=tag attributes (if any), $matches[3]=xhtml closing (if any)
21
22        // variables values set in calling function
23        global $styledefinition, $styletag, $styleclass;
24
25        // convert the style definition to a one-liner
26        $styledefinition = preg_replace ("!\s+!mi", " ", $styledefinition );
27        // convert all double-quotes to single-quotes
28        $styledefinition = preg_replace ('/"/','\'', $styledefinition );
29
30        if (preg_match ("/style\=/i", $matches[2])) {
31                        // add styles to existing style attribute if any already in the tag
32                        $pattern = "!(.* style\=)[\"]([^\"]*)[\"](.*)!mi";
33                        $replacement = "\$1".'"'."\$2 ".$styledefinition.'"'."\$3";
34                        $attributes = preg_replace ($pattern, $replacement , $matches[2]);
35        } else {
36                        // otherwise add new style attribute to tag (none was present)
37                        $attributes = $matches[2].' style="'.$styledefinition.'"';
38        }
39
40        if ($styleclass!="") {
41                // if we were injecting a class style, remove the now useless class attribute from the html tag
42
43                // Single class in tag case (class="classname"): remove class attribute altogether
44                $pattern = "!(.*) class\=['\"]".$styleclass."['\"](.*)!mi";
45                $replacement = "\$1\$2";
46                $attributes = preg_replace ( $pattern, $replacement, $attributes);
47
48                // Multiple classes in tag case (class="classname anotherclass..."): remove class name from class attribute.
49                // classes are injected inline and removed by order of appearance in <head> stylesheet
50                // exact same behavior as where last declared class attributes in <style> take over (IE6 tested only)
51                $pattern = "!(.* class\=['\"][^\"]*)(".$styleclass." | ".$styleclass.")([^\"]*['\"].*)!mi";
52                $replacement = "\$1\$3";
53                $attributes = preg_replace ( $pattern, $replacement, $attributes);
54
55        }
56
57        return "<".$matches[1].$attributes.$matches[3].">";
58}
59
60
61?>
Note: See TracBrowser for help on using the repository browser.