aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2021-08-23 07:59:37 +0000
committerMario <mario@mariovavti.com>2021-08-23 07:59:37 +0000
commit824894baf0f11e85552c283ee948febd8bac5e06 (patch)
treec98f5d1fa662f7421c50eb42e15cc469dd24051c
parent2bd4f7384e3693c4f1f1886216ec0feedd23021e (diff)
downloadvolse-hubzilla-824894baf0f11e85552c283ee948febd8bac5e06.tar.gz
volse-hubzilla-824894baf0f11e85552c283ee948febd8bac5e06.tar.bz2
volse-hubzilla-824894baf0f11e85552c283ee948febd8bac5e06.zip
more app descriptions and return to the app if installed from the module itself
-rw-r--r--Zotlabs/Lib/Apps.php2
-rw-r--r--Zotlabs/Module/Cards.php6
-rw-r--r--Zotlabs/Module/Chat.php110
-rw-r--r--Zotlabs/Module/Sources.php56
-rw-r--r--Zotlabs/Module/Uexport.php30
-rw-r--r--app/cards.apd3
-rw-r--r--app/channel.apd3
-rw-r--r--app/chat.apd3
-rw-r--r--app/sources.apd3
-rw-r--r--app/uexport.apd3
-rw-r--r--view/tpl/app_install.tpl1
11 files changed, 110 insertions, 110 deletions
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php
index 201ea122e..a9af0812d 100644
--- a/Zotlabs/Lib/Apps.php
+++ b/Zotlabs/Lib/Apps.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Lib;
+use App;
use Zotlabs\Lib\Libsync;
require_once('include/plugin.php');
@@ -538,6 +539,7 @@ class Apps {
$icon = ((strpos($papp['photo'],'icon:') === 0) ? substr($papp['photo'],5) : '');
if (!$installed && $mode === 'module') {
+ $_SESSION['return_url'] = App::$query_string;
return replace_macros(get_markup_template('app_install.tpl'), [
'$papp' => $papp,
'$install' => $install_action
diff --git a/Zotlabs/Module/Cards.php b/Zotlabs/Module/Cards.php
index 8f47208ce..b71af6044 100644
--- a/Zotlabs/Module/Cards.php
+++ b/Zotlabs/Module/Cards.php
@@ -47,10 +47,8 @@ class Cards extends Controller {
if(! Apps::system_app_installed(App::$profile_uid, 'Cards')) {
//Do not display any associated widgets at this point
App::$pdl = '';
-
- $o = '<b>' . t('Cards App') . ' (' . t('Not Installed') . '):</b><br>';
- $o .= t('Create personal planning cards');
- return $o;
+ $papp = Apps::get_papp('Cards');
+ return Apps::app_render($papp, 'module');
}
nav_set_selected('Cards');
diff --git a/Zotlabs/Module/Chat.php b/Zotlabs/Module/Chat.php
index 28e775f9d..323471161 100644
--- a/Zotlabs/Module/Chat.php
+++ b/Zotlabs/Module/Chat.php
@@ -14,7 +14,7 @@ require_once('include/bookmarks.php');
class Chat extends Controller {
function init() {
-
+
$which = null;
if(argc() > 1)
$which = argv(1);
@@ -29,79 +29,77 @@ class Chat extends Controller {
notice( t('You must be logged in to see this page.') . EOL );
return;
}
-
+
$profile = 0;
$channel = App::get_channel();
-
+
if((local_channel()) && (argc() > 2) && (argv(2) === 'view')) {
$which = $channel['channel_address'];
- $profile = argv(1);
+ $profile = argv(1);
}
-
+
// Run profile_load() here to make sure the theme is set before
// we start loading content
-
+
profile_load($which,$profile);
-
+
}
-
+
function post() {
-
+
if($_POST['room_name'])
- $room = strip_tags(trim($_POST['room_name']));
-
+ $room = strip_tags(trim($_POST['room_name']));
+
if((! $room) || (! local_channel()))
return;
-
+
$channel = App::get_channel();
-
-
+
+
if($_POST['action'] === 'drop') {
logger('delete chatroom');
Chatroom::destroy($channel,array('cr_name' => $room));
goaway(z_root() . '/chat/' . $channel['channel_address']);
}
-
+
$acl = new AccessList($channel);
$acl->set_from_array($_REQUEST);
-
+
$arr = $acl->get();
$arr['name'] = $room;
$arr['expire'] = intval($_POST['chat_expire']);
if(intval($arr['expire']) < 0)
$arr['expire'] = 0;
-
+
Chatroom::create($channel,$arr);
-
+
$x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
dbesc($room),
intval(local_channel())
);
-
+
Libsync::build_sync_packet(0, array('chatroom' => $x));
-
+
if($x)
goaway(z_root() . '/chat/' . $channel['channel_address'] . '/' . $x[0]['cr_id']);
-
+
// that failed. Try again perhaps?
-
+
goaway(z_root() . '/chat/' . $channel['channel_address'] . '/new');
-
-
+
+
}
-
-
+
+
function get() {
if(! Apps::system_app_installed(App::$profile_uid, 'Chatrooms')) {
//Do not display any associated widgets at this point
App::$pdl = '';
-
- $o = '<b>' . t('Chatrooms App') . ' (' . t('Not Installed') . '):</b><br>';
- $o .= t('Access Controlled Chatrooms');
- return $o;
+ $papp = Apps::get_papp('Chatrooms');
+ return Apps::app_render($papp, 'module');
}
-
+
if(local_channel()) {
$channel = App::get_channel();
nav_set_selected('Chatrooms');
@@ -113,24 +111,24 @@ class Chat extends Controller {
notice( t('Permission denied.') . EOL);
return;
}
-
+
if(! perm_is_allowed(App::$profile['profile_uid'],$observer,'chat')) {
notice( t('Permission denied.') . EOL);
return;
}
-
+
if((argc() > 3) && intval(argv(2)) && (argv(3) === 'leave')) {
Chatroom::leave($observer,argv(2),$_SERVER['REMOTE_ADDR']);
goaway(z_root() . '/channel/' . argv(1));
}
-
-
+
+
if((argc() > 3) && intval(argv(2)) && (argv(3) === 'status')) {
$ret = array('success' => false);
$room_id = intval(argv(2));
if(! $room_id || ! $observer)
return;
-
+
$r = q("select * from chatroom where cr_id = %d limit 1",
intval($room_id)
);
@@ -139,7 +137,7 @@ class Chat extends Controller {
}
require_once('include/security.php');
$sql_extra = permissions_sql($r[0]['cr_uid']);
-
+
$x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
intval($room_id),
intval($r[0]['cr_uid'])
@@ -155,9 +153,9 @@ class Chat extends Controller {
$ret['chatroom'] = $r[0]['cr_name'];
$ret['inroom'] = $y[0]['total'];
}
-
+
// figure out how to present a timestamp of the last activity, since we don't know the observer's timezone.
-
+
$z = q("select created from chat where chat_room = %d order by created desc limit 1",
intval($room_id)
);
@@ -166,13 +164,13 @@ class Chat extends Controller {
}
json_return_and_die($ret);
}
-
-
+
+
if(argc() > 2 && intval(argv(2))) {
-
+
$room_id = intval(argv(2));
$bookmark_link = get_bookmark_link($ob);
-
+
$x = Chatroom::enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']);
if(! $x)
return;
@@ -180,26 +178,26 @@ class Chat extends Controller {
intval($room_id),
intval(App::$profile['profile_uid'])
);
-
+
if($x) {
$acl = new AccessList(false);
$acl->set($x[0]);
-
+
$private = $acl->is_private();
$room_name = $x[0]['cr_name'];
if($bookmark_link)
- $bookmark_link .= '&url=' . z_root() . '/chat/' . argv(1) . '/' . argv(2) . '&title=' . urlencode($x[0]['cr_name']) . (($private) ? '&private=1' : '') . '&ischat=1';
+ $bookmark_link .= '&url=' . z_root() . '/chat/' . argv(1) . '/' . argv(2) . '&title=' . urlencode($x[0]['cr_name']) . (($private) ? '&private=1' : '') . '&ischat=1';
}
else {
notice( t('Room not found') . EOL);
return;
}
-
+
$cipher = get_pconfig(local_channel(),'system','default_cipher');
if(! $cipher)
$cipher = 'AES-128-CCM';
-
-
+
+
$o = replace_macros(get_markup_template('chat.tpl'),array(
'$is_owner' => ((local_channel() && local_channel() == $x[0]['cr_uid']) ? true : false),
'$room_name' => $room_name,
@@ -223,7 +221,7 @@ class Chat extends Controller {
}
require_once('include/conversation.php');
-
+
$o = '';
$acl = new AccessList($channel);
@@ -246,12 +244,12 @@ class Chat extends Controller {
'$deny_gid' => acl2json($channel_acl['deny_gid']),
'$lockstate' => $lockstate,
'$submit' => t('Submit')
-
+
));
}
$rooms = Chatroom::roomlist(App::$profile['profile_uid']);
-
+
$o .= replace_macros(get_markup_template('chatrooms.tpl'), array(
'$header' => sprintf( t('%1$s\'s Chatrooms'), App::$profile['fullname']),
'$name' => t('Name'),
@@ -259,15 +257,15 @@ class Chat extends Controller {
'$nickname' => App::$profile['channel_address'],
'$rooms' => $rooms,
'$norooms' => t('No chatrooms available'),
- '$newroom' => t('Create New'),
+ '$newroom' => t('Add Room'),
'$is_owner' => ((local_channel() && local_channel() == App::$profile['profile_uid']) ? 1 : 0),
'$chatroom_new' => $chatroom_new,
'$expire' => t('Expiration'),
'$expire_unit' => t('min') //minutes
));
-
+
return $o;
-
+
}
-
+
}
diff --git a/Zotlabs/Module/Sources.php b/Zotlabs/Module/Sources.php
index e535f6ebf..ef665e727 100644
--- a/Zotlabs/Module/Sources.php
+++ b/Zotlabs/Module/Sources.php
@@ -13,7 +13,7 @@ class Sources extends Controller {
if(! Apps::system_app_installed(local_channel(), 'Channel Sources'))
return;
-
+
$source = intval($_REQUEST['source']);
$xchan = escape_tags($_REQUEST['xchan']);
$abook = intval($_REQUEST['abook']);
@@ -22,21 +22,21 @@ class Sources extends Controller {
$frequency = $_REQUEST['frequency'];
$name = escape_tags($_REQUEST['name']);
$tags = escape_tags($_REQUEST['tags']);
-
+
$channel = \App::get_channel();
-
+
if($name == '*')
$xchan = '*';
-
+
if($abook) {
$r = q("select abook_xchan from abook where abook_id = %d and abook_channel = %d limit 1",
intval($abook),
intval(local_channel())
);
- if($r)
+ if($r)
$xchan = $r[0]['abook_xchan'];
}
-
+
if(! $xchan) {
notice ( t('Failed to create source. No channel selected.') . EOL);
return;
@@ -69,27 +69,25 @@ class Sources extends Controller {
if($r) {
info( t('Source updated.') . EOL);
}
-
+
}
}
-
-
+
+
function get() {
if(! local_channel()) {
notice( t('Permission denied.') . EOL);
return;
}
-
+
if(! Apps::system_app_installed(local_channel(), 'Channel Sources')) {
//Do not display any associated widgets at this point
App::$pdl = '';
-
- $o = '<b>' . t('Sources App') . ' (' . t('Not Installed') . '):</b><br>';
- $o .= t('Automatically import channel content from other channels or feeds');
- return $o;
+ $papp = Apps::get_papp('Channel Sources');
+ return Apps::app_render($papp, 'module');
}
-
+
// list sources
if(argc() == 1) {
$r = q("select source.*, xchan.* from source left join xchan on src_xchan = xchan_hash where src_channel_id = %d",
@@ -111,23 +109,23 @@ class Sources extends Controller {
));
return $o;
}
-
+
if(argc() == 2 && argv(1) === 'new') {
// TODO add the words 'or RSS feed' and corresponding code to manage feeds and frequency
-
+
$o = replace_macros(get_markup_template('sources_new.tpl'), array(
'$title' => t('New Source'),
'$desc' => t('Import all or selected content from the following channel into this channel and distribute it according to your channel settings.'),
'$words' => array( 'words', t('Only import content with these words (one per line)'),'',t('Leave blank to import all public content')),
'$name' => array( 'name', t('Channel Name'), '', '', '', 'autocomplete="off"'),
'$tags' => array('tags', t('Add the following categories to posts imported from this source (comma separated)'),'',t('Optional')),
- '$resend' => [ 'resend', t('Resend posts with this channel as author'), 0, t('Copyrights may apply'), [ t('No'), t('Yes') ]],
+ '$resend' => [ 'resend', t('Resend posts with this channel as author'), 0, t('Copyrights may apply'), [ t('No'), t('Yes') ]],
'$submit' => t('Submit')
));
return $o;
-
+
}
-
+
if(argc() == 2 && intval(argv(1))) {
// edit source
$r = q("select source.*, xchan.* from source left join xchan on src_xchan = xchan_hash where src_id = %d and src_channel_id = %d limit 1",
@@ -144,9 +142,9 @@ class Sources extends Controller {
notice( t('Source not found.') . EOL);
return '';
}
-
+
$r[0]['src_patt'] = htmlspecialchars($r[0]['src_patt'], ENT_QUOTES,'UTF-8');
-
+
$o = replace_macros(get_markup_template('sources_edit.tpl'), array(
'$title' => t('Edit Source'),
'$drop' => t('Delete Source'),
@@ -156,15 +154,15 @@ class Sources extends Controller {
'$xchan' => $r[0]['src_xchan'],
'$abook' => $x[0]['abook_id'],
'$tags' => array('tags', t('Add the following categories to posts imported from this source (comma separated)'),$r[0]['src_tag'],t('Optional')),
- '$resend' => [ 'resend', t('Resend posts with this channel as author'), get_abconfig(local_channel(), $r[0]['xchan_hash'],'system','rself'), t('Copyrights may apply'), [ t('No'), t('Yes') ]],
+ '$resend' => [ 'resend', t('Resend posts with this channel as author'), get_abconfig(local_channel(), $r[0]['xchan_hash'],'system','rself'), t('Copyrights may apply'), [ t('No'), t('Yes') ]],
'$name' => array( 'name', t('Channel Name'), $r[0]['xchan_name'], ''),
'$submit' => t('Submit')
));
return $o;
-
+
}
-
+
if(argc() == 3 && intval(argv(1)) && argv(2) === 'drop') {
$r = q("select * from source where src_id = %d and src_channel_id = %d limit 1",
intval(argv(1)),
@@ -182,12 +180,12 @@ class Sources extends Controller {
info( t('Source removed') . EOL);
else
notice( t('Unable to remove source.') . EOL);
-
+
goaway(z_root() . '/sources');
-
+
}
-
+
// shouldn't get here.
-
+
}
}
diff --git a/Zotlabs/Module/Uexport.php b/Zotlabs/Module/Uexport.php
index 55c316317..d73bc40d4 100644
--- a/Zotlabs/Module/Uexport.php
+++ b/Zotlabs/Module/Uexport.php
@@ -24,26 +24,26 @@ class Uexport extends Controller {
if(argc() > 1 && intval(argv(1)) > 1900) {
$year = intval(argv(1));
}
-
+
if(argc() > 2 && intval(argv(2)) > 0 && intval(argv(2)) <= 12) {
$month = intval(argv(2));
}
-
+
header('content-type: application/json');
header('content-disposition: attachment; filename="' . $channel['channel_address'] . (($year) ? '-' . $year : '') . (($month) ? '-' . $month : '') . (($_REQUEST['sections']) ? '-' . $_REQUEST['sections'] : '') . '.json"' );
-
+
if($year) {
echo json_encode(identity_export_year(local_channel(),$year,$month, $zap_compat));
killme();
}
-
+
if(argc() > 1 && argv(1) === 'basic') {
echo json_encode(identity_basic_export(local_channel(),$sections, $zap_compat));
killme();
}
-
+
// Warning: this option may consume a lot of memory
-
+
if(argc() > 1 && argv(1) === 'complete') {
$sections = get_default_export_sections();
$sections[] = 'items';
@@ -52,20 +52,18 @@ class Uexport extends Controller {
}
}
}
-
+
function get() {
if(! Apps::system_app_installed(local_channel(), 'Channel Export')) {
//Do not display any associated widgets at this point
App::$pdl = '';
-
- $o = '<b>' . t('Channel Export App') . ' (' . t('Not Installed') . '):</b><br>';
- $o .= t('Export your channel');
- return $o;
+ $papp = Apps::get_papp('Channel Export');
+ return Apps::app_render($papp, 'module');
}
-
+
$y = datetime_convert('UTC',date_default_timezone_get(),'now','Y');
-
+
$yearurl = z_root() . '/uexport/' . $y;
$janurl = z_root() . '/uexport/' . $y . '/1';
$impurl = '/import_items';
@@ -77,14 +75,14 @@ class Uexport extends Controller {
'$full' => t('Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin.'),
'$by_year' => t('Export your posts from a given year.'),
-
+
'$extra' => t('You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range.'),
'$extra2' => sprintf( t('To select all posts for a given year, such as this year, visit <a href="%1$s">%2$s</a>'),$yearurl,$yearurl),
'$extra3' => sprintf( t('To select all posts for a given month, such as January of this year, visit <a href="%1$s">%2$s</a>'),$janurl,$janurl),
'$extra4' => sprintf( t('These content files may be imported or restored by visiting <a href="%1$s">%2$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first).'),$impurl,$impurl)
-
+
));
return $o;
}
-
+
}
diff --git a/app/cards.apd b/app/cards.apd
index 780f71e75..00cfa05a8 100644
--- a/app/cards.apd
+++ b/app/cards.apd
@@ -1,6 +1,7 @@
-version: 2
+version: 3
url: $baseurl/cards/$nick
name: Cards
requires: local_channel
photo: icon:list
categories: nav_featured_app, Productivity
+desc: Create interactive personal planning cards.
diff --git a/app/channel.apd b/app/channel.apd
index d48266c95..db453d6f1 100644
--- a/app/channel.apd
+++ b/app/channel.apd
@@ -1,6 +1,7 @@
-version: 2
+version: 3
url: $baseurl/channel/$nick, $baseurl/settings/channel_home
requires: local_channel
name: Channel Home
photo: icon:home
categories: nav_featured_app, Personal
+desc: Your channel homepage featuring your personal posts.
diff --git a/app/chat.apd b/app/chat.apd
index 627c62d12..cac192ab2 100644
--- a/app/chat.apd
+++ b/app/chat.apd
@@ -1,6 +1,7 @@
-version: 2
+version: 3
url: $baseurl/chat/$nick
requires: local_channel
name: Chatrooms
photo: icon:comments-o
categories: Productivity
+desc: Access controlled personal chatrooms.
diff --git a/app/sources.apd b/app/sources.apd
index deeeae0a2..d3a43dd04 100644
--- a/app/sources.apd
+++ b/app/sources.apd
@@ -1,6 +1,7 @@
-version: 2
+version: 3
url: $baseurl/sources
requires: local_channel
name: Channel Sources
photo: icon:commenting-o
categories: Networking
+desc: Import channel content from other channels or feeds.
diff --git a/app/uexport.apd b/app/uexport.apd
index 773d74429..25cd91549 100644
--- a/app/uexport.apd
+++ b/app/uexport.apd
@@ -1,6 +1,7 @@
-version: 2
+version: 3
url: $baseurl/uexport
requires: local_channel
name: Channel Export
photo: icon:download
categories: Personal, System
+desc: Export your channel.
diff --git a/view/tpl/app_install.tpl b/view/tpl/app_install.tpl
index d5981eba7..16b89d350 100644
--- a/view/tpl/app_install.tpl
+++ b/view/tpl/app_install.tpl
@@ -6,6 +6,7 @@
</div>
<form action="appman" method="post">
<input type="hidden" name="papp" value="{{$papp.papp}}" />
+ <input type="hidden" name="return_path" value="{{$return_path}}" />
<button type="submit" name="install" value="install" class="btn btn-success">
<i class="fa fa-fw fa-arrow-circle-o-down"></i> {{$install}}
</button>