public function getAction()
 {
     $id = Request::postParam('pageId');
     // �berpr�fen, ob die Lebenswichtigen Parameter gesetzt sind
     if ($id === null) {
         $this->error(self::RESULT_ERROR_BAD_REQUEST);
         return;
     }
     // �berpr�fen, ob die Seite �berhaupt (noch) existiert
     $properties = $this->pages->getProperties($id);
     if ($properties === false) {
         $this->error(self::RESULT_ERROR_DOES_NOT_EXIST);
         return;
     }
     // Nutzerrechte �berpr�fen
     if (!$this->helpers->canAccessPage($id, Acl::ACTION_EDIT)) {
         $this->error(self::RESULT_ERROR_NOT_AUHTORIZED);
         return;
     }
     // Daten der gew�nschten Seite laden (kommt als JSON-encodierter String)
     $data = $this->pages->getData($id);
     if ($data === false) {
         $this->error();
         return;
     }
     $decoded_data = json_decode($data);
     // Die Struktur-Arrays f�r diese Seite und die verf�gbaren Elemente laden
     $pages_structure = DataStructure::pagesArray();
     if (!isset($pages_structure[$properties['template-id']]['structure'])) {
         $this->customError('A template with the ID "' . $properties['template-id'] . '" does not exist.');
         return;
     }
     $page_structure = $pages_structure[$properties['template-id']]['structure'];
     $elements = DataStructure::elementsArray();
     // Plugins aufrufen, die m�glicherweise noch was zu den Parametern der Daten-Felder hinzuzuf�gen haben...
     $parameters = array('pageId' => $id, 'templateId' => $properties['template-id']);
     $this->applyPluginsToDataFieldsParametersPage(Plugins::LOAD_PAGE_DATA_FIELD_PARAMETERS, $parameters, $page_structure);
     $this->applyPluginsToDataFieldsParametersElements(Plugins::LOAD_PAGE_DATA_FIELD_PARAMETERS, $parameters, $elements);
     // Die Ausgabe in ein Array packen
     $return = array('pageContent' => $decoded_data, 'pageStructure' => $page_structure, 'elements' => $elements);
     // Yo.
     $this->success($return);
 }
 protected function getElement($page_id, $language_id, $element_id, $content, $preview)
 {
     $elements = DataStructure::elementsArray();
     if (!isset($elements[$element_id])) {
         Helpers::fatalError('An element with the ID "' . $element_id . '" does not exist!');
     }
     $structure = $elements[$element_id]['structure'];
     $template = $elements[$element_id]['template'];
     $pages = new Pages();
     $smarty = new Template();
     $page_properties = $pages->getProperties($page_id);
     if ($page_properties === false) {
         Helpers::fatalError('The properties of the page with the ID "' . $page_id . '" could not be loaded!');
     }
     if ($preview) {
         $page_files = $pages->getPageEditFolder($page_id, $page_properties) . Pages::PAGE_FILES_FOLDER_NAME . '/';
         $page_files_url = $pages->getPageFilesEditUrl($page_id, $page_properties);
     } else {
         $page_files = $pages->getPagePublishedFolder($page_id, $page_properties) . Pages::PAGE_FILES_FOLDER_NAME . '/';
         $page_files_url = $pages->getPageFilesPublishedUrl($page_id, $page_properties);
     }
     $page_url = $pages->getPageUrl($page_id, $language_id, $page_properties);
     $smarty->assign('baseUrl', Config::get()->baseUrl);
     $smarty->assign('publicUrl', Config::get()->baseUrl . 'system/custom/frontend/public/');
     $smarty->assign('pageUrl', $page_url);
     $smarty->assign('pageId', $page_id);
     $smarty->assign('languageId', $language_id);
     $smarty->assign('templateId', $page_properties['template-id']);
     $smarty->assign('uniqueId', $page_properties['unique-id']);
     $smarty->assign('pageFiles', $page_files);
     $smarty->assign('pageFilesUrl', $page_files_url);
     if (is_array($content)) {
         foreach ($content as $key => $value) {
             $smarty->assign($key, $value);
         }
     }
     if ($page_properties['template-id'] != Pages::GLOBAL_ELEMENTS) {
         $this->assignGlobalElementsToSmarty($smarty, $language_id);
     }
     Plugins::call(Plugins::ASSIGN_PAGE_ELEMENT_DATA, array('preview' => $preview, 'pageId' => $page_id, 'languageId' => $language_id, 'templateId' => $page_properties['template-id'], 'uniqueId' => $page_properties['unique-id'], 'elementId' => $element_id, 'pageUrl' => $page_url, 'pageFiles' => $page_files, 'pageFilesUrl' => $page_files_url, 'smarty' => $smarty));
     return $smarty->fetch('file:[elements]' . $template);
 }
 public function walkElementContainer(&$data, $structure, $parameters)
 {
     if (is_array($data)) {
         if (count($data) > 0) {
             $elements_structure = DataStructure::elementsArray();
             for ($element_index = 0; $element_index < count($data); $element_index++) {
                 $element_data =& $data[$element_index]['content'];
                 $element_id = $data[$element_index]['elementId'];
                 $element_parameters = array('elementId' => $element_id, 'elementIndex' => $element_index);
                 $element_parameters = array_merge($parameters, $element_parameters);
                 if (!isset($elements_structure[$element_id])) {
                     Helpers::fatalError('DataModifier: A element with the ID [' . $element_id . '] does not exist.');
                 }
                 $element_structure = $elements_structure[$element_id]['structure'];
                 $this->modifyFields($element_data, $element_structure, $element_parameters);
                 $this->walkFields($element_data, $element_structure, $element_parameters);
             }
         }
     }
 }
示例#4
0
 public function applyPluginsToDataFields($hook, $parameters, &$data = null, $properties = null)
 {
     if ($properties === null || $properties === false) {
         return false;
     }
     $pageStructures = DataStructure::pagesArray();
     if (!isset($pageStructures[$properties['template-id']]['structure'])) {
         return false;
     }
     $page = $pageStructures[$properties['template-id']]['structure'];
     $elements = DataStructure::elementsArray();
     $languages = Config::get()->languages->list;
     if (!is_array($parameters)) {
         $parameters = array();
     }
     foreach ($page as $block_id => $block) {
         // Datenblock
         if ($block['type'] == 'datablock') {
             if (isset($data[$block_id])) {
                 if (isset($block['fields'])) {
                     foreach ($block['fields'] as $field) {
                         if (isset($data[$block_id][$field['id']])) {
                             $field_parameters = array('blockId' => $block_id);
                             $field_parameters = array_merge($parameters, $field_parameters);
                             $this->applyPluginsToDataField($hook, $field_parameters, $field, $data[$block_id][$field['id']], $languages);
                         }
                     }
                 }
             }
         }
         // Container
         if ($block['type'] == 'container') {
             if (isset($data[$block_id])) {
                 if (is_array($data[$block_id])) {
                     foreach ($data[$block_id] as $container_element_key => $container_element) {
                         if (isset($data[$block_id][$container_element_key]['content'])) {
                             if (isset($elements[$data[$block_id][$container_element_key]['elementId']]['structure'])) {
                                 $element_structure = $elements[$data[$block_id][$container_element_key]['elementId']]['structure'];
                                 foreach ($element_structure as $field) {
                                     if (isset($data[$block_id][$container_element_key]['content'][$field['id']])) {
                                         $field_parameters = array('blockId' => $block_id, 'elementId' => $data[$block_id][$container_element_key]['elementId']);
                                         $field_parameters = array_merge($parameters, $field_parameters);
                                         $this->applyPluginsToDataField($hook, $field_parameters, $field, $data[$block_id][$container_element_key]['content'][$field['id']], $languages);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return true;
 }