diff --git a/doc/addons.bb b/doc/addons.bb index 9927a2956..6fa9510f5 100644 --- a/doc/addons.bb +++ b/doc/addons.bb @@ -49,7 +49,7 @@ [*] nsabait - add random terrorism related hashtags to your posts [*] nsfw - Highly recommended plugin to collpase posts with inappropriate content [*] openclipatar - choose a profile photo from hundreds of royalty free images -[*] openid - OpenID authentication and OpenID server +[*] openid - OpenID authentication and OpenID server. Your OpenID URL is [observer.baseurl]/id/[observer.webname] [*] openstreetmap - render locations and maps using OpenStreetMap [*] pageheader - display text at the top of every page on the site [*] phpmailer - alternate mail delivery system with more configurability diff --git a/doc/bbcode.html b/doc/bbcode.html index 7a2c969eb..36f40d3f4 100644 --- a/doc/bbcode.html +++ b/doc/bbcode.html @@ -78,6 +78,7 @@ or

[dl terms="b"]
[*= First element term] First element descript
  • [observer.baseurl] website of observer
  • [observer.url] channel URL of observer
  • [observer.name] name of observer
  • +
  • [observer.webname] short name in the url of the observer
  • [observer.address] address (zot-id) of observer
  • [observer.photo] profile photo of observer
  • diff --git a/doc/features.bb b/doc/features.bb index 3daf403c3..578af6050 100644 --- a/doc/features.bb +++ b/doc/features.bb @@ -134,6 +134,7 @@ The options are: - Anybody on this website. - Anybody in this network. - Anybody authenticated. + - Specific people you provide a Guest Access Token to in order to access a specific item. - Anybody on the Internet. diff --git a/doc/permissions.bb b/doc/permissions.bb index 0721c763d..64690d608 100644 --- a/doc/permissions.bb +++ b/doc/permissions.bb @@ -32,6 +32,8 @@ We highly recommend that you use the "typical social network" settings when you [*= Anybody authenticated ] This is similar to "anybody in this network" except that it can include anybody who can authenticate by any means - and therefore [i]may[/i] include visitors from other networks. + [*=Guest Access Token] This allows you to share a file, folder, photo, album, or channel with a specific person or group of people. They don't need to be Hubzilla members. You can set an expiration for the Access Token. + [*= Anybody on the internet ] Completely public. This permission will be approved for anybody at all. [/dl] [*= The individual permissions are:] 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) { diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index a7ce3af38..f71fe8ea8 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -2025,11 +2025,17 @@ dl.bb-dl > dd > li { } .embed-photo-selected-photo { - border-color: blue; - border-style: solid; - border-width: 5px; + border-color: blue; + border-style: solid; + border-width: 5px; } #wiki-preview img { - max-width: 100%; + max-width: 100%; +} + +.sub-menu { + margin-top: 10px; + padding-left: 15px; + border-left: 3px solid #ccc; } diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl index 54d501396..4eefb3189 100644 --- a/view/tpl/wiki.tpl +++ b/view/tpl/wiki.tpl @@ -43,47 +43,7 @@

    {{$wikiheaderName}}: {{$wikiheaderPage}}

    - -