diff options
author | git-marijus <mario@mariovavti.com> | 2017-09-15 16:27:30 +0200 |
---|---|---|
committer | git-marijus <mario@mariovavti.com> | 2017-09-15 16:27:30 +0200 |
commit | 4c5722c766643af368f600abb93a44fc72d27c11 (patch) | |
tree | c2fd1c049b180d8c00ad96a085e1627411261954 | |
parent | 46b6415f5fddcea5aa7c4c55842405b68a7ccd6a (diff) | |
download | volse-hubzilla-4c5722c766643af368f600abb93a44fc72d27c11.tar.gz volse-hubzilla-4c5722c766643af368f600abb93a44fc72d27c11.tar.bz2 volse-hubzilla-4c5722c766643af368f600abb93a44fc72d27c11.zip |
some work on wiki acl
-rw-r--r-- | Zotlabs/Lib/NativeWiki.php | 9 | ||||
-rw-r--r-- | Zotlabs/Module/Wiki.php | 42 | ||||
-rw-r--r-- | view/tpl/wikilist.tpl | 16 |
3 files changed, 65 insertions, 2 deletions
diff --git a/Zotlabs/Lib/NativeWiki.php b/Zotlabs/Lib/NativeWiki.php index 4301feaa0..375fad4d7 100644 --- a/Zotlabs/Lib/NativeWiki.php +++ b/Zotlabs/Lib/NativeWiki.php @@ -18,11 +18,18 @@ 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'])); $w['mimeType'] = get_iconfig($w, 'wiki', 'mimeType'); - $w['lock'] = (($w['item_private'] || $w['allow_cid'] || $w['allow_gid'] || $w['deny_cid'] || $w['deny_gid']) ? true : false); + + } } // TODO: query db for wikis the observer can access. Return with two lists, for read and write access diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index 1eb600f51..2b1322122 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -428,6 +428,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 2deec76c0..a9196afd3 100644 --- a/view/tpl/wikilist.tpl +++ b/view/tpl/wikilist.tpl @@ -20,7 +20,6 @@ </div> </div> </form> - {{$acl}} <div class="clear"></div> </div> {{/if}} @@ -50,10 +49,25 @@ <td><i class="fa fa-trash-o drop-icons" onclick="wiki_delete_wiki('{{$wiki.title}}', '{{$wiki.resource_id}}'); return false;"></i></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) { |