@ B$pu @ u;t @ 덚*t @ iB0Hw3`s ` YNLߠr $3E跰q J*˒`p /O L`ߗ KjyP5 N`pp3 vr1 v]zE՞ ݗ ,o`ܗ xxع @ 8Dž!ۗ @ v3VIs ڗ @ V.Isؗ @ E̗:מ @ ֗:؞ ` |1 0ٞ + ח ?H7@K k[=qHڞ \kڞ &eVͱp f 4w8D M$S ` 6Ϡ@ P* V GNӈޝ P* z\<`ӗ @ tZŠҗ cPٝ ` _Gc ї 5L/ F=gd5. M 0|aҝ \ 1|aН .a1|a؎ QAQ - s^-dh Ox.jш Z\+ *7٧P* ap WP) %&i,Š( JNσ' ewaJv& mnpO & t}?% [2DɊH# td@w $B J +@" 2Xyr F# +BHΠ 0 1Vp ` [nKs 6 tguo +0|a T |( @ ] Vt4 ` ]g$'-pS h s07ѠU ob4 3J0f b4 of O 8(> l Rqy@k ']]j 1ﴼXB T#T x* nQo/`ޛ * muYܛ @ C@=8 * ǐ"؛ ` jQo/כ ` P vxO!g ` cv[WҜ ` 4Eɕ0f ` 8 @;%҆h ` r [ȶ~qՀ ` 5nøH ` }ֶø ` e X; ` jk;@ ` &E5c ` iA; ` & ;ȝ ` *?X|b ` A61"Pa ` Awsҹ * OWp * B yY`_ bp + PpP arrFieldDef,$strName); } // caption field if(in_array('caption', $options)) { $strName = $strField.'_caption'; $arrFieldDef = $GLOBALS['TL_DCA']['tl_content']['fields']['caption']; $arrFieldDef['eval']['tl_class'] = 'w50'; $arrFieldDef['saveDataAs'] = 'varchar'; $this->prepareChildAttribute($arrFieldDef,$strName); } return $strBuffer; } /** * Render the attribute and return html * @param string * @param mixed * @param object * @param object * @return array */ public function renderCallback($strField,$varValue,$objTemplate,$objAttribute) { $varValue = \Contao\StringUtil::deserialize($varValue); $objOrig = $this->getActiveRecord(); $objActiveRecord = new \Contao\ContentModel(); $objActiveRecord->mergeRow( $objOrig->row() ); $objActiveRecord->__set('strPk',$objActiveRecord->id); $objActiveRecord->singleSRC = \Contao\StringUtil::uuidToBin($varValue); $objActiveRecord->customTpl = ''; $objActiveRecord->autogrid = 0; $objActiveRecord->cssID = $objAttribute->get('cssID'); $objActiveRecord->isCustomElement = true; $blnOverwriteMeta = false; // laod option values $arrOptionValues = array_filter( $this->loadOptionValues($strField) ); foreach($arrOptionValues as $k => $v) { $objActiveRecord->{$k} = $v; // meta data fields if( \in_array($k, array('title','alt','caption','imageUrl') ) ) { $blnOverwriteMeta = true; } } $objActiveRecord->overwriteMeta = $blnOverwriteMeta; $objActiveRecord->imageTitle = $arrOptionValues['title'] ?? ''; // a non ce attribute template is coming in if( \property_exists($this,'isCustomTemplate') && $this->isCustomTemplate) { $objActiveRecord->customTpl = $objAttribute->get('template'); } $objMyAttribute = new \Contao\ContentImage($objActiveRecord); $objMyAttribute->customTpl = ''; $objMyAttribute->type = 'image'; $objMyAttribute->overwriteMeta = $blnOverwriteMeta; $objActiveRecord->headline = ''; $objMyAttribute->imageUrl = $arrOptionValues['imageUrl'] ?? ''; $objMyAttribute->href = $arrOptionValues['imageUrl'] ?? ''; $objMyAttribute->fullsize = $arrOptionValues['fullsize'] ?? ''; $objMyAttribute->caption = $arrOptionValues['caption'] ?? ''; $options = \Contao\StringUtil::deserialize($this->get('options')); if(!empty($options) && is_array($options) && !empty($arrOptionValues['size'])) { $arrSize = array_filter(\Contao\StringUtil::deserialize($arrOptionValues['size']),'strlen'); if(count($arrSize) > 0) { $objMyAttribute->size = $arrOptionValues['size']; } } if(!$objMyAttribute->size) { $objMyAttribute->size = $this->get('size'); } $objMyAttribute->space = array(); // pass to template $objTemplate->activeRecord = $objActiveRecord; $objTemplate->element = $objMyAttribute; // generate the attribute and place html in attribute template $objTemplate->value = \Contao\Controller::replaceInsertTags( $objMyAttribute->generate() ?? '' ); // bypass the CE attribute template when a Contao template is in use if( \property_exists($objAttribute,'isCustomTemplate') && $objAttribute->isCustomTemplate) { return $objTemplate->value; } return $objTemplate->parse(); } /** * Generate wildcard value * @param mixed * @param object DatabaseResult * @return string */ public function processWildcardValue($varValue,$objAttribute) { if($objAttribute->get('type') != 'image' || empty($varValue)) { return $varValue; } $size = $GLOBALS['PCT_CUSTOMELEMENTS']['defaultWildcardImageSize']; $objFile = \Contao\FilesModel::findByPk($varValue); $image = ControllerHelper::callstatic('getImage',array($objFile->path,$size[0],$size[1],$size[2])); if(strlen($image) < 1) { return ''; } $image = \Contao\Image::getHtml($image); return $image; } /** * Return the field definition for an options field * @param string * @return array */ public function getOptionFieldDefinition($strOption) { $arrReturn = $GLOBALS['TL_DCA']['tl_content']['fields'][$strOption] ?? array(); $arrReturn['eval']['tl_class'] = 'w50'; $arrReturn['saveDataAs'] = 'varchar'; if( isset($arrReturn['eval']['datepicker']) || isset($arrReturn['eval']['dcaPicker']) ) { $arrReturn['eval']['tl_class'] .= ' wizard'; } return $arrReturn; } }