Move admin/features to src/Module

- Add Module\Admin\Features class
- Add route for admin/features
- Add features admin aside menu entry
- Move templates/admin/settings_features.tpl to templates/admin/features.tpl
- Remove admin_page_features and admin_page_features_post from mod/admin.php
This commit is contained in:
Hypolite Petovan 2019-04-21 20:32:02 -04:00
parent f3f055758c
commit 446cb905e4
5 changed files with 81 additions and 90 deletions

View file

@ -111,9 +111,6 @@ function admin_post(App $a)
}
$return_path = 'admin/themes/' . $theme . (!empty($_GET['mode']) ? '?mode=' . $_GET['mode'] : '');
break;
case 'features':
admin_page_features_post($a);
break;
case 'logs':
admin_page_logs_post($a);
break;
@ -228,9 +225,6 @@ function admin_content(App $a)
case 'themes':
$o = admin_page_themes($a);
break;
case 'features':
$o = admin_page_features($a);
break;
case 'logs':
$o = admin_page_logs($a);
break;
@ -1672,90 +1666,6 @@ function admin_page_viewlogs(App $a)
]);
}
/**
* @brief Prosesses data send by the features admin page
*
* @param App $a
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function admin_page_features_post(App $a)
{
BaseModule::checkFormSecurityTokenRedirectOnError('/admin/features', 'admin_manage_features');
Logger::log('postvars: ' . print_r($_POST, true), Logger::DATA);
$features = Feature::get(false);
foreach ($features as $fname => $fdata) {
foreach (array_slice($fdata, 1) as $f) {
$feature = $f[0];
$feature_state = 'feature_' . $feature;
$featurelock = 'featurelock_' . $feature;
if (!empty($_POST[$feature_state])) {
$val = intval($_POST[$feature_state]);
} else {
$val = 0;
}
Config::set('feature', $feature, $val);
if (!empty($_POST[$featurelock])) {
Config::set('feature_lock', $feature, $val);
} else {
Config::delete('feature_lock', $feature);
}
}
}
$a->internalRedirect('admin/features');
return; // NOTREACHED
}
/**
* @brief Subpage for global additional feature management
*
* This functin generates the subpage 'Manage Additional Features'
* for the admin panel. At this page the admin can set preferences
* for the user settings of the 'additional features'. If needed this
* preferences can be locked through the admin.
*
* The returned string contains the HTML code of the subpage 'Manage
* Additional Features'
*
* @param App $a
* @return string
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
function admin_page_features(App $a)
{
if (($a->argc > 1) && ($a->getArgumentValue(1) === 'features')) {
$arr = [];
$features = Feature::get(false);
foreach ($features as $fname => $fdata) {
$arr[$fname] = [];
$arr[$fname][0] = $fdata[0];
foreach (array_slice($fdata, 1) as $f) {
$set = Config::get('feature', $f[0], $f[3]);
$arr[$fname][1][] = [
['feature_' . $f[0], $f[1], $set, $f[2], [L10n::t('Off'), L10n::t('On')]],
['featurelock_' . $f[0], L10n::t('Lock feature %s', $f[1]), (($f[4] !== false) ? "1" : ''), '', [L10n::t('Off'), L10n::t('On')]]
];
}
}
$tpl = Renderer::getMarkupTemplate('admin/settings_features.tpl');
$o = Renderer::replaceMacros($tpl, [
'$form_security_token' => BaseModule::getFormSecurityToken("admin_manage_features"),
'$title' => L10n::t('Manage Additional Features'),
'$features' => $arr,
'$submit' => L10n::t('Save Settings'),
]);
return $o;
}
}
function admin_page_server_vital()
{
// Fetch the host-meta to check if this really is a vital server

View file

@ -124,6 +124,7 @@ class Router
$collector->addRoute(['GET', 'POST'], '/addons' , Module\Admin\Addons\Index::class);
$collector->addRoute(['GET', 'POST'], '/addons/{addon}' , Module\Admin\Addons\Details::class);
$collector->addRoute(['GET', 'POST'], '/features' , Module\Admin\Features::class);
$collector->addRoute(['GET'] , '/federation' , Module\Admin\Federation::class);
$collector->addRoute(['GET', 'POST'], '/themes' , Module\Admin\Themes\Index::class);

View file

@ -0,0 +1,79 @@
<?php
namespace Friendica\Module\Admin;
use Friendica\Content\Feature;
use Friendica\Core\Config;
use Friendica\Core\L10n;
use Friendica\Core\Logger;
use Friendica\Core\Renderer;
use Friendica\Module\BaseAdminModule;
class Features extends BaseAdminModule
{
public static function post()
{
parent::post();
parent::checkFormSecurityTokenRedirectOnError('/admin/features', 'admin_manage_features');
$features = Feature::get(false);
foreach ($features as $fname => $fdata) {
foreach (array_slice($fdata, 1) as $f) {
$feature = $f[0];
$feature_state = 'feature_' . $feature;
$featurelock = 'featurelock_' . $feature;
if (!empty($_POST[$feature_state])) {
$val = intval($_POST[$feature_state]);
} else {
$val = 0;
}
Config::set('feature', $feature, $val);
if (!empty($_POST[$featurelock])) {
Config::set('feature_lock', $feature, $val);
} else {
Config::delete('feature_lock', $feature);
}
}
}
self::getApp()->internalRedirect('admin/features');
}
public static function content()
{
parent::content();
$a = self::getApp();
if (($a->argc > 1) && ($a->getArgumentValue(1) === 'features')) {
$arr = [];
$features = Feature::get(false);
foreach ($features as $fname => $fdata) {
$arr[$fname] = [];
$arr[$fname][0] = $fdata[0];
foreach (array_slice($fdata, 1) as $f) {
$set = Config::get('feature', $f[0], $f[3]);
$arr[$fname][1][] = [
['feature_' . $f[0], $f[1], $set, $f[2], [L10n::t('Off'), L10n::t('On')]],
['featurelock_' . $f[0], L10n::t('Lock feature %s', $f[1]), (($f[4] !== false) ? "1" : ''), '', [L10n::t('Off'), L10n::t('On')]]
];
}
}
$tpl = Renderer::getMarkupTemplate('admin/features.tpl');
$o = Renderer::replaceMacros($tpl, [
'$form_security_token' => parent::getFormSecurityToken("admin_manage_features"),
'$title' => L10n::t('Manage Additional Features'),
'$features' => $arr,
'$submit' => L10n::t('Save Settings'),
]);
return $o;
}
}
}

View file

@ -56,6 +56,7 @@ abstract class BaseAdminModule extends BaseModule
'users' => ['admin/users' , L10n::t('Users') , 'users'],
'addons' => ['admin/addons' , L10n::t('Addons') , 'addons'],
'themes' => ['admin/themes' , L10n::t('Themes') , 'themes'],
'features' => ['admin/features' , L10n::t('Additional features') , 'features'],
'tos' => ['admin/tos' , L10n::t('Terms of Service') , 'tos'],
]],
];