UpdateLayoutRequestHandler.php in Panels 8.3
File
panels_ipe/src/Helpers/UpdateLayoutRequestHandler.php
View source
<?php
namespace Drupal\panels_ipe\Helpers;
use Drupal\panels\Plugin\DisplayVariant\PanelsDisplayVariant;
class UpdateLayoutRequestHandler extends RequestHandlerBase {
protected function handle(PanelsDisplayVariant $panels_display, $decodedRequest, $save_to_temp_store = FALSE) {
$this
->updateLayout($panels_display, $decodedRequest, $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);
}
}
private static function updatePanelsDisplay(PanelsDisplayVariant $panels_display, array $layout_model) {
foreach ($layout_model['regionCollection'] as $region) {
$weight = 0;
foreach ($region['blockCollection'] as $block) {
$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;
}
}