Мы добавляем в тулбар панели администратора Joomla некую кнопку, которая что-то делает со списком id выделенных элементов и ajax-запросом отсылаем их в свой плагин. Но нам надо предупредить нажатия на кнопку в тех случаях, когда ни один элемент не был выбран. Для этого можно написать свою проверку на js. А можно воспользоваться встроенной в Joomla.
Добавить кнопку в тулбар Joomla
Этот код будет работать в Joomla 4+.
<?php
use Joomla\CMS\Toolbar\Button\BasicButton;
use Joomla\CMS\Language\Text;
// ниже по коду, где-нибудь в onAfterDispatch()
// Предварительно проверяем в каком компоненте мы находимся по option из $app->getInput()
// пример из плагина, поэтому $this->getApplication()
$app = $this->getApplication();
// Берём текущий тулбар
$toolbar = $app->getDocument()->getToolbar('toolbar');
// Создаём кнопку
$button = (new BasicButton('send-to-indexnow'))
->text(Text::_('PLG_WTINDEXNOWSWJPROJECTS_BUTTON_LABEL'))
->icon('fa-solid fa-arrow-up-right-dots')
->onclick("window.wtindexnowswjprojects()");
// Добавляем кнопку в тулбар
$toolbar->appendButton($button);
Заблокировать кнопку тулбара Joomla, если не выбраны элементы списка.
Теперь нам надо проверить находимся ли мы в списке - например в списке материалов, в списке товаров и т.д. Определяем это по view из $app->getInput().
// укажем в массиве нужные нам view - категории, документацию, проекты, версии
if(in_array($app->getApplication()->getInput()->get('view'), ['categories','documentation','projects','versions'])) {
$button->listCheck(true);
}
И если мы в списке - используем метод $button->listCheck(true), который сделает проверку за нас. Если ни один элемент не выбран - кнопка в тулбаре Joomla будет заблокирована и JS-обработчик не будет вызван. Этот метод есть у всех классов кнопок, наследующих класс \Joomla\CMS\Toolbar\ToolbarButton.