public function __construct($arrAttributes = null)
 {
     parent::__construct($arrAttributes);
     \Controller::loadLanguageFile(\Config::get('fieldpalette_table'));
     \Controller::loadLanguageFile($this->strTable);
     $this->import('Database');
     $this->arrDca = \HeimrichHannot\FieldPalette\FieldPalette::getDca($this->strTable, $this->strName);
     $this->viewMode = $this->arrDca['list']['viewMode'] ?: 0;
 }
 public function setTable($strTable, $insertID, $arrSet, DataContainer $dc)
 {
     $strFieldPalette = \HeimrichHannot\FieldPalette\FieldPalette::getPaletteFromRequest();
     $objModel = \HeimrichHannot\FieldPalette\FieldPaletteModel::findByPk($insertID);
     if (!\HeimrichHannot\FieldPalette\FieldPalette::isActive(\Input::get('ptable'), $strFieldPalette)) {
         $objModel->delete();
         $this->log('Fieldpalette "' . $insertID . '" not available within FieldpaletteRegistry, Model deleted.', __METHOD__, TL_ERROR);
         $this->redirect('contao/main.php?act=error');
     }
     // if are within nested fieldpalettes set parent item tstamp
     if ($arrSet['ptable'] == 'tl_fieldpalette') {
         $objParent = \HeimrichHannot\FieldPalette\FieldPaletteModel::findByPk($objModel->pid);
         if ($objParent !== null) {
             $objParent->tstamp = time();
             $objParent->save();
         }
     }
     // set fieldpalette field
     $objModel->pfield = $strFieldPalette;
     $objModel->save();
 }
 public static function loadDynamicPaletteByParentTable($strAct, $strTable, &$dc)
 {
     switch ($strAct) {
         case 'create':
             $strParentTable = FieldPalette::getParentTableFromRequest();
             $strPalette = FieldPalette::getPaletteFromRequest();
             break;
         case 'cut':
         case 'edit':
         case 'show':
         case 'delete':
         case 'toggle':
             $id = strlen(\Input::get('id')) ? \Input::get('id') : CURRENT_ID;
             $objModel = \HeimrichHannot\FieldPalette\FieldPaletteModel::findByPk($id);
             if ($objModel === null) {
                 break;
             }
             $strParentTable = FieldPalette::getParentTable($objModel, $objModel->id);
             $strPalette = $objModel->pfield;
             // set back link from request
             if (\Input::get('popup') && \Input::get('popupReferer')) {
                 $arrSession = \Session::getInstance()->getData();
                 if (class_exists('\\Contao\\StringUtil')) {
                     $arrSession['popupReferer'][TL_REFERER_ID]['current'] = \StringUtil::decodeEntities(rawurldecode(\Input::get('popupReferer')));
                 } else {
                     $arrSession['popupReferer'][TL_REFERER_ID]['current'] = \String::decodeEntities(rawurldecode(\Input::get('popupReferer')));
                 }
                 \Session::getInstance()->setData($arrSession);
             }
             break;
     }
     if (!$strParentTable || !$strPalette) {
         return false;
     }
     if ($strTable !== $strParentTable) {
         \Controller::loadDataContainer($strParentTable);
     }
     static::registerFieldPalette($dc, $strParentTable, $strTable, $strPalette);
 }
 protected function prepareParameter($act)
 {
     $arrParameters = array('do' => $this->do, 'ptable' => $this->ptable, 'table' => $this->table, 'act' => $this->act, 'pid' => $this->pid, 'id' => $this->id, $this->fieldpaletteKey => $this->fieldpalette, 'popup' => $this->popup);
     $arrAllowed = array_keys($arrParameters);
     switch ($act) {
         case 'create':
             $arrAllowed = array('do', 'ptable', 'table', 'act', 'pid', 'fieldpalette', 'popup', 'popupReferer');
             // nested fieldpalettes
             if ($this->ptable == \Config::get('fieldpalette_table') && ($objModel = FieldPaletteModel::findByPk($this->pid)) !== null) {
                 $arrParameters['table'] = FieldPalette::getParentTable($objModel, $objModel->id);
             }
             break;
         case 'toggle':
             $arrAllowed = array('do', 'table', 'state', 'tid', 'id');
             $arrParameters['id'] = $this->pid;
             break;
         case 'edit':
             $arrAllowed = array('do', 'table', 'act', 'id', 'popup', 'popupReferer');
             break;
         case 'copy':
             $arrAllowed = array('do', 'table', 'act', 'id', 'popup', 'popupReferer');
             break;
         case 'show':
             $arrAllowed = array('do', 'table', 'act', 'id', 'popup', 'popupReferer');
             break;
         case 'delete':
             $arrAllowed = array('do', 'table', 'act', 'id');
             break;
     }
     $arrParameters = array_intersect_key($arrParameters, array_flip($arrAllowed));
     return $arrParameters;
 }