You are here

class UpdateLayoutRequestHandler in Panels 8.4

Same name and namespace in other branches
  1. 8.3 panels_ipe/src/Helpers/UpdateLayoutRequestHandler.php \Drupal\panels_ipe\Helpers\UpdateLayoutRequestHandler

Hierarchy

Expanded class hierarchy of UpdateLayoutRequestHandler

2 files declare their use of UpdateLayoutRequestHandler
PanelsIPEPageController.php in panels_ipe/src/Controller/PanelsIPEPageController.php
UpdateLayoutRequestHandlerTest.php in panels_ipe/tests/src/Unit/UpdateLayoutRequestHandlerTest.php

File

panels_ipe/src/Helpers/UpdateLayoutRequestHandler.php, line 7

Namespace

Drupal\panels_ipe\Helpers
View source
class UpdateLayoutRequestHandler extends RequestHandlerBase {

  /**
   * @inheritdoc
   */
  protected function handle(PanelsDisplayVariant $panels_display, $decodedRequest, $save_to_temp_store = FALSE) {
    $this
      ->updateLayout($panels_display, $decodedRequest, $save_to_temp_store);
  }

  /**
   * Changes the layout for the given Panels Display.
   *
   * @param \Drupal\panels\Plugin\DisplayVariant\PanelsDisplayVariant $panels_display
   * @param $layout_model
   * @param bool $save_to_temp_store
   */
  private function updateLayout(PanelsDisplayVariant $panels_display, $layout_model, $save_to_temp_store = FALSE) {
    $panels_display = self::updatePanelsDisplay($panels_display, $layout_model);
    $this
      ->invokeHook('panels_ipe_panels_display_presave', [
      $panels_display,
      $layout_model,
    ]);
    if ($save_to_temp_store) {
      $this
        ->savePanelsDisplayToTempStore($panels_display);
    }
    else {
      $this
        ->savePanelsDisplay($panels_display);
    }
  }

  /**
   * Updates the current Panels display based on the changes done in our app.
   *
   * @param \Drupal\panels\Plugin\DisplayVariant\PanelsDisplayVariant $panels_display
   *   The current Panels display.
   * @param array $layout_model
   *   The decoded LayoutModel from our App.
   *
   * @return \Drupal\panels\Plugin\DisplayVariant\PanelsDisplayVariant
   */
  private static function updatePanelsDisplay(PanelsDisplayVariant $panels_display, array $layout_model) {

    // Set our weight and region based on the metadata in our Backbone app.
    foreach ($layout_model['regionCollection'] as $region) {
      $weight = 0;
      foreach ($region['blockCollection'] as $block) {

        /** @var \Drupal\Core\Block\BlockBase $block_instance */
        $block_instance = $panels_display
          ->getBlock($block['uuid']);
        $block_instance
          ->setConfigurationValue('region', $region['name']);
        $block_instance
          ->setConfigurationValue('weight', ++$weight);
        $panels_display
          ->updateBlock($block['uuid'], $block_instance
          ->getConfiguration());
      }
    }
    return $panels_display;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
RequestHandlerBase::$moduleHandler private property @var \Drupal\Core\Extension\ModuleHandlerInterface
RequestHandlerBase::$panelsStore private property @var \Drupal\panels\Storage\PanelsStorageManagerInterface
RequestHandlerBase::$response private property @var array
RequestHandlerBase::$responseStatusCode private property @var int
RequestHandlerBase::$tempStore private property @var \Drupal\Core\TempStore\SharedTempStoreFactory
RequestHandlerBase::decodeRequest protected static function Attempts to decode the incoming request's content as JSON.
RequestHandlerBase::deletePanelsDisplayTempStore protected function Deletes the given Panels Display from TempStore.
RequestHandlerBase::getJsonResponse public function Returns the current response data as a JSON Response. Overrides RequestHandlerInterface::getJsonResponse
RequestHandlerBase::handleRequest public function @inheritdoc Overrides RequestHandlerInterface::handleRequest
RequestHandlerBase::invokeHook protected function Helper function for invoking hooks for all enabled modules.
RequestHandlerBase::savePanelsDisplay protected function Deletes TempStore and saves the current Panels display.
RequestHandlerBase::savePanelsDisplayToTempStore protected function Saves the given Panels Display to TempStore.
RequestHandlerBase::setResponse protected function Updates our response and response status code properties.
RequestHandlerBase::__construct public function
UpdateLayoutRequestHandler::handle protected function @inheritdoc Overrides RequestHandlerBase::handle
UpdateLayoutRequestHandler::updateLayout private function Changes the layout for the given Panels Display.
UpdateLayoutRequestHandler::updatePanelsDisplay private static function Updates the current Panels display based on the changes done in our app.