source: spip-zone/_plugins_/acs/inc/acs_page_get_infos.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: 5.6 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
9/**
10 * Retourne des informations détaillées sur une page
11 * Utilise le cache ACS
12 */
13
14include_spip('inc/acs_presentation');
15include_spip('inc/composant/page_source');
16
17function acs_page_get_infos($page, $mode, $detail) {
18  include_spip('inc/acs_cache');
19  $mode_source = ($mode == 'source');
20  $mode = $mode_source ? '_source' : '_infos';
21  $r = cache('page_get_infos', 'pg_'.$GLOBALS['meta']['acsModel'].'_'.urlencode($page).$mode, array($page, $mode_source, $detail));
22 
23  // Si le fichier a été modifié depuis la mise en cache, on force le recalcul
24  $pg = find_in_path($page.'.html');
25  $pg_derniere_modif = filemtime($pg);
26  if ($r[2] < $pg_derniere_modif)
27    $r = cache('page_get_infos', 'pg_'.$GLOBALS['meta']['acsModel'].'_'.urlencode($page).$mode, array($page, $mode_source, $detail), true);
28  return $r[0];
29}
30
31// renvoie un widget avec les options d'affichage d'une page
32function page_modes($page, $mode_source, $detail) {
33  // Plieur
34  if ($detail && ($detail > 1)) {
35    $on = true;
36    $detail ='';
37  }
38  else {
39    $on = false;
40    $detail = '&detail=2';
41   
42  }
43  // Mode schema / source
44  $link = '<a style="color: white" title="'.$page.'" href="?exec=acs&onglet=pages&pg='.$page;
45  if ($mode_source) {
46    $lblsrc = '<a id="mode_source" name="srcon" title="'.$page.'"><b>'._T('acs:source').'</b></a>';
47    $lblsch = $link.'" id="mode_schema">'._T('acs:schema').'</a>';
48  }
49  else {
50    $lblsrc = $link.'&mode=source" id="mode_source" name="srcoff">'._T('acs:source').'</a>';
51    $lblsch =  '<a id="mode_schema"><b>'._T('acs:schema').'</b></a>';
52  }
53  // Rendu
54  $r = '<table><tr><td>';
55  $r .= $lblsrc.'</td><td> / </td><td> '.$lblsch.' </td><td> ';
56  $r .= acs_plieur('plieur_spip_params', 'spip_params', '?exec=acs&onglet=pages&pg='.$page.$detail, $on);
57  $r .= '</td><td>&nbsp;</td><td>'.acs_help_call('acs_bloc_page').'</td></tr></table>';
58  return $r;
59}
60
61function page_get_infos($page, $mode_source=false, $detail='') {
62  include_spip('inc/acs_widgets');
63
64  $pg = find_in_path($page.'.html');
65  $pg_derniere_modif = filemtime($pg);
66  $pageContent = @file_get_contents($pg);
67  $includes = analyse_page($pageContent, $mode_source);
68 
69  $r = acs_help_div('acs_bloc_page', _T('acs:pg_help').'<br /><br />');
70
71  if (!$mode_source && (count($includes['vars']) > 0)) {
72    $r .= '<div class="onlinehelp">'._T('acs:variables').' : '.
73          implode(' ', $includes['vars']).
74          '</div><br />';
75    $infos = true;
76  }
77  ksort($includes['tags']);
78  if ($mode_source) {
79    $r .= '<div class="onlinehelp">'._T('acs:source_page').' : </div><div style="line-height: 1.5em;">';
80    $dejalu = 0;
81    $srcol = array();
82    foreach ($includes['tags'] as $debut=>$tag) {
83      //echo '<br/><div class="alert">¤ '.$tag['type'].' : '.$debut.'-'.$tag['fin'].'</div><br/>'
84            //.htmlspecialchars(substr($pageContent, $debut, $tag['fin'] - $debut)).'' // debug code
85
86      $source_tag = substr($pageContent, $debut, $tag['fin'] - $debut);
87      if ($tag['contenu'])
88        $spip_tag = $tag['contenu'];
89      else
90        $spip_tag = $source_tag;
91      if ($debut > $dejalu) {
92        $srcol[] = affiche_source($pageContent, $dejalu, $debut - $dejalu).'<span class="col_'.$tag['type'].'">'.affiche_source($spip_tag).'</span>';
93        $dejalu = $tag['fin'];
94      }
95      else {  // il faut réécrire par dessus la dernière balise acs-spip (on espère que c'est la dernière ! ;-)
96        $pos = strpos(end($srcol), $source_tag);
97        if ($pos !== false) {
98          $db = count($srcol) - 1;
99          $srcol[$db] = substr($srcol[$db], 0, $pos).'<span class="col_'.$tag['type'].'">'.$spip_tag.'</span>'.substr($srcol[$db], $pos + strlen($source_tag));
100        }
101      }
102    }
103    $pagid = str_replace('/', '_slash_', str_replace('-', '_tiret_', $page));
104    $src = '<div class="spip_source crayon source-'.$pagid.'-1">';
105    $src .= ' '.nl2br(implode('',$srcol));
106    if ($dejalu < strlen($pageContent))
107      $src .= affiche_source($pageContent, $dejalu);
108    $src .= '</div>';
109    $r .= $src;
110  }
111  else {
112    if (count($includes['tags'])) {
113      $r .= '<div class="onlinehelp">'._T('acs:structure_page').' : </div><div>';
114      foreach ($includes['tags'] as $debut=>$tag) {
115        $schema .= ' '.$tag['contenu'];
116      }
117      $r .= $schema;
118    }
119    else
120      $no_infos = true;
121  }
122  $r .= '</div><br />';
123
124  if (isset($no_infos))
125    $r = '<div>'._T('acs:page_rien_a_signaler').'</div><br />';
126
127  $r .= '<table width="100%"><tr><td><span class="onlinehelp">'._T('acs:source').' : </span><a class="lien_source" href="?exec=acs&onglet=pages&pg='.$page.'&mode=source" title="'.read_perms($pg).'">'.substr($pg, 3).'</a></td>';
128  $r .= '<td style="text-align:'.$GLOBALS['spip_lang_right'].'">'._T('acs:acsDerniereModif').' '.date('Y-m-d H:i:s', $pg_derniere_modif).'</td>';
129  $r .= '</tr></table>';
130
131  $r = acs_box(_T('acs:page').' '.$page, $r, _DIR_PLUGIN_ACS."images/page-24.gif", false, page_modes($page, $mode_source, $detail));
132  return $r;
133}
134
135function affiche_source($txt, $debut=0, $longueur=0) {
136  if ($longueur == 0)
137    $longueur = strlen($txt) - $debut;
138
139  $txt = substr($txt, $debut, $longueur);
140  $txt = preg_replace(array('/</', '/>/'), array('&lt;', '&gt;'), $txt);
141
142// Indentation et sauts de lignes
143  $txt = explode("\n", $txt);
144  foreach($txt as $n => $line) {
145    $txt[$n] =  preg_replace('/ (?= )/s', '&nbsp;', $line);
146  }
147  $txt = implode('<br />', $txt);
148  return $txt;
149}
150
151function read_perms($f) {
152        $perms = fileperms($f);
153  return substr(decoct($perms), 3);
154}
155?>
Note: See TracBrowser for help on using the repository browser.