'. t('The story module is used to create a content post type called stories. 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. ') .'

'; $output .= '

'. 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.') .'

'; $output .= t('

You can

', array('%node-add-story' => url('node/add/story'), '%admin-settings-content-types-story' => url('admin/settings/content-types/story'))); $output .= '

'. t('For more information please read the configuration and customization handbook Story page.', array('%story' => 'http://drupal.org/handbook/modules/story/')) .'

'; 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.'); } } /** * Implementation of hook_node_info(). */ function story_node_info() { return array('story' => array('name' => t('story'), 'base' => 'story')); } /** * Implementation of hook_perm(). */ function story_perm() { return array('create stories', 'edit own stories'); } /** * Implementation of hook_access(). */ function story_access($op, $node) { global $user; if ($op == 'create') { 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_form(). */ function story_form(&$node) { $form['title'] = array('#type' => 'textfield', '#title' => t('Title'), '#required' => TRUE, '#default_value' => $node->title, '#weight' => -5); $form['body_filter']['body'] = array('#type' => 'textarea', '#title' => t('Body'), '#default_value' => $node->body, '#rows' => 20, '#required' => TRUE); $form['body_filter']['format'] = filter_form($node->format); return $form; }