diff --git a/.gitattributes b/.gitattributes index 872b1954e5fe24ff833822fecf1e5c73a0dc27f2..bad91ba3da7e7bd083d77e706eac760fe1503ac2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -464,6 +464,7 @@ ecrire/exec/breves_edit.php -text ecrire/exec/breves_voir.php -text ecrire/exec/brouteur.php -text ecrire/exec/brouteur_frame.php -text +ecrire/exec/charger_plugin_descr.php -text ecrire/exec/config_contenu.php -text ecrire/exec/config_fonctions.php -text ecrire/exec/config_lang.php -text diff --git a/ecrire/exec/admin_plugin.php b/ecrire/exec/admin_plugin.php index fd04ab268c5ca154fe16501687dac98866118f0d..3fd701d9025fe0867ec5e952a9b2250ecac6e942 100644 --- a/ecrire/exec/admin_plugin.php +++ b/ecrire/exec/admin_plugin.php @@ -34,7 +34,12 @@ function exec_admin_plugin_dist($retour='') { echo $commencer_page(_T('icone_admin_plugin'), "configuration", "plugin"); - // barre_onglets("configuration", "plugin"); // a creer dynamiquement en fonction des plugin charges qui utilisent une page admin ? // cfg + echo "<br />\n"; + echo "<br />\n"; + + + echo gros_titre(_T('icone_admin_plugin'),'',false); + echo debut_gauche('plugin',true); echo debut_boite_info(true); @@ -50,15 +55,19 @@ function exec_admin_plugin_dist($retour='') { // on fait l'installation ici, cela permet aux scripts d'install de faire des affichages ... installe_plugins(); - echo debut_droite('plugin', true); - echo gros_titre(_T('icone_admin_plugin'),'',false); + // Si on a CFG, ajoute un lien (oui c'est mal) + if (isset($GLOBALS['meta']['plugin']['CFG'])) { + debut_cadre_enfonce(); + echo icone_horizontale('CFG – '._T('configuration'), generer_url_ecrire('cfg'), 'plugin-24.gif', '', true); + fin_cadre_enfonce(); + } + + echo debut_droite('plugin', true); $lpf = liste_plugin_files(); $lcpa = liste_chemin_plugin_actifs(); - echo "<br />\n"; - if ($lpf) { echo debut_cadre_trait_couleur('plugin-24.gif',true,'',_T('plugins_liste'), 'liste_plugins'); @@ -75,11 +84,11 @@ function exec_admin_plugin_dist($retour='') { if (count($lpf) - count($lcpa) > 9 AND _request('afficher_tous_plugins') != 'oui') { - $dir_auto = substr(_DIR_PLUGINS_AUTO, strlen(_DIR_PLUGINS)); + $dir_auto = substr(_DIR_PLUGINS_AUTO, strlen(_DIR_PLUGINS)); $lcpaffiche = array(); foreach ($lpf as $f) if (!strpos($f, '/') - or substr($f, 0, strlen($dir_auto)) == $dir_auto + OR ($dir_auto AND substr($f, 0, strlen($dir_auto)) == $dir_auto) OR in_array($f, $lcpa)) $lcpaffiche[] = $f; $corps = "<p>"._L(count($lcpa).' plugins activés.')."</p>\n" @@ -147,7 +156,7 @@ function tree_open_close_dir(&$current,$target,$deplie=array()){ } // http://doc.spip.org/@affiche_arbre_plugins -function affiche_arbre_plugins($liste_plugins,$liste_plugins_actifs){ +function affiche_arbre_plugins($liste_plugins, $liste_plugins_actifs){ $racine = basename(_DIR_PLUGINS); $init_dir = $current_dir = ""; // liste des repertoires deplies : construit en remontant l'arbo de chaque plugin actif @@ -192,7 +201,7 @@ function affiche_arbre_plugins($liste_plugins,$liste_plugins_actifs){ unset($liste_plugins[$key]); } } - $res .= tree_open_close_dir($current_dir,$init_dir); + $res .= tree_open_close_dir($current_dir,$init_dir, true); return http_script(" jQuery(function(){ diff --git a/ecrire/exec/charger_plugin_descr.php b/ecrire/exec/charger_plugin_descr.php new file mode 100644 index 0000000000000000000000000000000000000000..c2d9fb9f97aa39d1543e45740c1812f32e5cd9e9 --- /dev/null +++ b/ecrire/exec/charger_plugin_descr.php @@ -0,0 +1,49 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2007 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_spip('inc/plugin'); + +// Un morceau d'ajax qui affiche le descriptif d'un plugin a partir +// des listes de plugins a telecharger, dans exec=admin_plugin +// http://doc.spip.org/@exec_admin_plugin_dist +function exec_charger_plugin_descr_dist() { + + if (!autoriser('configurer', 'plugins')) { + include_spip('inc/minipres'); + echo minipres(); + exit; + } + + if ($url_plugin = _request('url')) { + include_spip('inc/charger_plugin'); + include_spip('inc/texte'); + $liste = liste_plugins_distants($url_plugin); + $item = $liste[$url_plugin][2]; + include_spip('inc/presentation'); + debut_cadre_relief(); + echo propre('<h3><multi>' + .sinon($item['titre'], $liste[$url_plugin][0]).'</multi></h3>' + .'<multi>'.$item['descriptif'].'</multi>' + .$item['lesauteurs']. ' ' + . ($item['tags'] + ? "<p>".join(' — ',$item['tags'])."</p>\n" + :'') + . propre('[->'.$liste[$url_plugin][1].']') + ); + fin_cadre_relief(); + } + +} + +?> \ No newline at end of file diff --git a/ecrire/inc/charger_plugin.php b/ecrire/inc/charger_plugin.php index 8455ce96e8d8ce7e5ddd529902f3767b655de632..09bedd27968cdb13ba11ac9c8be9edceda2f663f 100644 --- a/ecrire/inc/charger_plugin.php +++ b/ecrire/inc/charger_plugin.php @@ -44,8 +44,9 @@ function formulaire_charger_plugin($retour='') { $auto = _L("Si vous souhaitez autoriser l'installation automatique des plugins, veuillez : <ul> <li>créer un répertoire <code>".joli_repertoire(_DIR_PLUGINS_AUTO)."</code> ; - <li>vérifier que le serveur est autorisé à écrire dans ce répertoire.".aide("droits")."</li> + <li>vérifier que le serveur est autorisé à écrire dans ce répertoire.".aide("install0")."</li> </ul>"); + $auto .= "<p>"._L("Certains plugins demandent aussi à pouvoir télécharger des fichiers dans le répertoire <code>lib/</code>, à créer le cas échéant à la racine du site.")."</p>"; } if (!$auto) @@ -96,9 +97,15 @@ function interface_plugins_auto($retour) { $nick = strtolower(basename($url, '.zip')); - $menu[$nick] = '<div style="height:1.9em;overflow:hidden;border-bottom:1px dotted grey;"><label><input type="radio" name="url_zip_plugin" value="'.entites_html($url).'" />'."<b title='$url'>$nick</b></label> | ".$titre."</div>\n"; + $menu[$nick] = '<div class="desc_plug"><label><input type="radio" name="url_zip_plugin" value="'.entites_html($url).'" />'."<b title='$url'>$nick</b></label> | ".$titre."</div>\n"; } ksort($menu); + + $res .= "<style type='text/css'><!-- + .desc_plug { + height:1.9em;overflow:hidden;border-bottom:1px dotted grey; +} // --></style>\n"; + $res .= "<div style='border: solid 1px $couleur_foncee; padding:3px; background-color:white; height: 200px; overflow:auto;overflow-y: auto;' class='cadre-trait-couleur'>\n"; # <select name='url_zip_plugin'> # ."<option>"._L('choisir...')."</option>" @@ -106,6 +113,15 @@ function interface_plugins_auto($retour) { # ."\n</select></p>\n"; $res .= "</div>\n"; + $res .= http_script(" + jQuery('.desc_plug').click(function() { + var me = this; + jQuery('#desc').load('".generer_url_ecrire('charger_plugin_descr', 'url=', '\\x26')."'+$(me).find('input').attr('value')); + });") + ."\n<div id='desc'></div>\n"; + + + $res .= _L("ou..."); } @@ -404,16 +420,22 @@ function essaie_ajouter_liste_plugins($url) { // Recherche les enclosures de type zip dans un flux rss ou atom // les renvoie sous forme de tableau url => titre +// si $desc on ramene aussi le descriptif du paquet desc // http://doc.spip.org/@chercher_enclosures_zip -function chercher_enclosures_zip($rss) { +function chercher_enclosures_zip($rss, $desc) { $liste = array(); include_spip('inc/syndic'); foreach(analyser_backend($rss) as $item) if ($item['enclosures'] AND $zips = extraire_balises($item['enclosures'], 'a')) foreach ($zips as $zip) - if (extraire_attribut($zip, 'type') == 'application/zip') - $liste[extraire_attribut($zip, 'href')] = array($item['titre'], $item['url']); + if (extraire_attribut($zip, 'type') == 'application/zip') { + if ($url = extraire_attribut($zip, 'href')) { + $liste[$url] = array($item['titre'], $item['url']); + if ($desc == $url) + $liste[$url][] = $item; + } + } spip_log(count($liste).' enclosures au format zip'); return $liste; } @@ -421,8 +443,9 @@ function chercher_enclosures_zip($rss) { // Renvoie la liste des plugins distants (accessibles a travers // l'une des listes de plugins) +// Si on passe desc = un url, ramener le descriptif de ce paquet // http://doc.spip.org/@liste_plugins_distants -function liste_plugins_distants() { +function liste_plugins_distants($desc = false) { // TODO une liste multilingue a telecharger $liste = array( 'http://files.spip.org/spip-zone/crayons.zip' => @@ -441,7 +464,7 @@ function liste_plugins_distants() { foreach ($flux as $url => $c) { if (file_exists($cache=_DIR_TMP.'syndic_plug_'.md5($url).'.xml') AND lire_fichier($cache, $rss)) - $liste = array_merge(chercher_enclosures_zip($rss),$liste); + $liste = array_merge(chercher_enclosures_zip($rss, $desc),$liste); } } diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 048b3cc5c226097d0467df6c48fbca56eb7c0e2a..1b684f81d4b3f82d5d8d2de542315d3f2508e02b 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -439,7 +439,7 @@ function _L($text, $args=array()) { if ($GLOBALS['test_i18n']) return "<span style='color:red;'>$text</span>"; else - return str_replace('_', ' ',$text); + return $text; } // Afficher "ecrire/data/" au lieu de "data/" dans les messages