diff options
-rw-r--r-- | Zotlabs/Module/Settings/Features.php | 57 | ||||
-rwxr-xr-x | view/tpl/settings_features.tpl | 15 |
2 files changed, 47 insertions, 25 deletions
diff --git a/Zotlabs/Module/Settings/Features.php b/Zotlabs/Module/Settings/Features.php index 3c3205c65..43ca57be2 100644 --- a/Zotlabs/Module/Settings/Features.php +++ b/Zotlabs/Module/Settings/Features.php @@ -8,26 +8,16 @@ class Features { function post() { check_form_security_token_redirectOnErr('/settings/features', 'settings_features'); - // Build list of features and check which are set - // We will not create any settings for features that are above our techlevel + $features = get_features(false); - if(intval($_REQUEST['techlevel'])) - $level = intval($_REQUEST['techlevel']); - else { - $level = get_account_techlevel(); - } - - $features = get_features(true,$level); - $all_features = array(); - foreach($features as $k => $v) { - foreach($v as $f) - $all_features[] = $f[0]; - } - foreach($all_features as $k) { - if(x($_POST,"feature_$k")) - set_pconfig(local_channel(),'feature',$k, 1); - else - set_pconfig(local_channel(),'feature',$k, 0); + foreach($features as $fname => $fdata) { + foreach(array_slice($fdata,1) as $f) { + $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(); return; @@ -36,6 +26,8 @@ class Features { function get() { $arr = []; + $harr = []; + if(intval($_REQUEST['techlevel'])) $level = intval($_REQUEST['techlevel']); else { @@ -44,27 +36,42 @@ class Features { $techlevels = \Zotlabs\Lib\Techlevels::levels(); - $def_techlevel = \App::$account['account_level']; + unset($techlevels[0]); + + logger('techlevels: ' . print_r($techlevels,true)); + + $def_techlevel = (($level > 0) ? $level : 1); $techlock = get_config('system','techlevel_lock'); + $all_features_raw = get_features(false); + + foreach($all_features_raw as $fname => $fdata) { + foreach(array_slice($fdata,1) as $f) { + $harr[$f[0]] = ((intval(feature_enabled(local_channel(),$f[0]))) ? "1" : ''); + } + } + $features = get_features(true,$level); foreach($features as $fname => $fdata) { $arr[$fname] = array(); $arr[$fname][0] = $fdata[0]; foreach(array_slice($fdata,1) as $f) { - $arr[$fname][1][] = array('feature_' .$f[0],$f[1],((intval(feature_enabled(local_channel(),$f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On'))); + $arr[$fname][1][] = array('feature_' . $f[0],$f[1],((intval(feature_enabled(local_channel(),$f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On'))); + unset($harr[$f[0]]); } } $tpl = get_markup_template("settings_features.tpl"); $o .= replace_macros($tpl, array( '$form_security_token' => get_form_security_token("settings_features"), - '$title' => t('Additional Features'), + '$title' => t('Additional Features'), '$techlevel' => [ 'techlevel', t('Your technical skill level'), $def_techlevel, t('Used to provide a member experience and additional features consistent with your comfort level'), $techlevels ], - '$techlock' => $techlock, - '$features' => $arr, - '$submit' => t('Submit'), + '$techlock' => $techlock, + '$features' => $arr, + '$hiddens' => $harr, + '$baseurl' => z_root(), + '$submit' => t('Submit'), )); return $o; diff --git a/view/tpl/settings_features.tpl b/view/tpl/settings_features.tpl index 0b65e2524..998199c8e 100755 --- a/view/tpl/settings_features.tpl +++ b/view/tpl/settings_features.tpl @@ -1,3 +1,12 @@ +<script> + $(document).ready(function() { + $('#id_techlevel').change(function() { + var techlvl = $('#id_techlevel').val(); + window.location.href='{{$baseurl}}/settings/features?f=&techlevel=' + techlvl; + }); + }); +</script> + <div class="generic-content-wrapper"> <div class="section-title-wrapper"> <h2>{{$title}}</h2> @@ -11,6 +20,12 @@ {{else}} <input type="hidden" name="techlevel" value="{{$techlevel.2}}" /> {{/if}} + + {{if $hiddens}} + {{foreach $hiddens as $k => $v}} + <input type="hidden" name="feature_{{$k}}" value="{{$v}}" /> + {{/foreach}} + {{/if}} <div class="panel-group" id="settings" role="tablist" aria-multiselectable="true"> {{foreach $features as $g => $f}} <div class="panel"> |