Changeset 89632 in spip-zone


Ignore:
Timestamp:
May 24, 2015, 4:27:53 PM (4 years ago)
Author:
eric@…
Message:

Renommage pour se débarrasser des préfixes langonet superflus.
Correction de la génération des fichiers corrigés.
Suppression de certaines notices.
Refactoring de code.

Location:
_plugins_/langonet/trunk
Files:
1 added
9 edited
13 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/langonet/trunk/formulaires/langonet_generer.php

    r71992 r89632  
    3737
    3838        // Generation du fichier toujours en UTF-8 aujourd'hui
    39         $langonet_generer = charger_fonction('langonet_generer_fichier','inc');
     39        $langonet_generer = charger_fonction('generer_fichier','inc');
    4040        $resultats = $langonet_generer($module, $langue_source, $ou_langue, $langue_cible, $mode, 'utf8');
    41         if ($resultats['erreur']) {
     41        if (isset($resultats['erreur'])) {
    4242                $retour['message_erreur'] = $resultats['erreur'];
    4343        }
  • _plugins_/langonet/trunk/formulaires/langonet_lister.php

    r72391 r89632  
    3636
    3737        // Chargement de la fonction d'affichage
    38         $langonet_lister_items = charger_fonction('langonet_lister_items','inc');
     38        $langonet_lister_items = charger_fonction('lister_items','inc');
    3939
    4040        // Recuperation des items du fichier et formatage des resultats pour affichage
    4141        $retour = array();
    4242        $resultats = $langonet_lister_items($module, $langue, $ou_langue);
    43         if ($resultats['erreur']) {
     43        if (isset($resultats['erreur'])) {
    4444                $retour['message_erreur'] = $resultats['erreur'];
    4545        }
  • _plugins_/langonet/trunk/formulaires/langonet_rechercher.php

    r89111 r89632  
    7878        else
    7979                $modules = _request('modules');
    80         $langonet_rechercher = charger_fonction('langonet_rechercher_'.$type,'inc');
     80        $langonet_rechercher = charger_fonction('rechercher_'.$type,'inc');
    8181
    8282        // Verification et formatage des resultats de la recherche
    8383        $retour = array();
    8484        $resultats = $langonet_rechercher($pattern, $correspondance, $modules);
    85         if ($resultats['erreur']) {
     85        if (isset($resultats['erreur'])) {
    8686                $retour['message_erreur'] = $resultats['erreur'];
    8787        }
  • _plugins_/langonet/trunk/formulaires/langonet_verifier_item.php

    r89435 r89632  
    4040
    4141        // Lancement de la vérification utilisation ou définition
    42         $langonet_verifier_items = charger_fonction('langonet_verifier_items','inc');
     42        $langonet_verifier_items = charger_fonction('verifier_items','inc');
    4343        $resultats = $langonet_verifier_items($module, $langue, $ou_langue, $ou_fichiers, $verification);
    4444
     
    5050                $mode = ($verification == 'definition') ? 'oublie' : 'inutile';
    5151
    52                 $langonet_corriger = charger_fonction('langonet_generer_fichier','inc');
     52                $langonet_corriger = charger_fonction('generer_fichier','inc');
    5353                $corrections = $langonet_corriger($module, $langue, $ou_langue, $langue, $mode, $encodage, $items_a_corriger);
    5454                if ($corrections['fichier']) {
  • _plugins_/langonet/trunk/formulaires/langonet_verifier_l.php

    r72642 r89632  
    2323
    2424        // Lancement de la vérification fonction_l
    25         $langonet_verifier_items = charger_fonction('langonet_verifier_l','inc');
     25        $langonet_verifier_items = charger_fonction('verifier_l','inc');
    2626        $resultats = $langonet_verifier_items($ou_fichier);
    2727
     
    3737                // déterminer le module à corriger ainsi que la langue de référence.
    3838                // Si aucun module n'est trouvé on choisit le module "indefini" et la langue de référence "fr".
    39                 include_spip('inc/langonet_utils');
     39                include_spip('inc/outiller');
    4040                list($module, $langue, $ou_langue) = trouver_module_langue($ou_fichier);
    4141
    42                 $langonet_corriger = charger_fonction('langonet_generer_fichier','inc');
     42                $langonet_corriger = charger_fonction('generer_fichier','inc');
    4343                $corrections = $langonet_corriger($module, $langue, $ou_langue, $langue, $mode, $encodage, $resultats["items_a_corriger"]);
    4444                if ($corrections['fichier']) {
  • _plugins_/langonet/trunk/inc/generer_fichier.php

    r89621 r89632  
    3131 * @return
    3232 */
    33 function inc_langonet_generer_fichier($module, $langue_source, $ou_langue, $langue_cible='en', $mode='valeur', $encodage='utf8', $oublis_inutiles=array()) {
     33function inc_generer_fichier($module, $langue_source, $ou_langue, $langue_cible='en', $mode='valeur', $encodage='utf8', $oublis_inutiles=array()) {
    3434
    3535        // Modes correspondant à des corrections
     
    9999                $dossier_cible = sous_repertoire($dossier_cible, "generation");
    100100        }
    101         $fichier_langue = ecrire_fichier_langue_php($dossier_cible, $langue_cible, $module, $items_cible, $bandeau);
     101        $fichier_langue = ecrire_fichier_langue_php($dossier_cible, $langue_cible, $module, $items_cible, $bandeau, $langue_source);
    102102
    103103        if (!$fichier_langue) {
     
    121121 */
    122122function generer_items_cible($var_source, $var_cible, $mode='index', $encodage='utf8', $oublis_inutiles=array()) {
    123         include_spip('inc/langonet_utils');
    124123
    125124        // On distingue 3 cas de génération d'un fichier de langue cible :
     
    155154                                $texte = _LANGONET_TAG_NOUVEAU;
    156155                        }
    157                         else if (($mode == 'fonction_l') OR (($mode == 'oublie') AND $_valeur)) {
     156                        else if (($mode == 'fonction_l')) {
    158157                                $texte = array(
    159158                                        _LANGONET_TAG_DEFINITION_L,
     
    187186
    188187/**
     188 * Ecriture d'un fichier de langue à partir de la liste de ces couples (item, traduction)
     189 * et de son bandeau d'information
     190 * Cette fonction est aussi utilisée par PlugOnet
     191 *
     192 * @param $dir
     193 * @param $langue
     194 * @param $module
     195 * @param $items
     196 * @param string $bandeau
     197 * @return bool|string
     198 */
     199function ecrire_fichier_langue_php($dir, $langue, $module, $items, $bandeau, $langue_source) {
     200        $nom_fichier = $dir . $module . "_" . $langue   . '.php';
     201        $contenu = produire_fichier_langue($langue, $module, $items, $bandeau, $langue_source);
     202
     203        return ecrire_fichier($nom_fichier, $contenu) ? $nom_fichier : false;
     204}
     205
     206
     207/**
    189208 * Produit un fichier de langue a partir d'un tableau (index => trad)
    190209 * Si la traduction n'est pas une chaine mais un tableau, on inclut un commentaire
     
    196215 * @return string
    197216 */
    198 function produire_fichier_langue($langue, $module, $items, $bandeau='') {
     217function produire_fichier_langue($langue, $module, $items, $bandeau, $langue_source) {
    199218        ksort($items);
    200219        $initiale = '';
     
    229248        return '<'. "?php\n" .
    230249$bandeau . '
    231 // Fichier produit par LangOnet à partir de la langue source' . $langue_source . '
     250// Fichier produit par LangOnet à partir de la langue source ' . $langue_source . '
    232251// Module: ' . $module . '
    233252// Langue: ' . $langue . '
     
    245264
    246265/**
    247  * Ecriture d'un fichier de langue à partir de la liste de ces couples (item, traduction)
    248  * et de son bandeau d'information
    249  * Cette fonction est aussi utilisée par PlugOnet
    250  *
    251  * @param $dir
    252  * @param $langue
    253  * @param $module
    254  * @param $items
    255  * @param string $bandeau
    256  * @return bool|string
    257  */
    258 function ecrire_fichier_langue_php($dir, $langue, $module, $items, $bandeau='') {
    259         $nom_fichier = $dir . $module . "_" . $langue   . '.php';
    260         $contenu = produire_fichier_langue($langue, $module, $items, $bandeau);
    261 
    262         return ecrire_fichier($nom_fichier, $contenu) ? $nom_fichier : false;
    263 }
     266 * Conversion d'un texte en utf-8
     267 *
     268 * @param string        $texte
     269 *              Texte à convertir en UTF-8
     270 *
     271 * @return string
     272 *              Texte traduit en UTF-8 ou chaine vide
     273 *
     274 */
     275function entite2utf($texte) {
     276        $texte_utf8 = '';
     277
     278        if ($texte AND is_string($texte)) {
     279                include_spip('inc/charsets');
     280                $texte_utf8 = unicode_to_utf_8(
     281                        html_entity_decode(
     282                                preg_replace('/&([lg]t;)/S', '&amp;\1', $texte),
     283                                ENT_NOQUOTES,
     284                                'utf-8')
     285                );
     286        }
     287
     288        return $texte_utf8;
     289}
     290
    264291?>
  • _plugins_/langonet/trunk/inc/lister_items.php

    r89621 r89632  
    1717 * @return array
    1818 */
    19 function inc_langonet_lister_items($module, $langue, $ou_langue) {
     19function inc_lister_items($module, $langue, $ou_langue) {
    2020
    2121        // Initialisation du tableau des resultats
     
    4141                // Si le module est traduit avec ce gestionnaire, on peut identifier les états de traduction
    4242                // de chaque item. On peut aussi identifier la langue de référence
    43                 include_spip('inc/langonet_utils');
     43                include_spip('inc/outiller');
    4444                list($est_langue_reference, $utilise_tradlang) = verifier_reference_tradlang($module, $langue, $ou_langue);
    4545
  • _plugins_/langonet/trunk/inc/outiller.php

    r89621 r89632  
    1313
    1414
    15 /**
    16  * Conversion d'un texte en utf-8
    17  *
    18  * @param string        $sujet
    19  * @return string
    20  */
    21 function entite2utf($sujet) {
    22         if (!$sujet OR !is_string($sujet)) return;
    23         include_spip('inc/charsets');
    24 
    25         return unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&amp;\1', $sujet), ENT_NOQUOTES, 'utf-8'));
    26 }
    27 
    28 
    29 //
    3015/**
    3116 * Calcul du représentant canonique d'une chaine de langue (_L ou <: :>).
     
    8368
    8469        return array($raccourci, $raccourci_brut);
    85 }
    86 
    87 
    88 /**
    89  * @param string $module
    90  * @param string $langue
    91  * @param string $ou_langue
    92  * @return array
    93  */
    94 function verifier_reference_tradlang($module, $langue, $ou_langue) {
    95         $utilise_tradlang=false;
    96         $est_langue_reference=false;
    97 
    98         $rapport_xml = _DIR_RACINE . $ou_langue . $module . '.xml';
    99         if (file_exists($rapport_xml)) {
    100                 $utilise_tradlang = true;
    101                 if ($contenu = spip_file_get_contents($rapport_xml))
    102                         if (preg_match(_LANGONET_PATTERN_REFERENCE, $contenu, $matches))
    103                                 $est_langue_reference = ($matches[1] == $langue);
    104         }
    105 
    106         return array($est_langue_reference, $utilise_tradlang);
    10770}
    10871
     
    189152
    190153/**
    191  * Creation d'un tableau des selects:
    192  * - des fichiers de langue
    193  * - des arborescences a scanner
    194  *
    195  * @param string $sel_l option du select des langues
    196  * @param array $sel_d option(s) du select des repertoires
     154 * @param string $module
     155 * @param string $langue
     156 * @param string $ou_langue
    197157 * @return array
    198158 */
    199 function creer_selects($sel_l='0',$sel_d=array(), $exclure_paquet=true, $multiple=true) {
    200         // Recuperation des repertoires des plugins par défaut
    201         $rep_plugins = lister_dossiers_plugins();
    202         // Recuperation des repertoires des extensions : _DIR_PLUGINS_DIST à partir de SPIP 3
    203         $rep_extensions = lister_dossiers_plugins(_DIR_PLUGINS_DIST);
    204         // Recuperation des repertoires des plugins supplémentaires en mutualisation : _DIR_PLUGINS_SUPPL
    205         $rep_suppl = defined('_DIR_PLUGINS_SUPPL') ? lister_dossiers_plugins(_DIR_PLUGINS_SUPPL) : array();
    206         // Recuperation des repertoires squelettes perso
    207         $rep_perso = array();
    208         $perso = strlen($GLOBALS['dossier_squelettes']) ? explode(':', $GLOBALS['dossier_squelettes']) : array('squelettes');
    209         foreach($perso as $_rep) {
    210                 if (is_dir(_DIR_RACINE . $_rep))
    211                         $rep_perso[] = $_rep;
    212         }
    213         // Recuperation des repertoires SPIP
    214         $rep_spip[] = rtrim(_DIR_RESTREINT_ABS, '/');
    215         $rep_spip[] = 'prive';
    216         $rep_spip[] = 'squelettes-dist';
    217         $rep_scan = array_merge($rep_perso, $rep_plugins, $rep_suppl, $rep_extensions, $rep_spip);
    218 
    219         // construction des <select>
    220         // -- les fichiers de langue
    221         $sel_lang = '<select name="fichier_langue" id="fichier_langue" style="margin-bottom:1em;">'."\n";
    222         $sel_lang .= '<option value="0"';
    223         $sel_lang .= ($sel_l == '0') ? ' selected="selected">' : '>';
    224         $sel_lang .= _T('langonet:option_aucun_fichier') . '</option>' . "\n";
    225         // -- les racines des arborescences a scanner
    226         if ($multiple) {
    227                 $sel_dossier = '<select name="dossier_scan[]" id="dossier_scan" multiple="multiple">' . "\n";
    228         }
    229         else {
    230                 $sel_dossier = '<select name="dossier_scan" id="dossier_scan">' . "\n";
    231                 $sel_dossier .= '<option value="0"';
    232                 $sel_dossier .= (count($sel_d) == 0) ? ' selected="selected">' : '>';
    233                 $sel_dossier .= _T('langonet:option_aucun_dossier') . '</option>' . "\n";
    234         }
    235 
    236         // la liste des options :
    237         // value (fichier_langue) =>
    238         //     $rep (nom du repertoire parent de lang/)
    239         //     $module (prefixe fichier de langue)
    240         //     $langue (index nom de langue)
    241         //     $ou_lang (chemin relatif vers fichier de langue a verifier)
    242         foreach ($rep_scan as $_rep) {
    243                 if (in_array($_rep, $rep_plugins)) {
    244                         $reel_dir = _DIR_PLUGINS . $_rep;
    245                         $ou_fichier = str_replace('../', '', $reel_dir) . '/';
    246                 }
    247                 else if (in_array($_rep, $rep_extensions)) {
    248                         $reel_dir = _DIR_PLUGINS_DIST . $_rep;
    249                         $ou_fichier = str_replace('../', '', $reel_dir) . '/';
    250                 }
    251                 else if (in_array($_rep, $rep_suppl)) {
    252                         $reel_dir = _DIR_PLUGINS_SUPPL . $_rep;
    253                         $ou_fichier = str_replace('../', '', $reel_dir) . '/';
    254                 }
    255                 else {
    256                         $reel_dir = _DIR_RACINE . $_rep;
    257                         $ou_fichier = $_rep . '/';
    258                 }
    259 
    260                 // on recupere tous les fichiers de langue directement places
    261                 // dans lang/ sans parcourir d'eventuels sous-repertoires. On exclut si demandé ou par défaut
    262                 // les fichiers de langue du paquet.xml
    263                 if (is_dir($reel_dir . '/lang/')) {
    264                         $opt_lang = '';
    265                         foreach ($fic_lang = preg_files($reel_dir . '/lang/', _LANGONET_PATTERN_FICHIERS_LANG, 250, false) as $le_module) {
    266                                 preg_match_all(_LANGONET_PATTERN_CODE_LANGUE, str_replace('.php', '', $le_module), $matches);
    267                                 $module = str_replace($matches[0][0].'.php', '', $le_module);
    268                                 $module = str_replace($reel_dir . '/lang/', '', $module);
    269                                 if (!$exclure_paquet
    270                                 OR ($exclure_paquet     AND (strtolower(substr($module, 0, 7)) != 'paquet-'))) {
    271                                         $langue = ltrim($matches[0][0], '_');
    272                                         $ou_langue = str_replace('../', '', $reel_dir) . '/lang/';
    273                                         $value = $_rep.':'.$module.':'.$langue.':'.$ou_langue;
    274                                         $opt_lang .= '<option value="' . $value;
    275                                         $opt_lang .= ($value == $sel_l) ? '" selected="selected">' : '">';
    276                                         $opt_lang .= str_replace('.php', '', str_replace($reel_dir . '/lang/', '', $le_module)) . '</option>' . "\n";
    277                                 }
    278                         }
    279                         if ($opt_lang) {
    280                                 $sel_lang .= '<optgroup label="' . str_replace('../', '', $reel_dir) . '/">' . "\n";
    281                                 $sel_lang .= $opt_lang;
    282                                 $sel_lang .= '</optgroup>' . "\n";
    283                         }
    284                 }
    285                 $sel_dossier .= '<option value="' . $ou_fichier;
    286                 $sel_dossier .= (in_array($ou_fichier,$sel_d)) ? '" selected="selected">' : '">';
    287                 $sel_dossier .= str_replace('../', '', $reel_dir) . '/</option>' . "\n";
    288         }
    289 
    290         $sel_lang .= '</select>' . "\n";
    291         $sel_dossier .= '</select>' . "\n";
    292 
    293         return $retour = array('fichiers' => $sel_lang, 'dossiers' => $sel_dossier);
    294 }
    295 
    296 
    297 /**
    298  * Lister tous les plugins contenus dans une arborescence donnée.
    299  *
    300  * @param string $racine_arborescence
    301  * @return array
    302  */
    303 // $rep_base  => le repertoire de depart de l'arboresence a scanner
    304 function lister_dossiers_plugins($racine_arborescence=null) {
    305         include_spip('inc/plugin');
    306         // liste_plugin_files() integre les repertoires supplementaires de plugins
    307         // dans le cadre de la mutualisation
    308         $liste_dossiers = liste_plugin_files($racine_arborescence);
    309         if (is_null($racine_arborescence))
    310                 $racine_arborescence = _DIR_PLUGINS;
    311         $dossiers = array();
    312         foreach ($liste_dossiers as $_dossier) {
    313                 $chemin = $racine_arborescence . $_dossier;
    314                 $dossiers[] = $_dossier;
    315                 if ($liste_sous_dossiers = glob($chemin . '/*/lang', GLOB_ONLYDIR)) {
    316                         for ($i = 0; $i < count($liste_sous_dossiers); $i++) {
    317                         $dossiers[] = str_replace($racine_arborescence, '', str_replace('/lang', '', $liste_sous_dossiers[$i]));
    318                         }
    319                 }
    320         }
    321         return $dossiers;
     159function verifier_reference_tradlang($module, $langue, $ou_langue) {
     160        $utilise_tradlang=false;
     161        $est_langue_reference=false;
     162
     163        $rapport_xml = _DIR_RACINE . $ou_langue . $module . '.xml';
     164        if (file_exists($rapport_xml)) {
     165                $utilise_tradlang = true;
     166                if ($contenu = spip_file_get_contents($rapport_xml))
     167                        if (preg_match(_LANGONET_PATTERN_REFERENCE, $contenu, $matches))
     168                                $est_langue_reference = ($matches[1] == $langue);
     169        }
     170
     171        return array($est_langue_reference, $utilise_tradlang);
    322172}
    323173
  • _plugins_/langonet/trunk/inc/rechercher_item.php

    r89621 r89632  
    1414 * @return array
    1515 */
    16 function inc_langonet_rechercher_item($pattern, $correspondance, $modules) {
     16function inc_rechercher_item($pattern, $correspondance, $modules) {
    1717
    1818        // Initialisation du tableau des resultats
  • _plugins_/langonet/trunk/inc/rechercher_texte.php

    r89621 r89632  
    1414 * @return array
    1515 */
    16 function inc_langonet_rechercher_texte($pattern, $correspondance, $modules) {
     16function inc_rechercher_texte($pattern, $correspondance, $modules) {
    1717
    1818        // Initialisation du tableau des resultats
  • _plugins_/langonet/trunk/inc/verifier_items.php

    r89621 r89632  
    7777 * @return array
    7878 */
    79 function inc_langonet_verifier_items($module, $langue, $ou_langue, $ou_fichiers, $verification) {
     79function inc_verifier_items($module, $langue, $ou_langue, $ou_fichiers, $verification) {
    8080
    8181        // On constitue la liste des fichiers pouvant être susceptibles de contenir des items de langue.
     
    9393        // précédemment constituée.
    9494        $utilises = collecter_occurrences($fichiers);
    95         exporter_tableau($utilises['debug'], array('expression', 'module', 'raccourci', 'suffixe', 'ligne'));
    9695
    9796        // On charge le fichier de langue à vérifier qui doit exister dans l'arborescence $ou_langue
     
    232231 */
    233232function memoriser_occurrence($utilisations, $occurrence, $fichier, $no_ligne, $ligne, $regexp) {
    234         include_spip('inc/langonet_utils');
     233        include_spip('inc/outiller');
    235234
    236235        list($expression, $module, $raccourci_regexp, $suite, $no_colonne) = $occurrence;
     
    527526                                                        // Si pas normalise, c'est une auto-definition
    528527                                                        // Si l'index est deja pris pour un autre texte
    529                                                         // (32 caracteres initiaux communs)
     528                                                        // (48 caracteres initiaux communs)
    530529                                                        // forcer un suffixe md5
    531530                                                        // TODO : a priori ce code devrait être obsolete
  • _plugins_/langonet/trunk/inc/verifier_l.php

    r89621 r89632  
    3030 *              de l'erreur dans l'index 'erreur'; sinon, cet index n'existe pas.
    3131 */
    32 function inc_langonet_verifier_l($ou_fichier) {
     32function inc_verifier_l($ou_fichier) {
    3333
    3434        // Initialisation du tableau des resultats
     
    4343        // Chercher, pour chaque fichier collecté, le pattern de la fonction _L()
    4444        if ($fichiers) {
    45                 include_spip('inc/langonet_utils');
     45                include_spip('inc/outiller');
    4646
    4747                $occurrences = array();
  • _plugins_/langonet/trunk/langonet_fonctions.php

    r89435 r89632  
    1313        // On cherche le dernier fichier de log de chaque fichier de langue
    1414        $liste_tous = array();
    15         $sous_dir = ($operation == 'generation') ? 'generation/': "verification/${operation}/";
     15        $sous_dir = (!$operation OR ($operation == 'generation')) ? 'generation/': "verification/${operation}/";
    1616        $langues = preg_files(_DIR_TMP . "langonet/${sous_dir}", '[^/]*_[\w{2,3}]*.php$');
    1717        foreach ($langues as $_fichier) {
     
    3131 */
    3232
    33 function langonet_creer_bulle_fichier($fichier, $type='log', $action='telecharger') {
     33function langonet_creer_bulle_fichier($fichier, $type='lang', $action='telecharger') {
    3434
    3535        // Date du fichier formatee
     
    4848 */
    4949function langonet_creer_select_langues($sel_l='0', $exclure_paquet=true) {
    50         include_spip('inc/langonet_utils');
    5150        $retour = creer_selects($sel_l, array(), $exclure_paquet);
    5251        return $retour['fichiers'];
     
    6059 */
    6160function langonet_creer_select_dossiers($sel_d=array(), $multiple=true) {
    62         include_spip('inc/langonet_utils');
    6361        if (is_string($sel_d)) $sel_d = array($sel_d);
    6462        $retour = creer_selects('0', $sel_d, true, $multiple);
     
    105103}
    106104
    107 function exporter_tableau($tableau, $colonnes, $separateur="|") {
    108         if ($tableau) {
    109                 $contenu = '';
    110                 if ($colonnes) {
    111                         foreach ($colonnes as $_colonne) {
    112                                 $contenu .= $_colonne . $separateur;
     105
     106
     107
     108/**
     109 * Creation d'un tableau des selects:
     110 * - des fichiers de langue
     111 * - des arborescences a scanner
     112 *
     113 * @param string $sel_l option du select des langues
     114 * @param array $sel_d option(s) du select des repertoires
     115 * @return array
     116 */
     117function creer_selects($sel_l='0',$sel_d=array(), $exclure_paquet=true, $multiple=true) {
     118        include_spip('inc/outiller');
     119
     120        // Recuperation des repertoires des plugins par défaut
     121        $rep_plugins = lister_dossiers_plugins();
     122        // Recuperation des repertoires des extensions : _DIR_PLUGINS_DIST à partir de SPIP 3
     123        $rep_extensions = lister_dossiers_plugins(_DIR_PLUGINS_DIST);
     124        // Recuperation des repertoires des plugins supplémentaires en mutualisation : _DIR_PLUGINS_SUPPL
     125        $rep_suppl = defined('_DIR_PLUGINS_SUPPL') ? lister_dossiers_plugins(_DIR_PLUGINS_SUPPL) : array();
     126        // Recuperation des repertoires squelettes perso
     127        $rep_perso = array();
     128        $perso = strlen($GLOBALS['dossier_squelettes']) ? explode(':', $GLOBALS['dossier_squelettes']) : array('squelettes');
     129        foreach($perso as $_rep) {
     130                if (is_dir(_DIR_RACINE . $_rep))
     131                        $rep_perso[] = $_rep;
     132        }
     133        // Recuperation des repertoires SPIP
     134        $rep_spip[] = rtrim(_DIR_RESTREINT_ABS, '/');
     135        $rep_spip[] = 'prive';
     136        $rep_spip[] = 'squelettes-dist';
     137        $rep_scan = array_merge($rep_perso, $rep_plugins, $rep_suppl, $rep_extensions, $rep_spip);
     138
     139        // construction des <select>
     140        // -- les fichiers de langue
     141        $sel_lang = '<select name="fichier_langue" id="fichier_langue" style="margin-bottom:1em;">'."\n";
     142        $sel_lang .= '<option value="0"';
     143        $sel_lang .= ($sel_l == '0') ? ' selected="selected">' : '>';
     144        $sel_lang .= _T('langonet:option_aucun_fichier') . '</option>' . "\n";
     145        // -- les racines des arborescences a scanner
     146        if ($multiple) {
     147                $sel_dossier = '<select name="dossier_scan[]" id="dossier_scan" multiple="multiple">' . "\n";
     148        }
     149        else {
     150                $sel_dossier = '<select name="dossier_scan" id="dossier_scan">' . "\n";
     151                $sel_dossier .= '<option value="0"';
     152                $sel_dossier .= (count($sel_d) == 0) ? ' selected="selected">' : '>';
     153                $sel_dossier .= _T('langonet:option_aucun_dossier') . '</option>' . "\n";
     154        }
     155
     156        // la liste des options :
     157        // value (fichier_langue) =>
     158        //     $rep (nom du repertoire parent de lang/)
     159        //     $module (prefixe fichier de langue)
     160        //     $langue (index nom de langue)
     161        //     $ou_lang (chemin relatif vers fichier de langue a verifier)
     162        foreach ($rep_scan as $_rep) {
     163                if (in_array($_rep, $rep_plugins)) {
     164                        $reel_dir = _DIR_PLUGINS . $_rep;
     165                        $ou_fichier = str_replace('../', '', $reel_dir) . '/';
     166                }
     167                else if (in_array($_rep, $rep_extensions)) {
     168                        $reel_dir = _DIR_PLUGINS_DIST . $_rep;
     169                        $ou_fichier = str_replace('../', '', $reel_dir) . '/';
     170                }
     171                else if (in_array($_rep, $rep_suppl)) {
     172                        $reel_dir = _DIR_PLUGINS_SUPPL . $_rep;
     173                        $ou_fichier = str_replace('../', '', $reel_dir) . '/';
     174                }
     175                else {
     176                        $reel_dir = _DIR_RACINE . $_rep;
     177                        $ou_fichier = $_rep . '/';
     178                }
     179
     180                // on recupere tous les fichiers de langue directement places
     181                // dans lang/ sans parcourir d'eventuels sous-repertoires. On exclut si demandé ou par défaut
     182                // les fichiers de langue du paquet.xml
     183                if (is_dir($reel_dir . '/lang/')) {
     184                        $opt_lang = '';
     185                        foreach ($fic_lang = preg_files($reel_dir . '/lang/', _LANGONET_PATTERN_FICHIERS_LANG, 250, false) as $le_module) {
     186                                preg_match_all(_LANGONET_PATTERN_CODE_LANGUE, str_replace('.php', '', $le_module), $matches);
     187                                $module = str_replace($matches[0][0].'.php', '', $le_module);
     188                                $module = str_replace($reel_dir . '/lang/', '', $module);
     189                                if (!$exclure_paquet
     190                                OR ($exclure_paquet     AND (strtolower(substr($module, 0, 7)) != 'paquet-'))) {
     191                                        $langue = ltrim($matches[0][0], '_');
     192                                        $ou_langue = str_replace('../', '', $reel_dir) . '/lang/';
     193                                        $value = $_rep.':'.$module.':'.$langue.':'.$ou_langue;
     194                                        $opt_lang .= '<option value="' . $value;
     195                                        $opt_lang .= ($value == $sel_l) ? '" selected="selected">' : '">';
     196                                        $opt_lang .= str_replace('.php', '', str_replace($reel_dir . '/lang/', '', $le_module)) . '</option>' . "\n";
     197                                }
    113198                        }
    114                         $contenu = rtrim($contenu, $separateur) . "\n";
    115                 }
    116 
    117                 foreach ($tableau as $_ligne) {
    118                         for ($i=0; $i <= count($colonnes); $i++ ) {
    119                                 $contenu .= $_ligne[$i] . $separateur;
     199                        if ($opt_lang) {
     200                                $sel_lang .= '<optgroup label="' . str_replace('../', '', $reel_dir) . '/">' . "\n";
     201                                $sel_lang .= $opt_lang;
     202                                $sel_lang .= '</optgroup>' . "\n";
    120203                        }
    121                         $contenu = rtrim($contenu, $separateur) . "\n";
    122                 }
    123 
    124                 $dossier_csv = sous_repertoire(_DIR_TMP, 'langonet');
    125                 $dossier_csv = sous_repertoire($dossier_csv, 'export');
    126                 $fichier_csv = $dossier_csv . 'occurrences_' . date("Ymd_His") . '.csv';
    127                 if ($contenu)
    128                         ecrire_fichier($fichier_csv, $contenu);
    129         }
     204                }
     205                $sel_dossier .= '<option value="' . $ou_fichier;
     206                $sel_dossier .= (in_array($ou_fichier,$sel_d)) ? '" selected="selected">' : '">';
     207                $sel_dossier .= str_replace('../', '', $reel_dir) . '/</option>' . "\n";
     208        }
     209
     210        $sel_lang .= '</select>' . "\n";
     211        $sel_dossier .= '</select>' . "\n";
     212
     213        return $retour = array('fichiers' => $sel_lang, 'dossiers' => $sel_dossier);
     214}
     215
     216
     217/**
     218 * Lister tous les plugins contenus dans une arborescence donnée.
     219 *
     220 * @param string $racine_arborescence
     221 * @return array
     222 */
     223// $rep_base  => le repertoire de depart de l'arboresence a scanner
     224function lister_dossiers_plugins($racine_arborescence=null) {
     225        include_spip('inc/plugin');
     226        // liste_plugin_files() integre les repertoires supplementaires de plugins
     227        // dans le cadre de la mutualisation
     228        $liste_dossiers = liste_plugin_files($racine_arborescence);
     229        if (is_null($racine_arborescence))
     230                $racine_arborescence = _DIR_PLUGINS;
     231        $dossiers = array();
     232        foreach ($liste_dossiers as $_dossier) {
     233                $chemin = $racine_arborescence . $_dossier;
     234                $dossiers[] = $_dossier;
     235                if ($liste_sous_dossiers = glob($chemin . '/*/lang', GLOB_ONLYDIR)) {
     236                        for ($i = 0; $i < count($liste_sous_dossiers); $i++) {
     237                        $dossiers[] = str_replace($racine_arborescence, '', str_replace('/lang', '', $liste_sous_dossiers[$i]));
     238                        }
     239                }
     240        }
     241        return $dossiers;
    130242}
    131243
  • _plugins_/langonet/trunk/paquet.xml

    r89435 r89632  
    22        prefix="langonet"
    33        categorie="outil"
    4         version="1.1.1"
     4        version="1.1.2"
    55        etat="test"
    66        compatibilite="[3.0.0;3.1.*]"
  • _plugins_/langonet/trunk/prive/squelettes/contenu/langonet.html

    r72597 r89632  
    22<h1 class="grostitre"><:langonet:titre_page:></h1>
    33
    4 [(#SET{inclusion, [inc-(#ENV{type-page})_[(#ENV{operation, verifier_item})]]})]
     4[(#SET{inclusion, [inc-(#ENV{operation, verifier_item})]})]
    55<INCLURE{fond=prive/squelettes/inclure/#GET{inclusion}, env} />
  • _plugins_/langonet/trunk/prive/squelettes/liste/fichiers_lang.html

    r89435 r89632  
    77                </caption>
    88                <tbody>
    9 <BOUCLE_liste_fichiers_lang(DATA) {source table, #VAL|langonet_lister_fichiers_lang}{where?}{par cle}{pagination #ENV{pas, 5}}>
     9<BOUCLE_liste_fichiers_lang(DATA) {source table, #ENV{verification}|langonet_lister_fichiers_lang}{where?}{par cle}{pagination #ENV{pas, 5}}>
    1010                        [(#SET{bulle, #VALEUR|langonet_creer_bulle_fichier{lang, telecharger}})]
    1111                        <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd, row_even})]">
Note: See TracChangeset for help on using the changeset viewer.