Changeset 113985 in spip-zone


Ignore:
Timestamp:
Feb 21, 2019, 9:58:48 AM (4 weeks ago)
Author:
marcimat@…
Message:

Permettre de désactiver un thème actif même si le jeu de squelettes n’est pas ou plus celui du thème.

Pour cela on découpe un peu les fonctions de recherche et de filtrage de thèmes.

Location:
_plugins_/zen-garden/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/zen-garden/trunk/paquet.xml

    r103720 r113985  
    22        prefix="zengarden"
    33        categorie="maintenance"
    4         version="2.6.4"
     4        version="2.7.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
  • _plugins_/zen-garden/trunk/prive/squelettes/inclure/zengarden_theme.html

    r85458 r113985  
    1 #SET{themes,#ENV{tous,''}|zengarden_liste_themes}
    2 <INCLURE{fond=prive/squelettes/inclure/zengarden_theme_actif,env,themes=#GET{themes}}>
     1#SET{themes_presents,#ENV{tous,''}|zengarden_liste_themes_presents}
     2#SET{themes_activables,#ENV{tous,''}|zengarden_liste_themes}
     3
     4<INCLURE{fond=prive/squelettes/inclure/zengarden_theme_actif,env,themes=#GET{themes_presents}}>
    35<B_themes>
    46[<p class='pagination'>(#PAGINATION)</p>]
    57<ul class='liste_themes'>
    6 <BOUCLE_themes(POUR){tableau #GET{themes}}{cle!=#ENV{selection}}{par tri}{pagination 20}>
     8<BOUCLE_themes(POUR){tableau #GET{themes_activables}}{cle!=#ENV{selection}}{par tri}{pagination 20}>
    79        <li class='theme'>
    810                <div class="qTip target_leftMiddle tooltip_rightMiddle">
  • _plugins_/zen-garden/trunk/zengarden_fonctions.php

    r96909 r113985  
    3232
    3333/**
    34  * Lister les thèmes
    35  * 
     34 * Lister tous les thèmes (stables)
     35 *
    3636 * Les thèmes peuvent être présent dans :
    3737 * - themes/* à la racine (ou autre _DIR_THEMES défini);
     
    3939 * - plugins/*;
    4040 *
    41  * @param bool $tous
     41 * @param bool $tous true pour retourner aussi les thèmes non stables
    4242 * @return array
    4343 */
    44 function zengarden_liste_themes($tous){
     44function zengarden_liste_themes_presents($tous){
    4545        include_spip('inc/zengarden');
    4646
     
    4848
    4949        // charger les themes de themes-dist/
    50         if (is_dir(_DIR_THEMES_DIST))
     50        if (is_dir(_DIR_THEMES_DIST)) {
    5151                $themes = array_merge($themes, zengarden_charge_themes(_DIR_THEMES_DIST, $tous));
     52        }
    5253
    5354        // charger les themes de themes/
    54         if (is_dir(_DIR_THEMES))
     55        if (is_dir(_DIR_THEMES)) {
    5556                $themes = array_merge($themes, zengarden_charge_themes(_DIR_THEMES, $tous));
     57        }
    5658
    5759        // ceux de squelettes/themes/
    58         if (is_dir($skels=_DIR_RACINE."squelettes/themes/"))
    59                 $themes = array_merge($themes,zengarden_charge_themes($skels,$tous));
     60        if (is_dir($skels=_DIR_RACINE."squelettes/themes/")) {
     61                $themes = array_merge($themes, zengarden_charge_themes($skels, $tous));
     62        }
    6063
    6164        // ceux de chaque  dossier_squelettes/themes/
    62         if (strlen($GLOBALS['dossier_squelettes'])){
     65        if (strlen($GLOBALS['dossier_squelettes'])) {
    6366                $s = explode(":",$GLOBALS['dossier_squelettes']);
    64                 foreach($s as $d){
    65                         if (_DIR_RACINE AND strncmp($d,_DIR_RACINE,strlen(_DIR_RACINE))!==0)
     67                foreach($s as $d) {
     68                        if (_DIR_RACINE AND strncmp($d,_DIR_RACINE,strlen(_DIR_RACINE)) !== 0) {
    6669                                $d = _DIR_RACINE . $d;
    67                         if (is_dir($f="$d/themes/") AND $f!=$skels)
    68                                 $themes = array_merge($themes,zengarden_charge_themes($f,$tous));
     70                        }
     71                        if (is_dir($f="$d/themes/") AND $f!=$skels) {
     72                                $themes = array_merge($themes, zengarden_charge_themes($f, $tous));
     73                        }
    6974                }
    7075        }
    7176
    7277        // ceux de plugins/
    73         $themes = array_merge($themes,zengarden_charge_themes(_DIR_PLUGINS,$tous));
     78        $themes = array_merge($themes, zengarden_charge_themes(_DIR_PLUGINS, $tous));
     79        return $themes;
     80}
    7481
    75         /**
    76          * Recherche spécifique
    77          * Invalider les thèmes incompatibles
    78          *
    79          * Si le squelette ou un plugin définit la constante _ZENGARDEN_FILTRE_THEMES,
    80          * on ne prend que les thèmes compatibles
    81          * Sinon, si on a le plugin zpip-dist, on ne liste que les thèmes compatibles avec zpip-dist
    82          *
    83          * Pour être compatible un thème doit avoir un <utilise...> du squelette en question dans son paquet.xml
    84          */
     82/**
     83 * Lister les thèmes acceptés avec le jeu de squelettes utilisé
     84 *
     85 * @uses zengarden_liste_themes_presents()
     86 * @uses zengarden_filtrer_themes_compatibles()
     87 *
     88 * @param bool $tous true pour retourner aussi les thèmes non stables
     89 * @return array
     90 */
     91function zengarden_liste_themes($tous) {
     92        $themes = zengarden_liste_themes_presents($tous);
     93        $themes = zengarden_filtrer_themes_compatibles($themes);
     94        return $themes;
     95}
     96
     97/**
     98 * Recherche spécifique : Invalider les thèmes incompatibles
     99 *
     100 * Si le squelette ou un plugin définit la constante _ZENGARDEN_FILTRE_THEMES,
     101 * on ne prend que les thèmes compatibles
     102 * Sinon, si on a le plugin zpip-dist, on ne liste que les thèmes compatibles avec zpip-dist
     103 *
     104 * Pour être compatible un thème doit avoir un <utilise...> du squelette en question dans son paquet.xml
     105 *
     106 * @param array $themes
     107 * @return array
     108 */
     109function zengarden_filtrer_themes_compatibles($themes) {
    85110        $search = "dist";
    86         if (defined('_ZENGARDEN_FILTRE_THEMES')) $search=_ZENGARDEN_FILTRE_THEMES;
    87         elseif (defined('_DIR_PLUGIN_ZPIP')) $search="zpip";
    88         elseif (defined('_DIR_PLUGIN_Z')) $search="z";
    89        
    90         if ($search){
     111        if (defined('_ZENGARDEN_FILTRE_THEMES')) {
     112                $search = _ZENGARDEN_FILTRE_THEMES;
     113        } elseif (defined('_DIR_PLUGIN_ZPIP')) {
     114                $search = "zpip";
     115        } elseif (defined('_DIR_PLUGIN_Z')) {
     116                $search = "z";
     117        }
     118        return zengarden_filtrer_themes_compatibles_avec($themes, $search);
     119}
     120
     121/**
     122 * Retourne uniquement les thèmes compatibles avec un type de thème indiqué
     123 * @param array $themes
     124 * @param string $search Type de thème (ex: dist, spipr, zpip, ...)
     125 * @return array
     126 */
     127function zengarden_filtrer_themes_compatibles_avec($themes, $search = "") {
     128        if ($search) {
    91129                foreach ($themes as $k => $theme){
    92130                        $keep = false;
    93131                        foreach ($theme['utilise'] as $u){
    94                                 if (strncasecmp($u['nom'],$search,max(strlen($u['nom']),strlen($search)))==0){
     132                                if (strncasecmp($u['nom'], $search, max(strlen($u['nom']), strlen($search))) === 0) {
    95133                                        $keep = true;
    96134                                        continue;
    97135                                }
    98136                        }
    99                         if (!$keep)
     137                        if (!$keep) {
    100138                                unset($themes[$k]);
     139                        }
    101140                }
    102141        }
    103 
    104         // et voila
    105142        return $themes;
    106143}
Note: See TracChangeset for help on using the changeset viewer.