drupal/includes/theme.inc

131 lines
4.2 KiB
PHP
Raw Normal View History

<?php
// $Id$
/**
* Basic theme
*
* @package theme system
*/
class BaseTheme {
2001-10-20 13:35:12 +00:00
function system($field) {
$system["name"] = "I need a name o'wise one!";
$system["author"] = "What is your name master?";
$system["description"] = "What am I mighty one?";
return $system[$field];
}
function header($title = "") {
2001-10-20 13:35:12 +00:00
$output .= "<html><head><title>". variable_get(site_name, "drupal") ."</title></head><body>";
$output .= "<table border=\"0\" cellspacing=\"4\" cellpadding=\"4\"><tr><td valign=\"top\" width=\"170\">";
print $output;
$this->box(t("Navigation"), @implode("<br />", link_page())); theme_blocks("all", $this);
print "</td><td valign=\"top\">";
2001-10-20 13:35:12 +00:00
}
function links($links, $delimiter = " | ") {
return @implode($delimiter, $links);
This a rather large commit that needs a lot of fine-tuning. If you update, you'll break your site as you need switching from structure to index.module: so this can be considered an intermediate commit. If you upgrade, and you are welcome to, just create a collection called "section" (for now) and assign your nodes some attributes in the described format. Feedback and bugreports are welcomed. Questions will be answered. CHANGES: - comment system: + when replying to a node (rather then to a comment), that node is displayed above the reply form. + when replying to a comment (rather then to a node), that comment is displayd above the reply form. - removed structure.inc, removed structure.module. - node.inc: + added 2 new node functions called 'node_attribute_edit()' and 'node_attribute_save()' used to 'hook in' any indexing system including your home-brewed stuff if you'd want to. Currently, index.module is the facto default index system. See story.module for usage. - book.module, story.module, poll.module, page.module, forum.module: + added preview functionality to administration section (via node module). + removed all references to structure.inc (category, topic). - moderate.module: + removed all references to structure.inc (category, topic). - book.module, story.module, page.module, forum.module: + increased the sizes of some textareas. - submit.php: + removed all references to structure.inc (category, topic). - marvin.theme: + removed dead code: function story() was depricated. - unconed.theme: + removed hardcoded references to drop.org. - marvin.theme, unconed.theme, jeroen.theme, yaroon.theme, example.theme: + removed all references to structure.inc (category, topic). TODO: - file.module, trip_link.module: + update preview functionality: see story.module for example. + remove references to 'cid' and 'tid', use 'attribute' instead: see story.module for example. - extend and build upon index.module as well as making it configurable
2001-06-10 15:01:20 +00:00
}
function image($name) {
return "misc/$name";
}
2001-10-20 13:35:12 +00:00
function node($node, $main) {
$output .= "<b>". check_output($node->title) ."</b> by ". format_name($node) ."<br />";
if ($main && $node->teaser) {
$output .= strip_tags(check_output($node->teaser, 1));
}
else {
$output .= check_output($node->body, 1);
}
if ($links = link_node($node, $main)) {
$output .= "<br />[ ". $this->links($links) ." ]";
2001-10-20 13:35:12 +00:00
}
$output .= "<hr />";
print $output;
}
2001-10-20 13:35:12 +00:00
function comment_controls($threshold = 1, $mode = 3, $order = 1) {
return form_item(t("Comment viewing options"), comment_mode($mode) . comment_order($order) . comment_threshold($threshold) ." <input type=\"submit\" name=\"op\" value=\"". t("Update settings") ."\" />", t("Select your prefered way to display the comments and click 'Update settings' to active your changes."));
}
function comment($comment, $link = 0) {
$output .= "<a name=\"$comment->cid\"></a>";
$output .= "<div style=\"border: 1px solid; padding: 10px;\">";
$output .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">";
$output .= " <tr><td><div style=\"font-size: 110%; font-weight: bold;\">". check_output($comment->subject) ."</div></td><td align=\"right\" rowspan=\"2\" valign=\"top\">". comment_moderation($comment) ."</td></tr>";
$output .= " <tr><td><div style=\"margin-left: 10px; padding-bottom: 10px; font-size: 90%;\">". t("by %a on %b", array("%a" => format_name($comment), "%b" => format_date($comment->timestamp))) ."</div></td></tr>";
$output .= " <tr><td colspan=\"2\">". check_output($comment->comment, 1) ."</td></tr>";
$output .= " <tr><td align=\"right\" colspan=\"2\">$link</td></tr>";
$output .= "</table>";
$output .= "</div><br />";
print $output;
}
2001-10-20 13:35:12 +00:00
function box($subject, $content, $region = "main") {
$output .= "<b>". check_output($subject) ."</b><br />". check_output($content) ."<p />";
print $output;
}
function footer() {
$output .= "</td></tr></table>";
$output .= "</body></html>";
print $output;
}
}
function theme_list() {
static $list;
if (!$list) {
$list = array();
$result = db_query("SELECT * FROM system where type = 'theme' AND status = '1' ORDER BY name");
while ($theme = db_fetch_object($result)) {
$list[$theme->name] = $theme;
}
}
return $list;
}
function theme_init() {
global $user;
$themes = theme_list();
$name = $user->theme ? $user->theme : variable_get("theme_default", 0);
if (is_object($themes[$name])) {
include_once($themes[$name]->filename);
2002-04-15 15:10:06 +00:00
$theme_class = "Theme_$name";
@$obj =& new $theme_class;
return $obj;
}
watchdog("warning", "No valid themes enabled.");
@$obj =& new BaseTheme;
return $obj;
}
function theme_blocks($region, &$theme) {
global $id, $PHP_SELF, $user;
2001-01-26 13:38:46 +00:00
$result = db_query("SELECT * FROM blocks WHERE (status = '1' OR custom = '1') ". ($region != "all" ? "AND region = '%s' " : "") ."ORDER BY weight, name", $region == "left" ? 0 : 1);
while ($result && ($block = db_fetch_object($result))) {
if (($block->status && (!$user->uid || !$block->custom)) || ($block->custom && $user->block[$block->name])) {
$blocks = module_invoke($block->module, "block");
if ($blocks[$block->delta]["content"]) {
$theme->box(t($blocks[$block->delta]["subject"]), $blocks[$block->delta]["content"], $region);
}
}
}
}
?>