/** * Handle the build widget event. * * @param BuildWidgetEvent $event The event. * * @return void */ public static function handleEvent(BuildWidgetEvent $event) { $widget = $event->getWidget(); if (!$widget instanceof Widget) { return; } $widget->wizard .= self::getWizard($event->getProperty(), $event->getEnvironment()); }
/** * Populate the extra data of the widget. * * @param BuildWidgetEvent $event The event. * * @return void * * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ public function fillExtraData(BuildWidgetEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getProperty()->getName() !== 'translatedtabletext_cols') { return; } $model = $event->getModel(); $objMetaModel = $this->getMetaModelById($event->getModel()->getProperty('pid')); $translator = $event->getEnvironment()->getTranslator(); // Check model and input for the cols and get the max value. $intModelCols = $model->getProperty('tabletext_quantity_cols'); $intInputCols = $event->getEnvironment()->getInputProvider()->getValue('tabletext_quantity_cols'); $intCols = max(intval($intModelCols), intval($intInputCols)); // For new models, we might not have a value. if (!$intCols) { return; } if (!($objMetaModel && $objMetaModel->isTranslated())) { return; } $attribute = $objMetaModel->getAttributeById($model->getProperty('id')); $arrValues = $attribute ? $attribute->get('name') : array(); $languageEvent = new LoadLanguageFileEvent('languages'); $this->getServiceContainer()->getEventDispatcher()->dispatch(ContaoEvents::SYSTEM_LOAD_LANGUAGE_FILE, $languageEvent); $arrLanguages = array(); foreach ((array) $objMetaModel->getAvailableLanguages() as $strLangCode) { $arrLanguages[$strLangCode] = $translator->translate($strLangCode, 'LNG'); } asort($arrLanguages); // Ensure we have the values present. if (empty($arrValues)) { foreach ((array) $objMetaModel->getAvailableLanguages() as $strLangCode) { $arrValues[$strLangCode] = ''; } } $arrRowClasses = array(); foreach (array_keys(deserialize($arrValues)) as $strLangcode) { $arrRowClasses[] = $strLangcode == $objMetaModel->getFallbackLanguage() ? 'fallback_language' : 'normal_language'; } $data = $event->getProperty()->getExtra(); $data['minCount'] = count($arrLanguages); $data['maxCount'] = count($arrLanguages); $data['columnFields']['langcode']['label'] = $translator->translate('name_langcode', 'tl_metamodel_attribute'); $data['columnFields']['langcode']['options'] = $arrLanguages; $data['columnFields']['langcode']['eval']['rowClasses'] = $arrRowClasses; $data['columnFields']['rowLabels']['label'] = $translator->translate('tabletext_rowLabels', 'tl_metamodel_attribute'); $data['columnFields']['rowLabels']['eval']['minCount'] = $intCols; $data['columnFields']['rowLabels']['eval']['maxCount'] = $intCols; $data['columnFields']['rowLabels']['eval']['columnFields']['rowLabel']['label'] = $translator->translate('tabletext_rowLabel', 'tl_metamodel_attribute'); $data['columnFields']['rowLabels']['eval']['columnFields']['rowLabel']['eval'] = $arrRowClasses; $data['columnFields']['rowLabels']['eval']['columnFields']['rowStyle']['label'] = $translator->translate('tabletext_rowStyle', 'tl_metamodel_attribute'); $event->getProperty()->setExtra($data); }
/** * Handle the build widget event. * * @param BuildWidgetEvent $event The event. * * @return void */ public static function handleEvent(BuildWidgetEvent $event) { if ($event->getWidget() || TL_MODE !== 'BE') { return; } $builder = new static($event->getEnvironment()); $widget = $builder->buildWidget($event->getProperty(), $event->getModel()); $event->setWidget($widget); }
/** * Update the widget in the event. * * @param BuildWidgetEvent $event The event being emitted. * * @param \Widget $value The widget that has been constructed. * * @return void */ public function update($event, $value) { $event->setWidget($value); }
/** * Generate the widget. * * @param BuildWidgetEvent $event The event. * * @return void */ public function buildLegendTitleWidget(BuildWidgetEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dcasetting' || $event->getProperty()->getName() !== 'legendtitle') { return; } $metaModel = $this->getMetaModelFromModel($event->getModel()); Helper::prepareLanguageAwareWidget($event->getEnvironment(), $event->getProperty(), $metaModel, $event->getEnvironment()->getTranslator()->translate('name_langcode', 'tl_metamodel_dcasetting'), $event->getEnvironment()->getTranslator()->translate('name_value', 'tl_metamodel_dcasetting'), false, deserialize($event->getModel()->getProperty('legendtitle'), true)); }
/** * Set the sub fields for the sub-dca based in the mm_filter selection. * * @param BuildWidgetEvent $event The event. * * @return void */ public function getFiltersParams(BuildWidgetEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getProperty()->getName() !== 'tag_filterparams') { return; } $model = $event->getModel(); $properties = $event->getProperty(); $arrExtra = $properties->getExtra(); $filterId = $model->getProperty('tag_filter'); // Check if we have a filter, if not return. if (empty($filterId)) { return; } // Get the filter with the given id and check if we got it. // If not return. $filterSettings = $this->getServiceContainer()->getFilterFactory()->createCollection($filterId); if ($filterSettings == null) { return; } // Set the subfields. $arrExtra['subfields'] = $filterSettings->getParameterDCA(); $properties->setExtra($arrExtra); }
/** * Build the filter params for the widget. * * @param BuildWidgetEvent $event The event. * * @return void */ public function buildFilterParamsFor(BuildWidgetEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_searchable_pages' || $event->getProperty()->getName() !== 'filterparams') { return; } $model = $event->getModel(); $objFilterSettings = $this->getServiceContainer()->getFilterFactory()->createCollection($model->getProperty('filter')); $extra = $event->getProperty()->getExtra(); $extra['subfields'] = $objFilterSettings->getParameterDCA(); $event->getProperty()->setExtra($extra); }
/** * Update the wizard HTML string in the widget. * * @param BuildWidgetEvent $event The event being emitted. * * @param string $value The HTML for the wizard of the widget. * * @return void */ public function update($event, $value) { $event->getWidget()->xlabel .= $value; }
/** * Build the widget for the MCW. * * @param BuildWidgetEvent $event The event. * * @return void */ public function buildDescriptionWidget(BuildWidgetEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getProperty()->getName() !== 'description') { return; } $this->buildWidget($event); }
/** * Update the wizard HTML string in the widget. * * @param BuildWidgetEvent $event The event being emitted. * * @param string $value The HTML for the wizard of the widget. * * @return void */ public function update($event, $value) { $event->getWidget()->wizard = $value; }
/** * Provide options for template selection. * * @param BuildWidgetEvent $event The event. * * @return void * * @SuppressWarnings(PHPMD.Superglobals) * @SuppressWarnings(PHPMD.CamelCaseVariableName) */ public function buildJumpToWidget(BuildWidgetEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_rendersettings' || $event->getProperty()->getName() !== 'jumpTo') { return; } $model = $event->getModel(); $metaModel = $this->getMetaModelById($model->getProperty('pid')); $translator = $event->getEnvironment()->getTranslator(); $extra = $event->getProperty()->getExtra(); if ($metaModel->isTranslated()) { $arrLanguages = array(); foreach ((array) $metaModel->getAvailableLanguages() as $strLangCode) { $arrLanguages[$strLangCode] = $translator->translate('LNG.' . $strLangCode, 'languages'); } asort($arrLanguages); $extra['minCount'] = count($arrLanguages); $extra['maxCount'] = count($arrLanguages); $extra['columnFields']['langcode']['options'] = $arrLanguages; } else { $extra['minCount'] = 1; $extra['maxCount'] = 1; $extra['columnFields']['langcode']['options'] = array('xx' => $GLOBALS['TL_LANG']['tl_metamodel_rendersettings']['jumpTo_allLanguages']); } $extra['columnFields']['filter']['options'] = self::getFilterSettings($model); $event->getProperty()->setExtra($extra); }