/**
  * 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&amp;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);
             }
         }
     }
 }
예제 #3
0
 /**
  * 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;
 }