/**
  *
  */
 function render($boxes, $page_content)
 {
     if ($this->view_mode === NULL) {
         //apply theme default
         $theme = xTheme::get_default();
         return eval($theme->get_view_mode_procedure('area'));
     } else {
         //apply specified view mode
         $view_mode = xViewMode::get($this->view_mode);
         return eval($view_mode->display_procedure);
     }
 }
 function render()
 {
     $theme = xTheme::get_default();
     //retrieve content
     $page_content = xanth_invoke_mono_hook(MONO_HOOK_PAGE_CONTENT_CREATE, $this->xanthpath->base_path, array($this->xanthpath->resource_id));
     if ($page_content === NULL) {
         $page_content = new xPageContent('Page not found', "<b>Page not found</b>");
     }
     $logs = '';
     $log_entries = xanth_get_screen_log();
     //display log messages
     if (!empty($log_entries)) {
         $logs .= '<table border="1" width="90%"><tr><td><ul>';
         foreach ($log_entries as $entry) {
             $logs .= '<li>' . $entry->level . ' ' . $entry->component . ' ' . htmlspecialchars($entry->message) . ' ' . $entry->filename . '@' . $entry->line . '</li>';
         }
         $logs .= '</ul></td></tr></table>' . "\n";
     }
     $page_content->body = $logs . $page_content->body;
     //retrieve areas
     $areas = xThemeArea::find_all();
     $this->areas = array();
     $this->boxes = array();
     //retrieve innermost elements
     foreach ($areas as $area) {
         $xboxes = xBox::find($area->name);
         $this->boxes[$area->name] = array();
         foreach ($xboxes as $xbox) {
             //retrieve box view
             $this->boxes[$area->name][] = $xbox->render();
         }
         //Generate area view (not using view mode)
         $this->areas[$area->name] = $area->render($this->boxes[$area->name], $page_content->body);
     }
     //construct metadata array
     $this->header = array();
     if (empty($page_content->description)) {
         $this->header['description'] = xSettings::get('site_description');
     } else {
         $this->header['description'] = $page_content->description;
     }
     if (empty($page_content->keywords)) {
         $this->header['keywords'] = xSettings::get('site_keywords');
     } else {
         $this->header['keywords'] = $page_content->keywords;
     }
     //retrieve the full page
     $this->header['title'] = xSettings::get('site_name') . ' | ' . $page_content->title;
     $page_ready_to_print = eval($theme->get_view_mode_procedure('page'));
     return $page_ready_to_print;
 }
 /**
  *
  */
 function get_default()
 {
     global $default_theme;
     if (!isset($default_theme)) {
         $default_theme = xTheme::get(xSettings::get('site_theme'));
     }
     return $default_theme;
 }
 /**
  *
  */
 function render()
 {
     //retrieve view mode
     $type = xEntryType::get($this->type);
     if ($type->view_mode_id === NULL) {
         //apply theme default
         $theme = xTheme::get_default();
         return eval($theme->get_view_mode_procedure('entry'));
     } else {
         //apply specified view mode
         $view_mode = xViewMode::get($type->view_mode_id);
         return eval($view_mode->display_procedure);
     }
 }
function xanth_theme_admin_theme_edit($hook_primary_id, $hook_secondary_id, $arguments)
{
    if (!xUser::check_current_user_access('manage theme')) {
        return xSpecialPage::access_denied();
    }
    if (empty($arguments[0])) {
        new xPageContent('Edit Theme', 'Wich theme should edit?');
    }
    $form = new xForm('?p=admin/theme/edit//' . $arguments[0]);
    $form->elements[] = new xFormElementHidden('theme_name', 'Theme Name', $arguments[0], FALSE, new xInputValidatorTextNameId(32));
    //iterate every registered visual element
    $edit_theme = xTheme::get($arguments[0]);
    $visual_elements = xVisualElement::find_all();
    foreach ($visual_elements as $visual_element) {
        //now iterate every registered view mode
        $view_modes = xViewMode::find_by_element($visual_element->name);
        $options = array();
        $default = '';
        foreach ($view_modes as $view_mode) {
            $options[$view_mode->name] = $view_mode->id;
            if (isset($edit_theme->themed_elements[$visual_element->name])) {
                $default = $edit_theme->themed_elements[$visual_element->name];
            } elseif ($view_mode->default_for_element) {
                $default = $view_mode->id;
            }
        }
        $form->elements[] = new xFormElementHidden('visual_elements', 'Visual elements', $visual_element->name, TRUE, new xInputValidatorTextNameId(32));
        $form->elements[] = new xFormElementOptions('view_mode_' . $visual_element->name, 'View Mode for v.e. ' . $visual_element->name, '', $default, $options, FALSE, FALSE, new xInputValidatorInteger());
    }
    $form->elements[] = new xFormSubmit('submit', 'submit');
    $ret = $form->validate_input();
    if (isset($ret->valid_data['submit'])) {
        if (empty($ret->errors)) {
            //process form
            $themed_elements = array();
            foreach ($ret->valid_data['visual_elements'] as $vename) {
                $themed_elements[$vename] = $ret->valid_data['view_mode_' . $vename];
            }
            $theme = new xTheme($ret->valid_data['theme_name'], $themed_elements);
            $theme->update();
            return new xPageContent('Edit Theme', 'Theme Edited');
        } else {
            foreach ($ret->errors as $error) {
                xanth_log(LOG_LEVEL_USER_MESSAGE, $error);
            }
        }
    }
    return new xPageContent('Edit Theme', $form->render());
}
 /**
  *
  */
 function render()
 {
     $theme = xTheme::get_default();
     return eval($theme->get_view_mode_procedure('box'));
 }