ver 0.262 - pages module refactor and admin UX fixes

This commit is contained in:
2026-02-13 21:17:21 +01:00
parent a1633491d5
commit b4559a5e74
44 changed files with 2235 additions and 1803 deletions

View File

@@ -4,6 +4,7 @@ namespace admin\Controllers;
use Domain\Article\ArticleRepository;
use Domain\Languages\LanguagesRepository;
use Domain\Layouts\LayoutsRepository;
use Domain\Pages\PagesRepository;
use admin\ViewModels\Forms\FormAction;
use admin\ViewModels\Forms\FormEditViewModel;
use admin\ViewModels\Forms\FormField;
@@ -14,16 +15,19 @@ class ArticlesController
private ArticleRepository $repository;
private LanguagesRepository $languagesRepository;
private LayoutsRepository $layoutsRepository;
private PagesRepository $pagesRepository;
public function __construct(
ArticleRepository $repository,
LanguagesRepository $languagesRepository,
LayoutsRepository $layoutsRepository
LayoutsRepository $layoutsRepository,
PagesRepository $pagesRepository
)
{
$this->repository = $repository;
$this->languagesRepository = $languagesRepository;
$this->layoutsRepository = $layoutsRepository;
$this->pagesRepository = $pagesRepository;
}
/**
@@ -83,7 +87,7 @@ class ArticlesController
$rows[] = [
'lp' => $lp++ . '.',
'title' => '<a href="/admin/articles/article_edit/id=' . $id . '">' . htmlspecialchars($title, ENT_QUOTES, 'UTF-8') . '</a>'
'title' => '<a href="/admin/articles/edit/id=' . $id . '">' . htmlspecialchars($title, ENT_QUOTES, 'UTF-8') . '</a>'
. '<small class="text-muted">' . htmlspecialchars($pages, ENT_QUOTES, 'UTF-8') . '</small>',
'status' => ((int)$item['status'] === 1) ? 'tak' : '<span style="color: #FF0000;">nie</span>',
'date_add' => !empty($item['date_add']) ? date('Y-m-d H:i', strtotime((string)$item['date_add'])) : '-',
@@ -92,12 +96,12 @@ class ArticlesController
'_actions' => [
[
'label' => 'Edytuj',
'url' => '/admin/articles/article_edit/id=' . $id,
'url' => '/admin/articles/edit/id=' . $id,
'class' => 'btn btn-xs btn-primary',
],
[
'label' => 'Usun',
'url' => '/admin/articles/article_delete/id=' . $id,
'url' => '/admin/articles/delete/id=' . $id,
'class' => 'btn btn-xs btn-danger',
'confirm' => 'Na pewno chcesz usunac wybrany element?',
],
@@ -136,9 +140,9 @@ class ArticlesController
]),
$listRequest['perPageOptions'],
$sortableColumns,
'/admin/articles/view_list/',
'/admin/articles/list/',
'Brak danych w tabeli.',
'/admin/articles/article_edit/',
'/admin/articles/edit/',
'Dodaj artykul'
);
@@ -259,7 +263,7 @@ class ArticlesController
\S::alert('Artykul zostal przeniesiony do archiwum.');
}
header('Location: /admin/articles/view_list/');
header('Location: /admin/articles/list/');
exit;
}
@@ -280,7 +284,7 @@ class ArticlesController
$article = $this->repository->find((int)\S::get('id')) ?: ['id' => 0, 'languages' => [], 'images' => [], 'files' => [], 'pages' => []];
$languages = $this->languagesRepository->languagesList();
$menus = \admin\factory\Pages::menus_list();
$menus = $this->pagesRepository->menusList();
$layouts = $this->layoutsRepository->listAll();
$viewModel = $this->buildFormViewModel($article, $languages, $menus, $layouts);
@@ -400,8 +404,8 @@ class ArticlesController
];
$actions = [
FormAction::save('/admin/articles/article_save/' . ($articleId > 0 ? 'id=' . $articleId : ''), '/admin/articles/view_list/'),
FormAction::cancel('/admin/articles/view_list/'),
FormAction::save('/admin/articles/save/' . ($articleId > 0 ? 'id=' . $articleId : ''), '/admin/articles/list/'),
FormAction::cancel('/admin/articles/list/'),
];
return new FormEditViewModel(
@@ -412,8 +416,8 @@ class ArticlesController
$tabs,
$actions,
'POST',
'/admin/articles/article_save/' . ($articleId > 0 ? 'id=' . $articleId : ''),
'/admin/articles/view_list/',
'/admin/articles/save/' . ($articleId > 0 ? 'id=' . $articleId : ''),
'/admin/articles/list/',
true,
['id' => $articleId],
$languages
@@ -430,7 +434,7 @@ class ArticlesController
$menuId = (int)($menu['id'] ?? 0);
$menuName = $this->escapeHtml((string)($menu['name'] ?? ''));
$menuStatus = (int)($menu['status'] ?? 0);
$menuPages = \admin\factory\Pages::menu_pages($menuId);
$menuPages = $this->pagesRepository->menuPages($menuId);
$html .= '<div class="menu_sortable">';
$html .= '<ol class="sortable" id="sortable_' . $menuId . '">';