Esempio n. 1
0
 /**
  * {@inheritdoc}
  */
 public function get()
 {
     if (!isset($this->destination)) {
         $query = $this->requestStack->getCurrentRequest()->query;
         if (UrlHelper::isExternal($query->get('destination'))) {
             $this->destination = '/';
         } elseif ($query->has('destination')) {
             $this->destination = $query->get('destination');
         } else {
             $this->destination = $this->urlGenerator->generateFromRoute('<current>', [], ['query' => UrlHelper::buildQuery(UrlHelper::filterQueryParameters($query->all()))]);
         }
     }
     return $this->destination;
 }
Esempio n. 2
0
 /**
  * Tests UrlHelper::filterQueryParameters().
  */
 function testDrupalGetQueryParameters()
 {
     $original = array('a' => 1, 'b' => array('d' => 4, 'e' => array('f' => 5)), 'c' => 3);
     // First-level exclusion.
     $result = $original;
     unset($result['b']);
     $this->assertEqual(UrlHelper::filterQueryParameters($original, array('b')), $result, "'b' was removed.");
     // Second-level exclusion.
     $result = $original;
     unset($result['b']['d']);
     $this->assertEqual(UrlHelper::filterQueryParameters($original, array('b[d]')), $result, "'b[d]' was removed.");
     // Third-level exclusion.
     $result = $original;
     unset($result['b']['e']['f']);
     $this->assertEqual(UrlHelper::filterQueryParameters($original, array('b[e][f]')), $result, "'b[e][f]' was removed.");
     // Multiple exclusions.
     $result = $original;
     unset($result['a'], $result['b']['e'], $result['c']);
     $this->assertEqual(UrlHelper::filterQueryParameters($original, array('a', 'b[e]', 'c')), $result, "'a', 'b[e]', 'c' were removed.");
 }
Esempio n. 3
0
 /**
  * {@inheritdoc}
  */
 public function buildForm(array $form, FormStateInterface $form_state, ViewExecutable $view = NULL, $output = [])
 {
     if (!($step = $form_state->get('step'))) {
         $step = 'views_form_views_form';
         $form_state->set('step', $step);
     }
     $form_state->set(['step_controller', 'views_form_views_form'], 'Drupal\\views\\Form\\ViewsFormMainForm');
     // Cache the built form to prevent it from being rebuilt prior to validation
     // and submission, which could lead to data being processed incorrectly,
     // because the views rows (and thus, the form elements as well) have changed
     // in the meantime.
     $form_state->setCached();
     $form = array();
     $query = $this->requestStack->getCurrentRequest()->query->all();
     $query = UrlHelper::filterQueryParameters($query, array(), '');
     $options = array('query' => $query);
     $form['#action'] = $view->hasUrl() ? $view->getUrl()->setOptions($options)->toString() : Url::fromRoute('<current>')->setOptions($options)->toString();
     // Tell the preprocessor whether it should hide the header, footer, pager...
     $form['show_view_elements'] = array('#type' => 'value', '#value' => $step == 'views_form_views_form' ? TRUE : FALSE);
     $form_object = $this->getFormObject($form_state);
     $form += $form_object->buildForm($form, $form_state, $view, $output);
     return $form;
 }
Esempio n. 4
0
 /**
  * {@inheritdoc}
  */
 public function buildForm(array $form, FormStateInterface $form_state, ViewExecutable $view = NULL, $output = [])
 {
     if (!($step = $form_state->get('step'))) {
         $step = 'views_form_views_form';
         $form_state->set('step', $step);
     }
     $form_state->set(['step_controller', 'views_form_views_form'], 'Drupal\\views\\Form\\ViewsFormMainForm');
     // Add the base form ID.
     $form_state->addBuildInfo('base_form_id', $this->getBaseFormId());
     $form = array();
     $query = $this->requestStack->getCurrentRequest()->query->all();
     $query = UrlHelper::filterQueryParameters($query, array(), '');
     $options = array('query' => $query);
     $form['#action'] = $view->hasUrl() ? $view->getUrl()->setOptions($options)->toString() : Url::fromRoute('<current>')->setOptions($options)->toString();
     // Tell the preprocessor whether it should hide the header, footer, pager,
     // etc.
     $form['show_view_elements'] = array('#type' => 'value', '#value' => $step == 'views_form_views_form' ? TRUE : FALSE);
     $form_object = $this->getFormObject($form_state);
     $form += $form_object->buildForm($form, $form_state, $view, $output);
     return $form;
 }
Esempio n. 5
0
 /**
  * Tests query filtering.
  *
  * @dataProvider providerTestFilterQueryParameters
  * @covers ::filterQueryParameters
  *
  * @param array $query
  *   The array of query parameters.
  * @param array $exclude
  *   A list of $query array keys to remove. Use "parent[child]" to exclude
  *   nested items.
  * @param array $expected
  *   An array containing query parameters.
  */
 public function testFilterQueryParameters($query, $exclude, $expected)
 {
     $filtered = UrlHelper::filterQueryParameters($query, $exclude);
     $this->assertEquals($expected, $filtered, 'The query was not properly filtered.');
 }
Esempio n. 6
0
 /**
  * {@inheritdoc}
  */
 public function buildForm(array $form, FormStateInterface $form_state, ViewExecutable $view = NULL, $output = NULL)
 {
     $form_state['step'] = isset($form_state['step']) ? $form_state['step'] : 'views_form_views_form';
     $form_state['step_controller']['views_form_views_form'] = 'Drupal\\views\\Form\\ViewsFormMainForm';
     // Cache the built form to prevent it from being rebuilt prior to validation
     // and submission, which could lead to data being processed incorrectly,
     // because the views rows (and thus, the form elements as well) have changed
     // in the meantime.
     $form_state['cache'] = TRUE;
     $form = array();
     $query = $this->requestStack->getCurrentRequest()->query->all();
     $query = UrlHelper::filterQueryParameters($query, array(), '');
     $form['#action'] = $this->urlGenerator->generateFromPath($view->getUrl(), array('query' => $query));
     // Tell the preprocessor whether it should hide the header, footer, pager...
     $form['show_view_elements'] = array('#type' => 'value', '#value' => $form_state['step'] == 'views_form_views_form' ? TRUE : FALSE);
     $form_object = $this->getFormObject($form_state);
     $form += $form_object->buildForm($form, $form_state, $view, $output);
     return $form;
 }
Esempio n. 7
0
 /**
  * Computes the destination Url for an add-to-cart action.
  *
  * Redirect Url is chosen in the following order:
  *  - Query parameter "destination"
  *  - Cart config variable "uc_cart.settings.add_item_redirect"
  *
  * @return \Drupal\Core\Url
  *   A Url destination for redirection.
  */
 protected function getAddItemRedirect()
 {
     // Check for destination= query string
     $query = \Drupal::request()->query;
     $destination = $query->get('destination');
     if (!empty($destination)) {
         return Url::fromUri('base:' . $destination);
     }
     // Save current Url to session before redirecting
     // so we can go "back" here from the cart.
     $session = \Drupal::service('session');
     $session->set('uc_cart_last_url', Url::fromRoute('<current>')->toString());
     $redirect = \Drupal::config('uc_cart.settings')->get('add_item_redirect');
     if ($redirect != '<none>') {
         return Url::fromUri('base:' . $redirect);
     } else {
         return Url::fromRoute('<current>', [], ['query' => UrlHelper::filterQueryParameters($query->all())]);
     }
 }