/**
  * Factory method creates instance of breadcrumbs collection for a given filterbox collection
  *
  * @param Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder
  * @param Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection $filterboxCollection
  * @return Tx_PtExtlist_Domain_Model_BreadCrumbs_BreadCrumbCollection
  */
 public function getInstanceByFilterboxCollection(Tx_PtExtlist_Domain_Configuration_ConfigurationBuilder $configurationBuilder, Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection $filterboxCollection)
 {
     if (!array_key_exists($filterboxCollection->getListIdentifier(), $this->instances) || $this->instances[$filterboxCollection->getListIdentifier()] == null) {
         $breadCrumbCollection = new Tx_PtExtlist_Domain_Model_BreadCrumbs_BreadCrumbCollection();
         $breadCrumbCollection->injectConfigurationBuilder($configurationBuilder);
         $getPostVarsAdapterFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_StateAdapter_GetPostVarAdapterFactory');
         /* @var $getPostVarsAdapterFactory Tx_PtExtlist_Domain_StateAdapter_GetPostVarAdapterFactory */
         $gpVarsAdapter = $getPostVarsAdapterFactory->getInstance();
         $gpVarsAdapter->injectParametersInObject($breadCrumbCollection);
         foreach ($filterboxCollection as $filterbox) {
             /* @var $filterbox Tx_PtExtlist_Domain_Model_Filter_Filterbox */
             foreach ($filterbox as $filter) {
                 /* @var $filter Tx_PtExtlist_Domain_Model_Filter_FilterInterface */
                 if ($filter->isActive()) {
                     $breadcrumb = $filter->getFilterBreadCrumb();
                     if ($breadcrumb !== null) {
                         // TODO at the moment, proxy filters generate a null breadcrumb. Fix this!
                         $breadCrumbCollection->addBreadCrumb($breadcrumb);
                     }
                 }
             }
         }
         $this->instances[$filterboxCollection->getListIdentifier()] = $breadCrumbCollection;
     }
     return $this->instances[$filterboxCollection->getListIdentifier()];
 }
 public function testResetFilterAction()
 {
     $this->markTestIncomplete();
     $breadCrumb = $this->getMock('Tx_PtExtlist_Domain_Model_BreadCrumbs_BreadCrumb', array(), array(), '', false);
     $filterMock = $this->getMock('Tx_PtExtlist_Domain_Model_Filter_StringFilter');
     $filterMock->expects($this->any())->method('getFilterBreadCrumb')->will($this->returnValue($breadCrumb));
     $filterbox = new Tx_PtExtlist_Domain_Model_Filter_Filterbox();
     $filterbox->addFilter($filterMock, 'test');
     $filterboxCollection = new Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection();
     $filterboxCollection->addFilterBox($filterbox, 'test');
     $mockController = $this->getMock($this->buildAccessibleProxy('Tx_PtExtlist_Controller_BreadCrumbsController'), array('forward'), array(), '', false);
     $mockController->expects($this->once())->method('forward')->with('index');
     $mockController->_set('configurationBuilder', $this->configurationBuilderMock);
     $mockController->_set('filterboxCollection', $filterboxCollection);
     $mockController->resetFilterAction();
 }
 /**
  * Resets all filters of filterbox
  *
  * @param string $filterboxIdentifier Identifier of filter which should be reset
  * @return string Rendered reset action
  */
 public function resetAction($filterboxIdentifier)
 {
     if ($this->filterboxCollection->hasItem($filterboxIdentifier)) {
         $this->filterboxCollection->getFilterboxByFilterboxIdentifier($filterboxIdentifier)->reset();
     }
     $this->resetPagers();
     $this->redirect('list');
 }
 /**
  * Resets a single filter
  *
  * Here we reset a single filter within a filterbox. Make sure to give a full qualified filter identifier
  * which consists of filterboxIdentifier.filterIdentifier.
  *
  * @param string $fullQualifiedFilterIdentifier FilterboxIdentifier.FilterIdentifier Identifier of filter to be reseted
  * @return string Rendered resetFilter Action
  */
 public function resetFilterAction($fullQualifiedFilterIdentifier)
 {
     // TODO refactor me, as we use this twice!
     list($filterboxIdentifier, $filterIdentifier) = explode('.', $fullQualifiedFilterIdentifier);
     if ($this->filterboxCollection->hasItem($filterboxIdentifier)) {
         $filterbox = $this->filterboxCollection->getFilterboxByFilterboxIdentifier($filterboxIdentifier);
         if ($filterbox->hasItem($filterIdentifier)) {
             $filterbox->getFilterByFilterIdentifier($filterIdentifier)->reset();
         }
     }
     /**
      * TODO try to figure out a way how to handle this without redirect
      *
      * The problem is, that although GP-vars mapping is done automatically,
      * we cannot trigger any action when resetting filterboxes without using
      * the controller. The controller can be executed "too late", so that the filters
      * are not reset, if their values are requested.
      *
      * We should introduce a "global" controller that handles certain actions
      * before any other controller (and only once!).
      */
     $this->redirect('show');
 }
Пример #5
0
 /** @test */
 public function getWhereClauseFromFilterboxCollectionReturnsExpectedString()
 {
     $pagerCollectionMock = $this->getMock('Tx_PtExtlist_Domain_Model_Pager_PagerCollection', array('setItemCount'), array(), '', false, false);
     $dataBackend = new Tx_PtExtlist_Domain_DataBackend_MySqlDataBackend_MySqlDataBackend($this->configurationBuilder);
     $dataBackend->_injectPagerCollection($pagerCollectionMock);
     $dataBackend->_injectQueryInterpreter(new Tx_PtExtlist_Domain_DataBackend_MySqlDataBackend_MySqlInterpreter_MySqlInterpreter());
     $filter1Mock = $this->getFilterMockByCriteria(new Tx_PtExtlist_Domain_QueryObject_SimpleCriteria('test', 10, '>'));
     $filter2Mock = $this->getFilterMockByCriteria(new Tx_PtExtlist_Domain_QueryObject_SimpleCriteria('test', 10, '<'));
     $filter3Mock = $this->getFilterMockByCriteria(new Tx_PtExtlist_Domain_QueryObject_SimpleCriteria('test', 20, '>'));
     $filter4Mock = $this->getFilterMockByCriteria(new Tx_PtExtlist_Domain_QueryObject_SimpleCriteria('test', 20, '<'));
     $filterbox1 = $this->getFilterboxByArrayOfFilters(array($filter1Mock, $filter2Mock));
     $filterbox2 = $this->getFilterboxByArrayOfFilters(array($filter3Mock, $filter4Mock));
     $filterboxCollection = new Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection($this->configurationBuilder);
     $filterboxCollection->addItem($filterbox1);
     $filterboxCollection->addItem($filterbox2);
     $dataBackend->_injectfilterboxCollection($filterboxCollection);
     $whereClauseForFilterboxCollection = $dataBackend->getWhereClauseFromFilterboxes();
     $this->assertTrue($whereClauseForFilterboxCollection == '((test > 10) AND (test < 10)) AND ((test > 20) AND (test < 20))', 'Where clause for filterbox collection should have been "((test > 10) AND (test < 10)) AND ((test > 20) AND (test < 20))" but was ' . $whereClauseForFilterboxCollection);
 }
 /** @test */
 public function getExcludeFiltersReturnsConfiguredExcludeFiltersForSubmittedFilterbox()
 {
     $excludeFiltersArray = array('filterbox1' => array('filter1', 'filter2'));
     $filterbox1ConfigurationMock = $this->getMock('Tx_PtExtlist_Domain_Configuration_Filters_FilterboxConfig', array('getExcludeFilters'), array(), '', false);
     $filterbox1ConfigurationMock->expects($this->any())->method('getExcludeFilters')->will($this->returnValue($excludeFiltersArray));
     $submittedFilterboxMock1 = $this->getMock('Tx_PtExtlist_Domain_Model_Filter_Filterbox', array('isSubmittedFilterbox', 'getFilterboxConfiguration'), array(), '', false);
     $submittedFilterboxMock1->expects($this->any())->method('isSubmittedFilterbox')->will($this->returnValue(true));
     $submittedFilterboxMock1->expects($this->any())->method('getFilterboxConfiguration')->will($this->returnValue($filterbox1ConfigurationMock));
     $submittedFilterboxMock2 = $this->getMock('Tx_PtExtlist_Domain_Model_Filter_Filterbox', array('isSubmittedFilterbox'), array(), '', false);
     $submittedFilterboxMock2->expects($this->any())->method('isSubmittedFilterbox')->will($this->returnValue(false));
     $filterboxCollection = new Tx_PtExtlist_Domain_Model_Filter_FilterboxCollection();
     $filterboxCollection->addFilterBox($submittedFilterboxMock1, 'blubb');
     $filterboxCollection->addFilterBox($submittedFilterboxMock2, 'bla');
     $this->assertEquals($filterboxCollection->getExcludeFilters(), $excludeFiltersArray);
 }