source: spip-zone/_plugins_/acs/balise/acs_balises.php @ 48965

Last change on this file since 48965 was 48965, checked in by webmaster@…, 10 years ago

ACS:

  • liste des widgets en partie privée : classement des composants en deux blocs: cadres et éléments.
  • suppression de exec/acs_page_source.php (devenu inutile).
  • formulaire administration enrichi d'un accès direct à l'édition de la page et du bouton inclusions.
  • choix du positionnement du formulaire administration de SPIP.
  • passage en ajax du bloc de configuration d'ACS (Onglet Administration).
  • nouvelle option de configuration : Désactiver le cache de SPIP.
  • nouvelle aide contextuelle
  • restauration du fonctionnement de controleurs/var.php suite au passage des controleurs en objets.


Cat :

  • évolution de l'usage de la balise #ACS_CHEMIN (dans tous les fichiers où elle est utilisée)
  • Carte: correction bug sur affichage des sous-rubriques géoreferencées. Correction d'un bug sur les popups ombrées introduit par le changement de comportement de la balise #ACS_CHEMIN.
  • Fond/entete: filtre textebrut sur le titre des pages.
  • Keys: nouvelles variables arrondi de bordure et ombre.
File size: 7.0 KB
Line 
1<?php
2#              ACS
3#          (Plugin Spip)
4#     http://acs.geomaticien.org
5#
6# Copyright Daniel FAIVRE, 2007-2011
7# Copyleft: licence GPL - Cf. LICENCES.txt
8
9include_spip('inc/composant/composants_liste');
10
11/**
12 * Inclut les balises spip définies par les composants actifs
13 * Include components defined spip-tags
14 */
15function composants_ajouter_balises() {
16  foreach (composants_liste() as $c =>$composant) {
17        // On teste si au moins une instance du composant est active
18    if (!composant_actif($composant)) continue;
19        $bc= find_in_path('composants/'."$c/$c".'_balises.php');
20    if ($bc)
21      include($bc); // Les erreurs ne doivent JAMAIS être masquées, ici
22  }
23}
24// On ajoute les balises de chaque composant actif - We add tags for every active component
25composants_ajouter_balises();
26
27function balise_ACS_VERSION($p) {
28  $p->code = 'calcule_balise_acs_version()';
29  $p->statut = 'php';
30  $p->interdire_scripts = false;
31  return $p;
32}
33function calcule_balise_acs_version() {
34        include_spip('inc/acs_version');
35        return acs_version();
36}
37function balise_ACS_RELEASE($p) {
38  $p->code = 'calcule_balise_acs_release()';
39  $p->statut = 'php';
40  $p->interdire_scripts = false;
41  return $p;
42}
43function calcule_balise_acs_release() {
44        include_spip('inc/acs_version');
45        return acs_release();
46}
47
48function calculer_balise_pinceau($composant, $nic) {
49  $nic = $nic ? $nic : '0';
50  return  'crayon composant-'.$composant.'-'.$nic.' type_pinceau';
51}
52
53function balise_PINCEAU($p) {
54  $composant = interprete_argument_balise(1,$p);
55  $nic = interprete_argument_balise(2,$p);
56  $nic = $nic ? $nic : "'0'";
57  $p->code = 'calculer_balise_pinceau('.$composant.', '.$nic.')';
58  $p->statut = 'php';
59  $p->interdire_scripts = false;
60  return $p;
61}
62
63function balise_ACS_DERNIERE_MODIF($p) {
64  $p->code = '$GLOBALS["meta"]["acsDerniereModif"]';
65  $p->statut = 'php';
66  $p->interdire_scripts = false;
67  return $p;
68}
69
70/**
71 * Retourne le chemin d'une ressource ACS ou vide si la ressource n'est pas
72 * accessible au moins en lecture.
73 * Usage: #ACS_CHEMIN{chemin_dossier_ou_fichier,type}
74 */
75function balise_ACS_CHEMIN($p) {
76  $arg = interprete_argument_balise(1,$p);
77  $type = interprete_argument_balise(2,$p);
78  spip_log($type,'type');
79  $p->statut = 'php';
80  $p->interdire_scripts = false;
81  $p->code = $arg ? '_DIR_RACINE.$GLOBALS["ACS_CHEMIN"]."/".'.$arg : '_DIR_RACINE.$GLOBALS["ACS_CHEMIN"]."/"';
82  eval('$path = '.$p->code.';');
83  // On retourne vide si la ressource n'est pas lisible
84  if (!is_readable($path))
85        $p->code = '""';
86  // Si la ressource n'est pas un fichier on retourne vide sauf si on recherchait un dossier
87  if (($type != "'dir'") && is_dir($path))
88    $p->code = '""';
89  return $p;
90}
91
92/** VAR = balise CONFIG de SPIP etendue, qui remplaçe les variables ACS par leur valeur, récursivement.
93 * admet deux arguments : nom de variable, valeur par defaut si vide
94 * syntaxe : #VAR{acsComposantVariable} ou #VAR{acsComposantVariable, valeur_par_defaut}
95 * Lorsque la valeur d'une variable commence par le signe "=",
96 * cette valeur est interprétée comme une référence récursive à une autre variable.
97 */
98
99function balise_VAR($p) {
100        $var = interprete_argument_balise(1,$p);
101        $sinon = interprete_argument_balise(2,$p);
102        if (!$var) {
103                $p->code = '""'; // cas de #VAR sans argument
104        } else {
105                $p->code = 'meta_recursive($GLOBALS["meta"], '.$var.')';
106                if ($sinon)
107                        $p->code = 'sinon('.$p->code.','.$sinon.')';
108                else
109                        $p->code = '('.$p->code.')';
110        }
111        $p->interdire_scripts = false;
112        return $p;
113}
114
115/**
116 * Retourne les css ou les javascripts des composants
117 */
118function balise_HEADER_COMPOSANTS($p) {
119  $typeh = interprete_argument_balise(1,$p);
120  $typeh = substr($typeh, 1, strlen($typeh)-2);
121  $p->code = 'composants_head_cache("'.$typeh.'")';
122  $p->statut = 'php';
123  $p->interdire_scripts = false;
124  return $p; 
125}
126
127// "Cache" de la fonction composants_head. On force le recalcul car de toute façon SPIP met en cache
128// ça ferait donc double-emploi, avec de sérieux soucis de debug liés a un double cache css sinon.
129// TODO : garder la mise en cache pour les "vieux" Spip ?
130function composants_head_cache($type) {
131  $r = cache('composants_head', 'head_'.$GLOBALS['meta']['acsModel'].'_'.$type, array("$type"), true);
132  return $r[0];
133}
134
135// Retourne les css ou javascripts des composants, concaténés
136function composants_head($type) {
137  if (is_array(composants_liste())) {
138    // composants_liste() est statique,  mise en cache,
139    // et tient compte de l'override éventuel
140    $done = array();
141    $jslibs = array();
142    foreach (composants_liste() as $class=>$cp) {
143        foreach($cp['instances'] as $nic=>$c) {
144                if ($c['on'] != 'oui') continue;
145                if (!in_array($class, $done)) {
146          $filepath = 'composants/'.$class.'/'.((strtolower($type) == 'css') ? $class.'.css': "$type/$class.js");
147          $file = find_in_path($filepath.'.html');
148          if (!$file) {
149            $file = find_in_path($filepath);
150            if ($file)
151              $r .= file_get_contents($file);
152          }
153          else {
154            $r .= recuperer_fond($filepath, array('X-Spip-Cache' => 0))."\r";
155          }
156          $done[] = $class; 
157                }
158        // On cherche aussi les css d'instances de composants
159        if (strtolower($type) == 'css') {
160                $filepath = 'composants/'.$class.'/'.$class.'_instances.css';
161                $file = find_in_path($filepath.'.html');
162                if ($file)
163                        $r .= recuperer_fond($filepath, array('nic' => $nic, 'X-Spip-Cache' => 0))."\r";
164        }
165      }
166      // on fait la liste des librairies javascripts a inclure (declarees dans chaque composant, dans moncomposant_balises.php,
167      // sous la forme d'une fonction moncomposant_jslib() qui retourne un tableau des librairies js a inclure pour ce composant)
168      if(strtolower($type) == 'javascript') {
169        if (is_callable($class.'_jslib')) {
170                $c_jslibs = $class.'_jslib';
171                foreach($c_jslibs() as $lib) {
172                        $jslibs[$lib] = true;
173                }
174        }
175      }
176    }
177    // on recupere les librairies js requises pour tous les composants, une seule fois chacune
178    foreach($jslibs as $jslib => $ok) {
179      $file = find_in_path($jslib.'.html');
180      if (!$file) {
181        $file = find_in_path($jslib);
182        if ($file)
183          $libs .= file_get_contents($file)."\r";
184      }
185      else {
186        $libs .= recuperer_fond($jslib, array('X-Spip-Cache' => 0))."\r";
187      }
188    }
189  }
190  return $libs.$r;
191}
192/* usage avec les groupes acs ou pour droits sur le site public */
193function balise_ACS_AUTORISE($p) {
194  $rs = interprete_argument_balise(1,$p);
195  $p->code = 'acs_autorise('.$rs.')';
196  $p->statut = 'php';
197  $p->interdire_scripts = false;
198  return $p;
199}
200
201/* Overide de la balise CACHE : permet de passer un paramètre à la balise SPIP
202 * Les 2 paramètres de la balise #CACHE sont interprétés et passés à la balise
203 * #CACHE de la dist.
204 */
205function balise_CACHE($p) {
206  if ($GLOBALS['contexte']['cache']) {
207    $cache = explode(',', $GLOBALS['contexte']['cache']);
208    $p->param[0][1][0]->texte = $cache[0];
209    if (isset($cache[1]))
210      $p->param[0][1][1]->texte = $cache[1];
211  }
212  return balise_CACHE_dist($p);
213}
Note: See TracBrowser for help on using the repository browser.