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); } } } }
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; }