157 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
<?php
 | 
						|
// $Id$
 | 
						|
 | 
						|
function page_help() {
 | 
						|
  $output .= "<p>The page module is used to create a <i>static page</i>.  Unlike a story, a static page is a persistent web page on your site which usually shortcuts the typical lifecycle of user generated content (i.e. submit -> moderate -> post -> comment).  A static page is usually linked from the main navigation bar, using whatever text the author wishes.  To create a static page without this navigation link, simply skip the form field which requests link text.</p>";
 | 
						|
  $output .= "<p>Site pages, unlike many other forms of Drupal content, may be made of PHP code in addition to HTML and text. All Drupal objects and functions are available to a site administrator.</p>";
 | 
						|
 | 
						|
  return $output;
 | 
						|
}
 | 
						|
 | 
						|
function page_system($field) {
 | 
						|
  $system["description"] = t("Enables the creation of a static pages that can be added to the navigation system.");
 | 
						|
  return $system[$field];
 | 
						|
}
 | 
						|
 | 
						|
function page_perm() {
 | 
						|
  return array("maintain static pages");
 | 
						|
}
 | 
						|
 | 
						|
function page_node($field) {
 | 
						|
  $info["name"] = t("static page");
 | 
						|
  $info["description"] = t("If you just want to add a page with a link in the menu to your site, this would be the best choice.  Unlike a story, a static page by-passes the submission queue.");
 | 
						|
 | 
						|
  return $info[$field];
 | 
						|
}
 | 
						|
 | 
						|
function page_access($op, $node) {
 | 
						|
  if ($op == "view") {
 | 
						|
    return $node->status;
 | 
						|
  }
 | 
						|
 | 
						|
  if ($op == "create") {
 | 
						|
    return user_access("maintain static pages");
 | 
						|
  }
 | 
						|
 | 
						|
  if ($op == "update") {
 | 
						|
    return user_access("maintain static pages");
 | 
						|
  }
 | 
						|
 | 
						|
  if ($op == "delete") {
 | 
						|
    return user_access("maintain static pages");
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function page_save($op, $node) {
 | 
						|
  if ($op == "approve") {
 | 
						|
    return array("status" => 1);
 | 
						|
  }
 | 
						|
 | 
						|
  if ($op == "decline") {
 | 
						|
    return array("status" => 0);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function page_insert($node) {
 | 
						|
  db_query("INSERT INTO page (nid, format, link, description) VALUES (%d, %d, '%s', '%s')", $node->nid, $node->format, $node->link, $node->description);
 | 
						|
}
 | 
						|
 | 
						|
function page_update($node) {
 | 
						|
db_query("UPDATE page SET format = %d, link = '%s', description = '%s' WHERE nid = %d", $node->format, $node->link, $node->description, $node->nid);
 | 
						|
  }
 | 
						|
 | 
						|
function page_delete(&$node) {
 | 
						|
  db_query("DELETE FROM page WHERE nid = %d", $node->nid);
 | 
						|
}
 | 
						|
 | 
						|
function page_load($node) {
 | 
						|
  $page = db_fetch_object(db_query("SELECT format, link, description FROM page WHERE nid = %d", $node->nid));
 | 
						|
 | 
						|
  return $page;
 | 
						|
}
 | 
						|
 | 
						|
function page_link($type) {
 | 
						|
 | 
						|
  $links = array();
 | 
						|
 | 
						|
  if ($type == "page" && user_access("access content")) {
 | 
						|
    $result = db_query("SELECT n.nid, n.title, p.link, p.description FROM page p LEFT JOIN node n ON p.nid = n.nid WHERE n.status = '1' AND p.link != '' ORDER BY p.link");
 | 
						|
    while ($page = db_fetch_object($result)) {
 | 
						|
      $links[] = l($page->link, "node/view/$page->nid", array("title" => $page->description));
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  if ($type == "menu.create" && user_access("maintain static pages")) {
 | 
						|
    $links[] = l(t("create static page"), "node/add/page", array("title" => t("Add a new static page.")));
 | 
						|
  }
 | 
						|
 | 
						|
  return $links;
 | 
						|
}
 | 
						|
 | 
						|
function page_body($node) {
 | 
						|
  $op = $_POST["op"];
 | 
						|
 | 
						|
  if ($node->format == 0) {
 | 
						|
    // HTML type
 | 
						|
    $output = check_output($node->body);
 | 
						|
  }
 | 
						|
  else {
 | 
						|
    // PHP type
 | 
						|
    ob_start();
 | 
						|
    eval($node->body);
 | 
						|
    $output = ob_get_contents();
 | 
						|
    ob_end_clean();
 | 
						|
  }
 | 
						|
 | 
						|
  return $output;
 | 
						|
}
 | 
						|
 | 
						|
function page_view($node, $main = 0) {
 | 
						|
 | 
						|
 | 
						|
  /*
 | 
						|
  ** Extract the page body.  If body is dynamic (using PHP code), the body
 | 
						|
  ** will be generated.
 | 
						|
  */
 | 
						|
 | 
						|
  $node->teaser = $node->body = page_body($node);
 | 
						|
 | 
						|
  if ($main) {
 | 
						|
    theme("node", $node, $main);
 | 
						|
  }
 | 
						|
  else {
 | 
						|
    /*
 | 
						|
    ** Add the node specific links:
 | 
						|
    */
 | 
						|
 | 
						|
    theme("box", $node->title, "$node->body<div align=\"right\">". theme("links", link_node($node, $main)) ."</div>");
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function page_form(&$node, &$help, &$error) {
 | 
						|
  if (function_exists("taxonomy_node_form")) {
 | 
						|
    $output .= implode("", taxonomy_node_form("page", $node));
 | 
						|
  }
 | 
						|
 | 
						|
  $output .= form_textarea(t("Body"), "body", $node->body, 60, 20);
 | 
						|
  $output .= form_textfield(t("Link name"), "link", $node->link, 60, 64, t("To make the page show up in the navigation links, enter the name of the link, otherwise leave blank."));
 | 
						|
  $output .= form_textfield(t("Link description"), "description", $node->description, 60, 64, t("The description displayed when hovering over the page's link.  Leave blank when you don't want a description."));
 | 
						|
  $output .= form_select(t("Type"), "format", $node->format, array(0 => "HTML", 1 => "PHP"));
 | 
						|
 | 
						|
  return $output;
 | 
						|
}
 | 
						|
 | 
						|
function page_validate(&$node) {
 | 
						|
  if ($node->format && user_access("create php content")) {
 | 
						|
    // Do not filter PHP code, do not auto-extract a teaser
 | 
						|
    $node->teaser = $node->body;
 | 
						|
  }
 | 
						|
  else {
 | 
						|
    $node->format = 0;
 | 
						|
    $node->body = filter($node->body);
 | 
						|
    $node->teaser = filter($node->body);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
?>
 |