This commit is contained in:
Alan
2026-02-14 19:34:54 +03:00
commit 5c3329238b
867 changed files with 214778 additions and 0 deletions

86
simpla/ServicesAdmin.php Normal file
View File

@@ -0,0 +1,86 @@
<?php
require_once('api/Simpla.php');
class ServicesAdmin extends Simpla
{
public function fetch()
{
if ($this->request->method('post')) {
$ids = $this->request->post('check');
if (is_array($ids)) {
// Действия с выбранными
switch ($this->request->post('action')) {
case 'disable':
foreach ($ids as $id)
$this->services->set_visible($id, 0);
break;
case 'enable':
foreach ($ids as $id)
$this->services->set_visible($id, 1);
break;
case 'delete':
$this->services->delete($ids);
break;
}
}
}
$filters = array();
// фильтры
$filter = $this->request->get('filter', 'string');
if (!empty($filter) && in_array($filter, array('disabled', 'enabled'))) {
$filters['visible'] = intval($filter === 'enabled');
$this->design->assign('filter', $filter);
} elseif('branded' === $filter) {
$filters[$filter] = $filter;
$this->design->assign('filter', $filter);
} elseif('home' === $filter) {
$filters['show_home'] = 1;
$this->design->assign('filter', $filter);
} elseif('main' === $filter) {
$filters['show_service'] = 1;
$this->design->assign('filter', $filter);
}
if ($brand_id = $this->request->get('brand_id', 'integer')) {
$filters['brand_id'] = $brand_id;
$this->design->assign('brand_id', $brand_id);
}
if ($parent = $this->request->get('parent', 'integer')) {
$filters['parent'] = $parent;
$this->design->assign('parent', $parent);
}
// Поиск
$keyword = $this->request->get('keyword');
if (!empty($keyword) && is_string($keyword)) {
$filters['keyword'] = $keyword;
$this->design->assign('keyword', $keyword);
}
// сортировка
$sort_order = $this->request->get('sort', 'string');
$filters['order'] = empty($sort_order) ? 'header' : $sort_order;
// постраничная навигация
$filters['page'] = max(1, $this->request->get('page', 'integer'));
$filters['limit'] = ($this->request->get('page') === 'all') ? 1000 : 20;
$services_count = $this->services->count($filters);
$services = $this->services->all($filters, true);
$this->design->assign('pages_count', ceil($services_count / $filters['limit']));
$this->design->assign('current_page', $filters['page']);
$this->design->assign('sort', $filters['order']);
$this->design->assign('services', $services);
$this->design->assign('services_count', $services_count);
$this->design->assign('brands', $this->services->get_all_brands());
$this->design->assign('tree', $this->services->get_tree());
$this->design->assign('root_url', $this->services->get_root_url());
return $this->design->fetch('services.tpl');
}
}