xtemplate.theme 4.75 KB
Newer Older
Dries's avatar
 
Dries committed
1 2
<?php

Dries's avatar
 
Dries committed
3 4 5 6 7 8 9 10
function xtemplate_settings() {
  $output = form_textarea("Message on front page", "xtemplate_message", variable_get("xtemplate_message", "edit message"), 70, 6, "This text will be displayed on the front page.  It can be used to display a mission statement, announcement or site description..");
  $output .= form_textarea("Primary links", "xtemplate_primary_links", variable_get("xtemplate_primary_links", l("edit primary links", "admin/system/themes/settings")), 70, 6, "The primary links.");
  $output .= form_textarea("Secondary links", "xtemplate_secondary_links", variable_get("xtemplate_secondary_links", l("edit secondary links", "admin/system/themes/settings")), 70, 6, "The secondary links.");
  $output .= form_select("Search box", "xtemplate_search_box", variable_get("xtemplate_search_box", 0), array(t("Disabled"), t("Enabled")), "Show a search box in the upper right corner.");
  return $output;
}

Dries's avatar
 
Dries committed
11 12 13 14
class Theme_xtemplate extends BaseTheme {

  function system($field) {
    $system["name"] = "xtemplate";
Dries's avatar
 
Dries committed
15
    $system["description"] = "a template driven theme";
Dries's avatar
 
Dries committed
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

    return $system[$field];
  }

  function Theme_xtemplate() {
    include_once("themes/xtemplate/xtemplate.inc");

    $this->template = new XTemplate("themes/xtemplate/xtemplate.xtmpl");
    $this->template->SetNullBlock(" ");  // "" doesnt work!
  }

  function node($node, $main) {

    $this->template->assign(array (
       "title"     => ucfirst($node->title),
       "author"    => format_name($node),
       "date"      => format_date($node->created),
       "content"   => ($main && $node->teaser) ?
                      check_output($node->teaser) :
                      check_output($node->body)));

Dries's avatar
 
Dries committed
37 38 39 40
    if ($taxonomy = taxonomy_link("taxonomy terms", $node)) {
      $this->template->assign("taxonomy", $this->links($taxonomy));
    }

Dries's avatar
 
Dries committed
41 42 43
    if ($links = link_node($node, $main)) {
      $this->template->assign("links", $this->links($links));
    }
Dries's avatar
 
Dries committed
44

Dries's avatar
 
Dries committed
45 46 47
    $this->template->parse("node");
    print $this->template->text("node");
    $this->template->reset("node");
Dries's avatar
 
Dries committed
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
  }

  function comment($comment, $link = 0) {
    $this->template->assign(array (
        "title"     => ucfirst($comment->subject),
        "author"    => format_name($comment),
        "date"      => format_date($comment->timestamp),
        "content"   => check_output($comment->comment),
        "links"     => $link));

    if ($comment->new) {
      $this->template->parse("comment_new");
      print $this->template->text("comment_new");
      $this->template->reset("comment_new");
    }
    else {
      $this->template->parse("comment_old");
      print $this->template->text("comment_old");
      $this->template->reset("comment_old");
    }
  }

Dries's avatar
 
Dries committed
70
  function header($title = "") {
Dries's avatar
 
Dries committed
71 72
    global $base_url;

Dries's avatar
 
Dries committed
73
    $this->template->assign(array(
Dries's avatar
 
Dries committed
74 75
      "title" => ($title ? $title." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")),
      "head" => theme_head(),
Dries's avatar
 
Dries committed
76
      "base" => "$base_url/",
Dries's avatar
 
Dries committed
77 78
      "primary_links" => variable_get("xtemplate_primary_links", l("edit primary links", "admin/system/themes/settings")),
      "secondary_links" => variable_get("xtemplate_secondary_links", l("edit secondary links", "admin/system/themes/settings"))
Dries's avatar
 
Dries committed
79
    ));
Dries's avatar
 
Dries committed
80 81 82 83 84 85 86 87
    if (variable_get("xtemplate_search_box", 1)) {
      $this->template->assign(array(
        //"search" => search_form(),
        "search_url" => url("search"),
        "search_button_text" => t("Search")
      ));
      $this->template->parse("header.search_box");
    }
Dries's avatar
 
Dries committed
88 89

    if (!arg(0)) {
Dries's avatar
 
Dries committed
90
      $this->template->assign("message", variable_get("xtemplate_message", l("edit message", "admin/system/themes/settings")));
Dries's avatar
 
Dries committed
91 92
      $this->template->parse("header.message");
    }
Dries's avatar
 
Dries committed
93 94 95

    $this->template->parse("header");
    print $this->template->text("header");
Dries's avatar
 
Dries committed
96
  }
Dries's avatar
 
Dries committed
97

Dries's avatar
 
Dries committed
98
  function block($title, $content, $region = "main") {
Dries's avatar
 
Dries committed
99
    $this->template->assign(array(
Dries's avatar
 
Dries committed
100 101 102
      "subject" => $title,
      "content" => $content
    ));
Dries's avatar
 
Dries committed
103

Dries's avatar
 
Dries committed
104 105 106
    $this->template->parse("block");
    print $this->template->text("block");
    $this->template->reset("block");
Dries's avatar
 
Dries committed
107 108 109 110 111
  }

  function box($title, $content, $region = "main") {
    if ($title && $content) {
      $this->template->assign(array(
Dries's avatar
 
Dries committed
112
        "subject" => $title,
Dries's avatar
 
Dries committed
113 114
        "content" => $content));

Dries's avatar
 
Dries committed
115 116 117
      $this->template->parse("box");
      print $this->template->text("box");
      $this->template->reset("box");
Dries's avatar
 
Dries committed
118 119 120 121
    }
  }

  function footer() {
Dries's avatar
 
Dries committed
122 123 124 125
    // unfortunately, theme_blocks PRINTS the blocks instead of RETURNING them.
    // so we need some output buffering
    ob_start();
    theme_blocks("all");
Dries's avatar
 
Dries committed
126 127 128 129
    $this->template->assign( array(
      "blocks" => ob_get_contents(),
      "footer" => variable_get("site_footer", "")
    ));
Dries's avatar
 
Dries committed
130
    ob_end_clean();
Dries's avatar
 
Dries committed
131 132 133 134 135 136

    $this->template->parse("footer");
    print $this->template->text("footer");
  }
}
?>