story.module 3.55 KB
Newer Older
Dries's avatar
   
Dries committed
1
2
3
<?php
// $Id$

Dries's avatar
   
Dries committed
4
5
function story_help() {
  $output .= "<p>The story module enables to users to submit thoughful, cohesive posts for consideration by the rest of the community.  Stories usually follow a specific content flow: <i>submit -&gt; moderate -&gt; post to home page -&gt; comment</i>.  Administrators are able to shortcut this flow as desired.</p>";
Dries's avatar
   
Dries committed
6
  $output .= "In ". l("site configuration &gt;&gt; modules &gt;&gt; story", "admin/system/modules/story") ." you can setup an introductory text for story authors, and a floor on the number of words which may be included in a story. This is designed to help discourage the submission of trvially short stories.";
Dries's avatar
   
Dries committed
7
8
9
  return $output;
}

10
function story_system($field){
Kjartan's avatar
Kjartan committed
11
  $system["description"] = t("Enables users to submit stories, articles or similar content.");
Dries's avatar
   
Dries committed
12
  $system["admin_help"] = t("**REWRITE** Stories are nodes with a complete thought. Think of newspaper stories. Stories follow the flow \"submit -&gt; moderate -&gt; post to the main page -&gt; comment on story\". Below enter the minimum word count for a story, and the small block which will be displayed to users wanting to enter a story.");
13
14
15
  return $system[$field];
}

16
function story_settings() {
Dries's avatar
   
Dries committed
17
 $output .= form_textarea("Explanation or submission guidelines", "story_help", variable_get("story_help", ""), 70, 5, "This text will be displayed at the top of the story submission form.  Useful for helping or instructing your users.");
Dries's avatar
   
Dries committed
18
 $output .= form_select(t("Minimum number of words"), "minimum_story_size", variable_get("minimum_story_size", 0), array(0 => "0 words", 10 => "10 words", 25 => "25 words",  50 => "50 words", 75 => "75 words", 100 => "100 words", 125 => "125 words",  150 => "150 words", 175 => "175 words", 200 => "200 words"), t("The minimum number of words a personal story entry should consist of.  This can be useful to rule out submissions that do not meet the site's standards, such as short test posts."));
Dries's avatar
   
Dries committed
19
20
21
22
23
24

 return $output;
}

function story_node($field) {
  $info["name"] = t("story");
Dries's avatar
   
Dries committed
25
  $info["description"] = t("A story is a post that is submitted to the attention of other users and is queued in the submission queue.  Users and moderators vote on the posts they like or dislike, promoting or demoting them.  When a post gets above a certain threshold it gets automatically published to front page.");
Dries's avatar
   
Dries committed
26
27
28
  return $info[$field];
}

Dries's avatar
   
Dries committed
29
30
31
32
function story_perm() {
  return array("create stories");
}

Dries's avatar
   
Dries committed
33
34
35
36
37
38
function story_access($op, $node) {
  if ($op == "view") {
    return $node->status;
  }

  if ($op == "create") {
Dries's avatar
   
Dries committed
39
    return user_access("create stories");
Dries's avatar
   
Dries committed
40
41
42
  }
}

Dries's avatar
   
Dries committed
43
function story_link($type) {
Dries's avatar
   
Dries committed
44
45
  $links = array();

Dries's avatar
   
Dries committed
46
  if ($type == "menu.create" && user_access("create stories")) {
Dries's avatar
   
Dries committed
47
    $links[] = l(t("create story"), "node/add/story", array("title" => t("Add a new story.")));
Dries's avatar
   
Dries committed
48
49
  }

Dries's avatar
   
Dries committed
50
  return $links;
Dries's avatar
   
Dries committed
51
52
}

Dries's avatar
   
Dries committed
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
function story_form(&$node, &$help, &$error) {

  if (isset($node->body)) {

    /*
    ** Validate the size of the story:
    */

    if (count(explode(" ", $node->body)) < variable_get("minimum_story_size", 0)) {
      $error["body"] = "<div style=\"color: red;\">". t("The body of your story is too short.") ."</div>";
    }

  }
  else {

    /*
    ** Carry out some explanation or submission guidelines:
    */

    $help = variable_get("story_help", "");

  }

76
77
78
  if (function_exists("taxonomy_node_form")) {
    $output .= implode("", taxonomy_node_form("story", $node));
  }
Dries's avatar
   
Dries committed
79

Dries's avatar
   
Dries committed
80
  $output .= form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
Dries's avatar
   
Dries committed
81
82
83
84
85

  return $output;
}

?>