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

Dries's avatar
 
Dries committed
4
function story_help($section = "admin/help#story") {
Dries's avatar
 
Dries committed
5 6
  $output = "";

7
  switch ($section) {
Dries's avatar
 
Dries committed
8
    case 'admin/system/modules#description':
Dries's avatar
 
Dries committed
9
      $output = t("Enables users to submit stories, articles or similar content.");
10
      break;
Dries's avatar
 
Dries committed
11
    case 'admin/system/modules/story':
12
      $output = t("Stories are like newspaper articles. They tend to follow a publishing flow of <strong>submit -&gt; moderate -&gt; post to the main page -&gt; comments</strong>. Below you may fix a minimum word count for stories and also write some submission or content guidelines for users wanting to post a story.");
13
      break;
Dries's avatar
 
Dries committed
14
    case 'admin/help#story':
Dries's avatar
 
Dries committed
15 16 17
      $output = t("
      <p>The story module lets your users submit articles for consideration by the rest of the community, who can vote on them if moderation is enabled.  Stories usually follow a publishing flow of <strong>submit -&gt; moderate -&gt; post to the main page -&gt; comments</strong>.  Administrators are able to shortcut this flow as desired.</p>
      In <a href=\"%story-config\">administer &raquo; configuration &raquo; modules &raquo; story</a> you can set up 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 trivially short stories.", array("%story-config" => url("admin/system/modules/story")));
18
      break;
Dries's avatar
 
Dries committed
19 20 21
    case 'node/add/story':
      $output = variable_get('story_help', '');
      break;
Dries's avatar
 
Dries committed
22 23 24
    case 'node/add#story':
      $output = 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 automatically gets promoted to the front page.");
      break;
25
  }
26

Dries's avatar
 
Dries committed
27
  return $output;
Dries's avatar
 
Dries committed
28 29
}

30
function story_settings() {
Dries's avatar
 
Dries committed
31 32
 $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.  It is useful for helping or instructing your users.");
 $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 story must be to be considered valid.  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
33 34 35 36

 return $output;
}

Dries's avatar
 
Dries committed
37 38
function story_node_name($node) {
  return t("story");
Dries's avatar
 
Dries committed
39 40
}

Dries's avatar
 
Dries committed
41 42 43 44
function story_perm() {
  return array("create stories");
}

Dries's avatar
 
Dries committed
45 46 47 48 49 50
function story_access($op, $node) {
  if ($op == "view") {
    return $node->status;
  }

  if ($op == "create") {
Dries's avatar
 
Dries committed
51
    return user_access("create stories");
Dries's avatar
 
Dries committed
52 53 54
  }
}

Dries's avatar
 
Dries committed
55
function story_link($type) {
Dries's avatar
 
Dries committed
56 57
  $links = array();

Dries's avatar
 
Dries committed
58 59
  if ($type == "system") {
    if (user_access("create stories")) {
Dries's avatar
 
Dries committed
60
      menu("node/add/story", t("story"), "node_page", 0);
Dries's avatar
 
Dries committed
61
    }
Dries's avatar
 
Dries committed
62 63
  }

Dries's avatar
 
Dries committed
64
  return $links;
Dries's avatar
 
Dries committed
65 66
}

Dries's avatar
 
Dries committed
67
function story_validate(&$node) {
Dries's avatar
 
Dries committed
68

Dries's avatar
 
Dries committed
69 70 71
  /*
  ** Validate the size of the story:
  */
Dries's avatar
 
Dries committed
72

Dries's avatar
 
Dries committed
73 74
  if (isset($node->body) && count(explode(" ", $node->body)) < variable_get("minimum_story_size", 0)) {
    $error["body"] = "<div class=\"error\">". t("The body of your story is too short.") ."</div>";
Dries's avatar
 
Dries committed
75 76
  }

Dries's avatar
 
Dries committed
77 78 79
  return $error;
}

Dries's avatar
 
Dries committed
80
function story_form(&$node, &$error) {
Dries's avatar
 
Dries committed
81

82 83 84
  if (function_exists("taxonomy_node_form")) {
    $output .= implode("", taxonomy_node_form("story", $node));
  }
Dries's avatar
 
Dries committed
85

Dries's avatar
 
Dries committed
86
  $output .= form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : filter_tips_short());
Dries's avatar
 
Dries committed
87 88 89 90

  return $output;
}

Dries's avatar
 
Dries committed
91 92
function story_content($node, $main = 0) {
  return node_prepare($node, $main);
Dries's avatar
 
Dries committed
93
}
Dries's avatar
 
Dries committed
94
?>