move connection filtering setting from network to connections, provide a link to settings in the navbar if present for a module and some code optimisation

This commit is contained in:
Mario Vavti 2018-09-20 13:22:41 +02:00
parent a6db822a69
commit 1ca558f011
8 changed files with 113 additions and 26 deletions

View File

@ -1,6 +1,7 @@
<?php <?php
namespace Zotlabs\Module; namespace Zotlabs\Module;
use App;
require_once('include/socgraph.php'); require_once('include/socgraph.php');
require_once('include/selectors.php'); require_once('include/selectors.php');
@ -12,8 +13,10 @@ class Connections extends \Zotlabs\Web\Controller {
if(! local_channel()) if(! local_channel())
return; return;
App::$profile_uid = local_channel();
$channel = \App::get_channel(); $channel = App::get_channel();
if($channel) if($channel)
head_set_icon($channel['xchan_photo_s']); head_set_icon($channel['xchan_photo_s']);
@ -43,7 +46,7 @@ class Connections extends \Zotlabs\Web\Controller {
$all = false; $all = false;
if(! $_REQUEST['aj']) if(! $_REQUEST['aj'])
$_SESSION['return_url'] = \App::$query_string; $_SESSION['return_url'] = App::$query_string;
$search_flags = ""; $search_flags = "";
$head = ''; $head = '';
@ -88,14 +91,14 @@ class Connections extends \Zotlabs\Web\Controller {
$search_flags = " and abook_pending = 1 "; $search_flags = " and abook_pending = 1 ";
$head = t('New'); $head = t('New');
$pending = true; $pending = true;
\App::$argv[1] = 'pending'; App::$argv[1] = 'pending';
} }
else { else {
$head = t('All'); $head = t('All');
$search_flags = ''; $search_flags = '';
$all = true; $all = true;
\App::$argc = 1; App::$argc = 1;
unset(\App::$argv[1]); unset(App::$argv[1]);
} }
break; break;
// case 'unconnected': // case 'unconnected':
@ -225,15 +228,15 @@ class Connections extends \Zotlabs\Web\Controller {
intval(local_channel()) intval(local_channel())
); );
if($r) { if($r) {
\App::set_pager_total($r[0]['total']); App::set_pager_total($r[0]['total']);
$total = $r[0]['total']; $total = $r[0]['total'];
} }
$r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash
WHERE abook_channel = %d and abook_self = 0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra $sql_extra2 ORDER BY xchan_name LIMIT %d OFFSET %d ", WHERE abook_channel = %d and abook_self = 0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra $sql_extra2 ORDER BY xchan_name LIMIT %d OFFSET %d ",
intval(local_channel()), intval(local_channel()),
intval(\App::$pager['itemspage']), intval(App::$pager['itemspage']),
intval(\App::$pager['start']) intval(App::$pager['start'])
); );
$contacts = array(); $contacts = array();
@ -337,7 +340,7 @@ class Connections extends \Zotlabs\Web\Controller {
'$finding' => (($searching) ? t('Connections search') . ": '" . $search . "'" : ""), '$finding' => (($searching) ? t('Connections search') . ": '" . $search . "'" : ""),
'$submit' => t('Find'), '$submit' => t('Find'),
'$edit' => t('Edit'), '$edit' => t('Edit'),
'$cmd' => \App::$cmd, '$cmd' => App::$cmd,
'$contacts' => $contacts, '$contacts' => $contacts,
'$paginate' => paginate($a), '$paginate' => paginate($a),

View File

@ -0,0 +1,51 @@
<?php
namespace Zotlabs\Module\Settings;
class Connections {
function post() {
check_form_security_token_redirectOnErr('/settings/connections', 'settings_connections');
$features = self::get_features();
process_features_post(local_channel(), $features, $_POST);
build_sync_packet();
return;
}
function get() {
$features = self::get_features();
$tpl = get_markup_template("settings_module.tpl");
$o .= replace_macros($tpl, array(
'$action_url' => 'settings/connections',
'$form_security_token' => get_form_security_token("settings_connections"),
'$title' => t('Connections Settings'),
'$features' => process_features_get(local_channel(), $features),
'$submit' => t('Submit')
));
return $o;
}
function get_features() {
$arr = [
[
'connfilter',
t('Connection Filtering'),
t('Filter incoming posts from connections based on keywords/content'),
false,
get_config('feature_lock','connfilter')
]
];
return $arr;
}
}

View File

@ -10,13 +10,7 @@ class Network {
$features = self::get_features(); $features = self::get_features();
foreach($features as $f) { process_features_post(local_channel(), $features, $_POST);
$k = $f[0];
if(array_key_exists("feature_$k",$_POST))
set_pconfig(local_channel(),'feature',$k, (string) $_POST["feature_$k"]);
else
set_pconfig(local_channel(),'feature', $k, '');
}
build_sync_packet(); build_sync_packet();
return; return;
@ -26,17 +20,13 @@ class Network {
$features = self::get_features(); $features = self::get_features();
foreach($features as $f) {
$arr[] = array('feature_' . $f[0],$f[1],((intval(feature_enabled(local_channel(),$f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On')));
}
$tpl = get_markup_template("settings_module.tpl"); $tpl = get_markup_template("settings_module.tpl");
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
'$action_url' => 'settings/network', '$action_url' => 'settings/network',
'$form_security_token' => get_form_security_token("settings_network"), '$form_security_token' => get_form_security_token("settings_network"),
'$title' => t('Activity Settings'), '$title' => t('Activity Settings'),
'$features' => $arr, '$features' => process_features_get(local_channel(), $features),
'$submit' => t('Submit') '$submit' => t('Submit')
)); ));

View File

@ -1,5 +1,5 @@
version: 1 version: 1.1
url: $baseurl/connections url: $baseurl/connections, $baseurl/settings/connections
requires: local_channel requires: local_channel
name: Connections name: Connections
photo: icon:users photo: icon:users

View File

@ -44,6 +44,23 @@ function feature_level($feature,$def) {
return $def; return $def;
} }
function process_features_get($uid, $features) {
foreach($features as $f) {
$arr[] = array('feature_' . $f[0],$f[1],((intval(feature_enabled($uid, $f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On')));
}
return $arr;
}
function process_features_post($uid, $features, $post_arr) {
foreach($features as $f) {
$k = $f[0];
if(array_key_exists("feature_$k",$post_arr))
set_pconfig($uid,'feature',$k, (string) $post_arr["feature_$k"]);
else
set_pconfig($uid,'feature', $k, '');
}
}
function get_features($filtered = true, $level = (-1)) { function get_features($filtered = true, $level = (-1)) {
$account = \App::get_account(); $account = \App::get_account();

View File

@ -199,17 +199,21 @@ function nav($template = 'default') {
// turned off until somebody discovers this and figures out a good location for it. // turned off until somebody discovers this and figures out a good location for it.
$powered_by = ''; $powered_by = '';
$url = '';
$settings_url = '';
if(App::$profile_uid && App::$nav_sel['raw_name']) { if(App::$profile_uid && App::$nav_sel['raw_name']) {
$active_app = q("SELECT app_url FROM app WHERE app_channel = %d AND app_name = '%s' LIMIT 1", $active_app = q("SELECT app_url FROM app WHERE app_channel = %d AND app_name = '%s' LIMIT 1",
intval(App::$profile_uid), intval(App::$profile_uid),
dbesc(App::$nav_sel['raw_name']) dbesc(App::$nav_sel['raw_name'])
); );
if($active_app) { if($active_app) {
if(strpos($active_app[0]['app_url'], ',')) { if(strpos($active_app[0]['app_url'], ',')) {
$urls = explode(',', $active_app[0]['app_url']); $urls = explode(',', $active_app[0]['app_url']);
$url = trim($urls[0]); $url = trim($urls[0]);
$settings_url = trim($urls[1]); if($is_owner)
$settings_url = trim($urls[1]);
} }
else { else {
$url = $active_app[0]['app_url']; $url = $active_app[0]['app_url'];
@ -296,7 +300,8 @@ function nav($template = 'default') {
'$addapps' => t('Add Apps'), '$addapps' => t('Add Apps'),
'$orderapps' => t('Arrange Apps'), '$orderapps' => t('Arrange Apps'),
'$sysapps_toggle' => t('Toggle System Apps'), '$sysapps_toggle' => t('Toggle System Apps'),
'$url' => (($url) ? $url : App::$cmd) '$url' => (($url) ? $url : App::$cmd),
'$settings_url' => $settings_url
)); ));
if(x($_SESSION, 'reload_avatar') && $observer) { if(x($_SESSION, 'reload_avatar') && $observer) {

View File

@ -70,7 +70,15 @@
<br><small>{{$sitelocation}}</small> <br><small>{{$sitelocation}}</small>
{{/if}} {{/if}}
</a> </a>
</div> </div>
{{if $settings_url}}
<div id="nav-app-settings-link-wrapper" class="navbar-nav mr-auto">
<a id="nav-app-settings-link" href="{{$settings_url}}" class="nav-link">
<i class="fa fa-fw fa-cog"></i>
</a>
</div>
{{/if}}
{{/if}} {{/if}}
{{/if}} {{/if}}
<div class="navbar-toggler-right"> <div class="navbar-toggler-right">

View File

@ -0,0 +1,13 @@
<div class="generic-content-wrapper">
<div class="section-title-wrapper">
<h2>{{$title}}</h2>
</div>
<div class="section-content-wrapper">
<form action="{{$action_url}}" method="post" autocomplete="off">
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
{{$content}}
<div class="settings-submit-wrapper" >
<button type="submit" name="submit" class="btn btn-primary">{{$submit}}</button>
</div>
</div>
</div>