[AVP] Админпанель: Персональная стартовая страница

Главный администратор может назначить любую страницу админпанели как стартовую по умолчанию для всех администраторов. Также каждый администратор может назначить любую страницу как стартовую персонально для себя.
ВЕРСИЯ 1.0

Модуль создан для тех, кто желает избежать открытия дашборда при входе в админку (который особенно при большом количестве записей в заказах или пользователях начинает безумно тормозить, или же вообще отказывается грузиться).

Настройки модуля:
Главный администратор может назначить для всех администраторов любую стартовую страницу, вставив в поле настройки модуля адрес нужной страницы из адресной строки браузера (без протокола - http или https, и без домена, начиная с наименования админского скрипта - смотри скриншот, т.е. вместо admin.php будет стоять то, как у вас назван $config[‘admin_index’] в config.locac.php):

Также каждый администратор может самостоятельно назначить себе отличную от указанной в настройках модуля страницу, на которую он направлен при клике на иконку домашней страницы.
В заголовке страницы теперь есть иконка контура звездочки

111

При клике по звездочки эта страница будет назначена как стартовая страница для данного администратора, и будет отображаться как залитая цветом звездочка

222

Клик по заполненной звездочке очистит запись стартовой страницы пользователя, после чего стартовой для него станет страница, назначенная главным администратором.

Архив с модулем
avp_custom_start_page.zip (5,8 КБ)
Еще раз поправил - вставил защиту от случайной вставки dispatch=index.index (в этом случае дашборд впадал в редирект сам на себя), у кого уже работает - можно не перезаливать.

Если Вы хотите просто безальтернативно сделать для всех администраторов перенаправление с дашборда на конкретную страницу админки без установки какого-либо модуля - создайте файл
app/addons/my_changes/controllers/backend/index.pre.php
с содержимым (пример для перенаправления на список заказов):

if (!defined('BOOTSTRAP')) { die('Access denied'); }

if ($mode == 'index') {

    return array(CONTROLLER_STATUS_REDIRECT, 'orders.manage');
    
}

Должен работать как на ультимейт, так и на мультивендор,
если возникнут проблемы (вроде учел все, но кто знает все подводные камни карта?) - пишите

10 лайков

Еще одно применение: Я работаю на конкретной странице админки (например, список заказов или товаров, найденный через поиск - то есть без конкретного диспатча в адресной строке). Чтобы не сохранять поиск, и всегда можно было вернуться к результатам - я могу кликнув по звездочке - назначить отображаемую страницу стартовой, и впоследствии, кликнув по иконке домика в меню - вернуться на эту страницу.

1 лайк

Какая мелочь, а как приятно! Спасибо вам! Затестил на 4.12.2 - работает!

1 лайк

ВНИМАНИЕ!
перезалил модуль - была проблема со значением настройки модуля по умолчанию - очистил значение по умолчанию в настройках модуля

1 лайк

Рад что понравилось )

Очень круто! Радует, что CS-Cart комьюнити делится своими доработками в виде модулей.

Чтобы было совсем по красоте, можно выложить на https://www.github.com/. Тогда будет удобнее сопровождать проект :slight_smile:

PS: с 4.10.1 загрузка Dashboard была оптимизирована. Но для старых версий хорошее решение.

1 лайк

Спасибо ) Да, давно пора налаживать контакт с гитхабом ))
Здесь есть удобное применение - в настройках модуля оставить пустое поле, тотда по умолчанию - дашборд, но каждый может назначать себе любую входную страницу. Например как напоминалку - отметил звездочку на конкретном заказе - на следующий день при входе в админку именно он и откроется вместо дашборда. Поработал, снял отметку - снова дашборд стартовый.

3 лайка

Увы, столкнулся - она очень не очень оптимизирована, пришлось её резать еще сильнее(тут бы вероятно помогли настройки из коробки отключающие лишние показатели, чтобы пользователь сам мог поотключать не нужное, тем более что и без производительности этот вопрос поднимался). При значительном числе товаров и заказов тормозит очень сильно. Не настолько хардкорно, как список товаров(30 секунд без расширений, 40 секунд с кастомными расширениями), но очень порядочно тормозила. При том что от рекордов числа товаров, заказов и вендоров очень далек. Отдельное неудобство из-за подгрузки данных ajax - коробочный дебаггер вообще не помогает понять в чем именно проблема.

1 лайк

Вряд ли. Это как с мобильной версией, отклоняются не блоки и расчёт данных под них, а лишь отображение этих блоков. Так и тут, отключался бы вывод на просмотр, а вся нагрузка, которую задают огромные расчёты, серверу так бы и приходилось выдерживать. И да, согласен, да, сделали быстрое отображение разметки блоков на дашборде, но загрузка данных, вернее их расчёт, как по мне, так стало занимать даже больше времени. Просто картовцам надо тестить свои придумки не на десяти товарах и15-и заказах…

1 лайк

Оптимизация заключалась в устранение блокировки страницы, которое мешало сразу переходить на другую страницу.

То есть команда разработчиков считает показываемую на дашборде информацию настолько ценной, что готова любыми усилиями сохранить расчеты и вывод? Но есть же встроенный в ядро функционал отчетов, с кучей таблиц, куда, как я понимаю, данные заносятся в реальном времени? Так почему бы не брать данные оттуда, а не пересчитывать всё заново?
почти 9 тыс товаров и почти 80 тыс заказов в базе - дашборд просто виснет на попытке все рассчитать. При этом почти те же рассчеты: по каждой площадке сумма заказов по объединенным статусам и две наиболее важные суммы в заказах, за выбранный период - считаются очень легко, даже задержки никакой нет (почему бы это?):

2 лайка

У меня такой же риторический вопрос при открытии списка товаров. Открывается больше 30 секунд. При небольшом числе товаров просто подтормаживает и сайт подвисает. Раздражает страшно. И всё из-за кривой реализации довольно бесполезной по своей сути пагинации, которую можно было решить и иначе, без таких приколов. И ладно бы это было только в самой простой CS-Cart, так ведь это во всех редакциях идентично реализовано, в том числе и мультивендоре любых редакций. И вот смотрю я на свой мультивендор плюс и каждый раз офигеваю… И ведь далеко не какой-нибудь рекордный маркетплейс, а довольно заурядного масштаба совершенно коробочный вариант использования это редакции. Кто-то банально не особо думал перед тем как делать. Очень мечтаю чтобы CS-Cart выкинул таки свою игрушечную базу данных на три с половиной товара и два заказа, а загрузил себе для тестов нормальную рабочую базу. Мгновенно все косяки по производительности и косячным решениям проявляются. Ведь ладно еще просто CS-Cart - всё ровно то же продается и в редакциях за миллион. Наверное, это же не для совсем крохотных начинаний на 10000 товаров версии.

1 лайк

Модуль не дружит с модулем панели продавца Vendor panel — выкидывает при попытке авторизации но позволяет залогинится если ввести прямую ссылку например на vendor.php?dispatch=products.manage

Кстати для продавцов тоже было круто иметь возможность выбрать стартовую страницы чтобы они не натыкались на Дашборд каждый раз

Спасибо, мультивендора под рукой нет, поэтому не мог проверить. Там идет проверка на dispatch index, как в ultimate, а в вашем случае, он видимо другой?

Я не знаю (дефолтовый для мультивендора) — мой уровень программиста это отличать .php от .png :slight_smile: могу поискать если тыкните пальцем куда именно

Небольшое дополнение - спасибо @eugen - проверено на мультивендоре: работает для любых администраторов на одновитринном, на мультивитринном, а также для вендоров на мультивендоре - указанная в настройках модуля стартовая страница применяется и к ним, и они также могут сами назначать себе стартовую страницу при входе в админку. Единственное дополнение - поле в настройках модуля должно содержать значение диспатча, либо значение диспатча&список параметров:

При ссылке
http://www.сайт.ru/admin.php?dispatch=orders.manage 
оставить в поле
orders.manage

или
при ссылке
http://www.сайт.ru/admin.php?dispatch=orders.manage&mp_id=-1&period=HM&time_from=1642851180&time_to=1645529580&status[]=A&status[]=B&status[]=P&status[]=H
оставить в поле
orders.manage&mp_id=-1&period=HM&time_from=1642851180&time_to=1645529580&status[]=A&status[]=B&status[]=P&status[]=H

в любом случае первым необходимо оставить диспатч, затем можно добавлять параметры, уточняющие отбор, через символ & как обычно в адресной строке.

Дополнил описание параметра настройки модуля, ниже обновленный архив модуля:
Версия 1.1 от 22 февраля 2022 avp_custom_start_page_1-1_20220222_145716.zip (4,2 КБ)

3 лайка