diff options
-rwxr-xr-x | boot.php | 4 | ||||
-rw-r--r-- | include/features.php | 28 | ||||
-rw-r--r-- | include/widgets.php | 1 | ||||
-rw-r--r-- | mod/admin.php | 74 | ||||
-rw-r--r-- | version.inc | 2 | ||||
-rwxr-xr-x | view/tpl/admin_aside.tpl | 1 | ||||
-rw-r--r-- | view/tpl/admin_settings_features.tpl | 31 |
7 files changed, 125 insertions, 16 deletions
@@ -47,8 +47,8 @@ require_once('include/AccessList.php'); define ( 'PLATFORM_NAME', 'hubzilla' ); -define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'H'); -define ( 'STD_VERSION', '1.0.1' ); +define ( 'RED_VERSION', trim(file_get_contents('version.inc'))); +define ( 'STD_VERSION', '1.1' ); define ( 'ZOT_REVISION', 1 ); define ( 'DB_UPDATE_VERSION', 1161 ); diff --git a/include/features.php b/include/features.php index b02d912cf..3cbbf5b7d 100644 --- a/include/features.php +++ b/include/features.php @@ -36,7 +36,7 @@ function get_feature_default($feature) { } -function get_features() { +function get_features($filtered = true) { $arr = array( @@ -98,20 +98,22 @@ function get_features() { // removed any locked features and remove the entire category if this makes it empty - foreach($arr as $k => $x) { - $has_items = false; - for($y = 0; $y < count($arr[$k]); $y ++) { - if(is_array($arr[$k][$y])) { - if($arr[$k][$y][4] === false) { - $has_items = true; - } - else { - unset($arr[$k][$y]); + if($filtered) { + foreach($arr as $k => $x) { + $has_items = false; + for($y = 0; $y < count($arr[$k]); $y ++) { + if(is_array($arr[$k][$y])) { + if($arr[$k][$y][4] === false) { + $has_items = true; + } + else { + unset($arr[$k][$y]); + } } } - } - if(! $has_items) { - unset($arr[$k]); + if(! $has_items) { + unset($arr[$k]); + } } } diff --git a/include/widgets.php b/include/widgets.php index 0f170fd52..a7d06d39e 100644 --- a/include/widgets.php +++ b/include/widgets.php @@ -1217,6 +1217,7 @@ function widget_admin($arr) { 'site' => array(z_root() . '/admin/site/', t('Site'), 'site'), 'users' => array(z_root() . '/admin/users/', t('Accounts'), 'users'), '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'), 'themes' => array(z_root() . '/admin/themes/', t('Themes'), 'themes'), 'queue' => array(z_root() . '/admin/queue', t('Inspect queue'), 'queue'), diff --git a/mod/admin.php b/mod/admin.php index 85ab3627c..c175a4a61 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -62,6 +62,9 @@ function admin_post(&$a){ case 'hubloc': admin_page_hubloc_post($a); break; + case 'features': + admin_page_features_post($a); + break; case 'dbsync': admin_page_dbsync_post($a); break; @@ -113,6 +116,9 @@ function admin_content(&$a) { // case 'hubloc': // $o = admin_page_hubloc($a); // break; + case 'features': + $o = admin_page_features($a); + break; case 'logs': $o = admin_page_logs($a); break; @@ -530,6 +536,74 @@ function admin_page_hubloc_post(&$a){ 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) { $hubloc = q("SELECT hubloc_id, hubloc_addr, hubloc_host, hubloc_status FROM hubloc"); diff --git a/version.inc b/version.inc index 8a363fc45..be2d3de4a 100644 --- a/version.inc +++ b/version.inc @@ -1 +1 @@ -2016-01-04.1268H +2016-01-06.1270H diff --git a/view/tpl/admin_aside.tpl b/view/tpl/admin_aside.tpl index 57ac7f3e1..0a77ef73c 100755 --- a/view/tpl/admin_aside.tpl +++ b/view/tpl/admin_aside.tpl @@ -19,6 +19,7 @@ <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.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> </ul> </div> diff --git a/view/tpl/admin_settings_features.tpl b/view/tpl/admin_settings_features.tpl new file mode 100644 index 000000000..2d5cf7e0b --- /dev/null +++ b/view/tpl/admin_settings_features.tpl @@ -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> |