X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fplugins%2Fafficher_plugin.php;fp=www%2Fecrire%2Fplugins%2Fafficher_plugin.php;h=e12d3a3a0d016e7cfbbb361e0178f35b164e7912;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/plugins/afficher_plugin.php b/www/ecrire/plugins/afficher_plugin.php new file mode 100644 index 0000000..e12d3a3 --- /dev/null +++ b/www/ecrire/plugins/afficher_plugin.php @@ -0,0 +1,201 @@ +" . join('
', $info['erreur']) . "")); + + $cfg = !$actif ? '' : plugin_bouton_config($plug_file,$info,$dir_plugins); + + // numerotons les occurrences d'un meme prefix + $versions[$prefix] = $id = isset($versions[$prefix]) ? $versions[$prefix] + 1 : ''; + + $class_li .= ($actif?" actif":"") . ($expose?" on":"") . (isset($info['erreur']) ? " erreur" : ''); + + return "
  • " + . (($erreur OR $dir_plugins===_DIR_EXTENSIONS) + ? '': plugin_checkbox(++$id_input, $plug_file, $actif)) + . plugin_resume($info, $dir_plugins, $plug_file, $url_page) + . $cfg + . $erreur + . (($dir_plugins!==_DIR_EXTENSIONS AND plugin_est_installe($plug_file)) + ? plugin_desintalle($plug_file) : '') + . "
    " // pour l'ajax de exec/info_plugin + . (!$expose ? '' : affiche_bloc_plugin($plug_file, $info)) + . "
    " + ."
  • "; +} + +function plugin_bouton_config($nom, $infos, $dir) +{ + // la verification se base sur le filesystem + // il faut donc n'utiliser que des minuscules, par convention + $prefix = strtolower($infos['prefix']); + // si plugin.xml fournit un squelette, le prendre + if ($infos['config']) + return recuperer_fond("$dir$nom/" . $infos['config'], + array('script' => 'configurer_' . $prefix, + 'nom' => $nom)); + + // si le plugin CFG est la, l'essayer + if (defined('_DIR_PLUGIN_CFG')) { + if (include_spip('inc/cfg')) // test CFG version >= 1.0.5 + if ($cfg = icone_lien_cfg("$dir$nom", "cfg")) + return ""; + } + + // sinon prendre le squelette std sur le nom std + return recuperer_fond("prive/modeles/cfg", + array('script' => 'configurer_' . $prefix, + 'nom' => $nom)); +} + +// checkbox pour activer ou desactiver +// si ce n'est pas une extension + +function plugin_checkbox($id_input, $file, $actif) +{ + $name = substr(md5($file),0,16); + + return "
    \n" + . "" + . "\n" + . "
    "; +} + +// Cartouche Resume + +function plugin_resume($info, $dir_plugins, $plug_file, $url_page) +{ + $desc = plugin_propre($info['description']); + $dir = $dir_plugins.$plug_file; + if (($p=strpos($desc, "
    "))!==FALSE) + $desc = substr($desc, 0,$p); + $url = parametre_url($url_page, "plugin", $dir); + + if (isset($info['icon']) and $i = trim($info['icon'])) { + include_spip("inc/filtres_images_mini"); + $i = inserer_attribut(image_reduire("$dir/$i", 32),'alt',''); + $i = "
    $i
    "; + } else $i = ''; + + return "
    " + . "

    " + . typo($info['nom']) + . "

    " + . " ".$info['version']."" + . " - " + . plugin_etat_en_clair($info['etat']) + . "" + . "
    ".couper($desc,70)."
    " + . $i + . "
    "; + +} + +function plugin_desintalle($plug_file){ + + $action = redirige_action_auteur('desinstaller_plugin',$plug_file,'admin_plugin'); + $text = _T('bouton_desinstaller'); + $text2 = _T('info_desinstaller_plugin'); + $file = basename($plug_file); + + return "
    [". + "" + . $text + . "]
    " ; +} + +function plugin_etat_en_clair($etat){ + if (!in_array($etat,array('stable','test','experimental'))) + $etat = 'developpement'; + return _T('plugin_etat_'.$etat); +} + +// http://doc.spip.org/@plugin_propre +function plugin_propre($texte) { + $mem = $GLOBALS['toujours_paragrapher']; + $GLOBALS['toujours_paragrapher'] = false; + $texte = propre($texte); + $GLOBALS['toujours_paragrapher'] = $mem; + return $texte; +} + + + +// http://doc.spip.org/@affiche_bloc_plugin +function affiche_bloc_plugin($plug_file, $info, $dir_plugins=null) { + if (!$dir_plugins) + $dir_plugins = _DIR_PLUGINS; + + $s = ""; + // TODO: le traiter_multi ici n'est pas beau + // cf. description du plugin/_stable_/ortho/plugin.xml + if (isset($info['description'])) + $s .= "
    ".plugin_propre($info['description']) . "
    \n"; + + if (isset($info['auteur']) AND trim($info['auteur'])) + $s .= "
    " . _T('public:par_auteur') .' '. plugin_propre($info['auteur']) . "
    \n"; + if (isset($info['licence'])) + $s .= "
    - " . _T('intitule_licence') .' '. plugin_propre($info['licence']) . "
    \n"; + + if (trim($info['lien'])) { + $lien = $info['lien']; + if (!preg_match(',^https?://,iS', $lien)) + $lien = extraire_attribut(extraire_balise(propre($lien),'a'),'href'); + $s .= "
    " . _T('en_savoir_plus') .'
    '; + } + + // + // Ajouter les infos techniques + // + $infotech = array(); + + $version = _T('version') .' '. $info['version']; + // Version SVN + if ($svn_revision = version_svn_courante($dir_plugins.$plug_file)) + $version .= ($svn_revision<0 ? ' SVN':'').' ['.abs($svn_revision).']'; + $infotech[] = $version; + + // source zip le cas echeant + $source = (lire_fichier($dir_plugins.$plug_file.'/install.log', $log) + AND preg_match(',^source:(.*)$,m', $log, $r)) + ? '
    '._T('plugin_source').' '.trim($r[1]) + :''; + + $s .= "
    " + . join(' — ', $infotech) . + '
    ' . _T('repertoire_plugins') .' '. $plug_file + . $source + ."
    "; + + + return $s; +} +?>