/** * backend list display of fe-filter * @param array * @param string * @param object * @param string * @param string * @return string */ public function infoCallback($arrRow, $strLabel, $objDC, $imageAttribute, $strImage) { $this->objectsFromUrl($objDC); $objAttribute = $this->objMetaModel->getAttributeById($arrRow['attr_id']); if ($objAttribute) { $strAttrName = $objAttribute->getName(); $strAttrColName = $objAttribute->getColName(); } else { $strAttrName = $arrRow['attr_id']; $strAttrColName = $arrRow['attr_id']; } if (!empty($arrRow['comment'])) { $arrRow['comment'] = sprintf($GLOBALS['TL_LANG']['tl_metamodel_filtersetting']['typedesc']['_comment_'], specialchars($arrRow['comment'])); } $strReturn = sprintf($GLOBALS['TL_LANG']['tl_metamodel_filtersetting']['typedesc']['fefilter'], '<a href="' . $this->addToUrl('act=edit&id=' . $arrRow['id']) . '">' . $strImage . '</a>', $strLabel, $arrRow['comment'], $strAttrName, $arrRow['urlparam'] ? $arrRow['urlparam'] : $strAttrColName); return $strReturn; }
/** * {@inheritdoc} */ public static function collectAttributeSettings(IMetaModel $objMetaModel, $objSetting) { if ($objSetting->get('id')) { $objViewAttributes = Database::getInstance()->prepare('SELECT * FROM tl_metamodel_rendersetting WHERE pid=? AND enabled=1 ORDER BY sorting')->execute($objSetting->get('id')); while ($objViewAttributes->next()) { $objAttr = $objMetaModel->getAttributeById($objViewAttributes->attr_id); if ($objAttr) { $objAttrSetting = $objSetting->getSetting($objAttr->getColName()); if (!$objAttrSetting) { $objAttrSetting = $objAttr->getDefaultRenderSettings(); } foreach ($objViewAttributes->row() as $strKey => $varValue) { if ($varValue) { $objAttrSetting->set($strKey, deserialize($varValue)); } } $objSetting->setSetting($objAttr->getColName(), $objAttrSetting); } } } }
/** * Retrieves a palette from the database and populates the passed DCA 'fields' section with the correct settings. * * @param int $intPaletteId the id of the palette to retrieve * * @param IMetaModel $objMetaModel the MetaModel for which the palette shall be built. * * @param array $arrDCA the DCA that shall get populated (used by reference). * * @return string the palette string. */ protected function getPaletteAndFields($intPaletteId, $objMetaModel, &$arrDCA) { $strPalette = ''; $objDCASettings = Database::getInstance()->prepare('SELECT * FROM tl_metamodel_dcasetting WHERE pid=? AND published = 1 ORDER by sorting ASC')->execute($intPaletteId); $arrMyDCA = array(); while ($objDCASettings->next()) { switch ($objDCASettings->dcatype) { case 'attribute': $objAttribute = $objMetaModel->getAttributeById($objDCASettings->attr_id); if ($objAttribute) { // Get basics. $arrFieldSetting = $objDCASettings->row(); // Overwrite submitOnChange if we have a selector. if ($this->isSelector($objDCASettings->id)) { $arrFieldSetting = array_replace_recursive($objDCASettings->row(), array('submitOnChange' => true)); } $arrMyDCA = array_replace_recursive($arrMyDCA, $objAttribute->getItemDCA($arrFieldSetting)); // Check if we have a subpalette. If false, add to normal palettes. if ($objDCASettings->subpalette == 0) { $strPalette .= (strlen($strPalette) > 0 ? ',' : '') . $objAttribute->getColName(); } else { $strSelector = $this->getColNameByDcaSettingId($objMetaModel, $objDCASettings->subpalette); // This should never ever be true. If so, we have dead entries in the database. if ($strSelector === false) { break; } $arrMyDCA['metasubpalettes'][$strSelector][] = $objAttribute->getColName(); } } break; case 'legend': $arrLegend = deserialize($objDCASettings->legendtitle); if (is_array($arrLegend)) { // try to use the language string from the array. $strLegend = $arrLegend[$GLOBALS['TL_LANGUAGE']]; if (!$strLegend) { // use the fallback $strLegend = $arrLegend[$objMetaModel->getFallbackLanguage()]; if (!$strLegend) { // last resort, simply "legend" $strLegend = 'legend'; } } } else { $strLegend = $objDCASettings->legendtitle ? $objDCASettings->legendtitle : 'legend'; } $legendName = standardize($strLegend) . '_legend'; $GLOBALS['TL_LANG'][$objMetaModel->getTableName()][$legendName] = $strLegend; $strPalette .= (strlen($strPalette) > 0 ? ';' : '') . '{' . $legendName . ($objDCASettings->legendhide ? ':hide' : '') . '}'; break; default: throw new Exception("Unknown palette rendering mode " . $objDCASettings->dcatype); } } $arrDCA = array_replace_recursive($arrDCA, $arrMyDCA); return $strPalette; }