diff options
author | zotlabs <mike@macgirvin.com> | 2016-10-23 07:28:38 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-23 07:28:38 +1100 |
commit | 0b5d5507800b2e1122eb2432929c203538b2e835 (patch) | |
tree | 75cff355b5f79c127a287d8a6c56f5e447a67a00 | |
parent | ac5ad0b9cecc0f4ec912e654ab0690e391170cd1 (diff) | |
parent | 02cf7274d28d093094067114d208537cf135266b (diff) | |
download | volse-hubzilla-0b5d5507800b2e1122eb2432929c203538b2e835.tar.gz volse-hubzilla-0b5d5507800b2e1122eb2432929c203538b2e835.tar.bz2 volse-hubzilla-0b5d5507800b2e1122eb2432929c203538b2e835.zip |
Merge pull request #565 from anaqreon/wiki-download
Add wiki download button to export the selected wiki repo to a zip file
-rw-r--r-- | Zotlabs/Module/Wiki.php | 30 | ||||
-rw-r--r-- | view/tpl/wiki.tpl | 4 | ||||
-rw-r--r-- | view/tpl/wikilist.tpl | 1 |
3 files changed, 35 insertions, 0 deletions
diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index bb4e9179c..8cf106b33 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -90,6 +90,35 @@ class Wiki extends \Zotlabs\Web\Controller { // Not the channel owner $channel_acl = $x = array(); } + + // Download a wiki + if ((argc() > 3) && (argv(2) === 'download') && (argv(3) === 'wiki')) { + $resource_id = argv(4); + $w = wiki_get_wiki($resource_id); + if (!$w['path']) { + notice('Error retrieving wiki' . EOL); + } + $zip_folder_name = random_string(10); + $zip_folderpath = '/tmp/' . $zip_folder_name; + if (!mkdir($zip_folderpath, 0770, false)) { + logger('Error creating zip file export folder: ' . $zip_folderpath, LOGGER_NORMAL); + notice('Error creating zip file export folder' . EOL); + } + $zip_filename = $w['urlName']; + $zip_filepath = '/tmp/' . $zip_folder_name . '/' . $zip_filename; + // Generate the zip file + \Zotlabs\Lib\ExtendedZip::zipTree($w['path'], $zip_filepath, \ZipArchive::CREATE); + // Output the file for download + header('Content-disposition: attachment; filename="' . $zip_filename . '.zip"'); + header("Content-Type: application/zip"); + $success = readfile($zip_filepath); + if ($success) { + rrmdir($zip_folderpath); // delete temporary files + } else { + rrmdir($zip_folderpath); // delete temporary files + logger('Error downloading wiki: ' . $resource_id); + } + } switch (argc()) { case 2: @@ -297,6 +326,7 @@ class Wiki extends \Zotlabs\Web\Controller { } } + // Create a page if ((argc() === 4) && (argv(2) === 'create') && (argv(3) === 'page')) { $nick = argv(1); diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl index c05b33a61..8fdf56e77 100644 --- a/view/tpl/wiki.tpl +++ b/view/tpl/wiki.tpl @@ -239,6 +239,10 @@ function wiki_delete_wiki(wikiHtmlName, resource_id) { }, 'json'); } + +function wiki_download_wiki(resource_id) { + window.location = "wiki/{{$channel}}/download/wiki/" + resource_id; +} $('#new-page-submit').click(function (ev) { if (window.wiki_resource_id === '') { diff --git a/view/tpl/wikilist.tpl b/view/tpl/wikilist.tpl index be353ca5e..6b37be4c5 100644 --- a/view/tpl/wikilist.tpl +++ b/view/tpl/wikilist.tpl @@ -8,6 +8,7 @@ </a> <ul class="dropdown-menu pull-right"> <li><a href="/wiki/{{$channel}}/{{$wiki.urlName}}/Home" title="View {{$wiki.title}}">View</a></li> + <li><a href="#" onclick="wiki_download_wiki('{{$wiki.resource_id}}'); return false;" title="Download {{$wiki.title}}">Download</a></li> {{if $showControls}} <li class="divider"></li> <li><a href="#" onclick="wiki_delete_wiki('{{$wiki.title}}','{{$wiki.resource_id}}'); return false;" title="Delete {{$wiki.title}}">Delete wiki</a></li> |