diff --git a/administrator/components/com_workflow/View/Workflows/HtmlView.php b/administrator/components/com_workflow/View/Workflows/HtmlView.php index 669d93d96599..5a96a9a38e74 100644 --- a/administrator/components/com_workflow/View/Workflows/HtmlView.php +++ b/administrator/components/com_workflow/View/Workflows/HtmlView.php @@ -13,6 +13,7 @@ use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView; +use Joomla\CMS\Toolbar\Toolbar; use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\Component\Workflow\Administrator\Helper\WorkflowHelper; @@ -123,40 +124,57 @@ protected function addToolbar() { $canDo = ContentHelper::getActions($this->extension); + // Get the toolbar object instance + $toolbar = Toolbar::getInstance('toolbar'); + ToolbarHelper::title(Text::_('COM_WORKFLOW_WORKFLOWS_LIST'), 'address contact'); if ($canDo->get('core.create')) { - ToolbarHelper::addNew('workflow.add'); + $toolbar->addNew('workflow.add'); } - if ($canDo->get('core.edit.state')) - { - ToolbarHelper::publishList('workflows.publish'); - ToolbarHelper::unpublishList('workflows.unpublish'); - ToolbarHelper::makeDefault('workflows.setDefault', 'COM_WORKFLOW_TOOLBAR_DEFAULT'); - } - - if ($canDo->get('core.admin')) - { - ToolbarHelper::checkin('workflows.checkin', 'JTOOLBAR_CHECKIN', true); + if ($canDo->get('core.edit.state') || $user->authorise('core.admin')) + { + $dropdown = $toolbar->dropdownButton('status-group') + ->text('JTOOLBAR_CHANGE_STATUS') + ->toggleSplit(false) + ->icon('fa fa-globe') + ->buttonClass('btn btn-info') + ->listCheck(true); + + $childBar = $dropdown->getChildToolbar(); + + $childBar->publish('workflows.publish'); + $childBar->unpublish('workflows.unpublish'); + $childBar->makeDefault('workflows.setDefault', 'COM_WORKFLOW_TOOLBAR_DEFAULT'); + + if ($canDo->get('core.admin')) + { + // @Todo implement the checked_out/checkin feature + // $childBar->checkin('workflows.checkin'); + } + + if ($canDo->get('core.edit.state') && $this->state->get('filter.published') != -2) + { + $childBar->trash('workflows.trash'); + } } if ($this->state->get('filter.published') === '-2' && $canDo->get('core.delete')) { - ToolbarHelper::deleteList(Text::_('COM_WORKFLOW_ARE_YOU_SURE'), 'workflows.delete'); - } - elseif ($canDo->get('core.edit.state')) - { - ToolbarHelper::trash('workflows.trash'); + $toolbar->delete('workflows.delete') + ->text('JTOOLBAR_EMPTY_TRASH') + ->message('JGLOBAL_CONFIRM_DELETE') + ->listCheck(true); } if ($canDo->get('core.admin') || $canDo->get('core.options')) { - ToolbarHelper::preferences($this->extension); + $toolbar->preferences($this->extension); } - ToolbarHelper::help('JHELP_WORKFLOWS_LIST'); + $toolbar->help('JHELP_WORKFLOWS_LIST'); } /** diff --git a/administrator/templates/atum/templateDetails.xml b/administrator/templates/atum/templateDetails.xml index 5fdd4554e715..78020cf75a68 100644 --- a/administrator/templates/atum/templateDetails.xml +++ b/administrator/templates/atum/templateDetails.xml @@ -23,7 +23,6 @@ css html images - img js language scss diff --git a/components/com_finder/Model/SearchModel.php b/components/com_finder/Model/SearchModel.php index 0b46faf6a366..fae032ff96cf 100644 --- a/components/com_finder/Model/SearchModel.php +++ b/components/com_finder/Model/SearchModel.php @@ -171,13 +171,15 @@ protected function getListQuery() { // Convert the associative array to a numerically indexed array. $groups = array_values($this->searchquery->filters); + $taxonomies = call_user_func_array('array_merge', array_values($this->searchquery->filters)); - // Iterate through each taxonomy group and add the join and where. + $query->join('INNER', $db->quoteName('#__finder_taxonomy_map') . ' AS t ON t.link_id = l.link_id') + ->where('t.node_id IN (' . implode(',', array_unique($taxonomies)) . ')'); + + // Iterate through each taxonomy group. for ($i = 0, $c = count($groups); $i < $c; $i++) { - // We use the offset because each join needs a unique alias. - $query->join('INNER', $db->quoteName('#__finder_taxonomy_map') . ' AS t' . $i . ' ON t' . $i . '.link_id = l.link_id') - ->where('t' . $i . '.node_id IN (' . implode(',', $groups[$i]) . ')'); + $query->having('SUM(t.node_id IN (' . implode(',', $groups[$i]) . ')) > 0'); } } @@ -283,6 +285,7 @@ protected function getListQuery() // Since we need to return a query, we simplify this one. $query->clear('join') ->clear('where') + ->clear('having') ->clear('group') ->where('false'); @@ -308,13 +311,16 @@ protected function getListQuery() */ if (count($this->requiredTerms)) { - $i = 0; - foreach ($this->requiredTerms as $terms) { - $query->join('INNER', $this->_db->quoteName('#__finder_links_terms') . ' AS r' . $i . ' ON r' . $i . '.link_id = l.link_id') - ->where('r' . $i . '.term_id IN (' . implode(',', $terms) . ')'); - $i++; + if (count($terms)) + { + $query->having('SUM(m.term_id IN (' . implode(',', $terms) . ')) > 0'); + } + else + { + $query->where('false'); + } } }