Skip to content
Extraits de code Groupes Projets
Valider d893616b rédigé par Fil's avatar Fil
Parcourir les fichiers

une interface en ajax pour montrer les details des plugins avant de les...

une interface en ajax pour montrer les details des plugins avant de les telecharger, et autres bricoles
parent dece71e8
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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
......
......@@ -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 &ndash; '._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&#233;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(){
......
<?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(' &mdash; ',$item['tags'])."</p>\n"
:'')
. propre('[->'.$liste[$url_plugin][1].']')
);
fin_cadre_relief();
}
}
?>
\ No newline at end of file
......@@ -44,8 +44,9 @@ function formulaire_charger_plugin($retour='') {
$auto = _L("Si vous souhaitez autoriser l'installation automatique des plugins, veuillez&nbsp;:
<ul>
<li>cr&#233;er un r&#233;pertoire <code>".joli_repertoire(_DIR_PLUGINS_AUTO)."</code>&nbsp;;
<li>v&#233;rifier que le serveur est autoris&#233; &#224; &#233;crire dans ce r&#233;pertoire.".aide("droits")."</li>
<li>v&#233;rifier que le serveur est autoris&#233; &#224; &#233;crire dans ce r&#233;pertoire.".aide("install0")."</li>
</ul>");
$auto .= "<p>"._L("Certains plugins demandent aussi &#224; pouvoir t&#233;l&#233;charger des fichiers dans le r&#233;pertoire <code>lib/</code>, &#224; cr&#233;er le cas &#233;ch&#233;ant &#224; 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);
}
}
......
......@@ -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
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter