public function editAction()
 {
     $pageId = Request::getParam('pageId');
     if ($pageId === false) {
         $this->doesNotExist();
         return;
     }
     $properties = $this->pages->getProperties($pageId);
     if ($properties === false) {
         $this->doesNotExist();
         return;
     }
     if (!$this->helpers->canAccessPage($pageId, Acl::ACTION_EDIT)) {
         $this->accessDenied();
         return;
     }
     $this->view->assign('pageId', $pageId);
     $pages = DataStructure::pagesArray();
     if (isset($pages[$properties['template-id']])) {
         $this->view->assign('pageDataStructure', $pages[$properties['template-id']]['structure']);
         /*Helpers::dump($pages[$properties['template-id']]['structure']);
           die();*/
     }
     $isGlobalElementsPage = false;
     if ($properties['template-id'] == Pages::GLOBAL_ELEMENTS) {
         $isGlobalElementsPage = true;
     }
     $this->view->assign('isGlobalElementsPage', $isGlobalElementsPage);
 }
 private function getPageStructure($template_id)
 {
     if ($this->pages_structure == null) {
         $this->pages_structure = DataStructure::pagesArray();
     }
     if (isset($this->pages_structure[$template_id]['structure'])) {
         return $this->pages_structure[$template_id]['structure'];
     }
     return null;
 }
 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);
 }
 public function infoAction()
 {
     $id = Request::postParam('pageId');
     $languageId = Request::postParam('languageId');
     // �berpr�fen, ob die Lebenswichtigen Parameter gesetzt sind
     if ($id === null || $languageId === 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;
     }
     // Name des Templates auslesen
     $pages = DataStructure::pagesArray();
     if ($properties['template-id'] === null) {
         $template_name = Translate::get('Link / Redirection');
     } else {
         if (isset($pages[$properties['template-id']])) {
             $template_name = $pages[$properties['template-id']]['name'];
         } else {
             $template_name = Translate::get('Unknown');
         }
     }
     // Infos sammeln
     $result = array(array('description' => Translate::get('Title'), 'value' => $this->pages->getAnyCaption($id, $languageId)), array('description' => Translate::get('Status'), 'value' => $this->getStatusString($properties['status'])), array('description' => Translate::get('Active'), 'value' => $properties['active'] > 0 ? Translate::get('Yes') : Translate::get('No')), array('description' => Translate::get('Visible'), 'value' => $this->pages->isPageVisible($id, $languageId) ? Translate::get('Yes') : Translate::get('No')), array('description' => Translate::get('Last change'), 'value' => $this->getDateString($properties['last-change-date']) . '  (' . Translate::get('by') . ' ' . $this->getUserName($properties['last-change-user-id'], $properties['last-change-user-name']) . ')'), array('description' => Translate::get('Created'), 'value' => $this->getDateString($properties['creation-date']) . '  (' . Translate::get('by') . ' ' . $this->getUserName($properties['creation-user-id'], $properties['creation-user-name']) . ')'), array('description' => Translate::get('Subpages'), 'value' => $this->pages->getSubpageCount($id)), array('description' => Translate::get('Template'), 'value' => $template_name));
     // Infos zur�ckgeben
     $this->success(array('infos' => $result));
 }
 public function getArray($language_id = null, $smarty = null, $parameters = null)
 {
     // Wenn keine Sprache angegeben, Standard-Sprache annehmen
     if ($language_id === null) {
         $language_id = Config::get()->languages->standard;
     }
     // Die "rohen" Daten laden
     $input = $this->getArrayRaw();
     $output = null;
     if ($input !== null) {
         // Seiten-Eigenschaften laden
         $page_id = $this->loaded_page_id;
         $page_properties = $this->pages->getProperties($page_id);
         if ($page_properties === false) {
             return null;
         }
         // Daten-Struktur für diese Seite laden
         $pages_structure = DataStructure::pagesArray();
         if (!isset($pages_structure[$page_properties['template-id']]['structure'])) {
             Helpers::debugError('A page template with the ID "' . $page_properties['template-id'] . '" does not exist!');
             return null;
         }
         $page_structure = $pages_structure[$page_properties['template-id']]['structure'];
         // Der Pfad zu den zugehörigen Dateien (Bilder) einer Seite unterscheiden sich
         // je nachdem, ob die veröffentlichte oder die editierte Version der Seite angefragt wurde
         if ($this->isPublished()) {
             $page_files = $this->pages->getPageFilesPublishedFolder($page_id, $page_properties);
             $page_files_url = $this->pages->getPageFilesPublishedUrl($page_id, $page_properties);
         } else {
             $page_files = $this->pages->getPageFilesEditFolder($page_id, $page_properties);
             $page_files_url = $this->pages->getPageFilesEditUrl($page_id, $page_properties);
         }
         $page_url = $this->pages->getPageUrl($page_id, $language_id, $page_properties);
         // Die Parameter für die Plugins und Modifikatoren zusammenstellen
         // ggf. werden einige oder alle dieser Parameter über die Variable $parameters
         // wieder überschrieben
         if (!is_array($parameters)) {
             $parameters = array();
         }
         $standard_parameters = array('preview' => !$this->isPublished(), 'pageId' => $page_id, 'languageId' => $language_id, 'templateId' => $page_properties['template-id'], 'uniqueId' => $page_properties['unique-id'], 'pageUrl' => $page_url, 'pageFiles' => $page_files, 'pageFilesUrl' => $page_files_url);
         if ($smarty !== null) {
             $standard_parameters['smarty'] = $smarty;
         }
         $parameters = array_merge($standard_parameters, $parameters);
         // Das Ausgabe-Array wird ggf. durch Plugins und
         // höchstwahrscheinlich durch die Modifikatoren geändert
         $output = $input;
         if ($smarty !== null) {
             $this->pages->applyPluginsToDataFields(Plugins::ASSIGN_PAGE_DATA_FIELD, $parameters, $output, $page_properties);
         }
         DataModifiers::applyAll($output, $page_structure, $parameters);
     }
     return $output;
 }
        ?>
 edit-template-id"
                                            data-saved-value="<?php 
        if ($var->properties['template-id'] == null) {
            echo 'NULL';
        } else {
            echo $var->properties['template-id'];
        }
        ?>
"<?php 
    }
    ?>
">
                                    <?php 
    $counter = 0;
    $templates = DataStructure::pagesArray();
    foreach ($templates as $template_id => $template) {
        if ($template_id != Pages::GLOBAL_ELEMENTS) {
            ?>
                                            <option
                                                value="<?php 
            echo $template_id;
            ?>
"<?php 
            if ($template_id == $var->properties['template-id']) {
                echo ' selected';
            }
            ?>
><?php 
            echo $template['name'];
            ?>
 public function getPage($page_id, $language_id, $preview = false)
 {
     // Smarty initialisieren
     $smarty = new Template();
     // Seiten-Infos laden
     $pages = new Pages();
     $page_properties = $pages->getProperties($page_id);
     if ($page_properties === false) {
         Helpers::fatalError('A page with the ID "' . $page_id . '" does not exist!');
     }
     // Wenn die Vorschau-Version der Seite angefordert wurde,
     // überprüfen, ob überhaupt eine editierte Version der Seite existiert,
     // wenn nicht, Vorschau-Modus ignorieren
     if ($preview) {
         if ($page_properties['status'] == Pages::STATUS_PUBLISHED) {
             $preview = false;
         }
     }
     // Seiteneigenes Verzeichnis abhängig von $preview auslesen
     if ($preview) {
         $page_files = $pages->getPageFilesEditFolder($page_id, $page_properties);
         $page_files_url = $pages->getPageFilesEditUrl($page_id, $page_properties);
     } else {
         $page_files = $pages->getPageFilesPublishedFolder($page_id, $page_properties);
         $page_files_url = $pages->getPageFilesPublishedUrl($page_id, $page_properties);
     }
     $page_url = $pages->getPageUrl($page_id, $language_id, $page_properties);
     // Grundlegende Variablen zuweisen, die zwar mit dem Inhalt nichts zu tun haben, aber wichtig sind :-)
     $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);
     $languages = Config::get()->languages->list->getArrayCopy();
     foreach ($languages as $key => $value) {
         $languages[$key]['id'] = $key;
     }
     $smarty->assign('languages', $languages);
     // Seiten-Struktur laden
     $pages_structure = DataStructure::pagesArray();
     if (!isset($pages_structure[$page_properties['template-id']]['structure'])) {
         Helpers::fatalError('A page template with the ID "' . $page_properties['template-id'] . '" does not exist!');
     }
     $page_structure = $pages_structure[$page_properties['template-id']]['structure'];
     // Die folgenden Parameter werden an die Modifikatoren und Plugins übergeben
     $parameters = array('preview' => $preview, 'pageId' => $page_id, 'languageId' => $language_id, 'templateId' => $page_properties['template-id'], 'uniqueId' => $page_properties['unique-id'], 'pageUrl' => $page_url, 'pageFiles' => $page_files, 'pageFilesUrl' => $page_files_url, 'smarty' => $smarty);
     // Seiten-Inhalt laden
     $content_object = new PageContent();
     if (!$content_object->load($page_id, !$preview)) {
         Helpers::fatalError('The content of the page with the ID "' . $page_id . '" could not be loaded!');
     }
     $page_content = $content_object->getArray($language_id, $smarty, $parameters);
     // Globale Elemente laden
     $this->loadGlobalElementsPage($smarty, $language_id);
     $this->assignGlobalElementsToSmarty($smarty, $language_id);
     // Inhalte zuweisen
     foreach ($page_structure as $block_id => $block) {
         if ($block['type'] == 'datablock') {
             $block_data = null;
             if (isset($page_content[$block_id])) {
                 $block_data = $page_content[$block_id];
             }
             $smarty->assign($block_id, $block_data);
         } elseif ($block['type'] == 'container') {
             $container_content = '';
             if (isset($page_content[$block_id])) {
                 if (is_array($page_content[$block_id])) {
                     foreach ($page_content[$block_id] as $container_element_key => $container_element) {
                         $container_content = $container_content . $this->getElement($page_id, $language_id, $container_element['elementId'], $container_element['content'], $preview);
                     }
                 }
             }
             $smarty->assign($block_id, $container_content);
         }
     }
     // registrierte Plugins aufrufen, vielleicht hat ja noch jemand etwas hinzuzufügen :-)
     Plugins::call(Plugins::ASSIGN_PAGE_DATA, $parameters);
     // Smarty-Template für die Template-ID der aktuellen Seite zurückgeben
     $page_template = $pages_structure[$page_properties['template-id']];
     return $smarty->fetch('file:[pages]' . $page_template['template']);
 }
 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;
 }