summaryrefslogtreecommitdiff
path: root/modules/story/story.module
blob: 259b2e3ba36990fe5dffe4d621400ec4a338762e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
// $Id$

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>";
  $output .= "<p>Administrators may \"pin\" an important story or announcement to the front page using the <i>static on front page</i> setting while creating or editing a story (this is true for other nodes as well). In addition, administrators may provide helpful introductory text for story authors in the <i>settings</i> page.  There, administrators might also choose to set 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.</p>";
  return $output;
}

function story_system($field){
  $system["description"] = t("Enables users to submit stories, articles or similar content.");
  return $system[$field];
}

function story_conf_options() {
 $output .= form_textarea("Explanation or submission guidelines", "story_help", variable_get("story_help", ""), 55, 4, "This text will be displayed at the top of the story submission form.  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 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."));

 return $output;
}

function story_node($field) {
  $info["name"] = t("story");
  $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.");

  return $info[$field];
}

function story_perm() {
  return array("create stories");
}

function story_access($op, $node) {
  if ($op == "view") {
    return $node->status;
  }

  if ($op == "create") {
    return user_access("create stories");
  }
}

function story_save($op, $node) {

  if ($op == "approve") {
    return array("status" => 1, "promote" => 1);
  }

  if ($op == "create") {
    if (user_access("administer nodes")) {
      return array();
    }
    else {
      return array("moderate" => 1);
    }
  }

  if ($op == "decline") {
    return array("status" => 0, "promote" => 0);
  }

  if ($op == "update") {
    return array();
  }
}

function story_link($type) {
  if ($type == "menu.create" && user_access("create stories")) {
    $links[] = lm(t("create story"), array("mod" => "node", "op" => "add", "type" => "story"), "", array("title" => t("Add a new story.")));
  }

  return $links ? $links : array();
}

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", "");

  }

  if (function_exists("taxonomy_node_form")) {
    $output .= implode("", taxonomy_node_form("story", $node));
  }

  $output .= form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));

  return $output;
}


?>