Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Haakon Meland Eriksen 2016-01-07 00:02:40 +01:00
commit bfe8e1e2e9
7 changed files with 125 additions and 16 deletions

View file

@ -47,8 +47,8 @@ require_once('include/AccessList.php');
define ( 'PLATFORM_NAME', 'hubzilla' ); define ( 'PLATFORM_NAME', 'hubzilla' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'H'); define ( 'RED_VERSION', trim(file_get_contents('version.inc')));
define ( 'STD_VERSION', '1.0.1' ); define ( 'STD_VERSION', '1.1' );
define ( 'ZOT_REVISION', 1 ); define ( 'ZOT_REVISION', 1 );
define ( 'DB_UPDATE_VERSION', 1161 ); define ( 'DB_UPDATE_VERSION', 1161 );

View file

@ -36,7 +36,7 @@ function get_feature_default($feature) {
} }
function get_features() { function get_features($filtered = true) {
$arr = array( $arr = array(
@ -98,20 +98,22 @@ function get_features() {
// removed any locked features and remove the entire category if this makes it empty // removed any locked features and remove the entire category if this makes it empty
foreach($arr as $k => $x) { if($filtered) {
$has_items = false; foreach($arr as $k => $x) {
for($y = 0; $y < count($arr[$k]); $y ++) { $has_items = false;
if(is_array($arr[$k][$y])) { for($y = 0; $y < count($arr[$k]); $y ++) {
if($arr[$k][$y][4] === false) { if(is_array($arr[$k][$y])) {
$has_items = true; if($arr[$k][$y][4] === false) {
} $has_items = true;
else { }
unset($arr[$k][$y]); else {
unset($arr[$k][$y]);
}
} }
} }
} if(! $has_items) {
if(! $has_items) { unset($arr[$k]);
unset($arr[$k]); }
} }
} }

View file

@ -1217,6 +1217,7 @@ function widget_admin($arr) {
'site' => array(z_root() . '/admin/site/', t('Site'), 'site'), 'site' => array(z_root() . '/admin/site/', t('Site'), 'site'),
'users' => array(z_root() . '/admin/users/', t('Accounts'), 'users'), 'users' => array(z_root() . '/admin/users/', t('Accounts'), 'users'),
'channels' => array(z_root() . '/admin/channels/', t('Channels'), 'channels'), 'channels' => array(z_root() . '/admin/channels/', t('Channels'), 'channels'),
'features' => array(z_root() . '/admin/features/', t('Features'), 'features'),
'plugins' => array(z_root() . '/admin/plugins/', t('Plugins'), 'plugins'), 'plugins' => array(z_root() . '/admin/plugins/', t('Plugins'), 'plugins'),
'themes' => array(z_root() . '/admin/themes/', t('Themes'), 'themes'), 'themes' => array(z_root() . '/admin/themes/', t('Themes'), 'themes'),
'queue' => array(z_root() . '/admin/queue', t('Inspect queue'), 'queue'), 'queue' => array(z_root() . '/admin/queue', t('Inspect queue'), 'queue'),

View file

@ -62,6 +62,9 @@ function admin_post(&$a){
case 'hubloc': case 'hubloc':
admin_page_hubloc_post($a); admin_page_hubloc_post($a);
break; break;
case 'features':
admin_page_features_post($a);
break;
case 'dbsync': case 'dbsync':
admin_page_dbsync_post($a); admin_page_dbsync_post($a);
break; break;
@ -113,6 +116,9 @@ function admin_content(&$a) {
// case 'hubloc': // case 'hubloc':
// $o = admin_page_hubloc($a); // $o = admin_page_hubloc($a);
// break; // break;
case 'features':
$o = admin_page_features($a);
break;
case 'logs': case 'logs':
$o = admin_page_logs($a); $o = admin_page_logs($a);
break; break;
@ -530,6 +536,74 @@ function admin_page_hubloc_post(&$a){
goaway($a->get_baseurl(true) . '/admin/hubloc' ); goaway($a->get_baseurl(true) . '/admin/hubloc' );
} }
function admin_page_features_post(&$a) {
check_form_security_token_redirectOnErr('/admin/features', 'admin_manage_features');
logger('postvars: ' . print_r($_POST,true));
$arr = array();
$features = get_features(false);
foreach($features as $fname => $fdata) {
foreach(array_slice($fdata,1) as $f) {
$feature = $f[0];
if(array_key_exists('feature_' . $feature,$_POST))
$val = intval($_POST['feature_' . $feature]);
else
$val = 0;
set_config('feature',$feature,$val);
if(array_key_exists('featurelock_' . $feature,$_POST))
set_config('feature_lock',$feature,$val);
else
del_config('feature_lock',$feature);
}
}
goaway(z_root() . '/admin/features' );
}
function admin_page_features(&$a) {
if((argc() > 1) && (argv(1) === 'features')) {
$arr = array();
$features = get_features(false);
foreach($features as $fname => $fdata) {
$arr[$fname] = array();
$arr[$fname][0] = $fdata[0];
foreach(array_slice($fdata,1) as $f) {
$set = get_config('feature',$f[0]);
if($set === false)
$set = $f[3];
$arr[$fname][1][] = array(
array('feature_' .$f[0],$f[1],$set,$f[2],array(t('Off'),t('On'))),
array('featurelock_' .$f[0],sprintf( t('Lock feature %s'),$f[1]),(($f[4] !== false) ? 1 : 0),'',array(t('Off'),t('On')))
);
}
}
$tpl = get_markup_template("admin_settings_features.tpl");
$o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("admin_manage_features"),
'$title' => t('Manage Additional Features'),
'$features' => $arr,
'$submit' => t('Submit'),
));
return $o;
}
}
function admin_page_hubloc(&$a) { function admin_page_hubloc(&$a) {
$hubloc = q("SELECT hubloc_id, hubloc_addr, hubloc_host, hubloc_status FROM hubloc"); $hubloc = q("SELECT hubloc_id, hubloc_addr, hubloc_host, hubloc_status FROM hubloc");

View file

@ -1 +1 @@
2016-01-04.1268H 2016-01-06.1270H

View file

@ -19,6 +19,7 @@
<li><a href='{{$admin.queue.0}}'>{{$admin.queue.1}}</a></li> <li><a href='{{$admin.queue.0}}'>{{$admin.queue.1}}</a></li>
<li><a href='{{$admin.plugins.0}}'>{{$admin.plugins.1}}</a></li> <li><a href='{{$admin.plugins.0}}'>{{$admin.plugins.1}}</a></li>
<li><a href='{{$admin.themes.0}}'>{{$admin.themes.1}}</a></li> <li><a href='{{$admin.themes.0}}'>{{$admin.themes.1}}</a></li>
<li><a href='{{$admin.features.0}}'>{{$admin.features.1}}</a></li>
<li><a href='{{$admin.dbsync.0}}'>{{$admin.dbsync.1}}</a></li> <li><a href='{{$admin.dbsync.0}}'>{{$admin.dbsync.1}}</a></li>
</ul> </ul>
</div> </div>

View file

@ -0,0 +1,31 @@
<div class="generic-content-wrapper">
<div class="section-title-wrapper">
<h2>{{$title}}</h2>
</div>
<form action="admin/features" method="post" autocomplete="off">
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
<div class="panel-group" id="settings" role="tablist" aria-multiselectable="true">
{{foreach $features as $g => $f}}
<div class="panel">
<div class="section-subtitle-wrapper" role="tab" id="{{$g}}-settings-title">
<h3>
<a data-toggle="collapse" data-parent="#settings" href="#{{$g}}-settings-content" aria-expanded="true" aria-controls="{{$g}}-settings-collapse">
{{$f.0}}
</a>
</h3>
</div>
<div id="{{$g}}-settings-content" class="panel-collapse collapse{{if $g == 'general'}} in{{/if}}" role="tabpanel" aria-labelledby="{{$g}}-settings-title">
<div class="section-content-tools-wrapper">
{{foreach $f.1 as $fcat}}
{{include file="field_checkbox.tpl" field=$fcat.0}}
{{include file="field_checkbox.tpl" field=$fcat.1}}
{{/foreach}}
<div class="settings-submit-wrapper" >
<button type="submit" name="submit" class="btn btn-primary">{{$submit}}</button>
</div>
</div>
</div>
</div>
{{/foreach}}
</div>
</div>