Overview

Namespaces

  • DcGeneral
    • Clipboard
    • Contao
      • Callback
      • Compatibility
      • DataDefinition
        • Definition
      • Dca
        • Builder
          • Legacy
        • Definition
        • Palette
        • Populator
      • Event
      • View
        • Contao2BackendView
          • Event
    • Controller
    • Data
    • DataDefinition
      • Builder
      • Definition
        • Properties
        • View
          • Panel
      • ModelRelationship
      • Palette
        • Builder
          • Event
        • Condition
          • Palette
          • Property
    • EnvironmentPopulator
    • Event
    • Exception
    • Factory
      • Event
    • Panel
    • View
      • Event

Classes

  • Ajax
  • Ajax2X
  • Ajax3X
  • DefaultController

Interfaces

  • ControllerInterface
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  1: <?php
  2: /**
  3:  * PHP version 5
  4:  * @package    generalDriver
  5:  * @author     Christian Schiffler <c.schiffler@cyberspectrum.de>
  6:  * @author     Stefan Heimes <stefan_heimes@hotmail.com>
  7:  * @author     Tristan Lins <tristan.lins@bit3.de>
  8:  * @copyright  The MetaModels team.
  9:  * @license    LGPL.
 10:  * @filesource
 11:  */
 12: 
 13: namespace DcGeneral\Controller;
 14: 
 15: use DcGeneral\DataContainerInterface;
 16: 
 17: /**
 18:  * Class GeneralAjax - General purpose Ajax handler for "executePostActions" in Contao 3.X as we can not use the default
 19:  * Contao handling.
 20:  *
 21:  * @author     Christian Schiffler <c.schiffler@cyberspectrum.de>
 22:  * @copyright  The MetaModels team.
 23:  * @license    LGPL.
 24:  */
 25: class Ajax3X extends Ajax
 26: {
 27:     public function __construct()
 28:     {
 29:         parent::__construct();
 30:     }
 31: 
 32:     protected function loadPagetree(DataContainerInterface $objDc)
 33:     {
 34:         $arrData['strTable'] = $objDc->getTable();
 35:         $arrData['id'] = self::getAjaxName() ?: $objDc->getId();
 36:         $arrData['name'] = self::getPost('name');
 37: 
 38:         /**
 39:          * @var \PageSelector $objWidget
 40:          */
 41:         $objWidget = new $GLOBALS['BE_FFL']['pageSelector']($arrData, $objDc);
 42:         echo $objWidget->generateAjax(self::getAjaxId(), self::getPost('field'), intval(self::getPost('level')));
 43:         exit;
 44:     }
 45: 
 46:     protected function loadFiletree(DataContainerInterface $objDc)
 47:     {
 48:         $arrData['strTable'] = $objDc->getTable();
 49:         $arrData['id'] = self::getAjaxName() ?: $objDc->getId();
 50:         $arrData['name'] = self::getPost('name');
 51: 
 52:         /**
 53:          * @var \FileSelector $objWidget
 54:          */
 55:         $objWidget = new $GLOBALS['BE_FFL']['fileSelector']($arrData, $objDc);
 56: 
 57:         // Load a particular node
 58:         if (self::getPost('folder', true) != '')
 59:         {
 60:             echo $objWidget->generateAjax(self::getPost('folder', true), self::getPost('field'), intval(self::getPost('level')));
 61:         }
 62:         else
 63:         {
 64:             echo $objWidget->generate();
 65:         }
 66:         exit;
 67:     }
 68: 
 69:     protected function getTreeValue($strType)
 70:     {
 71:         $varValue = self::getPost('value');
 72:         // Convert the selected values
 73:         if ($varValue != '')
 74:         {
 75:             $varValue = trimsplit("\t", $varValue);
 76: 
 77:             // Automatically add resources to the DBAFS
 78:             if ($strType == 'file')
 79:             {
 80:                 foreach ($varValue as $k=>$v)
 81:                 {
 82:                     if(version_compare(VERSION, '3.2', '<'))
 83:                     {
 84:                         $varValue[$k] = \Dbafs::addResource($v)->id;
 85:                     }
 86:                     else
 87:                     {
 88:                         $varValue[$k] = \Dbafs::addResource($v)->uuid;
 89:                     }
 90:                 }
 91:             }
 92: 
 93:             $varValue = serialize($varValue);
 94:         }
 95: 
 96:         return $varValue;
 97:     }
 98: 
 99:     protected function reloadTree($strType, DataContainerInterface $objDc)
100:     {
101:         $intId        = self::getGet('id');
102:         $strFieldName = self::getPost('name');
103:         $strField     =preg_replace('/(.*)_[0-9a-zA-Z]+$/', '$1', $strFieldName);
104: 
105:         // Handle the keys in "edit multiple" mode
106:         if (self::getGet('act') == 'editAll')
107:         {
108:             // TODO: change here when implementing editAll
109:             $intId = preg_replace('/.*_([0-9a-zA-Z]+)$/', '$1', $strField);
110:             $strField = preg_replace('/(.*)_[0-9a-zA-Z]+$/', '$1', $strField);
111:         }
112: 
113:         if(!is_null($intId))
114:         {
115:             $objDataProvider = $objDc->getDataProvider();
116:             $objModel        = $objDataProvider->fetch($objDataProvider->getEmptyConfig()->setId($intId));
117: 
118:             if (is_null($objModel))
119:             {
120:                 $this->log('A record with the ID "' . $intId . '" does not exist in "' . $objDc->getTable() . '"', 'Ajax executePostActions()', TL_ERROR);
121:                 header('HTTP/1.1 400 Bad Request');
122:                 die('Bad Request');
123:             }
124:         }
125: 
126:         $varValue = $this->getTreeValue($strType);
127:         $strKey = $strType . 'Tree';
128: 
129:         // Set the new value
130:         if (!is_null($objModel))
131:         {
132:             $objModel->setProperty($strField, $varValue);
133:             $arrAttribs['activeRecord'] = $objModel;
134:         }
135:         else
136:         {
137:             $arrAttribs['activeRecord'] = null;
138:         }
139: 
140:         $arrAttribs['id'] = $strFieldName;
141:         $arrAttribs['name'] = $strFieldName;
142:         $arrAttribs['value'] = $varValue;
143:         $arrAttribs['strTable'] = $objDc->getTable();
144:         $arrAttribs['strField'] = $strField;
145: 
146:         /**
147:          * @var \Widget $objWidget
148:          */
149:         $objWidget = new $GLOBALS['BE_FFL'][$strKey]($arrAttribs);
150:         echo $objWidget->generate();
151: 
152:         exit;
153:     }
154: 
155:     protected function reloadPagetree(DataContainerInterface $objDc)
156:     {
157:         $this->reloadTree('page', $objDc);
158:     }
159: 
160:     protected function reloadFiletree(DataContainerInterface $objDc)
161:     {
162:         $this->reloadTree('file', $objDc);
163:     }
164: }
165: 
contao-community-alliance/dc-general API documentation generated by ApiGen 2.8.0