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

Dries's avatar
 
Dries committed
3
function xtemplate_settings() {
Dries's avatar
 
Dries committed
4 5
  $output  = form_select("Sidebar placement", "xtemplate_sidebar", variable_get("xtemplate_sidebar", "right"), array("none" => t("No sidebars"), "left" => t("Sidebar on the left"), "right" => t("Sidebar on the right"), "both" => t("Sidebar on the left and the right")));
  $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..");
Dries's avatar
 
Dries committed
6 7
  $output .= form_textarea("Primary links", "xtemplate_primary_links", variable_get("xtemplate_primary_links", l("edit primary links", "admin/system/themes/xtemplate")), 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/xtemplate")), 70, 6, "The secondary links.");
Dries's avatar
 
Dries committed
8
  $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.");
Dries's avatar
 
Dries committed
9
 return $output;
Dries's avatar
 
Dries committed
10 11
}

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

  function system($field) {
    $system["name"] = "xtemplate";
Dries's avatar
 
Dries committed
16
    $system["description"] = "a template driven theme";
Dries's avatar
 
Dries committed
17 18 19 20 21

    return $system[$field];
  }

  function Theme_xtemplate() {
Dries's avatar
 
Dries committed
22 23 24
    if (!class_exists("XTemplate")) {
      include_once("themes/xtemplate/xtemplate.inc");
    }
Dries's avatar
 
Dries committed
25

Dries's avatar
 
Dries committed
26 27
    $this->sidebar = variable_get("xtemplate_sidebar", "right");

Dries's avatar
 
Dries committed
28 29 30 31
    $this->template = new XTemplate("themes/xtemplate/xtemplate.xtmpl");
    $this->template->SetNullBlock(" ");  // "" doesnt work!
  }

Dries's avatar
 
Dries committed
32
  function node($node, $main = 0) {
Dries's avatar
 
Dries committed
33 34 35 36 37

    $this->template->assign(array (
       "title"     => ucfirst($node->title),
       "author"    => format_name($node),
       "date"      => format_date($node->created),
Dries's avatar
 
Dries committed
38
       "content"   => ($main && $node->teaser) ? $node->teaser : $node->body));
Dries's avatar
 
Dries committed
39

Dries's avatar
 
Dries committed
40
    if (module_exist("taxonomy") && ($taxonomy = taxonomy_link("taxonomy terms", $node))) {
Dries's avatar
 
Dries committed
41 42 43
      $this->template->assign("taxonomy", $this->links($taxonomy));
    }

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

Dries's avatar
 
Dries committed
48 49 50
    $this->template->parse("node");
    print $this->template->text("node");
    $this->template->reset("node");
Dries's avatar
 
Dries committed
51 52 53 54 55 56 57
  }

  function comment($comment, $link = 0) {
    $this->template->assign(array (
        "title"     => ucfirst($comment->subject),
        "author"    => format_name($comment),
        "date"      => format_date($comment->timestamp),
Dries's avatar
 
Dries committed
58
        "content"   => $comment->comment,
Dries's avatar
 
Dries committed
59 60 61 62 63 64 65 66 67 68 69 70 71 72
        "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
73
  function header($title = "") {
Dries's avatar
 
Dries committed
74
    $this->template->assign(array(
Dries's avatar
 
Dries committed
75 76
      "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
77
      "onload_attributes" => theme_onload_attribute(),
Dries's avatar
 
Dries committed
78 79
      "primary_links" => variable_get("xtemplate_primary_links", l("edit primary links", "admin/system/themes/xtemplate")),
      "secondary_links" => variable_get("xtemplate_secondary_links", l("edit secondary links", "admin/system/themes/xtemplate"))
Dries's avatar
 
Dries committed
80
    ));
Dries's avatar
 
Dries committed
81

Dries's avatar
 
Dries committed
82 83 84 85 86 87 88 89
    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
90

Dries's avatar
 
Dries committed
91
    if ($_GET["q"] == variable_get("site_frontpage", "node")) {
Dries's avatar
 
Dries committed
92
      $this->template->assign("header_message", variable_get("xtemplate_message", l("edit message", "admin/system/themes/xtemplate")));
Dries's avatar
 
Dries committed
93 94
      $this->template->parse("header.message");
    }
Dries's avatar
 
Dries committed
95

Dries's avatar
 
Dries committed
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
    ob_start();

    if ($this->sidebar == "left") {
      theme_blocks("all");
    }
    else if ($this->sidebar == "both") {
      theme_blocks("left");
    }

    if ($blocks = ob_get_contents()) {
      $this->template->assign("blocks", $blocks);
      $this->template->parse("header.blocks");
    }

    ob_end_clean();

Dries's avatar
 
Dries committed
112 113
    $this->template->parse("header");
    print $this->template->text("header");
Dries's avatar
 
Dries committed
114 115


Dries's avatar
 
Dries committed
116
  }
Dries's avatar
 
Dries committed
117

Dries's avatar
 
Dries committed
118
  function block($title, $content, $region = "main") {
Dries's avatar
 
Dries committed
119
    $this->template->assign(array(
Dries's avatar
 
Dries committed
120 121 122
      "subject" => $title,
      "content" => $content
    ));
Dries's avatar
 
Dries committed
123

Dries's avatar
 
Dries committed
124 125 126
    $this->template->parse("block");
    print $this->template->text("block");
    $this->template->reset("block");
Dries's avatar
 
Dries committed
127 128 129
  }

  function box($title, $content, $region = "main") {
130 131 132
    $this->template->assign(array(
      "subject" => $title,
      "content" => $content));
Dries's avatar
 
Dries committed
133

134 135 136
    $this->template->parse("box");
    print $this->template->text("box");
    $this->template->reset("box");
Dries's avatar
 
Dries committed
137 138 139
  }

  function footer() {
Dries's avatar
 
Dries committed
140

Dries's avatar
 
Dries committed
141
    ob_start();
Dries's avatar
 
Dries committed
142 143 144 145 146 147 148 149

    if ($this->sidebar == "right") {
      theme_blocks("all");
    }
    else if ($this->sidebar == "both") {
      theme_blocks("right");
    }

Dries's avatar
 
Dries committed
150 151 152 153
    if ($blocks = ob_get_contents()) {
      $this->template->assign("blocks", $blocks);
      $this->template->parse("footer.blocks");
    }
Dries's avatar
 
Dries committed
154

Dries's avatar
 
Dries committed
155
    ob_end_clean();
Dries's avatar
 
Dries committed
156

Dries's avatar
 
Dries committed
157
    $this->template->assign( array(
Dries's avatar
 
Dries committed
158 159
      "footer_message" => variable_get("site_footer", ""),
      "footer" => theme_footer()
Dries's avatar
 
Dries committed
160
    ));
Dries's avatar
 
Dries committed
161 162 163 164 165 166

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