aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Module/Wiki.php
diff options
context:
space:
mode:
authorAndrew Manning <tamanning@zoho.com>2016-05-30 20:59:54 -0400
committerAndrew Manning <tamanning@zoho.com>2016-05-30 20:59:54 -0400
commit8d284bab474c7e669ae9a639bdb22f7b28b95cc3 (patch)
treec08d8569705cea43445cf8c65f8d8ca57beeff5f /Zotlabs/Module/Wiki.php
parent82ec40dd80c131dbf0335406fb1a6e4b5b127a18 (diff)
downloadvolse-hubzilla-8d284bab474c7e669ae9a639bdb22f7b28b95cc3.tar.gz
volse-hubzilla-8d284bab474c7e669ae9a639bdb22f7b28b95cc3.tar.bz2
volse-hubzilla-8d284bab474c7e669ae9a639bdb22f7b28b95cc3.zip
Created page history widget to dynamically fetch and display the git commit history for wiki pages.
Diffstat (limited to 'Zotlabs/Module/Wiki.php')
-rw-r--r--Zotlabs/Module/Wiki.php36
1 files changed, 33 insertions, 3 deletions
diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php
index d6acbf6b0..0f8db9350 100644
--- a/Zotlabs/Module/Wiki.php
+++ b/Zotlabs/Module/Wiki.php
@@ -26,8 +26,11 @@ class Wiki extends \Zotlabs\Web\Controller {
function get() {
require_once('include/wiki.php');
require_once('include/acl_selectors.php');
+ // TODO: Combine the interface configuration into a unified object
+ // Something like $interface = array('new_page_button' => false, 'new_wiki_button' => false, ...)
$wiki_owner = false;
$showNewWikiButton = false;
+ $pageHistory = array();
if(local_channel()) {
$channel = \App::get_channel();
}
@@ -107,6 +110,7 @@ class Wiki extends \Zotlabs\Web\Controller {
$hide_editor = false;
$showPageControls = $wiki_owner;
$showNewWikiButton = $wiki_owner;
+ $pageHistory = wiki_page_history(array('resource_id' => $resource_id, 'page' => $pagename));
}
require_once('library/markdown.php');
$renderedContent = Markdown(json_decode($content));
@@ -125,7 +129,8 @@ class Wiki extends \Zotlabs\Web\Controller {
'$content' => $content,
'$renderedContent' => $renderedContent,
'$wikiName' => array('wikiName', t('Enter the name of your new wiki:'), '', ''),
- '$pageName' => array('pageName', t('Enter the name of the new page:'), '', '')
+ '$pageName' => array('pageName', t('Enter the name of the new page:'), '', ''),
+ '$pageHistory' => $pageHistory['history']
));
head_add_js('library/ace/ace.js');
return $o;
@@ -236,7 +241,7 @@ class Wiki extends \Zotlabs\Web\Controller {
json_return_and_die(array('success' => false));
}
}
- $name = escape_tags(urlencode($_POST['name'])); //Get new wiki name
+ $name = escape_tags(urlencode($_POST['name'])); //Get new page name
if($name === '') {
json_return_and_die(array('message' => 'Error creating page. Invalid name.', 'success' => false));
}
@@ -272,7 +277,7 @@ class Wiki extends \Zotlabs\Web\Controller {
$resource_id = $_POST['resource_id'];
$pagename = escape_tags(urlencode($_POST['name']));
$content = escape_tags($_POST['content']); //Get new content
- // Determine if observer has permission to create wiki
+ // Determine if observer has permission to save content
if (local_channel()) {
$channel = \App::get_channel();
} else {
@@ -311,6 +316,31 @@ class Wiki extends \Zotlabs\Web\Controller {
}
}
+ // Update page history
+ // /wiki/channel/history/page
+ if ((argc() === 4) && (argv(2) === 'history') && (argv(3) === 'page')) {
+ $which = argv(1);
+ $resource_id = $_POST['resource_id'];
+ $pagename = escape_tags(urlencode($_POST['name']));
+ // Determine if observer has permission to view content
+ if (local_channel()) {
+ $channel = \App::get_channel();
+ } else {
+ $channel = get_channel_by_nick($which);
+ $observer_hash = get_observer_hash();
+ $perms = wiki_get_permissions($resource_id, intval($channel['channel_id']), $observer_hash);
+ if (!$perms['read']) {
+ logger('Wiki read permission denied.' . EOL);
+ json_return_and_die(array('historyHTML' => '', 'message' => 'Permission denied.', 'success' => false));
+ }
+ }
+ $historyHTML = widget_wiki_page_history(array(
+ 'resource_id' => $resource_id,
+ 'page' => $pagename
+ ));
+ json_return_and_die(array('historyHTML' => $historyHTML, 'message' => '', 'success' => true));
+ }
+
//notice('You must be authenticated.');
json_return_and_die(array('message' => 'You must be authenticated.', 'success' => false));