/**
  * @return ResultPage|ResultRedirect
  */
 public function execute()
 {
     $scope = $this->getRequest()->getParam('scope');
     $scopeId = $this->getRequest()->getParam('scope_id');
     if (!$this->scopeValidator->isValidScope($scope, $scopeId)) {
         /** @var ResultRedirect $resultRedirect */
         $resultRedirect = $this->resultRedirectFactory->create();
         $resultRedirect->setPath('theme/design_config/');
         return $resultRedirect;
     }
     /** @var ResultPage $resultPage */
     $resultPage = $this->resultPageFactory->create();
     $resultPage->setActiveMenu('Magento_Theme::design_config');
     $resultPage->getConfig()->getTitle()->prepend(__('%1', $this->getScopeTitle()));
     return $resultPage;
 }
 /**
  * Create Design Configuration for scope
  *
  * @param mixed $scope
  * @param int $scopeId
  * @param array $data
  * @return DesignConfigInterface
  * @throws LocalizedException
  */
 public function create($scope, $scopeId, array $data = [])
 {
     if (!$this->scopeValidator->isValidScope($scope, $scopeId)) {
         throw new LocalizedException(__('Invalid scope or scope id'));
     }
     $designConfigData = $this->getDesignConfigData($scope, $scopeId);
     $configData = [];
     foreach ($this->metadataProvider->get() as $name => $metadata) {
         $metadata['field'] = $name;
         /** @var DesignConfigDataInterface $configDataObject */
         $configDataObject = $this->designConfigDataFactory->create();
         $configDataObject->setPath($metadata['path']);
         $configDataObject->setFieldConfig($metadata);
         if (isset($data[$name]) || isset($metadata['default'])) {
             $configDataObject->setValue(isset($data[$name]) ? $data[$name] : $metadata['default']);
         }
         $configData[] = $configDataObject;
     }
     /** @var DesignConfigExtension $designConfigExtension */
     $designConfigExtension = $this->configExtensionFactory->create();
     $designConfigExtension->setDesignConfigData($configData);
     $designConfigData->setExtensionAttributes($designConfigExtension);
     return $designConfigData;
 }