/**
  * sets the theme settings for a specific theme
  * @param Template $theme    
  * @param Shop     $shop     
  * @param array    $settings key value array containing the settings
  */
 public function setThemeSettingsArray(Template $theme, Shop $shop, array $settings)
 {
     $elements = $theme->getElements();
     $elements = $this->buildKeyValueSettings($elements);
     foreach ($settings as $key => $value) {
         if (!isset($elements[$key])) {
             continue;
         }
         $element = $elements[$key];
         $valueEntity = $this->getValueForShop($element, $shop);
         $valueEntity->setValue($value);
     }
     $this->em->flush();
 }
Exemple #2
0
 /**
  * Saves the passed shop configuration values to the passed
  * template.
  * The configuration elements are identified over the
  * element name.
  * The values array can contains multiple sub shop values,
  * which identified over the shopId parameter inside the values array.
  *
  * @param Shop\Template $template
  * @param array $values
  */
 public function saveConfig(Shop\Template $template, array $values)
 {
     foreach ($values as $data) {
         //get the element over the name
         $element = $this->getElementByName($template->getElements(), $data['elementName']);
         if (!$element instanceof Shop\TemplateConfig\Element) {
             continue;
         }
         $value = $this->getElementShopValue($element->getValues(), $data['shopId']);
         /**@var $shop Shop\Shop */
         $shop = $this->entityManager->getReference('Shopware\\Models\\Shop\\Shop', $data['shopId']);
         if ($element->getType() === 'theme-media-selection') {
             $data['value'] = $this->mediaService->normalize($data['value']);
         }
         $value->setShop($shop);
         $value->setElement($element);
         $value->setValue($data['value']);
     }
     $this->entityManager->flush();
 }
Exemple #3
0
 /**
  * @param Form\Interfaces\Field $field
  * @param Template $template
  * @param TemplateConfig\Layout $parent
  */
 private function saveField(Form\Interfaces\Field $field, Template $template, TemplateConfig\Layout $parent)
 {
     /**@var $field Form\Field */
     $lessCompatible = true;
     if (array_key_exists('lessCompatible', $field->getAttributes())) {
         $attributes = $field->getAttributes();
         $lessCompatible = (bool) $attributes['lessCompatible'];
     }
     $data = array('attributes' => $field->getAttributes(), 'fieldLabel' => $field->getLabel(), 'name' => $field->getName(), 'defaultValue' => $field->getDefaultValue(), 'supportText' => $field->getHelp(), 'allowBlank' => !$field->isRequired(), 'lessCompatible' => $lessCompatible);
     $class = get_class($field);
     switch ($class) {
         case "Shopware\\Components\\Form\\Field\\Text":
             /**@var $field Form\Field\Text */
             $data += array('type' => 'theme-text-field');
             break;
         case "Shopware\\Components\\Form\\Field\\Boolean":
             /**@var $field Form\Field\Boolean */
             $data += array('type' => 'theme-checkbox-field');
             break;
         case "Shopware\\Components\\Form\\Field\\Date":
             /**@var $field Form\Field\Date */
             $data += array('type' => 'theme-date-field');
             break;
         case "Shopware\\Components\\Form\\Field\\Color":
             /**@var $field Form\Field\Color */
             $data += array('type' => 'theme-color-picker');
             break;
         case "Shopware\\Components\\Form\\Field\\Media":
             /**@var $field Form\Field\Media */
             $data += array('type' => 'theme-media-selection');
             break;
         case "Shopware\\Components\\Form\\Field\\Number":
             /**@var $field Form\Field\Number */
             $data += array('type' => 'numberfield');
             break;
         case "Shopware\\Components\\Form\\Field\\Em":
             /**@var $field Form\Field\Number */
             $data += array('type' => 'theme-em-field');
             break;
         case "Shopware\\Components\\Form\\Field\\Percent":
             /**@var $field Form\Field\Number */
             $data += array('type' => 'theme-percent-field');
             break;
         case "Shopware\\Components\\Form\\Field\\Pixel":
             /**@var $field Form\Field\Number */
             $data += array('type' => 'theme-pixel-field');
             break;
         case "Shopware\\Components\\Form\\Field\\TextArea":
             /**@var $field Form\Field\Number */
             $data += array('type' => 'theme-text-area-field');
             break;
         case "Shopware\\Components\\Form\\Field\\Selection":
             /**@var $field Form\Field\Selection */
             $data += array('type' => 'theme-select-field', 'selection' => $field->getStore());
             break;
     }
     $entity = $this->checkExistingElement($template->getElements(), $field->getName());
     $entity->fromArray($data);
     $entity->setTemplate($template);
     $entity->setContainer($parent);
     $this->entityManager->persist($entity);
 }
 /**
  * {@inheritDoc}
  */
 public function getElements()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getElements', array());
     return parent::getElements();
 }