On 18/03/2020 10:13, Pierre-Marie Carette wrote:
et par dirlist ? il suffirait de choisir après affichage de la liste «
télécharger le fichier source » mais (dirlist wiki.d:) est-il permis ?
Fortement non-recommandé, ceci exposerait toutes les pages de wiki.d y
compris celles qui seraient protégées en lecture par le wiki.
J'ai un module qui permet d'exporter un groupe de pages, je n'ai pas
encore écrit la documentation, j'essayerai de le faire d'ici quelques
jours.
PHP 5.2 minimum requis.
Ci-joint, zipexport.php, le placer dans pmwiki/cookbook puis ajouter
dans config.php:
include_once("$FarmD/cookbook/zipexport.php");
Puis, dans le wiki, créer des liens comme:
Télécharger pages sources compatibles PmWiki :
[[ Page?action=zipexport&group=Main | groupe Main ]]
[[ Page?action=zipexport&trail=PmWiki.Variables | wiki trail ]]
Ce module permet de télécharger en une archive ZIP les pages source sans
leur historique, et sans certaines informations confidentielles comme
l'adresse IP du dernier éditeur.
De plus, seules les pages que le visiteur a la permission de lire seront
incluses dans l'archive -- si une page est protégée en lecture et
inaccessible au visiteur, elle ne sera pas dans l'archive.
En outre, le module est capable d'exporter des pages de différentes
classes de stockage comme dossiers par groupe, ou SQLite ou autres.
Dans l'adresse du lien après ?action)=zipexport& peut utiliser
group=Main,Site et trail=Page.WikiTrail ou autres paramètres de
pagelists.
Petko
Le 18 mars 2020 à 09:19, Petko Yotov <5...@5ko.fr> a écrit :
On 18/03/2020 08:57, Pierre-Marie Carette wrote:
Mon site est une bibliothèque de descriptions. Chaque group de mon
site est une description. Pour permettre les échanges, comment écrire
un lien [[….|…]] qui permettrait de télécharger directement un group
?
Une telle fonctionnalité exacte n'existe pas dans l'installation de
base.
On peut créer une page spéciale qui inclue toutes les pages du groupe:
(:pagelist group=MonGroupe list=normal fmt=#include:)
Ou on peut créer son propre patron ("pagelist template") pour ajouter
les titres des pages et des séparateurs.
Parmi les recettes/modules, il y en a quelques uns mais la plupart
dépendent de logiciels/applications/librairies externes qui ne sont
pas souvent installés sur un hébergement mutualisé :
https://www.pmwiki.org/wiki/?action=search&q=printgroup
Petko
--
If you upgrade : http://www.pmwiki.org/Upgrades
<?php if (!defined('PmWiki')) exit();
/* ZipExport -- export PmWiki pages in the default pagefile format
Written by Petko Yotov (c) 2009-2020 pmwiki.org/petko
This file written for PmWiki; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. See pmwiki.php for full details.
*/
$RecipeInfo['ZipExport']['Version'] = '20200318';
SDVA($HandleActions, array('zipexport'=>'HandleZipExport'));
SDVA($HandleAuth, array('zipexport'=>'read'));
# privacy & version stuff
SDV($ZipExportSkipPageAttributes, array('version', 'newline', 'host', 'agent'));
global $WorkDir;
SDV($ZipTempDir, $WorkDir);
$ZipTargetDir = '';
SDVA($ZipExportListOpt, array('list' => 'normal'));
function HandleZipExport($pagename, $auth = 'read') {
global $action, $PCache, $ZipExportListOpt, $ZipExportCategoryOpt, $ZipExportTrailOpt, $Charset,
$CategoryGroup, $Version, $ZipTempDir, $ZipTargetDir, $ZipExportSkipPageAttributes, $Now;
$page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);
if (!$page) Abort("?insufficient permissions");
$ZipExportListOpt = (array)@$ZipExportListOpt;
SDVA($ZipExportCategoryOpt, array('link' => $pagename));
SDVA($ZipExportTrailOpt, array('trail' => $pagename));
$feedtime = $page['time'];
# determine list of pages to display
if (@($_REQUEST['trail'] || $_REQUEST['group'] || $_REQUEST['link']
|| $_REQUEST['name']))
$opt = $ZipExportListOpt;
else if (preg_match("/^$CategoryGroup\\./", $pagename))
$opt = $ZipExportCategoryOpt;
else {
PCache($pagename, $page);
$pagelist = array($pagename);
}
if (!@$pagelist) {
$opt = array_merge($opt, @$_REQUEST);
$pagelist = MakePageList($pagename, $opt, 0);
}
$r0 = array('%', "\n", '<');
$r1 = array('%25', '%0a', '%3c');
$zip = new ZipArchive();
$zfile = @tempnam('tmp', 'pmzip');
$zip->open($zfile, ZipArchive::OVERWRITE);
foreach($pagelist as $pn) {
$page = RetrieveAuthPage($pn, 'read', false, READPAGE_CURRENT);
if(!$page) continue;
foreach($ZipExportSkipPageAttributes as $v) unset($page[$v]);
if(@$page['charset']=='') $page['charset']='ISO-8859-1'; # just in case
uksort($page, 'CmpPageAttr');
$x = "version=$Version ordered=1 urlencoded=1\n";
foreach($page as $k=>$v)
if ($k > '' && $v>'' && $k[0] != '=') {
$x .= str_replace($r0, $r1, "$k=$v") . "\n";
}
$zip->addFromString("wiki.d/$pn", $x);
}
$zip->close();
$downname = preg_replace('/\\..*$/', '', $pagename) .'.zip';
header("Content-Type: application/zip");
header("Content-Length: " . filesize($zfile));
header("Content-Disposition: attachment; filename=\"$downname\"");
readfile($zfile);
unlink($zfile);
exit;
}
_______________________________________________
pmwiki-users-fr mailing list
pmwiki-users-fr@pmichaud.com
http://www.pmichaud.com/mailman/listinfo/pmwiki-users-fr