コード例 #1
0
 /**
  * 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());
 }
コード例 #2
0
 /**
  * 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);
 }
コード例 #3
0
ファイル: WidgetBuilder.php プロジェクト: zonky2/dc-general
 /**
  * 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);
 }
コード例 #4
0
 /**
  * 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);
 }
コード例 #5
0
ファイル: Subscriber.php プロジェクト: zonky2/core
 /**
  * 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));
 }
コード例 #6
0
 /**
  * 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);
 }
コード例 #7
0
ファイル: Subscriber.php プロジェクト: metamodels/core
 /**
  * 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;
 }
コード例 #9
0
ファイル: Subscriber.php プロジェクト: zonky2/core
 /**
  * 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);
 }
コード例 #10
0
 /**
  * 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;
 }
コード例 #11
0
ファイル: Subscriber.php プロジェクト: metamodels/core
 /**
  * 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);
 }