contao-community-alliance / meta-palettes

Dynamic configured palettes for contao.
6 stars 8 forks source link

Add getMetaPaletteOfPalette #13

Closed dmolineus closed 8 years ago

dmolineus commented 11 years ago

Sometimes it is useful to get the meta array of an existing Contao palette. So it could be modified by a meta palette.

public function myPalettesCallback()
{
    $GLOBALS['TL_DCA']['tl_layout']['metapalettes']['__base__'] = $this->getMetaPaletteOfPalette('tl_layout');
    $GLOBALS['TL_DCA']['tl_layout']['metapalettes']['default extends __base__']  = $arrModification;
}

I use following implementation at the moment:

public function getMetaPaletteOfPalette($table, $name='default', $type='palettes')
{
    $palette     = $GLOBALS['TL_DCA'][$table][$palettes][$name];
    $metaPalette = array();
    $legends     = explode(';', $palette);

    foreach($legends as $legend)
    {
        $fields = explode(',', $legend);

        preg_match('/\{(.*)_legend(:hide)?\}/', $fields[0], $matches);

        if(isset($matches[2]))
        {
            $fields[0] = $matches[2];
        }
        else
        {
            array_shift($fields);
        }

        $metaPalette[$matches[1]] = $fields;
    }

    return $metaPalette;
}