145 lines
4.1 KiB
Plaintext
145 lines
4.1 KiB
Plaintext
<?php
|
|
// $Id$
|
|
|
|
function page_help() {
|
|
$output .= "<p>The page module is used to create a <i>site page</i>. Unlike a story, a site 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 site page is usually linked from the main navigation bar, using whatever text the author wishes. To create a site page without this navigation link, simply skip the form field which requests link text. Administrators are the exclusive authors of site pages (i.e. requires the <i>adinister nodes</i> in <a href=\"/admin.php?mod=user&op=permission\">permission</a>).</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 the Site Page author.</p>";
|
|
return $output;
|
|
}
|
|
|
|
function page_node($field) {
|
|
$info["name"] = t("site 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 site page by-passes the submission queue.");
|
|
|
|
return $info[$field];
|
|
}
|
|
|
|
function page_access($op, $node) {
|
|
if ($op == "view") {
|
|
return $node->status;
|
|
}
|
|
}
|
|
|
|
function page_save($op, $node) {
|
|
|
|
if ($op == "approve") {
|
|
return array("status" => 1);
|
|
}
|
|
|
|
if ($op == "create") {
|
|
return array("format", "link", "promote" => 0, "moderate" => 0, "status" => 1);
|
|
}
|
|
|
|
if ($op == "decline") {
|
|
return array("status" => 0);
|
|
}
|
|
|
|
if ($op == "update") {
|
|
return array("format", "link");
|
|
}
|
|
}
|
|
|
|
function page_insert($node) {
|
|
db_query("INSERT INTO page (nid, format, link) VALUES ('$node->nid', '$node->format', '$node->link')");
|
|
}
|
|
|
|
function page_update($node) {
|
|
db_query("UPDATE page SET format = '$node->format', link = '$node->link' WHERE nid = '$node->nid'");
|
|
}
|
|
|
|
function page_delete(&$node) {
|
|
db_query("DELETE FROM page WHERE nid = '$node->nid'");
|
|
}
|
|
|
|
function page_load($node) {
|
|
$page = db_fetch_object(db_query("SELECT format, link FROM page WHERE nid = '$node->nid'"));
|
|
|
|
return $page;
|
|
}
|
|
|
|
function page_link($type) {
|
|
if ($type == "page") {
|
|
$result = db_query("SELECT n.nid, p.link 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[] = "<a href=\"node.php?id=$page->nid\">$page->link</a>";
|
|
}
|
|
}
|
|
|
|
if ($type == "menu.create" && user_access("administer nodes")) {
|
|
$links[] = "<a href=\"module.php?mod=node&op=add&type=page\" title=\"". t("Add a new site page.") ."\">". t("create site page") ."</a>";
|
|
}
|
|
|
|
return $links ? $links : array();
|
|
}
|
|
|
|
function page_body($node) {
|
|
global $theme, $op;
|
|
|
|
if ($node->format) {
|
|
/*
|
|
** Make sure only authorized users can preview static (PHP)
|
|
** pages.
|
|
*/
|
|
|
|
if ($op == t("Preview")) {
|
|
if (user_access("administer nodes")) {
|
|
$node->body = stripslashes($node->body); // see also page_form()
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
}
|
|
|
|
ob_start();
|
|
eval($node->body);
|
|
$output = ob_get_contents();
|
|
ob_end_clean();
|
|
}
|
|
else {
|
|
$output = check_output($node->body, 1);
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
|
|
function page_view($node, $main = 0) {
|
|
global $theme;
|
|
|
|
/*
|
|
** Extract the page body. If body is dynamic (using PHP code), the body
|
|
** will be generated.
|
|
*/
|
|
|
|
$output .= page_body($node);
|
|
|
|
/*
|
|
** Add the node specific links:
|
|
*/
|
|
|
|
$output .= "<div align=\"right\">". $theme->links(link_node($node, $main)) ."</div>";
|
|
|
|
$theme->box($node->title, $output);
|
|
}
|
|
|
|
function page_form(&$node, &$help, &$error) {
|
|
global $op;
|
|
|
|
if ($node->format) {
|
|
if ($op != t("Preview")) {
|
|
$node->body = addslashes($node->body);
|
|
}
|
|
}
|
|
else {
|
|
if ($node->teaser) {
|
|
$output .= form_textarea(t("Teaser"), "teaser", $node->teaser, 60, 5, $error["teaser"]);
|
|
}
|
|
}
|
|
|
|
$output .= form_textarea("Body", "body", $node->body, 60, 20);
|
|
$output .= form_textfield("Link", "link", $node->link, 60, 64);
|
|
$output .= form_select("Type", "format", $node->format, array(0 => "HTML / text", 1 => "PHP"));
|
|
|
|
return $output;
|
|
}
|
|
|
|
?> |