diff options
-rw-r--r-- | Zotlabs/Lib/NativeWiki.php | 6 | ||||
-rw-r--r-- | Zotlabs/Module/Wiki.php | 42 | ||||
-rw-r--r-- | view/tpl/wikilist.tpl | 16 |
3 files changed, 63 insertions, 1 deletions
diff --git a/Zotlabs/Lib/NativeWiki.php b/Zotlabs/Lib/NativeWiki.php index 0c1894625..39952ed5f 100644 --- a/Zotlabs/Lib/NativeWiki.php +++ b/Zotlabs/Lib/NativeWiki.php @@ -18,6 +18,12 @@ class NativeWiki { if($wikis) { foreach($wikis as &$w) { + + $w['allow_cid'] = acl2json($w['allow_cid']); + $w['allow_gid'] = acl2json($w['allow_gid']); + $w['deny_cid'] = acl2json($w['deny_cid']); + $w['deny_gid'] = acl2json($w['deny_gid']); + $w['rawName'] = get_iconfig($w, 'wiki', 'rawName'); $w['htmlName'] = escape_tags($w['rawName']); $w['urlName'] = urlencode(urlencode($w['rawName'])); diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index adea3f515..013ffef70 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -463,6 +463,48 @@ class Wiki extends \Zotlabs\Web\Controller { } } + // Update a wiki + // /wiki/channel/update/wiki + if ((argc() > 3) && (argv(2) === 'update') && (argv(3) === 'wiki')) { + // Only the channel owner can update a wiki, at least until we create a + // more detail permissions framework + + if (local_channel() !== intval($owner['channel_id'])) { + goaway('/' . argv(0) . '/' . $nick . '/'); + } + + if($wiki['urlName'] === '') { + notice( t('Error updating wiki. Invalid name.') . EOL); + goaway('/wiki'); + return; //not reached + } + + $exists = Zlib\NativeWiki::exists_by_name($owner['channel_id'], $wiki['urlName']); + if($exists['id']) { + + // Get ACL for permissions + $acl = new \Zotlabs\Access\AccessList($owner); + $acl->set_from_array($_POST); + $r = Zlib\NativeWiki::create_wiki($owner, $observer_hash, $wiki, $acl); + if($r['success']) { + Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$r['item_id'],$r['item']['resource_id']); + $homePage = Zlib\NativeWikiPage::create_page($owner['channel_id'],$observer_hash,'Home', $r['item']['resource_id'], $wiki['mimeType']); + if(! $homePage['success']) { + notice( t('Wiki created, but error creating Home page.')); + goaway(z_root() . '/wiki/' . $nick . '/' . $wiki['urlName']); + } + Zlib\NativeWiki::sync_a_wiki_item($owner['channel_id'],$homePage['item_id'],$r['item']['resource_id']); + goaway(z_root() . '/wiki/' . $nick . '/' . $wiki['urlName'] . '/' . $homePage['page']['urlName']); + } + else { + notice( t('Error creating wiki')); + goaway(z_root() . '/wiki'); + } + + } + + } + // Delete a wiki if ((argc() > 3) && (argv(2) === 'delete') && (argv(3) === 'wiki')) { diff --git a/view/tpl/wikilist.tpl b/view/tpl/wikilist.tpl index fe8d7d081..51d24c195 100644 --- a/view/tpl/wikilist.tpl +++ b/view/tpl/wikilist.tpl @@ -21,7 +21,6 @@ </div> </div> </form> - {{$acl}} <div class="clear"></div> </div> {{/if}} @@ -53,10 +52,25 @@ <td><button class="btn btn-default btn-sm" onclick="wiki_delete_wiki('{{$wiki.title}}', '{{$wiki.resource_id}}'); return false;"><i class="fa fa-trash-o drop-icons" ></i></button></td> {{/if}} </tr> + <tr> + <td colspan="4"> + <form id="edit-wiki-form-{{$wiki.id}}" method="post" action="wiki/{{$channel}}/update/wiki" class="acl-form" data-form_id="edit-wiki-form-{{$wiki.id}}" data-allow_cid='{{$wiki.allow_cid}}' data-allow_gid='{{$wiki.allow_gid}}' data-deny_cid='{{$wiki.deny_cid}}' data-deny_gid='{{$wiki.deny_gid}}'> + <div class="btn-group float-right"> + {{if $lockstate}} + <button class="btn btn-outline-secondary btn-sm" data-toggle="modal" data-target="#aclModal" type="button"> + <i class="jot-perms-icon fa fa-{{$lockstate}}"></i> + </button> + {{/if}} + <button class="btn btn-primary btn-sm" type="submit" value="edit">Submit</button> + </div> + </form> + </td> + </tr> {{/foreach}} </table> </div> </div> +{{$acl}} <script> {{if $owner}} function wiki_delete_wiki(wikiHtmlName, resource_id) { |