drupal/modules/story.module

98 lines
3.1 KiB
Plaintext
Raw Normal View History

<?php
// $Id$
/**
* @file
* Enables users to submit stories, articles or similar content.
*/
2004-03-10 09:32:46 +00:00
/**
* Implementation of hook_help().
2004-03-10 09:32:46 +00:00
*/
function story_help($section) {
switch ($section) {
case 'admin/help#story':
$output = '<p>'. t('The story module is used to create a content post type called <em>stories.</em> Stories are articles in their simplest form: they have a title, a teaser and a body. Stories are typically used to post news articles or as a group blog. ') .'</p>';
$output .= '<p>'. t('The story administration interface allows for complex configuration. It provides a submission form, workflow, default view permission, default edit permission, permissions for permission, and attachments. Trackbacks can also be enabled.') .'</p>';
$output .= t('<p>You can</p>
<ul>
<li>post a story at <a href="%node-add-story">create content &gt;&gt; story</a>.</li>
<li>configure story at <a href="%admin-node-configure-types"> administer &gt;&gt; content &gt;&gt; configure types &gt;&gt; story configure</a>.</li>
</ul>
', array('%node-add-story' => url('node/add/story'), '%admin-node-configure-types' => url('admin/node/configure/types')));
$output .= '<p>'. t('For more information please read the configuration and customization handbook <a href="%story">Story page</a>.', array('%story' => 'http://www.drupal.org/handbook/modules/story/')) .'</p>';
return $output;
case 'admin/modules#description':
return t('Allows users to submit stories, articles or similar content.');
case 'node/add#story':
return t('Stories are articles in their simplest form: they have a title, a teaser and a body, but can be extended by other modules. The teaser is part of the body too. Stories may be used as a personal blog or for news articles.');
}
}
2004-03-10 09:32:46 +00:00
/**
* Implementation of hook_node_info().
2004-03-10 09:32:46 +00:00
*/
function story_node_info() {
- Patch #29785 by Chx: multiple node types were broken so we refactored part of the node system! If you have a module that implements node types, you'll have to udpate its CVS HEAD version. We replaced _node_name() and _node_types() by _node(). The new _node() hook let's you define one or more node types, including their names. The implementation of the _node() hook needs to: return array($type1 => array('name' => $name1, 'base' => $base1), $type2 => array('name' => $name2, 'base' => $base2)); where $type is the node type, $name is the human readable name of the type and $base is used instead of <hook> for <hook>_load, <hook>_view, etc. For example, the story module's node hook looks like this: function story_node() { return array('story' => array('name' => t('story'), 'base' => 'story')); } The page module's node hook module like: function page_node() { return array('page' => array('name' => t('page'), 'base' => 'page')); } However, more complex node modules like the project module and the flexinode module can use the 'base' parameter to specify a different base. The project module implements two node types, proejcts and issues, so it can do: function project_node() { return array( array('project_project' => array('name' => t('project'), 'base' => 'project'), array('project_issue' => array('name' => t('issue'), 'base' => 'project_issue')); } In the flexinode module's case there can only one base ... This hook will simplify the CCK, and will make it easy (or easier) to merge the story and page module. In addition, node_list() became node_get_types(). In addition, we created the following functions: node_get_name($type) and node_get_base($type).
2005-08-28 15:29:34 +00:00
return array('story' => array('name' => t('story'), 'base' => 'story'));
}
2004-03-10 09:32:46 +00:00
/**
* Implementation of hook_perm().
2004-03-10 09:32:46 +00:00
*/
function story_perm() {
return array('create stories', 'edit own stories');
}
2004-03-10 09:32:46 +00:00
/**
* Implementation of hook_access().
2004-03-10 09:32:46 +00:00
*/
function story_access($op, $node) {
2004-03-10 09:32:46 +00:00
global $user;
if ($op == 'create') {
2004-03-10 09:32:46 +00:00
return user_access('create stories');
}
if ($op == 'update' || $op == 'delete') {
if (user_access('edit own stories') && ($user->uid == $node->uid)) {
return TRUE;
}
}
}
/**
* Implementation of hook_menu().
*/
function story_menu($may_cache) {
$items = array();
if ($may_cache) {
$items[] = array('path' => 'node/add/story', 'title' => t('story'),
'access' => user_access('create stories'));
}
return $items;
}
/**
* Implementation of hook_validate().
*/
2005-11-12 02:54:13 +00:00
function story_validate($node) {
node_validate_title($node);
}
2004-03-10 09:32:46 +00:00
/**
* Implementation of hook_form().
2004-03-10 09:32:46 +00:00
*/
function story_form(&$node) {
$form['title'] = array('#type' => 'textfield', '#title' => t('Title'), '#required' => TRUE, '#default_value' => $node->title);
$form['body'] = array('#type' => 'textarea', '#title' => t('Body'), '#default_value' => $node->body, '#rows' => 20, '#required' => TRUE);
$form['format'] = filter_form($node->format);
return $form;
}