/**
  * Retrieve all templates for the leaflet map template list.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getMapTemplates(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_rendersetting' || $event->getPropertyName() !== 'leaflet_template') {
         return;
     }
     $event->setOptions(\Controller::getTemplateGroup('leaflet_map_'));
 }
 /**
  * Retrieve the options for the attributes.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getRgxpOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dcasetting' || $event->getPropertyName() !== 'rgxp') {
         return;
     }
     $options = array('alnum' => 'alnum', 'alpha' => 'alpha', 'digit' => 'digit', 'email' => 'email', 'emails' => 'emails', 'extnd' => 'extnd', 'friendly' => 'friendly', 'phone' => 'phone');
     $event->setOptions($options);
 }
 /**
  * Update the options list in the event.
  *
  * @param GetPropertyOptionsEvent $event The event being emitted.
  *
  * @param array                   $value The options array.
  *
  * @return void
  */
 public function update($event, $value)
 {
     if ($value === null) {
         return;
     }
     $event->setOptions($value);
     $event->stopPropagation();
 }
 /**
  * Check if the current context is valid.
  *
  * @param GetPropertyOptionsEvent|GetOptionsEvent $event              The event.
  *
  * @param string                                  $dataDefinitionName The allowed name of the data definition.
  *
  * @param array                                   $properties         A list of allowed properties.
  *
  * @return bool
  */
 protected function isAllowedProperty($event, $dataDefinitionName, $properties)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== $dataDefinitionName) {
         return false;
     }
     if (!in_array($event->getPropertyName(), $properties)) {
         return false;
     }
     return true;
 }
 /**
  * Retrieve all database table names.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public static function getCountriesByContinent(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getPropertyName() !== 'geoprotection') {
         return;
     }
     // Get the current values.
     $arrValues = $event->getOptions();
     // Call the helper to get all data.
     $arrValues = Helper::getCountriesByContinent($arrValues);
     // Set the new options.
     $event->setOptions($arrValues);
 }
Esempio n. 6
0
 /**
  * Fetch the options for a certain property.
  *
  * @param EnvironmentInterface $environment The environment.
  *
  * @param ModelInterface       $model       The model.
  *
  * @param PropertyInterface    $property    The property.
  *
  * @return array
  */
 protected function getOptions($environment, $model, $property)
 {
     $options = $property->getOptions();
     $event = new GetPropertyOptionsEvent($environment, $model);
     $event->setPropertyName($property->getName());
     $event->setOptions($options);
     $environment->getEventPropagator()->propagate($event::NAME, $event, $environment->getDataDefinition()->getName(), $property->getName());
     if ($event->getOptions() !== $options) {
         $options = $event->getOptions();
     }
     return $options;
 }
 /**
  * Retrieve all member groups.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function handleMemberGroup(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_filtersetting' || $event->getPropertyName() !== 'member_group') {
         return;
     }
     $database = $this->getServiceContainer()->getDatabase();
     $group = $database->prepare('SELECT id, name FROM tl_member_group')->execute();
     $options = array();
     while ($group->next()) {
         $options[$group->id] = $group->name;
     }
     $event->setOptions($options);
 }
Esempio n. 8
0
 /**
  * Provide options for attribute type selection.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getAttrOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dca_sortgroup' || $event->getPropertyName() !== 'rendergroupattr' && $event->getPropertyName() !== 'rendersortattr') {
         return;
     }
     $result = array();
     $metaModel = $this->getMetaModel($event->getEnvironment());
     foreach ($metaModel->getAttributes() as $attribute) {
         $typeName = $attribute->get('type');
         $strSelectVal = $metaModel->getTableName() . '_' . $attribute->getColName();
         $result[$strSelectVal] = $attribute->getName() . ' [' . $typeName . ']';
     }
     $event->setOptions($result);
 }
Esempio n. 9
0
 /**
  * Provide options for filter list.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getRenderSettingsOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_searchable_pages' || $event->getPropertyName() !== 'rendersetting') {
         return;
     }
     $model = $event->getModel();
     $pid = $model->getProperty('pid');
     if (empty($pid)) {
         return;
     }
     $renderSettings = $this->getDatabase()->prepare('SELECT id, name FROM tl_metamodel_rendersettings WHERE pid=?')->execute($pid);
     $options = array();
     while ($renderSettings->next()) {
         $options[$renderSettings->id] = $renderSettings->name;
     }
     $event->setOptions($options);
 }
 /**
  * Retrieve all column names of type int for the current selected table.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getSourceColumnNames(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getPropertyName() !== 'tag_srcsorting') {
         return;
     }
     $model = $event->getModel();
     $table = $model->getProperty('select_srctable');
     $database = $this->getServiceContainer()->getDatabase();
     if (!$table || !$database->tableExists($table)) {
         return;
     }
     $result = array();
     foreach ($database->listFields($table) as $arrInfo) {
         if ($arrInfo['type'] != 'index') {
             $result[$arrInfo['name']] = $arrInfo['name'];
         }
     }
     $event->setOptions($result);
 }
 /**
  * Retrieve the property options.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getPropertyOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getOptions() !== null) {
         return;
     }
     $model = $event->getModel();
     if (!$model instanceof Model) {
         return;
     }
     $attribute = $model->getItem()->getAttribute($event->getPropertyName());
     if (!$attribute instanceof AbstractSelect) {
         return;
     }
     try {
         $options = $attribute->getFilterOptions(null, false);
     } catch (\Exception $exception) {
         $options = array('Error: ' . $exception->getMessage());
     }
     $event->setOptions($options);
 }
 /**
  * @param GetPropertyOptionsEvent $event
  * @param                         $name
  * @param EventDispatcher         $eventDispatcher
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  * @SuppressWarnings(PHPMD.LongVariableName)
  */
 public function eventTemplateOptions(GetPropertyOptionsEvent $event, $name, EventDispatcher $eventDispatcher)
 {
     $environment = $event->getEnvironment();
     $dataDefinition = $environment->getDataDefinition();
     if ($dataDefinition->getName() !== 'orm_avisota_message_content' || $event->getPropertyName() !== 'eventTemplate') {
         return;
     }
     $getTemplateGroupEvent = new GetTemplateGroupEvent('event_');
     $eventDispatcher->dispatch(ContaoEvents::CONTROLLER_GET_TEMPLATE_GROUP, $getTemplateGroupEvent);
     $options = $getTemplateGroupEvent->getTemplates()->getArrayCopy();
     /** @var MessageContent $messageContent */
     $messageContent = $event->getModel()->getEntity();
     $theme = $messageContent->getMessage()->getCategory()->getLayout()->getTheme();
     if (!$theme->getTemplateDirectory()) {
         $event->setOptions($options);
         return;
     }
     $themeTemplateDirectory = scandir(TL_ROOT . '/templates/' . $theme->getTemplateDirectory());
     foreach ($themeTemplateDirectory as $file) {
         if (substr($file, 0, strlen('event_')) !== 'event_') {
             continue;
         }
         $chunks = explode('.', $file);
         $chunks = array_reverse($chunks);
         unset($chunks[0]);
         $chunks = array_reverse($chunks);
         $template = implode('.', $chunks);
         if (!array_key_exists($template, $options)) {
             $options[$template] = $template . ' (' . $theme->getTemplateDirectory() . ')';
             continue;
         }
         if (strlen($options[$template]) === strlen($template)) {
             $options[$template] = $template . ' (' . $theme->getTemplateDirectory() . ')';
             continue;
         }
         $options[$template] = str_replace('(', '(' . $theme->getTemplateDirectory() . ', ', $options[$template]);
     }
     $event->setOptions($options);
 }
 /**
  * Group leaflet markers, layers and vectors by their group.
  *
  * @param GetPropertyOptionsEvent $event The GetPropertyOptions Event.
  *
  * @return void
  *
  * @SuppressWarnings(PHPMD.Superglobals)
  */
 public function getPropertyOptions(GetPropertyOptionsEvent $event)
 {
     $model = $event->getModel();
     if ($model instanceof Model) {
         $item = $model->getItem();
         $attribute = $item->getAttribute($event->getPropertyName());
         if (!$attribute) {
             return;
         }
         $selectTable = $attribute->get('select_table');
         $alias = $attribute->get('select_alias');
         if ($selectTable == 'tl_leaflet_layer') {
             $collection = $this->fetchOptionsCollection('Netzmacht\\Contao\\Leaflet\\Model\\LayerModel', $attribute);
             $options = OptionsBuilder::fromCollection($collection, $alias, array($this, 'parseLayerLabel'))->groupBy('pid', array($this, 'parseLayerGroup'))->getOptions();
             $event->setOptions($options);
         } elseif ($selectTable == 'tl_leaflet_vector' || $selectTable == 'tl_leaflet_marker') {
             $class = $GLOBALS['TL_MODELS'][$selectTable];
             $collection = $this->fetchOptionsCollection($class, $attribute);
             $options = OptionsBuilder::fromCollection($collection, $alias, $attribute->get('select_column'))->groupBy('pid', array($this, 'parseLayerGroup'))->getOptions();
             $event->setOptions($options);
         }
     }
 }
Esempio n. 14
0
 /**
  * Obtain the values of a property within a dc-general instance.
  *
  * @param IMetaModel           $metaModel   The metamodel instance to obtain the values from.
  *
  * @param EnvironmentInterface $environment The environment used in the input screen table dc-general.
  *
  * @param IAttribute           $attribute   The attribute to obtain the values for.
  *
  * @return array
  */
 private function getOptionsViaDcGeneral($metaModel, $environment, $attribute)
 {
     $factory = new DcGeneralFactory();
     $dcGeneral = $factory->setContainerName($metaModel->getTableName())->setEventDispatcher($environment->getEventDispatcher())->setTranslator($environment->getTranslator())->createDcGeneral();
     $subEnv = $dcGeneral->getEnvironment();
     $optEv = new GetPropertyOptionsEvent($subEnv, $subEnv->getDataProvider()->getEmptyModel());
     $optEv->setPropertyName($attribute->getColName());
     $subEnv->getEventDispatcher()->dispatch(GetPropertyOptionsEvent::NAME, $optEv);
     $options = $optEv->getOptions();
     return $options;
 }
 /**
  * @param CreateOptionsEvent|GetPropertyOptionsEvent $event
  * @param                                            $name
  * @param EventDispatcher                            $eventDispatcher
  * @SuppressWarnings(PHPMD.Superglobals)
  * @SuppressWarnings(PHPMD.ShortVariables)
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function createContentTypeOptions(GetPropertyOptionsEvent $event, $name, EventDispatcher $eventDispatcher)
 {
     if ($event->getModel()->getProviderName() !== 'orm_avisota_layout' || $event->getPropertyName() !== 'allowedCellContents') {
         return;
     }
     $layout = $event->getModel()->getEntity();
     if ($layout->getType() !== 'mailChimp') {
         return;
     }
     $allTypes = $event->getOptions();
     $options = array();
     list($group, $mailChimpTemplate) = explode(':', $layout->getMailchimpTemplate());
     if (isset($GLOBALS['AVISOTA_MAILCHIMP_TEMPLATE'][$group][$mailChimpTemplate])) {
         $config = $GLOBALS['AVISOTA_MAILCHIMP_TEMPLATE'][$group][$mailChimpTemplate];
         foreach ($config['cells'] as $cellName => $cellConfig) {
             if (!isset($cellConfig['content'])) {
                 if (!isset($options[$cellName])) {
                     $options[$cellName] = array();
                 }
                 foreach ($allTypes as $elements) {
                     foreach ($elements as $elementType => $elementLabel) {
                         $options[$cellName][$cellName . ':' . $elementType] = $elementLabel;
                     }
                 }
             }
         }
     }
     $event->setOptions($options);
 }
Esempio n. 16
0
 /**
  * Retrieve the instance of a widget for the given property.
  *
  * @param string           $property    Name of the property for which the widget shall be retrieved.
  *
  * @param PropertyValueBag $inputValues The input values to use (optional).
  *
  * @throws DcGeneralInvalidArgumentException When an unknown property has been passed.
  *
  * @return \Widget
  */
 public function getWidget($property, PropertyValueBag $inputValues = null)
 {
     $environment = $this->getEnvironment();
     $defName = $environment->getDataDefinition()->getName();
     $propertyDefinitions = $environment->getDataDefinition()->getPropertiesDefinition();
     if (!$propertyDefinitions->hasProperty($property)) {
         throw new DcGeneralInvalidArgumentException('Property ' . $property . ' is not defined in propertyDefinitions.');
     }
     $event = new BuildWidgetEvent($environment, $this->model, $propertyDefinitions->getProperty($property));
     $environment->getEventPropagator()->propagate($event::NAME, $event, array($defName, $property));
     if ($event->getWidget()) {
         return $event->getWidget();
     }
     $propInfo = $propertyDefinitions->getProperty($property);
     $propExtra = $propInfo->getExtra();
     $varValue = $this->decodeValue($property, $this->model->getProperty($property));
     $xLabel = $this->getXLabel($propInfo);
     $strClass = $GLOBALS['BE_FFL'][$propInfo->getWidgetType()];
     if (!class_exists($strClass)) {
         return null;
     }
     // FIXME TEMPORARY WORKAROUND! To be fixed in the core: Controller::prepareForWidget(..).
     if (in_array($propExtra['rgxp'], array('date', 'time', 'datim')) && !$propExtra['mandatory'] && is_numeric($varValue) && $varValue == 0) {
         $varValue = '';
     }
     // OH: why not $required = $mandatory always? source: DataContainer 226.
     // OH: the whole prepareForWidget(..) thing is an only mess
     // Widgets should parse the configuration by themselves, depending on what they need.
     $propExtra['required'] = $varValue == '' && $propExtra['mandatory'];
     if ($inputValues) {
         $model = clone $this->model;
         $model->setId($this->model->getId());
         $this->environment->getController()->updateModelFromPropertyBag($model, $inputValues);
     } else {
         $model = $this->model;
     }
     $options = $propInfo->getOptions();
     $event = new GetPropertyOptionsEvent($environment, $model);
     $event->setPropertyName($property);
     $event->setOptions($options);
     $environment->getEventPropagator()->propagate($event::NAME, $event, $environment->getDataDefinition()->getName(), $property);
     if ($event->getOptions() !== $options) {
         $options = $event->getOptions();
     }
     $arrConfig = array('inputType' => $propInfo->getWidgetType(), 'label' => array($propInfo->getLabel(), $propInfo->getDescription()), 'options' => $options, 'eval' => $propExtra);
     if (isset($propExtra['reference'])) {
         $arrConfig['reference'] = $propExtra['reference'];
     }
     $event = new GetAttributesFromDcaEvent($arrConfig, $propInfo->getName(), $varValue, $property, $defName, new DcCompat($environment, $this->model, $property));
     $environment->getEventPropagator()->propagate(ContaoEvents::WIDGET_GET_ATTRIBUTES_FROM_DCA, $event, $environment->getDataDefinition()->getName(), $property);
     $arrPrepared = $event->getResult();
     // Bugfix CS: ajax subpalettes are really broken.
     // Therefore we reset to the default checkbox behaviour here and submit the entire form.
     // This way, the javascript needed by the widget (wizards) will be correctly evaluated.
     if ($arrConfig['inputType'] == 'checkbox' && is_array($GLOBALS['TL_DCA'][$defName]['subpalettes']) && in_array($property, array_keys($GLOBALS['TL_DCA'][$defName]['subpalettes'])) && $arrConfig['eval']['submitOnChange']) {
         $arrPrepared['onclick'] = $arrConfig['eval']['submitOnChange'] ? "Backend.autoSubmit('" . $defName . "')" : '';
     }
     $objWidget = new $strClass($arrPrepared);
     // OH: what is this? source: DataContainer 232.
     $objWidget->currentRecord = $this->model->getId();
     $objWidget->wizard .= $xLabel;
     $event = new ManipulateWidgetEvent($environment, $this->model, $propInfo, $objWidget);
     $environment->getEventPropagator()->propagate($event::NAME, $event, array($defName, $property));
     return $objWidget;
 }
Esempio n. 17
0
 /**
  * Get special labels.
  *
  * @param PropertyInterface $propInfo The property for which the X label shall be generated.
  *
  * @param ModelInterface    $model    The model.
  *
  * @return string
  */
 protected function getOptionsForWidget($propInfo, $model)
 {
     if (!$this->isGetOptionsAllowed($propInfo)) {
         return null;
     }
     $environment = $this->getEnvironment();
     $dispatcher = $environment->getEventDispatcher();
     $options = $propInfo->getOptions();
     $event = new GetPropertyOptionsEvent($environment, $model);
     $event->setPropertyName($propInfo->getName());
     $event->setOptions($options);
     $dispatcher->dispatch(GetPropertyOptionsEvent::NAME, $event);
     if ($event->getOptions() !== $options) {
         return $event->getOptions();
     }
     return $options;
 }
Esempio n. 18
0
 /**
  * Retrieve the options for the attributes.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getAttributeOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_rendersetting' || $event->getPropertyName() !== 'attr_id') {
         return;
     }
     $database = $this->getDatabase();
     $model = $event->getModel();
     $metaModel = $this->getMetaModel($model);
     if (!$metaModel) {
         return;
     }
     $arrResult = array();
     // Fetch all attributes that exist in other settings.
     $alreadyTaken = $database->prepare('
         SELECT
             attr_id
         FROM
             ' . $model->getProviderName() . '
         WHERE
             attr_id<>?
             AND pid=?')->execute($model->getProperty('attr_id'), $model->getProperty('pid'))->fetchEach('attr_id');
     foreach ($metaModel->getAttributes() as $attribute) {
         if (in_array($attribute->get('id'), $alreadyTaken)) {
             continue;
         }
         $arrResult[$attribute->get('id')] = sprintf('%s [%s]', $attribute->getName(), $attribute->get('type'));
     }
     $event->setOptions($arrResult);
 }
Esempio n. 19
0
 /**
  * Retrieve the options for rich text editor configuration.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getRichTextEditorOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dcasetting' || $event->getPropertyName() !== 'rte') {
         return;
     }
     $configs = array();
     foreach (glob(TL_ROOT . '/system/config/tiny*.php') as $name) {
         $name = basename($name);
         if (strpos($name, 'tiny') === 0 && substr($name, -4, 4) == '.php') {
             $configs[] = substr($name, 0, -4);
         }
     }
     $event->setOptions($configs);
 }
Esempio n. 20
0
 /**
  * Prepares a option list with alias => name connection for all attributes.
  *
  * This is used in the attr_id select box.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getAttributeIdOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_filtersetting' || $event->getPropertyName() !== 'attr_id') {
         return;
     }
     $result = array();
     $model = $event->getModel();
     $metaModel = $this->getMetaModel($model);
     $typeFactory = $this->getServiceContainer()->getFilterFactory()->getTypeFactory($model->getProperty('type'));
     $typeFilter = null;
     if ($typeFactory) {
         $typeFilter = $typeFactory->getKnownAttributeTypes();
     }
     foreach ($metaModel->getAttributes() as $attribute) {
         $typeName = $attribute->get('type');
         if ($typeFilter && !in_array($typeName, $typeFilter)) {
             continue;
         }
         $strSelectVal = $metaModel->getTableName() . '_' . $attribute->getColName();
         $result[$strSelectVal] = $attribute->getName() . ' [' . $typeName . ']';
     }
     $event->setOptions($result);
 }
 /**
  * Provide options for default selection.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getTemplateOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_filtersetting' || $event->getPropertyName() !== 'range_template') {
         return;
     }
     $list = new TemplateList();
     $list->setServiceContainer($this->getServiceContainer());
     $event->setOptions($list->getTemplatesForBase('mm_filteritem_'));
 }
 /**
  * Get special labels.
  *
  * @param EnvironmentInterface $environment The environment.
  *
  * @param PropertyInterface    $propInfo    The property for which the options shall be retrieved.
  *
  * @param ModelInterface       $model       The model.
  *
  * @return string
  */
 private function getOptionsForWidget(EnvironmentInterface $environment, PropertyInterface $propInfo, ModelInterface $model)
 {
     $dispatcher = $environment->getEventDispatcher();
     $options = $propInfo->getOptions();
     $event = new GetPropertyOptionsEvent($environment, $model);
     $event->setPropertyName($propInfo->getName());
     $event->setOptions($options);
     $dispatcher->dispatch(GetPropertyOptionsEvent::NAME, $event);
     if ($event->getOptions() !== $options) {
         return $event->getOptions();
     }
     return $options;
 }
Esempio n. 23
0
 /**
  * Provide options for the values contained within a certain attribute.
  *
  * The values get prefixed with 'value_' to ensure numeric values are kept intact.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getValueOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dcasetting_condition' || $event->getPropertyName() !== 'value') {
         return;
     }
     $model = $event->getModel();
     $metaModel = $this->getMetaModel($event->getEnvironment());
     $attribute = $metaModel->getAttributeById($model->getProperty('attr_id'));
     if ($attribute) {
         $options = $attribute->getFilterOptions(null, false);
         $mangled = array();
         foreach ($options as $key => $option) {
             $mangled['value_' . $key] = $option;
         }
         $event->setOptions($mangled);
     }
 }
Esempio n. 24
0
 /**
  * Provide options for attribute type selection.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getOptions(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getPropertyName() !== 'type') {
         return;
     }
     $services = $this->getServiceContainer();
     $translator = $event->getEnvironment()->getTranslator();
     $attributeFactory = $services->getAttributeFactory();
     $objMetaModel = $this->getMetaModelByModelPid($event->getModel());
     $flags = IAttributeFactory::FLAG_ALL_UNTRANSLATED;
     if ($objMetaModel->isTranslated()) {
         $flags |= IAttributeFactory::FLAG_INCLUDE_TRANSLATED;
     }
     $options = array();
     foreach ($attributeFactory->getTypeNames($flags) as $attributeType) {
         // Might be translated+complex or translated+simple.
         if ($attributeFactory->getTypeFactory($attributeType)->isTranslatedType() && !$objMetaModel->isTranslated()) {
             continue;
         }
         $options[$attributeType] = $translator->translate('typeOptions.' . $attributeType, 'tl_metamodel_attribute');
     }
     $event->setOptions($options);
 }
Esempio n. 25
0
 /**
  * Get database tables none recommended with hidden array
  *
  * @param GetPropertyOptionsEvent $event
  *
  * @return array
  */
 public function databaseTablesNoneRecommendedWithHidden(GetPropertyOptionsEvent $event)
 {
     if (!$this->isRightContext($event->getEnvironment())) {
         return;
     }
     if ($event->getPropertyName() != 'database_tables_none_recommended') {
         return;
     }
     $arrTableRecommended = $this->objSyncCtoHelper->databaseTablesNoneRecommendedWithHidden();
     $arrStyledTableRecommended = array();
     foreach ($arrTableRecommended as $strTableName => $arrTable) {
         $arrStyledTableRecommended[$strTableName] = $this->objSyncCtoHelper->getStyledTableMeta($arrTable);
     }
     $event->setOptions($arrStyledTableRecommended);
 }
 /**
  * Get database tables none recommended with hidden array
  *
  * @param ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetPropertyOptionsEvent $event
  *
  * @return array
  */
 public function databaseTablesNoneRecommendedWithHidden(GetPropertyOptionsEvent $event)
 {
     $arrTableRecommended = $this->objSyncCtoHelper->databaseTablesNoneRecommendedWithHidden();
     $arrStyledTableRecommended = array();
     foreach ($arrTableRecommended as $strTableName => $arrTable) {
         $arrStyledTableRecommended[$strTableName] = $this->objSyncCtoHelper->getStyledTableMeta($arrTable);
     }
     $event->setOptions($arrStyledTableRecommended);
 }
Esempio n. 27
0
 /**
  * Retrieve a list of all render modes.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getRenderModes(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dca' || $event->getPropertyName() !== 'rendermode') {
         return;
     }
     $translator = $event->getEnvironment()->getTranslator();
     $options = array('flat' => $translator->translate('rendermodes.flat', 'tl_metamodel_dca'), 'hierarchical' => $translator->translate('rendermodes.hierarchical', 'tl_metamodel_dca'));
     if ($event->getModel()->getProperty('rendertype') == 'ctable') {
         $options['parented'] = $translator->translate('rendermodes.parented', 'tl_metamodel_dca');
     }
     $event->setOptions($options);
 }
 /**
  * @param CreateOptionsEvent|GetPropertyOptionsEvent $event
  * @param                                            $name
  * @param EventDispatcher                            $eventDispatcher
  * @SuppressWarnings(PHPMD.Superglobals)
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function createContentTypeOptions(GetPropertyOptionsEvent $event, $name, EventDispatcher $eventDispatcher)
 {
     $environment = $event->getEnvironment();
     $dataDefinition = $environment->getDataDefinition();
     if ($dataDefinition->getName() !== 'orm_avisota_layout' || $event->getPropertyName() !== 'allowedCellContents') {
         return;
     }
     $translator = $environment->getTranslator();
     $options = $event->getOptions();
     if (!is_array($options)) {
         $options = (array) $options;
     }
     foreach ($GLOBALS['TL_MCE'] as $elementGroup => $elements) {
         $elementGroupLabel = $translator->translate($elementGroup, 'MCE');
         foreach ($elements as $elementType) {
             $elementLabel = $translator->translate($elementType . '.0', 'MCE');
             $options[$elementGroupLabel][$elementType] = sprintf('%s', $elementLabel);
         }
     }
     $event->setOptions($options);
 }
Esempio n. 29
0
 /**
  * Fetch the options for a certain property.
  *
  * @param EnvironmentInterface $environment The environment.
  *
  * @param ModelInterface       $model       The model.
  *
  * @param PropertyInterface    $property    The property.
  *
  * @return array
  */
 protected static function getOptions($environment, $model, $property)
 {
     $options = $property->getOptions();
     $event = new GetPropertyOptionsEvent($environment, $model);
     $event->setPropertyName($property->getName());
     $event->setOptions($options);
     $environment->getEventDispatcher()->dispatch(sprintf('%s', $event::NAME), $event);
     if ($event->getOptions() !== $options) {
         $options = $event->getOptions();
     }
     return $options;
 }
Esempio n. 30
0
 /**
  * Retrieve all column names of type int for the current selected table.
  *
  * @param GetPropertyOptionsEvent $event The event.
  *
  * @return void
  */
 public function getIntColumnNames(GetPropertyOptionsEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getPropertyName() !== 'select_id') {
         return;
     }
     $result = $this->getColumnNamesFromMetaModel($event->getModel()->getProperty('select_table'), array('int'));
     $event->setOptions($result);
 }