/** * 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(); }
/** * 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(); }
/** * @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(); }