Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 22 additions & 41 deletions src/Http/Controllers/FieldsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

namespace CraftCms\Cms\Http\Controllers;

use CraftCms\Cms\Cms;
use CraftCms\Cms\Component\ComponentHelper;
use CraftCms\Cms\Component\Contracts\Chippable;
use CraftCms\Cms\Component\Contracts\Colorable;
Expand All @@ -28,6 +27,7 @@
use CraftCms\Cms\FieldLayout\FieldLayoutElement;
use CraftCms\Cms\FieldLayout\FieldLayoutTab;
use CraftCms\Cms\FieldLayout\LayoutElements\CustomField;
use CraftCms\Cms\Http\Requests\TableRequest;
use CraftCms\Cms\Http\RespondsWithFlash;
use CraftCms\Cms\Http\Responses\CpScreenResponse;
use CraftCms\Cms\Support\Arr;
Expand All @@ -40,6 +40,7 @@
use CraftCms\Cms\View\HtmlStack;
use CraftCms\Cms\View\LegacyAssets\FieldSettingsAsset;
use CraftCms\Cms\View\LegacyAssets\InternalAssetRegistry;
use Deprecated;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
Expand All @@ -59,45 +60,32 @@ class FieldsController

public function __construct(
GeneralConfig $generalConfig,
private HtmlStack $HtmlStack,
private readonly HtmlStack $HtmlStack,
private readonly Fields $fieldsService,
) {
$this->readOnly = ! $generalConfig->allowAdminChanges;
}

public function index(Request $request)
public function index(TableRequest $request)
{
$page = (int) $request->input(Cms::config()->getPageTriggerParam(), 1);
$limit = (int) $request->input('per_page', 100);
$searchTerm = $request->input('search');

$sort = ! empty($request->array('sort')) ? $request->array('sort') : [
['field' => 'name', 'direction' => 'asc'],
];

$orderBy = match (Arr::get($sort, '0.field')) {
'handle' => 'handle',
'type' => 'type',
default => 'name',
};

$sortDir = match (Arr::get($sort, '0.direction')) {
'desc' => SORT_DESC,
default => SORT_ASC,
};

[$pagination, $tableData] = $this->fieldsService->getTableData($page, $limit, $searchTerm, $orderBy, $sortDir);
[$pagination, $tableData] = $this->fieldsService->getTableData(
page: $request->page(),
limit: $request->limit(),
searchTerm: $request->search(),
orderBy: $request->orderBy(),
sortDir: $request->sortDir(),
);

return Inertia::render('settings/Fields', [
'crumbs' => fn () => [
['label' => t('Settings'), 'url' => Url::cpUrl('settings')],
['label' => t('Fields')],
],
'title' => t('Fields'),
'sort' => $sort,
'sort' => $request->sort(),
'data' => fn () => $tableData,
'pagination' => fn () => $pagination,
'searchTerm' => $searchTerm,
'searchTerm' => $request->search(),
]);
}

Expand Down Expand Up @@ -327,23 +315,16 @@ public function renderCardPreview(Request $request, Fields $fields): JsonRespons
]);
}

#[\Deprecated(message: 'in 6.0. Use `settings/fields` instead.')]
public function tableData(Request $request): Response
#[Deprecated(message: 'in 6.0. Use `settings/fields` instead.')]
public function tableData(TableRequest $request): Response
{
$page = (int) $request->input(Cms::config()->getPageTriggerParam(), 1);
$limit = (int) $request->input('per_page', 100);
$searchTerm = $request->input('search');
$orderBy = match ($request->input('sort.0.field')) {
'__slot:handle' => 'handle',
'type' => 'type',
default => 'name',
};
$sortDir = match ($request->input('sort.0.direction')) {
'desc' => SORT_DESC,
default => SORT_ASC,
};

[$pagination, $tableData] = $this->fieldsService->getTableData($page, $limit, $searchTerm, $orderBy, $sortDir);
[$pagination, $tableData] = $this->fieldsService->getTableData(
page: $request->page(),
limit: $request->limit(),
searchTerm: $request->search(),
orderBy: $request->orderBy(),
sortDir: $request->sortDir(),
);

return $this->asSuccess(data: [
'pagination' => $pagination,
Expand Down
66 changes: 19 additions & 47 deletions src/Http/Controllers/Settings/EntryTypesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

namespace CraftCms\Cms\Http\Controllers\Settings;

use CraftCms\Cms\Cms;
use CraftCms\Cms\Component\Contracts\Iconic;
use CraftCms\Cms\Config\GeneralConfig;
use CraftCms\Cms\Cp\Html\ContentHtml;
Expand All @@ -22,6 +21,7 @@
use CraftCms\Cms\FieldLayout\FieldLayout;
use CraftCms\Cms\FieldLayout\FieldLayoutElement;
use CraftCms\Cms\FieldLayout\LayoutElements\Entries\EntryTitleField;
use CraftCms\Cms\Http\Requests\TableRequest;
use CraftCms\Cms\Http\RespondsWithFlash;
use CraftCms\Cms\Http\Responses\CpScreenResponse;
use CraftCms\Cms\Section\Data\Section;
Expand All @@ -32,6 +32,7 @@
use CraftCms\Cms\Support\Str;
use CraftCms\Cms\Support\Url;
use CraftCms\Cms\View\HtmlStack;
use Deprecated;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Inertia\Inertia;
Expand Down Expand Up @@ -62,32 +63,14 @@ public function __construct(
}
}

public function index(Request $request)
public function index(TableRequest $request)
{
$page = (int) $request->input(Cms::config()->getPageTriggerParam(), 1);
$limit = (int) $request->input('per_page', 100);
$searchTerm = $request->input('search');

$sort = ! empty($request->array('sort')) ? $request->array('sort') : [
['field' => 'name', 'direction' => 'asc'],
];

$orderBy = match (Arr::get($sort, '0.field')) {
'handle' => 'handle',
'type' => 'type',
default => 'name',
};

$sortDir = match (Arr::get($sort, '0.direction')) {
'desc' => SORT_DESC,
default => SORT_ASC,
};

[$pagination, $tableData] = $this->entryTypes->getTableData(page: $page,
limit: $limit,
searchTerm: $searchTerm,
orderBy: $orderBy,
sortDir: $sortDir,
[$pagination, $tableData] = $this->entryTypes->getTableData(
page: $request->page(),
limit: $request->limit(),
searchTerm: $request->search(),
orderBy: $request->orderBy(),
sortDir: $request->sortDir(),
);

return Inertia::render('settings/EntryTypes', [
Expand All @@ -96,8 +79,8 @@ public function index(Request $request)
['label' => t('Entry Types')],
],
'title' => t('Entry Types'),
'searchTerm' => $searchTerm,
'sort' => $sort,
'searchTerm' => $request->search(),
'sort' => $request->sort(),
'data' => fn () => $tableData,
'pagination' => fn () => $pagination,
'readOnly' => $this->readOnly,
Expand Down Expand Up @@ -234,26 +217,15 @@ public function edit(Request $request, ?EntryTypeModel $entryType = null): CpScr
);
}

#[\Deprecated(message: 'in 6.0. Use `settings/entry-types` instead.')]
public function tableData(Request $request): JsonResponse
#[Deprecated(message: 'in 6.0. Use `settings/entry-types` instead.')]
public function tableData(TableRequest $request): JsonResponse
{
$page = (int) $request->input(Cms::config()->getPageTriggerParam(), 1);
$limit = (int) $request->input('per_page', 100);
$searchTerm = $request->input('search');
$orderBy = match ($request->input('sort.0.field')) {
'__slot:handle' => 'handle',
default => 'name',
};
$sortDir = match ($request->input('sort.0.direction')) {
'desc' => SORT_DESC,
default => SORT_ASC,
};

[$pagination, $tableData] = $this->entryTypes->getTableData(page: $page,
limit: $limit,
searchTerm: $searchTerm,
orderBy: $orderBy,
sortDir: $sortDir,
[$pagination, $tableData] = $this->entryTypes->getTableData(
page: $request->page(),
limit: $request->limit(),
searchTerm: $request->search(),
orderBy: $request->orderBy(),
sortDir: $request->sortDir(),
);

return new JsonResponse([
Expand Down
72 changes: 17 additions & 55 deletions src/Http/Controllers/Settings/SectionsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

namespace CraftCms\Cms\Http\Controllers\Settings;

use CraftCms\Cms\Cms;
use CraftCms\Cms\Config\GeneralConfig;
use CraftCms\Cms\Cp\SelectOptions;
use CraftCms\Cms\Database\Table;
use CraftCms\Cms\Element\Element;
use CraftCms\Cms\Element\Enums\PropagationMethod;
use CraftCms\Cms\Entry\EntryTypes;
use CraftCms\Cms\Http\Requests\TableRequest;
use CraftCms\Cms\Http\RespondsWithFlash;
use CraftCms\Cms\Http\Responses\CpScreenResponse;
use CraftCms\Cms\Section\Data\Section as SectionData;
Expand All @@ -21,8 +21,8 @@
use CraftCms\Cms\Section\Resources\SectionResource;
use CraftCms\Cms\Section\Sections;
use CraftCms\Cms\Site\Sites;
use CraftCms\Cms\Support\Arr;
use CraftCms\Cms\Support\Url;
use Deprecated;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use Symfony\Component\HttpFoundation\Response;
Expand All @@ -42,34 +42,14 @@ public function __construct(
$this->readOnly = ! $generalConfig->allowAdminChanges;
}

public function index(Request $request, Sections $sections): CpScreenResponse
public function index(TableRequest $request, Sections $sections): CpScreenResponse
{
$pageParam = Cms::config()->getPageTriggerParam();
$page = $request->integer($pageParam, 1);
$limit = $request->integer('per_page', 50);
$searchTerm = $request->input('search');

$sort = ! empty($request->array('sort')) ? $request->array('sort') : [
['field' => 'name', 'direction' => 'asc'],
];

$orderBy = match (Arr::get($sort, '0.field')) {
'handle' => 'handle',
'type' => 'type',
default => 'name',
};

$sortDir = match (Arr::get($sort, '0.direction')) {
'desc' => SORT_DESC,
default => SORT_ASC,
};

[$pagination, $tableData] = $sections->getSectionTableData(
page: $page,
limit: $limit,
searchTerm: $searchTerm,
orderBy: $orderBy,
sortDir: $sortDir,
page: $request->page(),
limit: $request->limit(),
searchTerm: $request->search(),
orderBy: $request->orderBy(),
sortDir: $request->sortDir(),
);

return new CpScreenResponse()
Expand All @@ -81,8 +61,8 @@ public function index(Request $request, Sections $sections): CpScreenResponse
->inertiaPage('settings/Sections', [
'data' => fn () => $tableData,
'pagination' => fn () => $pagination,
'sort' => $sort,
'searchTerm' => $searchTerm,
'sort' => $request->sort(),
'searchTerm' => $request->search(),
'emptyMessage' => t('No sections exist yet.'),
'readOnly' => $this->readOnly,
]);
Expand Down Expand Up @@ -249,33 +229,15 @@ public function destroy(Request $request, Sections $sections): Response
]));
}

#[\Deprecated(message: 'in 6.0. Use `settings/sections` instead.')]
public function tableData(Request $request, Sections $sections): Response
#[Deprecated(message: 'in 6.0. Use `settings/sections` instead.')]
public function tableData(TableRequest $request, Sections $sections): Response
{
$pageParam = Cms::config()->getPageTriggerParam();
$page = (int) $request->input($pageParam, 1);
$limit = (int) $request->input('per_page', 100);
$searchTerm = $request->input('search');

$sort = $request->input('sort');

$orderBy = match (Arr::get($sort, '0.field')) {
'__slot:handle' => 'handle',
'type' => 'type',
default => 'name',
};

$sortDir = match (Arr::get($sort, '0.direction')) {
'desc' => SORT_DESC,
default => SORT_ASC,
};

[$pagination, $tableData] = $sections->getSectionTableData(
page: $page,
limit: $limit,
searchTerm: $searchTerm,
orderBy: $orderBy,
sortDir: $sortDir,
page: $request->page(),
limit: $request->limit(),
searchTerm: $request->search(),
orderBy: $request->orderBy(),
sortDir: $request->sortDir(),
);

return $this->asSuccess(data: [
Expand Down
51 changes: 51 additions & 0 deletions src/Http/Requests/TableRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

declare(strict_types=1);

namespace CraftCms\Cms\Http\Requests;

use CraftCms\Cms\Cms;
use CraftCms\Cms\Support\Arr;
use Illuminate\Foundation\Http\FormRequest;

class TableRequest extends FormRequest
{
public function page(): int
{
return $this->integer(Cms::config()->getPageTriggerParam(), 1);
}

public function limit(): int
{
return $this->integer('per_page', 100);
}

public function search(): ?string
{
return $this->input('search');
}

public function sort(): array
{
return ! empty($this->array('sort')) ? $this->array('sort') : [
['field' => 'name', 'direction' => 'asc'],
];
}

public function orderBy(): string
{
return match (Arr::get($this->sort(), '0.field')) {
'__slot:handle', 'handle' => 'handle',
'type' => 'type',
default => 'name',
};
}

public function sortDir(): int
{
return match (Arr::get($this->sort(), '0.direction')) {
'desc' => SORT_DESC,
default => SORT_ASC,
};
}
}
Loading