diff options
author | zotlabs <mike@macgirvin.com> | 2016-11-17 11:01:38 -0800 |
---|---|---|
committer | zotlabs <mike@macgirvin.com> | 2016-11-17 11:01:38 -0800 |
commit | 5a71984b38bbf0a0dd4b047d923b296fe03493f3 (patch) | |
tree | 7a0b711901cb49f3a7ed4250e4f22dbf66fb4c34 /include | |
parent | 1274889931925389add1fd52d07d90eb03a70b62 (diff) | |
parent | ed7e7158122dd1d9740afa51bdfef3aac788d401 (diff) | |
download | volse-hubzilla-5a71984b38bbf0a0dd4b047d923b296fe03493f3.tar.gz volse-hubzilla-5a71984b38bbf0a0dd4b047d923b296fe03493f3.tar.bz2 volse-hubzilla-5a71984b38bbf0a0dd4b047d923b296fe03493f3.zip |
Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge
Diffstat (limited to 'include')
-rw-r--r-- | include/widgets.php | 104 |
1 files changed, 79 insertions, 25 deletions
diff --git a/include/widgets.php b/include/widgets.php index 86f0305df..3dc555b46 100644 --- a/include/widgets.php +++ b/include/widgets.php @@ -899,32 +899,86 @@ function widget_chatroom_members() { function widget_wiki_list($arr) { - require_once("include/wiki.php"); - $channel = null; - if (argc() < 2 && local_channel()) { - // This should not occur because /wiki should redirect to /wiki/channel ... - $channel = \App::get_channel(); - } else { - $channel = channelx_by_nick(argv(1)); // Channel being viewed by observer - } - if (!$channel) { + require_once("include/wiki.php"); + $channel = null; + if (argc() < 2 && local_channel()) { + // This should not occur because /wiki should redirect to /wiki/channel ... + $channel = \App::get_channel(); + } else { + $channel = channelx_by_nick(argv(1)); // Channel being viewed by observer + } + if (!$channel) { + return ''; + } + // init() should have forced the URL to redirect to /wiki/channel so assume argc() > 1 + $nick = argv(1); + $owner = channelx_by_nick($nick); // The channel who owns the wikis being viewed + // Determine if the observer is the channel owner so the ACL dialog can be populated + if (local_channel() === intval($owner['channel_id'])) { + + // Obtain the default permission settings of the channel + $owner_acl = array( + 'allow_cid' => $owner['channel_allow_cid'], + 'allow_gid' => $owner['channel_allow_gid'], + 'deny_cid' => $owner['channel_deny_cid'], + 'deny_gid' => $owner['channel_deny_gid'] + ); + // Initialize the ACL to the channel default permissions + $x = array( + 'lockstate' => (( $owner['channel_allow_cid'] || + $owner['channel_allow_gid'] || + $owner['channel_deny_cid'] || + $owner['channel_deny_gid']) ? 'lock' : 'unlock' + ), + 'acl' => populate_acl($owner_acl), + 'allow_cid' => acl2json($owner_acl['allow_cid']), + 'allow_gid' => acl2json($owner_acl['allow_gid']), + 'deny_cid' => acl2json($owner_acl['deny_cid']), + 'deny_gid' => acl2json($owner_acl['deny_gid']), + 'bang' => '' + ); + } else { + // Not the channel owner + $owner_acl = $x = array(); + } + if(argc()>1) { + $activeWikiURLname = argv(2); + } else { + $activeWikiURLname = ''; + } + logger($activeWikiURLname, LOGGER_DEBUG); + $wikis = wiki_list($channel, get_observer_hash()); + foreach($wikis['wikis'] as &$w) { + if($w['urlName'] === $activeWikiURLname) { + $w['active'] = true; + } else { + $w['active'] = false; + } + } + if ($wikis) { + return replace_macros(get_markup_template('wikilist.tpl'), array( + '$header' => t('Wiki List'), + '$channel' => $channel['channel_address'], + '$wikis' => $wikis['wikis'], + // If the observer is the local channel owner, show the wiki controls + '$owner' => ((local_channel() && local_channel() === intval(\App::$profile['uid'])) ? true : false), + '$edit' => t('Edit'), + '$download' => t('Download'), + '$view' => t('View'), + '$addnew' => t('Create new wiki'), + '$create' => t('Create'), + '$wikiName' => array('wikiName', t('Wiki name'), '', ''), + '$lockstate' => $x['lockstate'], + '$acl' => $x['acl'], + '$allow_cid' => $x['allow_cid'], + '$allow_gid' => $x['allow_gid'], + '$deny_cid' => $x['deny_cid'], + '$deny_gid' => $x['deny_gid'], + '$bang' => $x['bang'], + '$notify' => t('Send notification') + )); + } return ''; - } - $wikis = wiki_list($channel, get_observer_hash()); - if ($wikis) { - return replace_macros(get_markup_template('wikilist.tpl'), array( - '$header' => t('Wiki List'), - '$channel' => $channel['channel_address'], - '$wikis' => $wikis['wikis'], - // If the observer is the local channel owner, show the wiki controls - '$owner' => ((local_channel() && local_channel() === intval(\App::$profile['uid'])) ? true : false), - '$edit' => t('Edit'), - '$download' => t('Download'), - '$view' => t('View'), - '$addnew' => t('Add new wiki') - )); - } - return ''; } function widget_wiki_pages($arr) { |