Use MB/GB for size settings in views

This commit is contained in:
DariusIII
2026-08-10 20:12:00 +02:00
parent 140b7c8c04
commit c2acf11167
19 changed files with 697 additions and 79 deletions
@@ -7,6 +7,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Controllers\BasePageController;
use App\Http\Requests\Admin\AdminGroupListRequest;
use App\Models\UsenetGroup;
use App\Support\SizeUnit;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
@@ -75,6 +76,16 @@ class AdminGroupController extends BasePageController
switch ($action) {
case 'submit':
// Convert the size + unit pair to bytes; a blank input stays blank
// so the model stores null and the site-wide setting applies.
$minSizeInput = $request->input('minsizetoformrelease');
if ($minSizeInput !== null && $minSizeInput !== '') {
$request->merge([
'minsizetoformrelease' => SizeUnit::toBytes($minSizeInput, $request->input('minsizetoformrelease_unit', 'MB')),
]);
}
$request->request->remove('minsizetoformrelease_unit');
if (empty($request->input('id'))) {
// Add a new group.
$request->merge(['name' => UsenetGroup::isValidGroup($request->input('name'))]);
@@ -101,7 +112,9 @@ class AdminGroupController extends BasePageController
break;
}
return view('admin.groups.edit', compact('title', 'group'));
$groupMinSize = SizeUnit::fromBytes($group['minsizetoformrelease'] ?? 0);
return view('admin.groups.edit', compact('title', 'group', 'groupMinSize') + ['sizeUnits' => SizeUnit::UNITS]);
}
/**
@@ -10,6 +10,7 @@ use App\Models\ReleaseStat;
use App\Models\RoleStat;
use App\Models\Settings;
use App\Models\SignupStat;
use App\Support\SizeUnit;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
@@ -32,7 +33,14 @@ class AdminSiteController extends BasePageController
switch ($action) {
case 'submit':
Settings::settingsUpdate($request->all());
$data = $request->all();
foreach (SizeUnit::SITE_SIZE_SETTINGS as $sizeKey) {
$data[$sizeKey] = SizeUnit::toBytes($data[$sizeKey] ?? null, $data[$sizeKey.'_unit'] ?? 'MB');
unset($data[$sizeKey.'_unit']);
}
Settings::settingsUpdate($data);
return redirect()->to('admin/site-edit')->with('success', 'Settings updated successfully');
@@ -43,8 +51,15 @@ class AdminSiteController extends BasePageController
$compress_headers_warning = ! str_contains(config('settings.nntp_server'), 'astra') ? 'compress_headers_warning' : '';
$sizeFields = [];
foreach (SizeUnit::SITE_SIZE_SETTINGS as $sizeKey) {
$sizeFields[$sizeKey] = SizeUnit::fromBytes($this->viewData['site'][$sizeKey] ?? 0);
}
$this->viewData = array_merge($this->viewData, [
'error' => $error,
'sizeFields' => $sizeFields,
'sizeUnits' => SizeUnit::UNITS,
'yesno' => [
'ids' => [1, 0],
'names' => ['Yes', 'No'],