List of wikis populates with links according to observer permissions.

This commit is contained in:
Andrew Manning 2016-05-21 21:55:09 -04:00
parent 049147a9d7
commit a36bef7979
5 changed files with 39 additions and 13 deletions

View File

@ -48,7 +48,22 @@ class Wiki extends \Zotlabs\Web\Controller {
'acl' => populate_acl($channel_acl),
'bang' => ''
);
// $wikiheader = t('Wiki Sandbox');
// $hide_editor = false;
if(argc()<3) {
$wikiheader = t('Wiki Sandbox');
$hide_editor = false;
} elseif (argc()<4) {
$wikiheader = 'Empty wiki: ' . rawurldecode(argv(2)); // show wiki name
$hide_editor = true;
} elseif (argc()<5) {
$wikiheader = rawurldecode(argv(2)) . ': ' . rawurldecode(argv(3)); // show wiki name and page
$hide_editor = false;
}
$o .= replace_macros(get_markup_template('wiki.tpl'),array(
'$wikiheader' => $wikiheader,
'$hideEditor' => $hide_editor,
'$channel' => $channel['channel_address'],
'$lockstate' => $x['lockstate'],
'$acl' => $x['acl'],

View File

@ -860,13 +860,19 @@ function widget_chatroom_members() {
function widget_wiki_list($arr) {
require_once("include/wiki.php");
$r = wiki_list(App::$profile['channel_hash']);
if(argc()>1) {
$nick = argv(1);
} else {
$channel = \App::get_channel();
$nick = $channel['channel_address'];
}
$wikis = wiki_list($nick, get_observer_hash());
if($r) {
if($wikis) {
return replace_macros(get_markup_template('wikilist.tpl'), array(
'$header' => t('Wiki List'),
'$read' => $r['read'],
'$write' => $r['write']
'$channel' => $nick,
'$wikis' => $wikis['wikis']
));
}
}

View File

@ -15,9 +15,17 @@ function wiki_delete() {
}
function wiki_list($observer_hash) {
function wiki_list($nick, $observer_hash) {
if (local_channel() || remote_channel()) {
$sql_extra = item_permissions_sql(get_channel_by_nick($nick)['channel_id'], $observer_hash);
} else {
$sql_extra = " AND item_private = 0 ";
}
$wikis = q("SELECT * FROM item WHERE resource_type = '%s' AND mid = parent_mid AND item_deleted = 0 $sql_extra",
dbesc(WIKI_ITEM_RESOURCE_TYPE)
);
// TODO: query db for wikis the observer can access. Return with two lists, for read and write access
return array('write' => array('wiki1'), 'read' => array('wiki1', 'wiki2'));
return array('wikis' => $wikis);
}
function wiki_pages() {

View File

@ -15,7 +15,7 @@
<button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false);
adjustInlineTopBarHeight();"><i class="fa fa-compress"></i></button>
</div>
<h2>Wiki</h2>
<h2>{{$wikiheader}}</h2>
<div class="clear"></div>
</div>
<div id="new-wiki-form-wrapper" class="section-content-tools-wrapper" style="display:none;">
@ -46,7 +46,7 @@
<hr>
</div>
<div id="wiki-content-container" class="section-content-wrapper">
<div id="wiki-content-container" class="section-content-wrapper" {{if $hideEditor}}style="display: none;"{{/if}}>
<ul class="nav nav-tabs" id="wiki-nav-tabs">
<li class="active"><a data-toggle="tab" href="#edit-pane">Edit</a></li>
<li><a data-toggle="tab" href="#preview-pane" id="wiki-get-preview">Preview</a></li>

View File

@ -1,11 +1,8 @@
<div id="wiki_list" class="widget">
<h3>{{$header}}</h3>
<ul class="nav nav-pills nav-stacked">
{{foreach $read as $r}}
<li><a href="">{{$r}}</a></li>
{{/foreach}}
{{foreach $write as $r}}
<li><a href="">{{$r}}</a></li>
{{foreach $wikis as $wiki}}
<li><a href="/wiki/{{$channel}}/{{$wiki.title}}">{{$wiki.title}}</a></li>
{{/foreach}}
</ul>
</div>