Changeset 51516 in spip-zone


Ignore:
Timestamp:
Sep 16, 2011, 5:38:34 AM (10 years ago)
Author:
webmaster@…
Message:

ACS:

  • passage en version 0.8.6, justifié par nouveau composants dans Cat et nombreuses petites améliorations;
    • composants_ajouter_langue() : corrigé bug lié à une valeur erronée de $GLOBALSidx_lang? avec l'ancienne syntaxe;
    • correction des regexp dans le controleur composant pour permettre la vue de l'objet en cours (article en cours, par exemple) lors de l'édition du composant (Articles, par exemple) avec un pinceau ACS;
Location:
_plugins_/acs
Files:
1 deleted
24 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/acs/Changelog

    r49811 r51516  
    1 Suivi des principales révisions - Version ACS actuelle : 0.8.5
     1Suivi des principales révisions - Version ACS actuelle : 0.8.6
    22
    33ACS version 0.8
     
    1212- formulaire administration de SPIP enrichi d'un accès direct à l'édition de la page et du bouton inclusions
    1313- modèle wiki pour faire des liens de type wiki.
     14- le dossier "models" est renommé "sets" pour éviter toute confusion avec les modèles SPIP. La variable acsModel devient acsSet.
    1415 
    1516Modele Cat pour ACS vesion 0.8 :
    16 - nouveaux composants Carte, Diapo, NavGroup et NavKeys;
     17- nouveaux composants Carte, Diapo, NavGroup, NavKeys, Navkeygroup, Versions;
    1718- gestion amelioree des droits d'acces a un article par mot-cle;
    1819- suppression du modèle doc au profit de celui de la dist;
  • _plugins_/acs/README.txt

    r49811 r51516  
    22             Assistant de Configuration du Site
    33
    4 Version : 0.8.5
     4Version : 0.8.6
    55
    66Documentation : http:// acs.geomaticien.org
  • _plugins_/acs/_REGLES_DE_COMMIT.txt

    r49827 r51516  
    33et reçu de l'un d'eux un "OK" formel. »
    44
    5 Des règles particulières existent pour les créateurs de nouveaux modèles ACS: voir /models/_REGLES_DE_COMMIT.txt dans le dossier /models/
     5Des règles particulières existent pour les créateurs de nouveaux jeux de composants ACS: voir /sets/_REGLES_DE_COMMIT.txt dans le dossier /sets/
    66
    77----------------------------------------------------------------------------------------------------------------
  • _plugins_/acs/action/acs_sr.php

    r45452 r51516  
    5252        }
    5353        if ($file) {
    54                 $file = "<?php # backup of ".$meta['acsModel']."\n\$def=array(\n".
     54                $file = "<?php # backup of ".$meta['acsSet']."\n\$def=array(\n".
    5555                        "'ACS_VERSION'=>'".acs_version()."',\n".
    5656                        "'ACS_RELEASE'=>'".acs_release()."',\n".
    57                         "'acsModel'=>'".$meta['acsModel']."',\n".
     57                        "'acsSet'=>'".$meta['acsSet']."',\n".
    5858                        ($meta['acsSqueletteOverACS'] ? "'acsSqueletteOverACS'=>'".$meta['acsSqueletteOverACS']."',\n" : '').
    5959                "'ACS_VOIR_ONGLET_VARS'=>'".$meta['ACS_VOIR_ONGLET_VARS']."',\n".
  • _plugins_/acs/balise/acs_balises.php

    r49494 r51516  
    137137// TODO : garder la mise en cache pour les "vieux" Spip ?
    138138function composants_head_cache($type) {
    139   $r = cache('composants_head', 'head_'.$GLOBALS['meta']['acsModel'].'_'.$type, array("$type"), true);
     139  $r = cache('composants_head', 'head_'.$GLOBALS['meta']['acsSet'].'_'.$type, array("$type"), true);
    140140  return $r[0];
    141141}
  • _plugins_/acs/controleurs/composant.php

    r47692 r51516  
    3636  $css_class = _request('class'); /* classe du crayon */
    3737  $matches = array();
    38   if (preg_match('/\bid_article-(\d)+\b/', $css_class, $matches) > 0)
     38  if (preg_match('/\bid_article-(\d+)\b/', $css_class, &$matches) > 0)
    3939    $contexte['id_article'] = $matches[1];
    40   if (preg_match('/\bid_rubrique-(\d)+\b/', $css_class, $matches) > 0)
     40  elseif (preg_match('/\bid_rubrique-(\d+)\b/', $css_class, &$matches) > 0)
    4141    $contexte['id_rubrique'] = $matches[1];
    42   if (preg_match('/\bid_mot-(\d)+\b/', $css_class, $matches) > 0)
     42  elseif (preg_match('/\bid_mot-(\d+)\b/', $css_class, &$matches) > 0)
    4343    $contexte['id_mot'] = $matches[1];
    44   if (preg_match('/\bid_groupe-(\d)+\b/', $css_class, $matches) > 0)
     44  elseif (preg_match('/\bid_groupe-(\d+)\b/', $css_class, &$matches) > 0)
    4545    $contexte['id_groupe'] = $matches[1];
    46    
     46
    4747  $html = '<div style="width:'.$crayon->w.'px; height:'.$crayon->h.'px">'.
    4848    '<div id="'."composant-$class-$id".'" style="position: absolute; border: 2px outset #fddf00; top: -1px;left: -1px;opacity: 0.98; width:'.$crayon->w.'px; height:'.$crayon->h.'px; font-size:'._request('em').'">'.
  • _plugins_/acs/exec/composant_get_infos.php

    r45452 r51516  
    2424  $c = _request('c');
    2525  $nic = _request('nic');
     26  $var_mode = _request('var_mode');
     27
    2628  $err = '<span class="alert" title="'._T('acs:err_cache').'">*</span>';
    2729
    28   $r = cache('composant_infos', 'c_'.$GLOBALS['meta']['acsModel'].'_'.$c.$nic.'_infos',array('c' => $c,'nic'=>$nic));
     30  $r = cache('composant_infos', 'c_'.$GLOBALS['meta']['acsSet'].'_'.$c.$nic.'_infos', array('c' => $c,'nic'=>$nic), ($var_mode == 'recalcul'));
    2931  if(!is_array($r) || count($r) < 2)
    3032    ajax_retour($err);
  • _plugins_/acs/inc/acs_adm.php

    r48965 r51516  
    1515
    1616function acs_adm() {
    17   if (isset($_POST['changer_model']) && ($_POST['changer_model'] == 'oui')) {
     17  if (isset($_POST['changer_set']) && ($_POST['changer_set'] == 'oui')) {
    1818    if (
    19         ($GLOBALS['meta']['acsModel'] != $_POST['acsModel']) ||
     19        ($GLOBALS['meta']['acsSet'] != $_POST['acsSet']) ||
    2020        ($GLOBALS['meta']['acsSqueletteOverACS'] != $_POST['acsSqueletteOverACS'])
    2121      ) {
    22       ecrire_meta('acsModel', $_POST['acsModel']);
     22      ecrire_meta('acsSet', $_POST['acsSet']);
    2323      ecrire_meta('acsSqueletteOverACS', $_POST['acsSqueletteOverACS']);
    24       $GLOBALS['dossier_squelettes'] = (isset($GLOBALS['meta']['acsSqueletteOverACS']) ? $GLOBALS['meta']['acsSqueletteOverACS'].':' : '')._DIR_PLUGIN_ACS.'models/'.$_POST['acsModel'];
     24      $GLOBALS['dossier_squelettes'] = (isset($GLOBALS['meta']['acsSqueletteOverACS']) ? $GLOBALS['meta']['acsSqueletteOverACS'].':' : '')._DIR_PLUGIN_ACS.'sets/'.$_POST['acsSet'];
    2525      ecrire_metas();
    2626    }
     
    3232    acs_group_update_pages(acs_grid($_POST['group']), $_POST['pages']);
    3333
    34   $r = acs_box(_T('acs:model').' '._T('acs:acs').acs_help_call('model'),
    35     acs_help_div('model', _T('acs:model_help').'<br /><br />').acs_model()
     34  $r = acs_box(_T('acs:set').' '._T('acs:acs').acs_help_call('set'),
     35    acs_help_div('set', _T('acs:set_help').'<br /><br />').acs_set()
    3636    ,
    3737    _DIR_PLUGIN_ACS.'images/composant-24.gif'
     
    100100}
    101101
    102 function acs_model() {
    103   $r = '<form name="acs_model" action="?exec=acs" method="post">'.
    104         '<input type="hidden" name="onglet" value="adm"><input type="hidden" name="changer_model" value="oui">';
    105   $r .= '<table width="100%"><tr><td>'.ctlInput('acsModel', _T('acs:model'), select_model());
     102function acs_set() {
     103  $r = '<form name="acs_set" action="?exec=acs" method="post">'.
     104        '<input type="hidden" name="onglet" value="adm"><input type="hidden" name="changer_set" value="oui">';
     105  $r .= '<table width="100%"><tr><td>'.ctlInput('acsSet', _T('acs:set'), select_set());
    106106  $r .= '</td><td>'.ctlInput('acsSqueletteOverACS', _T('acs:squelette'), '<input type="text" name="acsSqueletteOverACS" value="'.$GLOBALS['meta']['acsSqueletteOverACS'].'" class="forml" />').'</td></tr></table>';
    107107
     
    118118 * Retourne un sélecteur de squelette,
    119119 */
    120 function select_model() {
    121   $r = '<select name="acsModel" class="forml">';
    122   foreach(list_models() as $sq)
    123     $r .= '<option name="'.$sq.'" value="'.$sq.'"'.(($sq == $GLOBALS['meta']['acsModel']) ? ' selected': '').'>'.$sq.'</option>';
     120function select_set() {
     121  $r = '<select name="acsSet" class="forml">';
     122  foreach(list_sets() as $sq)
     123    $r .= '<option name="'.$sq.'" value="'.$sq.'"'.(($sq == $GLOBALS['meta']['acsSet']) ? ' selected': '').'>'.$sq.'</option>';
    124124  $r .= '</select>';
    125125  return $r;
     
    127127
    128128/**
    129  * Lit la liste des modèles de squelettes
     129 * Lit la liste des jeux de composants
    130130 */
    131 function list_models(){
     131function list_sets(){
    132132  $squelettes = array();
    133   if ($d = @opendir(_DIR_PLUGIN_ACS.'models')) {
     133  if ($d = @opendir(_DIR_PLUGIN_ACS.'sets')) {
    134134    while (false !== ($file = @readdir($d))) {
    135       if ($file != "." && $file != ".." && substr($file, 0, 1) != '.' && @is_dir(_DIR_PLUGIN_ACS.'models/'.$file)) {
     135      if ($file != "." && $file != ".." && substr($file, 0, 1) != '.' && @is_dir(_DIR_PLUGIN_ACS.'sets/'.$file)) {
    136136        $squelettes[] = $file;
    137137      }
     
    142142  }
    143143  else {
    144     return 'Impossible d\'ouvrir le dossier de modeles "'._DIR_PLUGIN_ACS.'models"';
     144    return 'Impossible d\'ouvrir le jeu de composants "'._DIR_PLUGIN_ACS.'sets"';
    145145  }
    146146}
  • _plugins_/acs/inc/acs_onload.php

    r48965 r51516  
    3535  define('_NO_CACHE',-1); // Desactive totalement le cache de SPIP (aucune creation des pages en cache)
    3636
    37 // Modèle ACS par defaut - Default ACS model
    38 $GLOBALS['meta']['acsModel'] = isset($GLOBALS['meta']['acsModel']) ? $GLOBALS['meta']['acsModel'] : 'cat';
     37// Set ACS par defaut - Default ACS set
     38if (!isset($GLOBALS['meta']['acsSet']))
     39        $GLOBALS['meta']['acsSet'] = 'cat';
    3940
    40 // Dossier des images du modèle ACS actif - Active ACS model images directory
    41 $GLOBALS['ACS_CHEMIN'] = $dir_site_absolu._NOM_PERMANENTS_ACCESSIBLES.'_acs/'.$GLOBALS['meta']['acsModel'];
     41// Dossier des images du set ACS actif - Active ACS set images directory
     42$GLOBALS['ACS_CHEMIN'] = $dir_site_absolu._NOM_PERMANENTS_ACCESSIBLES.'_acs/'.$GLOBALS['meta']['acsSet'];
    4243
    4344define('_DIR_ACS', _DIR_PLUGINS.acs_get_from_active_plugin('ACS', 'dir').'/'); // Chemin valable espace public aussi, pas comme _DIR_PLUGIN_ACS, qui est à proscrire
     
    6162  $GLOBALS['dossier_squelettes'] .= ':';
    6263// On ajoute le chemin du modèle cat actif
    63 $GLOBALS['dossier_squelettes'] .= 'plugins/'.acs_get_from_active_plugin('ACS', 'dir').'/'.'models/'.$GLOBALS['meta']['acsModel'];
     64$GLOBALS['dossier_squelettes'] .= 'plugins/'.acs_get_from_active_plugin('ACS', 'dir').'/'.'sets/'.$GLOBALS['meta']['acsSet'];
    6465
    6566// dossier des composants :
  • _plugins_/acs/inc/acs_page_get_infos.php

    r48985 r51516  
    1919  $mode_source = ($mode == 'source');
    2020  $mode = $mode_source ? '_source' : '_infos'.$detail;
    21   $r = cache('page_get_infos', 'pg_'.$GLOBALS['meta']['acsModel'].'_'.urlencode($page).$mode, array($page, $mode_source, $detail));
     21  $r = cache('page_get_infos', 'pg_'.$GLOBALS['meta']['acsSet'].'_'.urlencode($page).$mode, array($page, $mode_source, $detail));
    2222 
    2323  // Si le fichier a été modifié depuis la mise en cache, on force le recalcul
     
    2525  $pg_derniere_modif = filemtime($pg);
    2626  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);
     27    $r = cache('page_get_infos', 'pg_'.$GLOBALS['meta']['acsSet'].'_'.urlencode($page).$mode, array($page, $mode_source, $detail), true);
    2828  return $r[0];
    2929}
  • _plugins_/acs/inc/acs_pages.php

    r48965 r51516  
    1717  return acs_info_box(
    1818    _T('acs:acs'),
    19     _T('acs:model_actif', array('model' => $GLOBALS['meta']['acsModel'])).
     19    _T('acs:set_actif', array('set' => $GLOBALS['meta']['acsSet'])).
    2020    (($GLOBALS['meta']['acsSqueletteOverACS']) ?
    2121      _T('acs:overriden_by', array('over' => str_replace(':', ' ', $GLOBALS['meta']['acsSqueletteOverACS'])))
     
    2323      ''
    2424    ).
    25     _T('acs:model_actif2').
     25    _T('acs:set_actif2').
    2626    '<br /><br />',
    2727    false,
  • _plugins_/acs/inc/acs_pipeline_ecrire.php

    r49494 r51516  
    2525
    2626function acs_header_prive($flux) {
    27         $model =$GLOBALS['meta']['acsModel'];
    28   $css_model = find_in_path($model.'.css.html');
     27        $set =$GLOBALS['meta']['acsSet'];
     28  $css_set = find_in_path($set.'.css.html');
    2929  $r = '';
    30   if ($css_model)
    31     $r .= '<link rel="stylesheet" href="../spip.php?page='.$model.'.css&v='.$GLOBALS["meta"]["acsDerniereModif"].'" type="text/css" media="projection, screen, tv" />';
     30  if ($css_set)
     31    $r .= '<link rel="stylesheet" href="../spip.php?page='.$set.'.css&v='.$GLOBALS["meta"]["acsDerniereModif"].'" type="text/css" media="projection, screen, tv" />';
    3232
    3333  // On ajoute le style privé APRES la feuille de style du modèle pour pouvoir
     
    3636  $r .= '<link rel="stylesheet" href="'.$url_css.'" type="text/css" media="projection, screen, tv" />';
    3737
    38   $js_model = find_in_path($model.'.js.html');
    39   if ($js_model)
    40     $r .= '<script type="text/javascript" src="../spip.php?page='.$model.'.js&v='.$GLOBALS["meta"]["acsDerniereModif"].'"></script>';
     38  $js_set = find_in_path($set.'.js.html');
     39  if ($js_set)
     40    $r .= '<script type="text/javascript" src="../spip.php?page='.$set.'.js&v='.$GLOBALS["meta"]["acsDerniereModif"].'"></script>';
    4141
    4242  $js_dragdrop = find_in_path('javascript/dragdrop_interface.js');
  • _plugins_/acs/inc/acs_pipeline_public.php

    r49532 r51516  
    1717  if (acs_autorise())
    1818        $r .= '<link rel="stylesheet" href="'.direction_css(generer_url_public('acs_style_prive.css')).'" type="text/css" media="projection, screen, tv" />';
    19   $model =$GLOBALS['meta']['acsModel'];
     19  $model =$GLOBALS['meta']['acsSet'];
    2020  $css_model = find_in_path($model.'.css.html');
    2121  if ($css_model)
  • _plugins_/acs/inc/acs_sr.php

    r49169 r51516  
    1919       
    2020        // Sauvegarder
    21         $nom_fichier = lire_meta('acsModel').date("ymdHi", lire_meta("acsDerniereModif"));
     21        $nom_fichier = lire_meta('acsSet').date("ymdHi", lire_meta("acsDerniereModif"));
    2222        $file = $repertoire.$nom_fichier;
    2323        $res = '<span class="onlinehelp">
  • _plugins_/acs/inc/composant/classComposantPrive.php

    r51421 r51516  
    123123                        }
    124124                }
    125                
    126                 $this->vars[0] = array('nom' => 'Use',
    127                                                                                                          'valeur' => $GLOBALS['meta'][$this->fullname.'Use']
    128                                                                                                         );
     125
     126                $this->vars[0] = array('nom' => 'Use', 'valeur' => $GLOBALS['meta'][$this->fullname.'Use']);
     127
    129128                if (is_array($c['variable'])) {
    130129                        foreach($c['variable'] as $k=>$var) {
     
    289288                acs_plieur('plieur_pu'.$n,
    290289                        'pu'.$n,
    291                         '#',
     290                        '#plieur_pu'.$n,
    292291                        true,
    293292                        'if (typeof done'.$n.' == \'undefined\') {
     
    304303                                                '<div class="onlinehelplayer">'.$this->get_cvars_html().'</div>';
    305304                $r .= '<div id="puAjax'.$n.'" class="puAjax'.$n.'"></div>';
    306                 $r .= '<hr /><div>'._T('acs:require', array('class' => $this->class, 'version' => $this->version)).' :<br />';
    307                 foreach($this->necessite as $nec) {
    308                         $get_version = $nec['id'].'_version';
    309                         if (is_callable($get_version)) // la fonction existe pour spip et pour acs
    310                                 $current_version = $get_version();
    311                         elseif ($f = chercher_filtre('info_plugin')) { // pour les plugins sans fonction plugin_version()
    312                                 if (is_callable($f))
    313                                         $current_version = $f($nec['id'],'version');
    314                         }
    315                         if (!$current_version)
    316                                 $current_version = '?';
    317                         $version = substr($nec['version'], 1, -1);
    318                         $version = explode(';',$version);
    319                         $min_version = $version[0];
    320                         $max_version = $version[1];
    321                         if (version_compare($min_version, $current_version, '>')) {
    322                                 $class = 'alert';
    323                         }
    324                         else {
    325                                 $class = '';
    326                         }
    327                         $necessite .= '<li><span class="'.$class.'">'.$nec['id'].' >= '.$min_version.'</span> : <b>'.$current_version.'</b></li>';
    328                 }
    329                 if ($necessite) {
    330                         $r .= '<ul style="list-style-type: disc;list-style-position: inside;">'.$necessite.'</ul>';
    331                 }
    332                 $r .= '</div>';
    333305                $r .= '</div>';
    334306                return $r;
     
    376348                        case 'inline':
    377349                                 require_once _DIR_ACS.'balise/acs_balises.php';
    378                                  $preview = '<script type="text/javascript" src="../spip.php?page=acs.js"></script><link rel="stylesheet" href="../spip.php?page='.$GLOBALS['acsModel'].'.css" type="text/css" media="projection, screen, tv" /><div id="'.$this->fullname.'" style="border:0;overflow: auto; width: 100%; height: '.(is_numeric($this->preview) ? $this->preview : 80).'px">'.recuperer_fond('vues/composant', array(
     350                                 $preview = '<script type="text/javascript" src="../spip.php?page=acs.js"></script><link rel="stylesheet" href="../spip.php?page='.$GLOBALS['acsSet'].'.css" type="text/css" media="projection, screen, tv" /><div id="'.$this->fullname.'" style="border:0;overflow: auto; width: 100%; height: '.(is_numeric($this->preview) ? $this->preview : 80).'px">'.recuperer_fond('vues/composant', array(
    379351                                 'c' => 'composants/'.$this->class.'/'.$this->class,
    380352                                 'nic' => $this->nic,
  • _plugins_/acs/inc/composant/composant_infos.php

    r47692 r51516  
    88
    99/**
    10  * Retourne les pages du squelette qui utilisent l'instance $nic du composant $c
     10 * Retourne les composants et les pages du squelette qui utilisent l'instance $nic du composant $c
    1111 */
    1212function composant_infos($c, $nic) {
    13   include_spip('inc/composant/composant_get_infos');
    1413  include_spip('inc/composant/composants_liste');
     14  include_spip('inc/composant/composants_variables');
     15  include_spip('inc/composant/classComposantPrive');
     16  include_spip('inc/filtres');
     17 
    1518  $r ='<br />';
    16  
     19
    1720  // On calcule la liste de toutes les instances de composants actifs
    1821  $choixComposants = array();
     
    3740  // On retourne la liste de tous les composants qui contiennent ce composant
    3841  if (count($ca)) {
    39     include_spip('inc/composant/composants_variables');
    4042    $lv = liste_variables();
    4143    if (is_array($lv)) {
     
    5658
    5759  // On cherche toutes les pages qui contiennent ce composant
    58   $l = '<hr />';
    59   $l = liste_pages_composant($c, $nic,'', _T('acs:page'), _T('acs:pages'));
    60   $l .= liste_pages_composant($c, $nic, 'modeles', _T('acs:modele'), _T('acs:modeles'));
    61   $l .= liste_pages_composant($c, $nic, 'formulaires', _T('acs:formulaire'), _T('acs:formulaires'));
    62   foreach (composants_liste() as $class=>$composant) {
    63         $l .= liste_pages_composant($c, $nic, 'composants/'.$class, _T('acs:composant'), _T('acs:composants'));
    64   }
     60  $l = liste_pages_composant($c, $nic);
    6561  if ($l)
    66         $r.= '<br />'.$l;
     62        $r.= '<hr />'.$l;
    6763
    6864        $traductions = cGetTraductions($c,'composants/'.$c.'/lang',';.*[.]php$;iS');
     
    7167  $r .= (count($traductions[1]) ? '<tr><td style="width:10%; vertical-align: top;" align="'.$GLOBALS['spip_lang_right'].'"> '._T('acs:ecrire').' </td><td>'.liens_traductions($c, $traductions[1], 'ecrire').'</td></tr>' : '');
    7268  $r .= '</table>';
     69 
     70  // On crée une instance :
     71  $composant = new AdminComposant($c);
     72  // On récupère les dépendances :
     73                $r .= '<hr /><div>'._T('acs:require', array('class' => $composant->class, 'version' => $composant->version)).' :<br />';
     74                foreach($composant->necessite as $nec) {
     75                        $get_version = $nec['id'].'_version';
     76                        if (is_callable($get_version)) // la fonction existe pour spip et pour acs
     77                                $current_version = $get_version();
     78                        elseif ($f = chercher_filtre('info_plugin')) { // pour les plugins sans fonction plugin_version()
     79                                if (is_callable($f))
     80                                        $current_version = $f($nec['id'],'version');
     81                        }
     82                        if (!$current_version)
     83                                $current_version = '?';
     84                        $version = substr($nec['version'], 1, -1);
     85                        $version = explode(';',$version);
     86                        $min_version = $version[0];
     87                        $max_version = $version[1];
     88                        if (version_compare($min_version, $current_version, '>')) {
     89                                $class = 'alert';
     90                        }
     91                        else {
     92                                $class = '';
     93                        }
     94                        $necessite .= '<li><span class="'.$class.'">'.$nec['id'].' >= '.$min_version.'</span> : <b>'.$current_version.'</b></li>';
     95                }
     96                if ($necessite) {
     97                        $r .= '<ul style="list-style-type: disc;list-style-position: inside;">'.$necessite.'</ul>';
     98                }
     99                $r .= '</div>';
     100
     101 
    73102  return $r;
    74103}
     
    82111}
    83112
    84 function liste_pages_composant($c, $nic, $dir, $singulier, $pluriel) {
    85   $p = cGetPages($c, $nic, $dir);
    86   if (count($p['composant']) > 0) {
    87     $r = '<span class="onlinehelp">'.(count($p['composant']) > 1 ? $pluriel : $singulier).'</span> '; 
    88     foreach($p['composant'] as $page) {
    89       $r .= show_override($p['chemin'], $page).' ';
    90     }
    91     $r .= '<br />';
    92   }
    93   if (count($p['variables']) > 0) {
    94     $len = strlen('acs'.$c.$nic);
    95     $r .= '<i>';
    96     foreach($p['variables'] as $page=>$var) {
    97       $r .= show_override($p['chemin'], $page).' (';
    98       foreach($var as $v) {
    99         $r .= '<a title="'.$v.($GLOBALS['meta'][$v] ? ' = '.htmlentities($GLOBALS['meta'][$v]) : '').'">'.substr($v,$len).'</a> ';
    100       }
    101       $r = rtrim($r);
    102       $r .= ')<br />';
    103     }
    104     $r .= '</i>';
    105   }
     113/**
     114 * Retourne toutes les pages des squelettes, composants, et noisettes qui
     115 * contiennent l'instance $nic du composant $c
     116 */
     117function liste_pages_composant($c, $nic) {
     118        $dirs = array(
     119                array('', _T('acs:page'), _T('acs:pages')),
     120                array('modeles', _T('acs:modele'), _T('acs:modeles')),
     121                array('formulaires', _T('acs:formulaire'), _T('acs:formulaires'))
     122        );
     123  foreach (composants_liste() as $class=>$composant) {
     124        $dirs[] = array('composants/'.$class, _T('acs:composant'), _T('acs:composants'));
     125  }
     126        foreach($dirs as $dir) {
     127    $p = cGetPages($c, $nic, $dir[0]);
     128    if (count($p['composant']) > 0) {
     129      $r = '<span class="onlinehelp">'.(count($p['composant']) > 1 ? $dir[2] : $dir[1]).'</span> '; 
     130      foreach($p['composant'] as $page) {
     131        $r .= show_override($p['chemin'], $page).' ';
     132      }
     133      $r .= '<br />';
     134    }
     135    if (count($p['variables']) > 0) {
     136      $len = strlen('acs'.$c.$nic);
     137      $r .= '<i>';
     138      foreach($p['variables'] as $page=>$var) {
     139        $r .= show_override($p['chemin'], $page).' (';
     140        foreach($var as $v) {
     141          $r .= '<a title="'.$v.($GLOBALS['meta'][$v] ? ' = '.htmlentities($GLOBALS['meta'][$v]) : '').'">'.substr($v,$len).'</a> ';
     142        }
     143        $r = rtrim($r);
     144        $r .= ')<br />';
     145      }
     146      $r .= '</i>';
     147    }
     148        }
    106149  return $r;
    107150}
     
    118161}
    119162
     163/**
     164 * Composant - Méthode cGetPages: retourne un tableau des squelettes qui utilisent le composant ($c,$nic)
     165 * Non inclus comme méthode d'objet composant pour permettre usage sans création d'objet composant
     166 */
     167
     168function cGetPages($c, $nic, $chemin='') {
     169  $pages = array();
     170  $pages['composant'] = array();
     171  $pages['variables'] = array();
     172
     173  if (!$c) return $pages;
     174
     175  if ($chemin == '')
     176    $dir = _DIR_PLUGIN_ACS.'sets/'.$GLOBALS['meta']['acsSet'];
     177  else
     178    $dir = find_in_path($chemin);
     179
     180  if (@is_dir($dir) AND @is_readable($dir) AND $d = @opendir($dir)) {
     181    $vars= cGetVars($c, $nic);
     182    if ($nic)
     183        $cpreg = '/\{fond=composants\/'.$c.'\/[^\}]*\}.*\{nic='.$nic.'\}/';
     184        else
     185                $cpreg = '/\{fond=composants\/'.$c.'\/[^\}]*\}.^[\{nic='.$nic.'\}]*/';
     186    while (($f = readdir($d)) !== false && ($nbfiles<1000)) {
     187      if ($f[0] != '.' # ignorer . .. .svn etc
     188      AND $f != 'CVS'
     189      AND $f != 'remove.txt'
     190      AND @is_readable($p = "$dir/$f")) {
     191        if (is_file($p)) {
     192          if (preg_match(";.*[.]html$;iS", $f)) {
     193            $fic = @file_get_contents($p);
     194            if (preg_match($cpreg, $fic, $matches))
     195              $pages['composant'][] = substr($f, 0, -5);
     196            foreach($vars as $var) {
     197              if (strpos($fic, $var))
     198                $pages['variables'][substr($f, 0, -5)][] = $var;
     199            }
     200          }
     201        }
     202      }
     203      $nbfiles++;
     204    }
     205    $pages['chemin'] = $chemin;
     206  }
     207  return $pages;
     208}
     209
     210/**
     211 * Composant - Méthode cGetTraductions: retourne un tableau des traductions d'un composant
     212 * Non inclus comme méthode d'objet composant pour permettre usage sans création d'objet composant
     213 */
     214function cGetTraductions($c) {
     215  $r[0] = cGetFiles($c, 'composants/'.$c.'/lang', $ext='php', strlen($c)+1);
     216  $r[1] = cGetFiles($c, 'composants/'.$c.'/ecrire/lang', $ext='php', strlen($c)+strlen('ecrire')+2);
     217  return $r;
     218}
     219
     220/**
     221 * Composant - Méthode cGetFiles: retourne un tableau de fichiers d'un composant
     222 * qui vérifient l'expression régulière $expr (par défaut: les fichiers html)
     223 * Non inclus comme méthode d'objet composant pour permettre usage sans création d'objet composant
     224 */
     225function cGetFiles($c, $chemin='', $ext='html', $skip=0) {
     226  $files=array();
     227  if (!$c) return $files;
     228  $dir = find_in_path($chemin);
     229  if (@is_dir($dir) AND @is_readable($dir) AND $d = @opendir($dir)) {
     230    while (($f = readdir($d)) !== false && ($nbfiles<1000)) {
     231      if ($f[0] != '.' # ignorer . .. .svn etc
     232      AND $f != 'CVS'
     233      AND $f != 'remove.txt'
     234      AND @is_readable($p = "$dir/$f")) {
     235        if (is_file($p)) {
     236          if (preg_match(';.*[.]'.$ext.'$;iS', $f)) {
     237            $files[] = substr($f, $skip, -(strlen($ext)+1));
     238          }
     239        }
     240      }
     241      $nbfiles++;
     242    }
     243  }
     244  sort($files);
     245  return $files;
     246}
     247
     248/**
     249 * Fonction cGetVars: retourne un tableau des variables du composant
     250 * sans création d'objet composant
     251 */
     252function cGetVars($composant, $nic) {
     253  $r = array();
     254  // Lit les paramètres de configuration du composant
     255  include_once('inc/xml.php');
     256  $configfile = find_in_path('composants/'.$composant.'/ecrire/composant.xml');
     257  $config = spip_xml_load($configfile);
     258  $c = $config['composant'][0];
     259  if (is_array($c['param'])) {
     260    foreach($c['param'] as $param) {
     261      if (is_array($param['nom']) && $param['nom'][0] == 'optionnel' && (($param['valeur'][0] == 'oui') || ($param['valeur'][0] == 'true')))
     262        array_push($r, 'acs'.ucfirst($composant).'Use');
     263    }
     264  }
     265
     266  if (is_array($c['variable'])) {
     267    foreach($c['variable'] as $k=>$var) {
     268      foreach($var as $varname=>$value) {
     269        if ($varname=='nom')
     270          array_push($r, 'acs'.ucfirst($composant).$nic.$value[0]);
     271      }
     272    }
     273  }
     274  return $r;
     275}
    120276?>
  • _plugins_/acs/inc/composant/composant_traduction.php

    r47692 r51516  
    1010 * Retourne les traductions disponibles d'un composant (avec cache ACS)
    1111 */
    12 function composant_traduction($c='fond', $l='fr', $cadre='') {
     12function composant_traduction($c='fond', $l='fr', $context='') {
    1313  include_spip('inc/acs_cache');
    14   $r = cache('affiche_composant_traduction', 'ct_'.$GLOBALS['meta']['acsModel'].'_'.$c.'_'.(($cadre != '') ? $cadre.'_' : '').$l, array($c, $l, $cadre));
     14  $r = cache('affiche_composant_traduction', 'ct_'.$GLOBALS['meta']['acsSet'].'_'.$c.'_'.(($context != '') ? $context.'_' : '').$l, array($c, $l, $context));
    1515  return $r[0];
    1616}
     
    1919 * Affiche un tableau des traductions d'un composant, triées
    2020 */
    21 function affiche_composant_traduction($c, $l, $cadre) {
    22   $tableau = lecture_composant_traduction($c, $l, $cadre);
     21function affiche_composant_traduction($c, $l, $context) {
     22  $tableau = lecture_composant_traduction($c, $l, $context);
    2323  ksort($tableau);
    2424  $nb = count($tableau);
    2525  $r = '<div class="acs_box">';
    2626  $r .= '<img src="'._DIR_PLUGIN_ACS.'lang/flags/'.$l.'.gif" alt="'.$l.'" align="right" style="margin: 5px;" title="'.traduire_nom_langue($l).'" />';
    27   if ($cadre != 'ecrire')
     27  if ($context != 'ecrire')
    2828        $r .= "<div class='arial2 onlinehelp' style='padding-left: 2px'>"._T('acs:si_composant_actif').' : '._T('module_texte_explicatif')."</div>";
    2929  $r .= "\n<table cellpadding='0' cellspacing='3px' border='0' style='width: 100%; border:0;'>";
     
    3838    $bgcolor = ($i = ($i==0)) ? '#eeeeee' : 'white';
    3939    $r .= "\n<tr style='background-color: $bgcolor; vertical-align: top;'><td class='verdana2' style='padding: 2px;'><b>";
    40     if ($cadre != 'ecrire')
     40    if ($context != 'ecrire')
    4141        $r .= "&lt;:$aff_nom_cadre";
    4242    $r .= $raccourci;
    43     if ($cadre != 'ecrire') $r .= ":&gt;";
     43    if ($context != 'ecrire') $r .= ":&gt;";
    4444    // la classe crayon_$c_$raccourci  sert à donner un id unique, et type_traduction donne l'image du crayon.
    45     $r .= '</b></td><td class="arial2"><table  cellpadding="2px;" cellspacing="0" style="table-layout: fixed; width: 100%; overflow: hidden"><tr><td class="crayon crayon_'.$c.'_'.$raccourci.' type_traduction traduction-'.$c.'_'.$raccourci.'-0 lang_'.$l.($cadre ? '_'.$cadre : '').'">'.$val."</td></tr></table></td></tr>";
     45    $r .= '</b></td><td class="arial2"><table  cellpadding="2px;" cellspacing="0" style="table-layout: fixed; width: 100%; overflow: hidden"><tr><td class="crayon crayon_'.$c.'_'.$raccourci.' type_traduction traduction-'.$c.'_'.$raccourci.'-0 lang_'.$l.($context ? '_'.$context : '').'">'.$val."</td></tr></table></td></tr>";
    4646  }
    4747
     
    5353 * Retourne un tableau des traductions d'un composant
    5454 */
    55 function lecture_composant_traduction($c, $l, $cadre) {
    56   $langfile = 'composants/'.$c.(($cadre != '') ? '/'.$cadre : '').'/lang/'.$c.(($cadre != '') ? '_'.$cadre : '').'_'.$l.'.php';
     55function lecture_composant_traduction($c, $l, $context) {
     56  $langfile = 'composants/'.$c.(($context != '') ? '/'.$context : '').'/lang/'.$c.(($context != '') ? '_'.$context : '').'_'.$l.'.php';
    5757  $idx = $GLOBALS['idx_lang'];
    58   $GLOBALS['idx_lang'] = 'i18n_acs_'.$c.$cadre.'_'.$l;
     58  $GLOBALS['idx_lang'] = 'i18n_acs_'.$c.$context.'_'.$l;
    5959  $f = find_in_path($langfile);
    6060  if (!is_file($f))
    6161        return array();
    6262  include($f);
    63   $tableau = $GLOBALS['i18n_acs_'.$c.$cadre.'_'.$l];
     63  $tableau = $GLOBALS['i18n_acs_'.$c.$context.'_'.$l];
    6464  $GLOBALS['idx_lang'] = $idx;
    6565  if (!is_array($tableau))
  • _plugins_/acs/inc/composant/composants_ajouter_langue.php

    r51421 r51516  
    1919 * 4. langue par défaut depuis dossier modèle acs actif
    2020 *
    21  * @params : $dir est soit vide soit egal a "ecrire"
     21 * @params : $dir (="" ou "ecrire").
    2222 */
    2323function composants_ajouter_langue($dir='') {
    24   $idx = $GLOBALS['idx_lang'];
    25   $idx_tmp = $idx.'_tmp';
    26   $GLOBALS['idx_lang'] = $idx_tmp;
    27 
    2824  foreach (composants_liste() as $c => $composant) {
    2925        // On teste si au moins une instance du composant est active
    3026    if (!composant_actif($composant)) continue;
    3127
     28    // Cherche le fichier de langue du composant :
    3229    $langfile = find_in_path("composants/$c/".($dir ? $dir.'/' : '')."lang/$c".'_'.($dir ? $dir.'_' : '').$GLOBALS['spip_lang'].'.php');
    3330    if (!$langfile)
     
    3633        continue;
    3734
     35    $idx = $GLOBALS['idx_lang'];
     36    $idx_tmp = $idx.'_tmp';
     37    $GLOBALS['idx_lang'] = $idx_tmp;
     38    // Charge le fichier de langue
    3839    require_once($langfile);
     40    // Affecte les traductions chargée au composant :
    3941    if (is_array($GLOBALS[$idx_tmp])) {
    4042      $cla = array();
     
    4648    else
    4749        acs_log('ERROR in composants_ajouter_langue() : $GLOBALS[\''.$idx.'\'] from lang file "'.$langfile.'" is not an array.');
     50    // On efface le tableau temporaire et on restaure la valeur originale de $GLOBALS['idx_lang'] :
    4851    unset($GLOBALS[$idx_tmp]);
    49   }
    50   $GLOBALS['idx_lang'] = $idx;
     52    $GLOBALS['idx_lang'] = $idx;
     53 
    5154}
    5255
    5356/**
    5457 * Ajoute un fichier de langue à la langue en cours
    55  * @param $langfile
     58 * @param $langfile : chemin d'un fichier de langue à partir d'un path SPIP (chemins où SPIP cherche ses includes)
    5659 */
    5760function acs_addLang($langfile) {
  • _plugins_/acs/inc/composant/composants_liste.php

    r45452 r51516  
    4949
    5050  require_once _DIR_ACS.'inc/acs_cache.php';
    51   $model = (isset($GLOBALS['meta']['acsModel']) ? $GLOBALS['meta']['acsModel'] : 'cat'); 
    52   $cl = cache('lecture_composants_liste', 'a_'.$GLOBALS['meta']['acsModel'].'_cl');
     51  $set = (isset($GLOBALS['meta']['acsSet']) ? $GLOBALS['meta']['acsSet'] : 'cat');
     52  $cl = cache('lecture_composants_liste', 'a_'.$set.'_cl', array($set));
    5353  $cl = $cl[0];
    5454  return $cl;
    5555}
    5656
    57 function lecture_composants_liste() {
     57function lecture_composants_liste($set) {
    5858  // Liste des composants du modèle ACS actif
    59   $dirc = _DIR_PLUGIN_ACS.'models/'.$GLOBALS['meta']['acsModel'].'/composants';
     59  $dirc = _DIR_PLUGIN_ACS.'sets/'.$set.'/composants';
    6060  $cl = lit_liste_composants($dirc);
    6161
  • _plugins_/acs/inc/composant/composants_variables.php

    r47030 r51516  
    1919  include_spip('inc/composant/composants_liste');
    2020  include_spip('inc/acs_cache');
    21   $model = (isset($GLOBALS['meta']['acsModel']) ? $GLOBALS['meta']['acsModel'] : 'cat');
    22   $cv = cache('lecture_composants_variables', 'a_'.$model.'_cv');
     21  $set = (isset($GLOBALS['meta']['acsSet']) ? $GLOBALS['meta']['acsSet'] : 'cat');
     22  $cv = cache('lecture_composants_variables', 'a_'.$set.'_cv');
    2323  $cv = $cv[0];
    2424
  • _plugins_/acs/inc/composant/pages_liste.php

    r45452 r51516  
    2121  if (!count($liste)) {
    2222    include_spip('inc/acs_cache');
    23     $model = (isset($GLOBALS['meta']['acsModel']) ? $GLOBALS['meta']['acsModel'] : 'cat');
    24     $liste =  cache('pages_du_site', 'a_'.$model.'_pages_liste');
     23    $set = (isset($GLOBALS['meta']['acsSet']) ? $GLOBALS['meta']['acsSet'] : 'cat');
     24    $liste =  cache('pages_du_site', 'a_'.$set.'_pages_liste');
    2525  }
    2626  return $liste[0];
     
    3838    $numover += 1;
    3939  }
    40   // Squelettes du modele ACS actif:
    41   $squelettes['acs'] = _DIR_PLUGIN_ACS.'models/'.(isset($GLOBALS['meta']['acsModel']) ? $GLOBALS['meta']['acsModel'] : 'cat');
     40  // Squelettes du set ACS actif:
     41  $squelettes['acs'] = _DIR_PLUGIN_ACS.'sets/'.(isset($GLOBALS['meta']['acsSet']) ? $GLOBALS['meta']['acsSet'] : 'cat');
    4242  // On ajoute les squelettes de plugins actifs - Add skeletons from active plugins
    4343  $plugins = unserialize($GLOBALS['meta']['plugin']);
  • _plugins_/acs/lang/acs_ecrire_en.php

    r51341 r51516  
    1111  'acs' => 'ACS',
    1212
    13   'model_actif' => 'ACS active model: <b>@model@</b>',
     13  'set_actif' => 'ACS active set: <b>@set@</b>',
    1414  'overriden_by' => ', overriden by skeletons from <u>@over@</u>',
    15   'model_actif2' => '.',
     15  'set_actif2' => '.',
    1616
    1717  'onglet_pages_description' => 'Schema and source.',
    18   'onglet_pages_info' => 'In pages list, underlined ones are read in the <span style="color: darkgreen; font-weight: normal; font-style: normal; text-decoration: underline">override</span> directory, bolded in current <span style="color: darkgreen; font-weight: bold; font-style: normal; text-decoration: none">ACS model</span>, italicized from <span style="color: darkgreen; font-weight: normal; font-style: underline; text-decoration: none">plugins</span>, and thoses without any font decoration from <span style="color: darkgreen; font-weight: normal; font-style: normal; text-decoration: none">spip distribution</span>.',
     18  'onglet_pages_info' => 'In pages list, underlined ones are read in the <span style="color: darkgreen; font-weight: normal; font-style: normal; text-decoration: underline">override</span> directory, bolded in current <span style="color: darkgreen; font-weight: bold; font-style: normal; text-decoration: none">ACS set</span>, italicized from <span style="color: darkgreen; font-weight: normal; font-style: underline; text-decoration: none">plugins</span>, and thoses without any font decoration from <span style="color: darkgreen; font-weight: normal; font-style: normal; text-decoration: none">spip distribution</span>.',
    1919  'onglet_pages_help' => 'ACS add to spip customizables pages made with customizables components.
    2020<br /><br />Click on the little black triangle to display a more detailed schema.
     
    5454  'onglet_adm_description' => 'Configuration',
    5555  'onglet_adm_info' => 'ACS components set and templates choice, administration, backup / restore.',
    56   'onglet_adm_help' => '<b>Model</b>:<br />Model is a set of ACS components-based spip skeletons (templates). Skeleton(s) is optionnal. It override the model and/or its components. If more than one is needed, separator is ":"  between paths.
     56  'onglet_adm_help' => '<b>Set</b>:<br />A set of ACS components-based spip skeletons (templates). Skeleton(s) is optionnal. It override the set and/or its components. If more than one is needed, separator is ":"  between paths.
    5757<br />
    58 To use some components from an ACS model in your own SPIP templates, you need to fill in this field with your SPIP templates directory.
     58To use some components from an ACS set in your own SPIP templates, you need to fill in this field with your SPIP templates directory.
    5959<br />
    6060<br />
     
    6565  'lien_retirer_admin' => 'Retire from admins',
    6666  'locked_pages' => 'Protected pages',
    67   'model' => 'Model',
     67  'set' => 'Set',
    6868  'squelette' => 'Skeleton(s)',
    6969  'voir_pages_composants' => 'Components pages',
  • _plugins_/acs/lang/acs_ecrire_fr.php

    r51341 r51516  
    1111  'acs' => 'ACS',
    1212
    13   'model_actif' => 'Mod&egrave;le ACS actif: <b>@model@</b>',
     13  'set_actif' => 'Jeu de composants ACS actif: <b>@set@</b>',
    1414  'overriden_by' => ', surcharg&eacute; par les squelettes de <u>@over@</u>',
    15   'model_actif2' => '.',
     15  'set_actif2' => '.',
    1616  'onglet_pages_info' => 'ACS ajoute à spip des mod&egrave;les de pages personnalisables par assemblage de composants eux-même personnalisables.',
    1717
     
    6666  'lien_retirer_admin' => 'Retirer des admins',
    6767  'locked_pages' => 'Pages protégées',
    68   'model' => 'Mod&egrave;le',
    69   'model_help' => 'Le mod&egrave;le est un jeu de squelettes Spip basés sur des composants ACS. Squelette(s) est optionnel, et sert à surcharger le mod&egrave;le et/ou ses composants. Pour avoir plusieurs niveaux d\'override, on sépare les chemins par deux points (<b>:</b>).<br />
    70 Pour utiliser des composants ACS dans d\'autres squelettes que ceux du modèles ACS actif, vous devez y indiquer le dossier de vos squelettes pour qu\'ils surchargent ceux du modèle actif.',
     68  'set' => 'Set',
     69  'set_help' => 'Le set est un jeu de squelettes Spip basés sur des composants ACS.
     70<br /><br />
     71Squelette(s) est optionnel, et sert à surcharger le mod&egrave;le et/ou ses composants. Pour avoir plusieurs niveaux d\'override, on sépare les chemins par deux points (<b>:</b>). Pour utiliser des composants ACS dans d\'autres squelettes que ceux du modèles ACS actif, vous devez y indiquer le dossier de vos squelettes pour qu\'ils surchargent ceux du modèle actif.',
    7172  'squelette' => 'Squelette(s)',
    7273  'voir_pages_composants' => 'Pages des composants',
  • _plugins_/acs/plugin.xml

    r49827 r51516  
    99                        <br />
    1010                        ACS est un gestionnaire de composants dont l'apparence et le fonctionnement sont configurables
    11                         depuis le site public. ACS inclut un jeu de squelettes SPIP nomm&#233; "Mod&egrave;le Cat" enti&egrave;rement
     11                        depuis le site public. ACS inclut un jeu de squelettes SPIP nomm&#233; "Cat" enti&egrave;rement
    1212                        constitu&#233; de composants configurables en quelques clics.<br />
    1313                        ACS comprend aussi un explorateur de toutes les pages du site
     
    2828 - <a href="?exec=acs&amp;detail=2">ACS Site Design Wizard</a>
    2929                        <br />
    30                         ACS is a manager for customizable components. ACS include a template set called "Model Cat" totally compôsed of customizable compoenents.<br />
     30                        ACS is a manager for customizable components. ACS include a template set called "Cat" totally compôsed of customizable compoenents.<br />
    3131                        ACS also include a website-explorer with SPIP syntax colorization and direct links to included components.
    3232                        <br />
     
    4747        Daniel FAIVRE &copy; 2007-2011 - <multi>[fr]licence GPL[en]GPL license</multi>
    4848        </auteur>
    49   <version>0.8.5</version>
     49  <version>0.8.6</version>
    5050        <etat>stable</etat>
    5151        <!-- classe d'implementation : espace de nommage qui prefixera les appels de fonction
Note: See TracChangeset for help on using the changeset viewer.