/** * Test andActionIsIn filter. * * @dataProvider provideActions() */ public function testOrActionIsIn($action1, $action2, $action3) { $filter = new Filter(); $filter->orSub(new MockedFilter(false)); $filter->orActionIsIn(array($action1)); $item = new MockedAbstractItem($action1); $this->assertEquals(true, $filter->accepts($item)); $item2 = new MockedAbstractItem($action2); $this->assertEquals(false, $filter->accepts($item2)); $item3 = new MockedAbstractItem($action3); $this->assertEquals(false, $filter->accepts($item3)); }
/** * Retrieve a list of html buttons to use in the top panel (submit area). * * @param ModelInterface $parentModel The parent model. * * @return string */ protected function getHeaderButtons($parentModel) { $environment = $this->getEnvironment(); $definition = $environment->getDataDefinition(); $clipboard = $environment->getClipboard(); $basicDefinition = $definition->getBasicDefinition(); $headerButtons = array(); if (!$this->isSelectModeActive()) { return ''; } $dispatcher = $environment->getEventDispatcher(); $objConfig = $this->getEnvironment()->getBaseConfigRegistry()->getBaseConfig(); $this->getPanel()->initialize($objConfig); $sorting = $objConfig->getSorting(); $headerButtons['editHeader'] = $this->getHeaderEditButtons($parentModel); $filter = new Filter(); $filter->andModelIsFromProvider($basicDefinition->getDataProvider()); if ($parentDataProviderName = $basicDefinition->getParentDataProvider()) { $filter->andParentIsFromProvider($parentDataProviderName); } else { $filter->andHasNoParent(); } if ($sorting && $clipboard->isEmpty($filter) && $basicDefinition->isCreatable()) { /** @var AddToUrlEvent $urlEvent */ $urlEvent = $dispatcher->dispatch(ContaoEvents::BACKEND_ADD_TO_URL, new AddToUrlEvent('act=edit&pid=' . ModelId::fromModel($parentModel)->getSerialized())); /** @var GenerateHtmlEvent $imageEvent */ $imageEvent = $dispatcher->dispatch(ContaoEvents::IMAGE_GET_HTML, new GenerateHtmlEvent('new.gif', $this->translate('pastenew.0', $definition->getName()))); $headerButtons['pasteNew'] = sprintf('<a href="%s" title="%s" onclick="Backend.getScrollOffset()">%s</a>', $urlEvent->getUrl(), specialchars($this->translate('pastenew.1', $definition->getName())), $imageEvent->getHtml()); } $filter = new Filter(); $filter->andModelIsFromProvider($basicDefinition->getDataProvider()); $filter->andParentIsFromProvider($basicDefinition->getParentDataProvider()); if ($sorting && $clipboard->isNotEmpty($filter)) { $allowPasteTop = ViewHelpers::getManualSortingProperty($this->environment); if (!$allowPasteTop) { $subFilter = new Filter(); $subFilter->andActionIsNotIn(array(ItemInterface::COPY, ItemInterface::DEEP_COPY)); $subFilter->andParentIsNot(ModelId::fromModel($parentModel)); $subFilter->orActionIsIn(array(ItemInterface::COPY, ItemInterface::DEEP_COPY)); $filter = new Filter(); $filter->andModelIsFromProvider($basicDefinition->getDataProvider()); $filter->andParentIsFromProvider($basicDefinition->getParentDataProvider()); $filter->andSub($subFilter); $allowPasteTop = (bool) $clipboard->fetch($filter); } if ($allowPasteTop) { /** @var AddToUrlEvent $urlEvent */ $urlEvent = $dispatcher->dispatch(ContaoEvents::BACKEND_ADD_TO_URL, new AddToUrlEvent('act=paste' . '&pid=' . ModelId::fromModel($parentModel)->getSerialized())); /** @var GenerateHtmlEvent $imageEvent */ $imageEvent = $dispatcher->dispatch(ContaoEvents::IMAGE_GET_HTML, new GenerateHtmlEvent('pasteafter.gif', $this->translate('pasteafter.0', $definition->getName()), 'class="blink"')); $headerButtons['pasteAfter'] = sprintf('<a href="%s" title="%s" onclick="Backend.getScrollOffset()">%s</a>', $urlEvent->getUrl(), specialchars($this->translate('pasteafter.0', $definition->getName())), $imageEvent->getHtml()); } else { /** @var GenerateHtmlEvent $imageEvent */ $imageEvent = $dispatcher->dispatch(ContaoEvents::IMAGE_GET_HTML, new GenerateHtmlEvent('pasteafter_.gif', $this->translate('pasteafter.0', $definition->getName()), 'class="blink"')); $headerButtons['pasteAfter'] = $imageEvent->getHtml(); } } return implode(' ', $headerButtons); }