commerce-8.x-2.8/modules/checkout/src/Plugin/Commerce/CheckoutPane/OrderSummary.php
modules/checkout/src/Plugin/Commerce/CheckoutPane/OrderSummary.php
<?php namespace Drupal\commerce_checkout\Plugin\Commerce\CheckoutPane; use Drupal\Core\Form\FormStateInterface; /** * Provides the Order summary pane. * * @CommerceCheckoutPane( * id = "order_summary", * label = @Translation("Order summary"), * default_step = "_sidebar", * wrapper_element = "container", * ) */ class OrderSummary extends CheckoutPaneBase implements CheckoutPaneInterface { /** * {@inheritdoc} */ public function defaultConfiguration() { return [ 'view' => '', ] + parent::defaultConfiguration(); } /** * {@inheritdoc} */ public function buildConfigurationSummary() { if ($this->configuration['view']) { $view_storage = $this->entityTypeManager->getStorage('view'); $view = $view_storage->load($this->configuration['view']); if ($view) { return $this->t('View: @view', ['@view' => $view->label()]);; } } else { return $this->t('View: Not used'); } } /** * {@inheritdoc} */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { $form = parent::buildConfigurationForm($form, $form_state); $form['use_view'] = [ '#type' => 'checkbox', '#title' => $this->t('Use a View to display the order summary'), '#description' => $this->t('Overrides the checkout order summary template with the output of a View.'), '#default_value' => !empty($this->configuration['view']), ]; $view_storage = $this->entityTypeManager->getStorage('view'); $available_summary_views = []; /** @var \Drupal\views\Entity\View $view */ foreach ($view_storage->loadMultiple() as $view) { if (strpos($view->get('tag'), 'commerce_order_summary') !== FALSE) { $available_summary_views[$view->id()] = $view->label(); } } $form['view'] = [ '#type' => 'select', '#title' => $this->t('View'), '#options' => $available_summary_views, '#default_value' => $this->configuration['view'], '#required' => TRUE, '#states' => [ 'visible' => [ ':input[name="configuration[panes][order_summary][configuration][use_view]"]' => ['checked' => TRUE], ], ], ]; return $form; } /** * {@inheritdoc} */ public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { parent::submitConfigurationForm($form, $form_state); if (!$form_state->getErrors()) { $values = $form_state->getValue($form['#parents']); $this->configuration['view'] = NULL; if ($values['use_view']) { $this->configuration['view'] = $values['view']; } } } /** * {@inheritdoc} */ public function buildPaneForm(array $pane_form, FormStateInterface $form_state, array &$complete_form) { if ($this->configuration['view']) { $pane_form['summary'] = [ '#type' => 'view', '#name' => $this->configuration['view'], '#display_id' => 'default', '#arguments' => [$this->order->id()], '#embed' => TRUE, ]; } else { $pane_form['summary'] = [ '#theme' => 'commerce_checkout_order_summary', '#order_entity' => $this->order, '#checkout_step' => $complete_form['#step_id'], ]; } return $pane_form; } /** * {@inheritdoc} */ public function submitPaneForm(array &$pane_form, FormStateInterface $form_state, array &$complete_form) {} }