Index: aggregator.module =================================================================== RCS file: /cvs/drupal/drupal/modules/aggregator.module,v retrieving revision 1.234 diff -u -F^f -r1.234 aggregator.module --- aggregator.module 7 Apr 2005 22:46:55 -0000 1.234 +++ aggregator.module 18 Apr 2005 14:05:00 -0000 @@ -11,52 +11,6 @@ */ function aggregator_help($section) { switch ($section) { - case 'admin/help#aggregator': - return t(' -

Thousands of sites (particularly news sites and weblogs) publish their latest headlines and/or stories in a machine-readable format so that other sites can easily link to them. This content is usually in the form of an RSS feed (which is an XML-based syndication standard).

-

You can read aggregated content from many sites using RSS feed readers, such as Amphetadesk.

-

Drupal provides the means to aggregate feeds from many sites and display these aggregated feeds to your site\'s visitors. To do this, enable the aggregator module in site administration and then go to the aggregator configuration page, where you can subscribe to feeds and set up other options.

-

How do I find RSS feeds to aggregate?

-

Many web sites (especially weblogs) display small XML icons or other obvious links on their home page. You can follow these to obtain the web address for the RSS feed. Common extensions for RSS feeds are .rss, .xml and .rdf. For example: Slashdot RSS.

-

If you can\'t find a feed for a site, or you want to find several feeds on a given topic, try an RSS syndication directory such as Syndic8.

-

To learn more about RSS, read Mark Pilgrim\'s What is RSS and WebReference.com\'s The Evolution of RSS articles.

-

NOTE: Enable your site\'s XML syndication button by turning on the Syndicate block in block management.

-

How do I add a news feed?

-

To subscribe to an RSS feed on another site, use the aggregation page.

-

Once there, click the new feed tab. Drupal will then ask for the following:

- -

Once you have submitted the new feed, check to make sure it is working properly by selecting update items on the aggregation page. If you do not see any items listed for that feed, edit the feed and make sure that the URL was entered correctly.

-

Adding categories

-

News items can be filed into categories. To create a category, start at the aggregation page.

-

Once there, select new category from the menu. Drupal will then ask for the following:

- -

Using the news aggregator

-

The news aggregator has a number of ways that it displays your subscribed content:

- -

Pages that display items (for sources, categories, etc.) display the following for each item: -

-

Additionally, users with the administer news feeds permission will see a link to categorize the news items. Clicking this will allow them to select which category(s) each news item is in.

-

Technical details

-

Drupal automatically generates an OPML feed file that is available by selecting the XML icon on the News Sources page.

-

When fetching feeds Drupal supports conditional GETs, this reduces the bandwidth usage for feeds that have not been updated since the last check.

-

If a feed is permanently moved to a new location Drupal will automatically update the feed URL to the new address.

', array('%block' => url('admin/block'), '%admin-news' => url('admin/aggregator'), '%new-feed' => url('admin/aggregator/add/feed'), '%new-category' => url('admin/aggregator/add/category'), '%update-items' => url('admin/aggregator'), '%news-aggregator' => url('aggregator'), '%sources' => url('aggregator/sources'), '%categories' => url('aggregator/categories'))); case 'admin/modules#description': return t('Aggregates syndicated content (RSS and RDF feeds).'); case 'admin/aggregator': Index: block.module =================================================================== RCS file: /cvs/drupal/drupal/modules/block.module,v retrieving revision 1.163 diff -u -F^f -r1.163 block.module --- block.module 12 Apr 2005 18:52:47 -0000 1.163 +++ block.module 18 Apr 2005 14:05:01 -0000 @@ -11,22 +11,6 @@ */ function block_help($section) { switch ($section) { - case 'admin/help#block': - return t(' -

Blocks are the boxes visible in the sidebar(s) of your web site. These are usually generated automatically by modules (e.g. recent forum topics), but you can also create your own blocks.

-

The sidebar each block appears in depends on both which theme you are using (some are left-only, some right, some both), and on the settings in block management.

-

The block management screen lets you specify the vertical sort-order of the blocks within a sidebar. You do this by assigning a weight to each block. Lighter blocks (smaller weight) "float up" towards the top of the sidebar. Heavier ones "sink down" towards the bottom of it.

-

A block\'s visibility depends on:

- - -

Administrator defined blocks

-

An administrator defined block contains content supplied by you (as opposed to being generated automatically by a module). Each admin-defined block consists of a title, a description, and a body which can be as long as you wish. The Drupal engine will render the content of the block.

'); case 'admin/modules#description': return t('Controls the boxes that are displayed around the main content.'); case 'admin/block': Index: blog.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blog.module,v retrieving revision 1.214 diff -u -F^f -r1.214 blog.module --- blog.module 12 Apr 2005 19:47:06 -0000 1.214 +++ blog.module 18 Apr 2005 14:05:01 -0000 @@ -7,6 +7,18 @@ */ /** + * Implementation of hook_help(). + */ +function blog_help($section) { + switch ($section) { + case 'admin/modules#description': + return t('Enables keeping an easily and regularly updated web page or a blog.'); + case 'node/add#blog': + return t("A blog is a regularly updated journal or diary made up of individual posts shown in reversed chronological order. A blog is tightly coupled to the author so each user will have his 'own' blog."); + } +} + +/** * Implementation of hook_node_name(). */ function blog_node_name($node) { @@ -47,24 +59,6 @@ function blog_user($type, &$edit, &$user } /** - * Implementation of hook_help(). - */ -function blog_help($section) { - switch ($section) { - case 'admin/help#blog': - return t(" -

Drupal's blog module allows registered users to maintain an online weblog (commonly known as a blog), often referred to as an online journal or diary. These can be filled with daily thoughts, poetry, boneless blabber, spiritual theories, intimate details, valuable experiences, cynical rants, semi-coherent comments, writing experiments, artistic babblings, critics on current facts, fresh insights, diverse dreams, chronicles and mumbling madness available for public consumption.

-

Blogs are made up of individual entries (nodes) that are timestamped and are typically viewed by day as you would a diary. Blogs often contain links to things you've seen and/or agree/disagree with. A typical example of a long term blog can be seen at %scripting-com.

-

The blog module adds a \"user blogs\" navigation link to the site, which takes any visitor to a page that displays the most recent blog entries from all the users on the site. Personal user menus gain a \"create a blog entry\" link (which takes you to a submission form) and a \"view personal blog\" link (which displays your blog entries as other people will see them). On the bottom of each of your own blog entries, there is an \"edit this blog entry\" link that lets you edit or delete that entry.

-

If a user has the ability to post blogs, then the import module (news aggregator) will display a blog-it link (b) next to each news item in its lists. Click on this and you will be taken to the blog submission form, with the title, a link to the item, and a link to the source into the body text already in the text box, ready for you to add your explanation. This actively encourages people to add blog entries about things they see and hear elsewhere in the Drupal site and from your syndicated partner sites.

", array('%scripting-com' => 'http://www.scripting.com/')); - case 'admin/modules#description': - return t('Enables keeping an easily and regularly updated web page or a blog.'); - case 'node/add#blog': - return t("A blog is a regularly updated journal or diary made up of individual posts shown in reversed chronological order. A blog is tightly coupled to the author so each user will have his 'own' blog."); - } -} - -/** * Displays an RSS feed containing recent blog entries of a given user. */ function blog_feed_user($uid = 0) { Index: blogapi.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blogapi.module,v retrieving revision 1.40 diff -u -F^f -r1.40 blogapi.module --- blogapi.module 13 Apr 2005 19:03:36 -0000 1.40 +++ blogapi.module 18 Apr 2005 14:05:01 -0000 @@ -11,8 +11,6 @@ */ function blogapi_help($section) { switch ($section) { - case 'admin/help#blogapi': - return t('

This module adds support for several XML-RPC based blogging APIs. Specifically, it currently implements the %bloggerAPI, %metaweblogAPI, and most of the %moveabletype extensions. This allows users to contribute to Drupal using external GUI applications, which can often offer richer functionality that online forms based editing.

This module also allows site administrators to configure which node types can be posted via the external applications. So, for instance, users can post forum topics as well as blog posts. Where supported, the external applications will display each node type as a separate "blog".

', array('%bloggerAPI' => 'Blogger API', '%metaweblogAPI' => 'MetaWeblog API', '%moveabletype' => 'Movable Type API. ')); case 'admin/modules#description': return t('Allows users to post content using applications that support XML-RPC blog APIs.'); } Index: book.module =================================================================== RCS file: /cvs/drupal/drupal/modules/book.module,v retrieving revision 1.290 diff -u -F^f -r1.290 book.module --- book.module 17 Apr 2005 16:03:50 -0000 1.290 +++ book.module 18 Apr 2005 14:05:01 -0000 @@ -7,6 +7,24 @@ */ /** + * Implementation of hook_help(). + */ +function book_help($section) { + switch ($section) { + case 'admin/modules#description': + return t('Allows users to collaboratively author a book.'); + case 'admin/node/book': + return t('

The book module offers a mean to organize content, authored by many users, in an online manual, outline or FAQ.

'); + case 'admin/node/book/orphan': + return t('

Pages in a book are like a tree. As pages are edited, reorganized and removed, child pages might be left with no link to the rest of the book. Such pages are referred to as "orphan pages". On this page, administrators can review their books for orphans and reattach those pages as desired.

'); + case 'node/add#book': + return t("A book is a collaborative writing effort: users can collaborate writing the pages of the book, positioning the pages in the right order, and reviewing or modifying pages previously written. So when you have some information to share or when you read a page of the book and you didn't like it, or if you think a certain page could have been written better, you can do something about it."); + case 'node/'. arg(1) .'/outline': + return t('The outline feature allows you to include posts in the book hierarchy.', array('%book' => url('book'))); + } +} + +/** * Implementation of hook_node_name(). */ function book_node_name($node) { @@ -788,36 +806,4 @@ function book_admin($nid = 0) { print theme('page', $output); } -/** - * Implementation of hook_help(). - */ -function book_help($section) { - switch ($section) { - case 'admin/help#book': - return t(" -

The book organises content into a nested hierarchical structure. It is particularly good for manuals, Frequently Asked Questions (FAQs) and the like, allowing you to have chapters, sections, etc.

-

A book is simply a collection of nodes that have been linked together. These nodes are usually of type book page, but you can insert nodes of any type into a book outline. Every node in the book has a parent node which \"contains\" it. This is how book.module establishes its hierarchy. At any given level in the hierarchy, a book can contain many nodes. All these sibling nodes are sorted according to the weight that you give them.

-

Book pages contain a log message field which helps your users understand the motivation behind an edit of a book page. Each edited version of a book page is stored as a new revision of a node. This capability makes it easy to revert to an old version of a page, should that be desirable.

-

Like other node types, book submissions and edits may be subject to moderation, depending on your configuration. Similarly, books use permissions to determine who may read and write to them. Only administrators are allowed to create new books, which are really just nodes whose parent is <top-level>. To include an existing node in your book, click on the \"outline\"-tab on the node's page. This enables you to place the node wherever you'd like within the book hierarchy. To add a new node into your book, use the create content » book page link.

-

Administrators may review the hierarchy of their books by clicking on the collaborative book link in the administration pages. There, nodes may be edited, reorganized, removed from book, and deleted. This behavior may change in the future. When a parent node is deleted, it may leave behind child nodes. These nodes are now orphans. Administrators should periodically review their books for orphans and reaffiliate those pages as desired. Finally, administrators may also export their books to a single, flat HTML page which is suitable for printing.

-

Maintaining a FAQ using a collaborative book

-

Collaborative books let you easily set up a Frequently Asked Questions (FAQ) section on your web site. The main benefit is that you don't have to write all the questions/answers by yourself - let the community do it for you!

-

In order to set up the FAQ, you have to create a new book which will hold all your content. To do so, click on the create content » book page link. Give it a thoughtful title, and body. A title like \"Estonia Travel - FAQ\" is nice. You may always edit these fields later. You will probably want to designate <top-level> as the parent of this page. Leave the log message and type fields blank for now. After you have submitted this book page, you are ready to begin filling up your book with questions that are frequently asked.

-

Whenever you come across a post which you want to include in your FAQ, click on the administer link. Then click on the edit book outline button at the bottom of the page. Then place the relevant post wherever is most appropriate in your book by selecting a parent. Books are quite flexible. They can have sections like Flying to Estonia, Eating in Estonia and so on. As you get more experienced with the book module, you can reorganize posts in your book so that it stays organized.

-

Notes:

", array('%permissions' => url('admin/access/permissions'), "%create" => url('node/add/book'), '%collaborative-book' => url('admin/node/book'), '%orphans-book' => ur l('admin/node/book/orphan'), '%export-book' => url('book/print'))); - case 'admin/modules#description': - return t('Allows users to collaboratively author a book.'); - case 'admin/node/book': - return t('

The book module offers a mean to organize content, authored by many users, in an online manual, outline or FAQ.

'); - case 'admin/node/book/orphan': - return t('

Pages in a book are like a tree. As pages are edited, reorganized and removed, child pages might be left with no link to the rest of the book. Such pages are referred to as "orphan pages". On this page, administrators can review their books for orphans and reattach those pages as desired.

'); - case 'node/add#book': - return t("A book is a collaborative writing effort: users can collaborate writing the pages of the book, positioning the pages in the right order, and reviewing or modifying pages previously written. So when you have some information to share or when you read a page of the book and you didn't like it, or if you think a certain page could have been written better, you can do something about it."); - } - - if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == 'outline') { - return t('The outline feature allows you to include posts in the book hierarchy.', array('%book' => url('book'))); - } -} - -?> +?> \ No newline at end of file Index: comment.module =================================================================== RCS file: /cvs/drupal/drupal/modules/comment.module,v retrieving revision 1.349 diff -u -F^f -r1.349 comment.module --- comment.module 8 Apr 2005 13:34:10 -0000 1.349 +++ comment.module 18 Apr 2005 14:05:02 -0000 @@ -15,49 +15,6 @@ */ function comment_help($section = "admin/help#comment") { switch ($section) { - case 'admin/help#comment': - return t(" -

When enabled, the Drupal comment module creates a discussion board for each Drupal node. Users can post comments to discuss a forum topic, weblog post, story, collaborative book page, etc. An administrator can give comment permissions to user groups, and users can (optionally) edit their last comment, assuming no others have been posted since.

- -

User control of comment display

-

Attached to each comment board is a control panel for customizing the way that comments are displayed. Users can control the chronological ordering of posts (newest or oldest first) and the number of posts to display on each page. Additional settings include:

- -

When a user chooses save settings, the comments are then redisplayed using the user's new choices. Administrators can set the default settings for the comment control panel, along with other comment defaults, in administer » comments » configure. NOTE: When comment moderation is enabled, users will have another control panel option to control thresholds (see below).

- -

Additional comment configurations

-

Comments behave like other user submissions in Drupal. Filters, smileys and HTML that work in nodes will also work with comments. Administrators can control access to various comment module functions through administer » access control » permissions. Know that in a new Drupal installation, all comment permissions are disabled by default. The choice of which permissions to grant to which roles (groups of users) is left up to the site administrator. The following permissions:

- - -

Notification of new comments

-

Drupal provides specific features to inform site members when new comments have been posted.

-

Drupal displays the total number of comments attached to each node, and tracks comments read by individual site members. Members which have logged in will see a notice accompanying nodes which contain comments they have not read. Some administrators may want to download, install and configure the notify module. Users can then request that Drupal send them an e-mail when new comments are posted (the notify module requires that cron.php be configured properly).

-

The tracker module, disabled by default, displays all the site's recent posts. There is a link to the recent posts page in the navigation block. This page is a useful way to browse new or updated nodes and comments. Content which the user has not yet read is tagged with a red star (this graphic depends on the current theme). Visit the comment board for any node, and Drupal will display a red \"new\" label beside the text of unread comments.

- -

Comment moderation

-

On sites with active commenting from users, the administrator can turn over comment moderation to the community.

-

With comment moderation, each comment is automatically assigned an initial rating. As users read comments, they can apply a vote which affects the comment rating. At the same time, users have an additional option in the control panel which allows them to set a threshold for the comments they wish to view. Those comments with ratings lower than the set threshold will not be shown. To enable moderation, the administrator must grant moderate comments permissions. Then, a number of options in administer » comments » configure must be configured.

- -

Moderation votes

-

The first step is to create moderation labels which allow users to rate a comment. Go to administer » comments » configure » moderation votes. In the vote field, enter the textual labels which users will see when casting their votes. Some examples are

- -

So that users know how their votes affect the comment, these examples include the vote value as part of the label, although that is optional. Using the weight option, you can control the order in which the votes appear to users. Setting the weight heavier (positive numbers) will make the vote label appear at the bottom of the list. Lighter (a negative number) will push it to the top. To encourage positive voting, a useful order might be higher values, positive votes, at the top, with negative votes at the bottom.

- -

Moderator vote/values matrix

-

Next go to administer » comments » configure » moderation matrix. Enter the values for the vote labels for each permission role in the vote matrix. The values entered here will be used to create the rating for each comment. NOTE: Comment ratings are calculated by averaging user votes with the initial rating.

- -

Creating comment thresholds

-

In administer » comments » configure » moderation thresholds, you'll have to create some comment thresholds to make the comment rating system useful. When comment moderation is enabled and the thresholds are created, users will find another comment control panel option for selecting their thresholds. They'll use the thresholds you enter here to filter out comments with low ratings. Consequently, you'll probably want to create more than one threshold to give users some flexibility in filtering comments.

-

When creating the thresholds, note that the Minimum score is asking you for the lowest rating that a comment can have in order to be displayed. To see a common example of how thresholds work, you might visit Slashdot and view one of their comment boards associated with a story. You can reset the thresholds in their comment control panel.

- -

Initial comment scores

-

Finally, you may want to enter some initial comment scores. In administer » comments » configure » moderation roles you can assign a beginning rating for all comments posted by a particular permission role. If you do not assign any initial scores, Drupal will assign a rating of 0 as the default.

", array('%comment-config' => url('admin/comment/configure'), '%permissions' => url('admin/access/permissions'), '%tracker' => url('tracker'), '%download-notify' => 'http://drupal.org/project/releases', '%comment-votes' => url('admin/comment/configure/votes'), '%comment-matrix' => url('admin/comment/configure/matrix'), '%comment-thresholds' => url('admin/comment/configure/thresholds'), '%slashdot' => ' http://slashdot.org', '%comment-initial' => url('admin/comment/configure/roles'))); case 'admin/comment': case 'admin/comment/new': return t("

Below is a list of the latest comments posted your site. Click on a subject to see the comment, the author's name to edit the author's user information , \"edit\" to modify the text, and \"delete\" to remove their submission.

"); Index: drupal.module =================================================================== RCS file: /cvs/drupal/drupal/modules/drupal.module,v retrieving revision 1.100 diff -u -F^f -r1.100 drupal.module --- drupal.module 31 Mar 2005 09:25:33 -0000 1.100 +++ drupal.module 18 Apr 2005 14:05:02 -0000 @@ -11,13 +11,6 @@ */ function drupal_help($section) { switch ($section) { - case 'admin/help#drupal': - return t(" -

The \"Drupal\" module features a capability whereby other drupal sites may call home to report their existence. In turn, this enables a pod of Drupal sites to find, cooperate and advertise each other.

-

Currently, the main application of this feature is the Drupal sites page. By default, fresh Drupal installations can use drupal.org as their directory server and report their existence. This reporting occurs via scheduled XML-RPC pings.

-

Drupal administrators should simply enable this feature to get listed on the Drupal sites page. Just set your site's name, e-mail address, slogan and mission statement on the administer » settings page. Then make sure that the field called Drupal XML-RPC server on the administer » settings » drupal page is set to %drupal-xml-rpc, and enable this feature using the dropdown directly below.

-

The listing of your site will occur shortly after your site's next cron run. Note that cron.php should be called using the domain name which you want to have listed at drupal.org. For example, don't kick off cron by requesting http://127.0.0.1/cron.php. Instead, use a publicly accessible domain name such as http://www.example.com/cron.php.

-

Also note that your installation need not use drupal.org as its directory server. For example, this feature is perfectly capable of aggregating pings from all of your departmental drupal installations sites within an enterprise.

", array('%drupal-sites' => 'http://www.drupal.org/drupal-sites', '%Drupal' => 'http://www.drupal.org', '%drupal-xml-rpc' => 'http://www.drupal.org/xmlrpc.php', '%xml-rpc' => 'http://www.xmlrpc.com/', '%site-settings' => url('admin/settings'), '%drupal-settings' => url('admin/settings/drupal'))); case 'admin/modules#description': return t('Lets users log in using a Drupal ID and can notify a central server about your site.'); case 'admin/settings/drupal': Index: filter.module =================================================================== RCS file: /cvs/drupal/drupal/modules/filter.module,v retrieving revision 1.57 diff -u -F^f -r1.57 filter.module --- filter.module 1 Apr 2005 15:54:59 -0000 1.57 +++ filter.module 18 Apr 2005 14:05:02 -0000 @@ -24,22 +24,18 @@ function filter_help($section) { switch ($section) { case 'admin/modules#description': return t('Handles the filtering of content in preparation for display.'); - case 'admin/filters': return t('

Input formats define a way of processing user-supplied text in Drupal. Every input format has its own settings of which filters to apply. Possible filters include stripping out malicious HTML and making URLs clickable.

Users can choose between the available input formats when submitting content.

Below you can configure which input formats are available to which roles, as well as choose a default input format (used for imported content, for example).

'); - case 'admin/filters/'. arg(2): return t('

Every filter performs one particular change on the user input, for example stripping out malicious HTML or making URLs clickable. Choose which filters you want to apply to text in this input format.

If you notice some filters are causing conflicts in the output, you can rearrange them.

', array('%configure' => url('admin/filters/'. arg(2) .'/configure'), '%order' => url('admin/filters/'. arg(2) .'/order'))); - case 'admin/filters/'. arg(2) .'/configure': return t('

If you cannot find the settings for a certain filter, make sure you\'ve enabled it on the list filters tab first.

', array('%url' => url('admin/filters/'. arg(2) .'/list'))); - case 'admin/filters/'. arg(2) .'/order': return t('

Because of the flexible filtering system, you might encounter a situation where one filter prevents another from doing its job. For example: a word in an URL gets converted into a glossary term, before the URL can be converted in a clickable link. When this happens, you will need to rearrange the order in which filters get executed.

Index: locale.module =================================================================== RCS file: /cvs/drupal/drupal/modules/locale.module,v retrieving revision 1.120 diff -u -F^f -r1.120 locale.module --- locale.module 31 Mar 2005 09:25:33 -0000 1.120 +++ locale.module 18 Apr 2005 14:05:03 -0000 @@ -10,13 +10,10 @@ * we based. Gettext portable object files are supported. */ -// --------------------------------------------------------------------------------- -// Hook implementations (needed on all page loads) - /** * Implementation of hook_help(). */ -function locale_help($section = "admin/help#locale") { +function locale_help($section) { switch ($section) { case 'admin/modules#description': return t('Enables the translation of the user interface to languages other than English.'); @@ -31,14 +28,6 @@ function locale_help($section = "admin/h return t("

This page allows you to export Drupal strings. The first option is to export a translation so it can be shared. The second option is to generate a translation template, which contains all Drupal strings, but without their translations. You can use this template to start a new translation using a specialized desktop application.

"); case 'admin/locale/string/search': return t("

It is often more convenient to get the strings of your setup on the export page, and start with a desktop Gettext translation editor though. Here you can search in the translated and untranslated strings, and the default English texts provided by Drupal.

", array("%export" => url("admin/locale/language/export"))); - - case 'admin/help#locale': - return t(" -

Most programs are written and documented in English, and primarily use English to interact with users. This is also true for a great deal of web sites. However, most people are less comfortable with English than with their native language, and would prefer to use their mother tongue as much as possible. Many people love to see their web site showing a lot less English, and far more of their own language. Therefore Drupal provides a framework to setup a multi-lingual web site, or to overwrite the default English texts.

-

How to interface translation works

-

Whenever Drupal encounters an interface string which needs to be displayed, it tries to translate it into the currently selected language. If a translation is not available, then the string is remembered, so you can look up untranslated strings easily.

-

Drupal provides two options to translate these strings. First is the integrated web interface, where you can search for untranslated strings, and specify their translations via simple web forms. An easier, and much less time consuming method is to import translations already done for your language. This is achieved by the use of GNU gettext Portable Object files. These are editable with quite convenient desktop editors specifically architected for supporting your work with GNU Gettext files. The import feature allows you to add strings from such files into the site database. The export functionality enables you to share your translations with others, generating Portable Object files from your site strings."); - break; } } Index: menu.module =================================================================== RCS file: /cvs/drupal/drupal/modules/menu.module,v retrieving revision 1.29 diff -u -F^f -r1.29 menu.module --- menu.module 31 Mar 2005 21:18:08 -0000 1.29 +++ menu.module 18 Apr 2005 14:05:03 -0000 @@ -7,6 +7,22 @@ */ /** + * Implementation of hook_help(). + */ +function menu_help($section) { + switch ($section) { + case 'admin/modules#description': + return t('Allows administrators to customize the site navigation menu.'); + case 'admin/menu': + return t('

Select an operation from the list to move, change, or delete a menu item.

'); + case 'admin/menu/menu/add': + return t('

Enter the name for your new menu. Remember to enable the newly created block in the %blocks administration page.

', array('%blocks' => l(t('blocks'), 'admin/block'))); + case 'admin/menu/item/add': + return t('

Enter the title, path, position and the weight for your new menu item.

'); + } +} + +/** * Implementation of hook_menu(). */ function menu_menu($may_cache) { @@ -53,22 +69,6 @@ function menu_menu($may_cache) { } /** - * Implementation of hook_help(). - */ -function menu_help($section) { - switch ($section) { - case 'admin/modules#description': - return t('Allows administrators to customize the site navigation menu.'); - case 'admin/menu': - return t('

Select an operation from the list to move, change, or delete a menu item.

'); - case 'admin/menu/menu/add': - return t('

Enter the name for your new menu. Remember to enable the newly created block in the %blocks administration page.

', array('%blocks' => l(t('blocks'), 'admin/block'))); - case 'admin/menu/item/add': - return t('

Enter the title, path, position and the weight for your new menu item.

'); - } -} - -/** * Implementation of hook_block(). */ function menu_block($op = 'list', $delta = 0) { Index: node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node.module,v retrieving revision 1.486 diff -u -F^f -r1.486 node.module --- node.module 11 Apr 2005 16:39:19 -0000 1.486 +++ node.module 18 Apr 2005 14:05:03 -0000 @@ -13,32 +13,6 @@ */ function node_help($section) { switch ($section) { - case 'admin/help#node': - $output = t(" -

Nodes

-

The core of the Drupal system is the node. All of the contents of the system are placed in nodes, or extensions of nodes. - A base node contains:

-
A Title
Up to 128 characters of text that titles the node.
-
A Teaser
A small block of text that is meant to get you interested in the rest of node. Drupal will automatically pull a small amount of the body of the node to make the teaser (To configure how long the teaser will be click here). The teaser can be changed if you don't like what Drupal grabs.
-
The Body
The main text that comprises your content.
-
A Type
What kind of node is this? Blog, book, forum, comment, unextended, etc.
-
An Author
The author's name. It will either be \"anonymous\" or a valid user. You cannot set it to an arbitrary value.
-
Authored on
The date the node was written.
-
Changed
The last time this node was changed.
-
Sticky at top of lists
In listings such as the frontpage or a taxonomy overview the teasers of a selected amount of nodes is displayed. If you want to force a node to appear on the top of such a listing, you must set it to 'sticky'. This way it will float to the top of a listing, and it will not be pushed down by newer content. -
Allow user comments
A node can have comments. These comments can be written by other users (Read-write), or only by admins (Read-only).
-
Revisions
Drupal has a revision system so that you can \"roll back\" to an older version of a post if the new version is not what you want.
-
Promote to front page
To get people to look at the new stuff on your site you can choose to move it to the front page. The front page is configured to show the teasers from only a few of the total nodes you have on your site (To configure how many teasers click here).
-
Published
When using Drupal's moderation system a node remains unpublished -- unavailable to non-moderators -- until it is marked Published.
-

Now that you know what is in a node, here are some of the types of nodes available.

", array("%teaser" => url("admin/node/configure/settings"))); - - foreach (node_list() as $type) { - $output .= '

'. t('Node type: %module', array('%module' => node_invoke($type, 'node_name'))). '

'; - $output .= implode("\n", module_invoke_all('help', 'node/add#'. $type)); - } - - return $output; - case 'admin/modules#description': return t('Allows content to be submitted to the site and displayed on pages.'); case 'admin/node/configure': @@ -48,14 +22,10 @@ function node_help($section) { return t('

Below is a list of all of the posts on your site. Other forms of content are listed elsewhere (e.g. comments).

Clicking a title views the post, while clicking an author\'s name views their user information.

', array('%comments' => url('admin/comment'))); case 'admin/node/search': return t('

Enter a simple pattern to search for a post. This can include the wildcard character *.
For example, a search for "br*" might return "bread bakers", "our daily bread" and "brenda".

'); - } - - if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == 'revisions') { - return t('The revisions let you track differences between multiple versions of a post.'); - } - - if (arg(0) == 'node' && arg(1) == 'add' && $type = arg(2)) { - return variable_get($type .'_help', ''); + case 'node/'. arg(1) .'/revisions': + return t('

The revisions let you track differences between multiple versions of a post.

'); + case 'node/add/'. arg(2): + return variable_get(arg(2) .'_help', ''); } } @@ -214,15 +184,15 @@ function node_teaser($body) { return substr($body, 0, $length + 1); } - if ($length = strpos($body, '„ÄÇ', $size)) { + if ($length = strpos($body, '샫', $size)) { return substr($body, 0, $length + 1); } - if ($length = strpos($body, '„ÄÅ', $size)) { + if ($length = strpos($body, 'ìƒ≈', $size)) { return substr($body, 0, $length + 1); } - if ($length = strpos($body, 'ÿü ', $size)) { + if ($length = strpos($body, 'ˇ¸ ', $size)) { return substr($body, 0, $length + 1); } Index: path.module =================================================================== RCS file: /cvs/drupal/drupal/modules/path.module,v retrieving revision 1.56 diff -u -F^f -r1.56 path.module --- path.module 1 Apr 2005 15:55:00 -0000 1.56 +++ path.module 18 Apr 2005 14:05:03 -0000 @@ -17,48 +17,6 @@ function path_help($section) { return t("

Drupal provides users complete control over URLs through aliasing. This feature is typically used to make URLs human-readable or easy to remember. For example, one could map the relative URL 'node/1' onto 'about'. Each system path can have multiple aliases.

"); case 'admin/path/add': return t('

Enter the path you wish to create the alias for, followed by the name of the new alias.

'); - case 'admin/help#path': - return t(" -

Background

-

A very powerful feature of Drupal is the ability to have control over all paths. The path module is the tool that provides this functionality and is part of the basic Drupal installation, although it is not enabled by default. Some examples of re-mapping paths are:

-
-user/login => login
-
-image/tid/16 => store
-
-taxonomy/term/7+19+20+21 => store/products/whirlygigs
-
-node/3 => contact
-
-

This functionality integrates seamlessly into node forms and also provides the administrator an interface to view all aliases that have been created.

-

Aliases have a many to one relationship with their original Drupal URLs. In other words you can have many different aliases map to a single path. An example of where a multiple aliases come in handy is creating a standard RSS feed URL:

- -
-node/feed => rss.xml
-node/feed => index.rdf
-
- -

When Drupal generates links for a path with multiple aliases it will choose the first alias created per system URL. So in our above example, Drupal would use rss.xml as the default alias rather than index.rdf. To change this behavior, delete the aliases for node/feed and create the index.rdf alias before rss.xml.

- -

Permissions

-

Two permissions are related to URL aliasing: create url aliases and administer url aliases.

-
  1. create url aliases - Allows users to create aliases for nodes. Enabling this permission will display a path field to the user in any node form, allowing them to enter an alias for that node. They will be able to edit/delete the alias after it is created using the same form.
  2. administer url aliases - Allows users to access the alias administration interface. This interface displays all aliases and provides a way to create and modify them. This is also the location to build aliases for things other than nodes. For example, you can create an alias for a taxonomy URL or even re-map the admin path (although the original admin path will still be accessible since aliases do not cancel out original paths).
- -

Mass URL aliasing

-

Drupal also comes with user defined mass URL aliasing capabilities. You might like to see completely different URLs used by Drupal, or even URLs translated to the visitors' native language, in which case this feature is handy. Only an administrator with access to the website source code can set up this kind of aliases. You can define a conf_url_rewrite function in conf.php, following this example:

-
-function conf_url_rewrite(\$path, \$mode = 'incoming') {
-  if (\$mode == 'incoming') { // URL coming from a client
-    return preg_replace('!^display/(\\d+)\$!', 'node/\\1', \$path);
-  }
-  else { // URL going out to a client
-    \$aliased = preg_replace('!^node/(\\d+)\$!', 'display/\\1', \$path);
-    if (\$aliased != \$path) { return \$aliased; }
-  }
-}
-
-

This function will shorten every node/\$node_id type of URL to display/\$node_id. Individual URL aliases defined on the browser interface of Drupal take precedence, so if you have the 'contact' page alias from the example above, then the display/3 alias will not be effective when outgoing links are created. Incoming URLs however always work with the mass URL aliased variant. Only the 'incoming' and 'outgoing' modes are supposed to be supported by your conf_url_rewrite function.

-

You cannot only use this feature to shorten the URLs, or to translate them to you own language, but also to add completely new subURLs to an already existing module's URL space, or to compose a bunch of existing stuff together to a common URL space. You can create a news section for example aliasing nodes and taxonomy overview pages falling under a 'news' vocabulary, thus having news/15 and news/sections/3 instead of node/15 and taxonomy/term/3. You need extensive knowledge of Drupal's inner workings and regular expressions though to make such advanced aliases.

"); } } Index: ping.module =================================================================== RCS file: /cvs/drupal/drupal/modules/ping.module,v retrieving revision 1.29 diff -u -F^f -r1.29 ping.module --- ping.module 1 Apr 2005 15:55:00 -0000 1.29 +++ ping.module 18 Apr 2005 14:05:03 -0000 @@ -11,18 +11,9 @@ */ function ping_help($section) { switch ($section) { - case 'admin/help#ping': - $output .= t(" -

Drupal can automatically send notifications (called \"pings\") to the %pingomatic to tell them that your site has changed. In turn pingomatic.com will ping other services like weblogs.com, Technorati, blo.gs, BlogRolling, Feedster.com, Moreover, etc.

-

The ping feature requires crontab.

", array('%pingomatic' => 'http://pingomatic.com/')); - break; - case 'admin/modules#description': - $output = t('Alerts other sites when your site has been updated.'); - break; + return t('Alerts other sites when your site has been updated.'); } - - return $output; } /** Index: poll.module =================================================================== RCS file: /cvs/drupal/drupal/modules/poll.module,v retrieving revision 1.162 diff -u -F^f -r1.162 poll.module --- poll.module 1 Apr 2005 15:55:00 -0000 1.162 +++ poll.module 18 Apr 2005 14:05:03 -0000 @@ -12,16 +12,6 @@ */ function poll_help($section) { switch ($section) { - case 'admin/help#poll': - return t(" -

Users with the correct permissions can create and/or vote on polls.

- -

Creating a poll is much like creating any other node. Click \"create poll\" in your user box. The title of the poll should be the question, then enter the answers and the \"base\" vote counts. You can also choose the time period over which the vote will run.

The Poll item in the navigation links will take you to a page where you can see all the current polls, vote on them (if you haven't already) and view the results.

", array("%permissions" => url("admin/access/permissions"), "%poll" => url("poll"))); case 'admin/modules#description': return t("Allows your site to capture votes on different topics in the form of multiple choice questions."); case 'node/add#poll': Index: search.module =================================================================== RCS file: /cvs/drupal/drupal/modules/search.module,v retrieving revision 1.124 diff -u -F^f -r1.124 search.module --- search.module 11 Apr 2005 22:48:27 -0000 1.124 +++ search.module 18 Apr 2005 14:05:04 -0000 @@ -7,6 +7,25 @@ */ /** + * Implementation of hook_help(). + */ +function search_help($section) { + switch ($section) { + case 'admin/modules#description': + return t('Enables site-wide keyword searching.'); + case 'admin/settings/search': + return t('

The search engine works by maintaining an index of the words in your site\'s content. You can adjust the settings below to tweak the indexing behaviour. Note that the search requires cron to be set up correctly.

'); + case 'search#noresults': + return t('

', array('%number' => variable_get('minimum_word_size', 3))); + } +} + + +/** * Matches Unicode character classes to exclude from the search index. * * See: http://www.unicode.org/Public/UNIDATA/UCD.html#General_Category_Values @@ -43,26 +62,6 @@ define('PREG_CLASS_PUNCTUATION', '\x{21}-\x{23}\x{25}-\x{2a}\x{2c}-\x{2f}\x{3a}\x{3b}\x{3f}\x{40}\x{5b}-\x{5d}\x{5f}\x{7b}\x{7d}\x{a1}\x{ab}\x{b7}\x{bb}\x{bf}\x{37e}\x{387}\x{55a}-\x{55f}\x{589}\x{58a}\x{5be}\x{5c0}\x{5c3}\x{5f3}\x{5f4}\x{60c}\x{60d}\x{61b}\x{61f}\x{66a}-\x{66d}\x{6d4}\x{700}-\x{70d}\x{964}\x{965}\x{970}\x{df4}\x{e4f}\x{e5a}\x{e5b}\x{f04}-\x{f12}\x{f3a}-\x{f3d}\x{f85}\x{104a}-\x{104f}\x{10fb}\x{1361}-\x{1368}\x{166d}\x{166e}\x{169b}\x{169c}\x{16eb}-\x{16ed}\x{1735}\x{1736}\x{17d4}-\x{17d6}\x{17d8}-\x{17da}\x{1800}-\x{180a}\x{1944}\x{1945}\x{2010}-\x{2027}\x{2030}-\x{2043}\x{2045}-\x{2051}\x{2053}\x{2054}\x{2057}\x{207d}\x{207e}\x{208d}\x{208e}\x{2329}\x{232a}\x{23b4}-\x{23b6}\x{2768}-\x{2775}\x{27e6}-\x{27eb}\x{2983}-\x{2998}\x{29d8}-\x{29db}\x{29fc}\x{29fd}\x{3001}-\x{3003}\x{3008}-\x{3011}\x{3014}-\x{301f}\x{3030}\x{303d}\x{30a0}\x{30fb}\x{fd3e}\x{fd3f}\x{fe30}-\x{fe52}\x{fe54}-\x{fe61}\x{fe63}\x{fe68}\x{fe6a}\x{fe6b}\x{ff01}-\x{ff03}\x{ff05}-\x{ff0a}\x{ff0c}-\x{ff0f}\x{ff1a}\x{ff1b}\x{ff1 f}\x{ff20}\x{ff3b}-\x{ff3d}\x{ff3f}\x{ff5b}\x{ff5d}\x{ff5f}-\x{ff65}\x{10100}\x{10101}\x{1039f}'); /** - * Implementation of hook_help(). - */ -function search_help($section = 'admin/help#search') { - switch ($section) { - case 'admin/modules#description': - return t('Enables site-wide keyword searching.'); - case 'admin/settings/search': - return t(' -

The search engine works by maintaining an index of the words in your site\'s content. You can adjust the settings below to tweak the indexing behaviour. Note that the search requires cron to be set up correctly.

-'); - case 'search#noresults': - return t('

', array('%number' => variable_get('minimum_word_size', 3))); - } -} - -/** * Implementation of hook_perm(). */ function search_perm() { @@ -472,7 +471,7 @@ function search_index($sid, $type, $text function do_search($keywords, $type, $join = '', $where = '1', $variation = true) { // Note, we replace the wildcards with U+FFFD (Replacement character) to pass // through the keyword extractor. Multiple wildcards are collapsed into one. - $keys = preg_replace('!\*+!', 'ÔøΩ', $keywords); + $keys = preg_replace('!\*+!', '‘¯á', $keywords); // Split into words $keys = search_keywords_split($keys); @@ -484,14 +483,14 @@ function do_search($keywords, $type, $jo foreach ($keys as $word) { if (string_length($word) < variable_get('remove_short', 3)) { if ($word != '') { - $refused[] = str_replace('ÔøΩ', '*', $word); + $refused[] = str_replace('‘¯á', '*', $word); } continue; } - if (strpos($word, 'ÔøΩ') !== false) { + if (strpos($word, '‘¯á') !== false) { // Note: strtolower can be used because the value is only used internally. $words[] = "i.word LIKE '%s'"; - $arguments[] = str_replace('ÔøΩ', '%', strtolower($word)); + $arguments[] = str_replace('‘¯á', '%', strtolower($word)); } else { $words[] = "i.word = '%s'"; Index: statistics.module =================================================================== RCS file: /cvs/drupal/drupal/modules/statistics.module,v retrieving revision 1.187 diff -u -F^f -r1.187 statistics.module --- statistics.module 14 Apr 2005 19:37:11 -0000 1.187 +++ statistics.module 18 Apr 2005 14:05:04 -0000 @@ -11,34 +11,6 @@ */ function statistics_help($section) { switch ($section) { - case 'admin/help#statistics': - return t(" -

Introduction

-

The statistics module keeps track of numerous statistics for your site but be warned, statistical collection does cause a little overhead, thus everything comes disabled by default.

-

The module counts how many times, and from where -- using HTTP referrer -- each of your posts is viewed. Once we have that count the module can do the following with it: -

-

Notes on using the statistics:

- -

As with any new module, the statistics module needs to be enabled before you can use it. Also refer to the permissions section, as this module supports four separate permissions.

-

Configuring the statistics module

-

There are some configuration options added to the main administer » settings » statistics section:

- -

Popular content block

-

This module creates a block that can display the day's top viewed content, the all time top viewed content, and the last content viewed. Each of these links can be enabled or disabled individually, and the number of posts displayed for each can be configured with a drop down menu. If you disable all sections of this block, it will not appear.

-

Don't forget to enable the block.

", - array('%modules' => url('admin/modules'), '%permissions' => url('admin/access/permissions'), '%referer' => url('admin/logs/referrers'), '%configuration' => url('admin/settings/statistics'), '%block' => url('admin/block'))); case 'admin/modules#description': return t('Logs access statistics for your site.'); case 'admin/settings/statistics': Index: system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system.module,v retrieving revision 1.205 diff -u -F^f -r1.205 system.module --- system.module 11 Apr 2005 19:05:52 -0000 1.205 +++ system.module 18 Apr 2005 14:05:04 -0000 @@ -26,16 +26,6 @@ function system_help($section) { return t('

These options control the display settings for the %template theme. When your site is displayed using this theme, these settings will be used. By clicking "Reset to defaults," you can choose to use the global settings for this theme.

', array('%template' => $theme, '%global' => url('admin/themes/settings'))); case 'admin/modules': return t('

Modules are plugins for Drupal that extend its core functionality. Here you can select which modules are enabled. Click on the name of the module in the navigation menu for their individual configuration pages. Once a module is enabled, new permissions might be made available. Modules can automatically be temporarily disabled to reduce server load when your site becomes extremely busy by enabling the throttle.module and checking throttle. The auto-throttle functionality must be enabled on the throttle configuration page after having enabled the throttle module.

', array('%permissions' => url('admin/access/permissions'), '%throttle' => url('admin/settings/throttle'))); - case 'admin/help#system': - return t(" -

Drupal comes with system-wide defaults but the setting-module provides control over many Drupal preferences, behaviours including visual and operational settings.

-

Cron

-

Some modules require regularly scheduled actions, such as cleaning up logfiles. Cron, which stands for chronograph, is a periodic command scheduler executing commands at intervals specified in seconds. It can be used to control the execution of daily, weekly and monthly jobs (or anything with a period measured in seconds). Automating tasks is one of the best ways to keep a system running smoothly, and if most of your administration does not require your direct involvement, cron is an ideal solution.

-

The recommended way to set up your cron system is to set up a Unix/Linux crontab entry (see \"man crontab\") that frequently visits %cron-link. Note that cron does not guarantee the commands will be executed at the specified interval. However, Drupal will try its best to run the tasks as close to the specified intervals as possible. The more you visit cron.php, the more accurate cron will be.

-

If your hosting company does not allow you to set up crontab entries, you can always ask someone else to set up an entry for you. After all, virtually any Unix/Linux machine with access to the internet can set up a crontab entry to frequently visit %cron-link.

-

For the Unix/Linux crontab itself, use a browser like lynx or wget but make sure the process terminates: either use /usr/bin/lynx -source %base_url/cron.php or /usr/bin/wget -o /dev/null -O /dev/null %cron-link. Take a look at the example scripts in the scripts-directory. Make sure to adjust them to fit your needs. A good crontab line to run the cron script once every hour would be: -

     00 * * * * /home/www/drupal/scripts/cron-lynx.sh
- Note that it is essential to access cron.php using a browser on the web site's domain; do not run it using command line PHP and avoid using localhost or 127.0.0.1 or some of the environment variables will not be set correctly and features may not work as expected.

", array('%base_url' => $base_url, '%cron-link' => "$base_url/cron.php", '%lynx' => 'http://lynx.browser.org', '%wget' => 'http://www.gnu.org/software/wget/wget.html' )); case 'admin/modules#description': return t('Handles general site configuration for administrators.'); } Index: taxonomy.module =================================================================== RCS file: /cvs/drupal/drupal/modules/taxonomy.module,v retrieving revision 1.197 diff -u -F^f -r1.197 taxonomy.module --- taxonomy.module 16 Apr 2005 11:49:27 -0000 1.197 +++ taxonomy.module 18 Apr 2005 14:05:04 -0000 @@ -7,6 +7,20 @@ */ /** + * Implementation of hook_help(). + */ +function taxonomy_help($section) { + switch ($section) { + case 'admin/modules#description': + return t('Enables the categorization of content.'); + case 'admin/taxonomy': + return t('

The taxonomy module allows you to classify content into categories and subcategories; it allows multiple lists of categories for classification (controlled vocabularies) and offers the possibility of creating thesauri (controlled vocabularies that indicate the relationship of terms), taxonomies (controlled vocabularies where relationships are indicated hierarchically), and free vocabularies where terms, or tags, are defined during content creation. To delete a term, choose "edit term". To delete a vocabulary and all its terms, choose "edit vocabulary".

'); + case 'admin/taxonomy/add/vocabulary': + return t("

When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo). Drupal allows you to describe each piece of content (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to Slashdot.org's or Kuro5hin.org's sections. For more complex implementations, you might create a hierarchical list of categories.

"); + } +} + +/** * Implementation of hook_perm(). */ function taxonomy_perm() { @@ -1188,59 +1202,10 @@ function taxonomy_rss_item($node) { } /** - * Implementation of hook_help(). - */ -function taxonomy_help($section) { - switch ($section) { - case 'admin/modules#description': - return t('Enables the categorization of content.'); - case 'admin/taxonomy': - return t('

The taxonomy module allows you to classify content into categories and subcategories; it allows multiple lists of categories for classification (controlled vocabularies) and offers the possibility of creating thesauri (controlled vocabularies that indicate the relationship of terms), taxonomies (controlled vocabularies where relationships are indicated hierarchically), and free vocabularies where terms, or tags, are defined during content creation. To delete a term, choose "edit term". To delete a vocabulary and all its terms, choose "edit vocabulary".

'); - case 'admin/taxonomy/add/vocabulary': - return t("

When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo). Drupal allows you to describe each piece of content (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to Slashdot.org's or Kuro5hin.org's sections. For more complex implementations, you might create a hierarchical list of categories.

"); - case 'admin/help#taxonomy': - return t(' -

Background

-

Taxonomy is the study of classification. Drupal\'s taxonomy module allows you to define vocabularies which are used to classify content. The module supports hierarchical classification and association between terms, allowing for truly flexible information retrieval and classification. For more details about classification types and insight into the development of the taxonomy module, see this drupal.org discussion.

-

An example taxonomy: food

- -

Notes

-

Vocabularies

-

When you create a controlled vocabulary you are creating a set of terms to use for describing content (known as descriptors in indexing lingo). Drupal allows you to describe each piece of content (blog, story, etc.) using one or many of these terms. For simple implementations, you might create a set of categories without subcategories, similar to Slashdot\'s sections. For more complex implementations, you might create a hierarchical list of categories such as Food taxonomy shown above.

-

Setting up a vocabulary

-

When setting up a controlled vocabulary, if you select the hierarchy option, you will be defining a tree structure of terms, as in a thesaurus. If you select the related terms option, you are allowing the definition of related terms (think see also), as in a thesaurus. Selecting multiple select will allow you to describe a piece of content using more than one term. That content will then appear on each term\'s page, increasing the chance that a user will find it.

-

When setting up a controlled vocabulary you are asked for:

-

Adding terms to a vocabulary

-

Once done defining the vocabulary, you have to add terms to it to make it useful. The options you see when adding a term to a vocabulary will depend on what you selected for related terms, hierarchy and multiple select. These options are:

-

-

Displaying content organized by terms

-

In order to view the content associated with a term or a collection of terms, you should browse to a properly formed Taxonomy URL. For example, taxonomy/term/1+2. Taxonomy URLs always contain one or more term IDs at the end of the URL. You may learn the term ID for a given term by hovering over that term in the taxonomy overview page and noting the number at the end or the URL. To build a Taxonomy URL start with "taxonomy/term/". Then list the term IDs, separated by "+" to choose content tagged with any of the given term IDs, or separated by "," to choose content tagged with all of the given term IDs. In other words, "+" is less specific than ",". Finally, you may optionally specify a "depth" in the vocabulary hierarchy. This defaults to "0", which means only the explicitly listed terms are searched. A positive number indicates the number of additional levels of the tree to search. You may also use the value "all", which means that all descendant terms are searched.

-

RSS feeds

-

Every term, or collection of terms, provides an RSS feed to which interested users may subscribe. The URL format for a sample RSS feed is taxonomy/term/1+2/0/feed. These are built just like Taxonomy URLs, but are followed by the word "feed".

', array('%classification-types' => 'http://www.eleganthack.com/archives/002165.html', '%drupal-dis' => 'http://drupal.org/node/55', '%slashdot' => 'http://slashdot.com/', '%taxo-example' => url('taxonomy/term/1+2'), '%taxo-overview' => url('admin/taxonomy'), '%userland-rss' => 'http://backend.userland.com/stories/rss', '%sample-rss' => url('taxonomy/term/1+2/feed'), '%taxo-help' => url('admin/help/taxonomy', NULL, 'taxonomy-url'))); - } -} - -/** * Helper function for array_map purposes. */ function _taxonomy_get_tid_from_term($term) { return $term->tid; } -?> +?> \ No newline at end of file Index: throttle.module =================================================================== RCS file: /cvs/drupal/drupal/modules/throttle.module,v retrieving revision 1.48 diff -u -F^f -r1.48 throttle.module --- throttle.module 3 Apr 2005 08:53:52 -0000 1.48 +++ throttle.module 18 Apr 2005 14:05:05 -0000 @@ -7,6 +7,18 @@ */ /** + * Implementation of hook_help(). + */ +function throttle_help($section) { + switch ($section) { + case 'admin/modules#description': + return t('Handles the auto-throttling mechanism, to control site congestion.'); + case 'admin/settings/throttle': + return t('If your site gets linked to by a popular website, or otherwise comes under a "Denial of Service" (DoS) attack, your webserver might become overwhelmed. This module provides a congestion control throttling mechanism for automatically detecting a surge in incoming traffic. This mechanism is utilized by other Drupal modules to automatically optimize their performance by temporarily disabling CPU-intensive functionality.'); + } +} + +/** * Determine the current load on the site. * * Call the throttle_status() function from your own modules, themes, blocks, @@ -96,18 +108,6 @@ function _throttle_validate($value, $for } /** - * Implementation of hook_help(). - */ -function throttle_help($section) { - switch ($section) { - case 'admin/modules#description': - return t('Handles the auto-throttling mechanism, to control site congestion.'); - case 'admin/settings/throttle': - return t('If your site gets linked to by a popular website, or otherwise comes under a "Denial of Service" (DoS) attack, your webserver might become overwhelmed. This module provides a congestion control throttling mechanism for automatically detecting a surge in incoming traffic. This mechanism is utilized by other Drupal modules to automatically optimize their performance by temporarily disabling CPU-intensive functionality.'); - } -} - -/** * Implementation of hook_settings(). */ function throttle_settings() { Index: tracker.module =================================================================== RCS file: /cvs/drupal/drupal/modules/tracker.module,v retrieving revision 1.114 diff -u -F^f -r1.114 tracker.module --- tracker.module 12 Feb 2005 07:51:14 -0000 1.114 +++ tracker.module 18 Apr 2005 14:05:05 -0000 @@ -11,12 +11,6 @@ */ function tracker_help($section) { switch ($section) { - case 'admin/help#tracker': - return t('

The tracker module is a handy module for displaying the most recently added or updated content to a Drupal site. The link to the tracker is labeled recent posts in the user\'s navigation block. Updates include changes to the text by either the original author or someone else that has permission to edit the content, such as an editor or administrator as well as all comments added to an item.

-

The Tracker module presents a page listing the recently-updated content written by the user with the content type, the title, the user\'s name, how many comments that item has received, as well as how long ago it was updated. If an item was written by someone else, tracker will show that item at the top of the list. An example:

-

A user named Jessica writes a blog post, then some time passes, and others write blog posts. Then if John posts a comment to Jessica\'s post, and you have bookmarked John\'s tracker page (see below on how to do this) then Jessica\'s content will appear at the top.

-

If an user with administer comments (e.g. an administrator or editor of a site) deletes a comment (e.g. it is off-topic, inappropriate language, or unsolicited advertisement), the content item will drop down to when it was updated previous to that deleted comment.

-

To use the Tracker module to "watch" for a user\'s updated content, click on that user\'s profile, then the "track" tab.

'); case 'admin/modules#description': return t('Enables tracking of recent posts for users.'); } Index: user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user.module,v retrieving revision 1.461 diff -u -F^f -r1.461 user.module --- user.module 13 Apr 2005 19:44:31 -0000 1.461 +++ user.module 18 Apr 2005 14:05:05 -0000 @@ -1721,48 +1721,7 @@ function user_help($section) { case 'admin/user/configure': case 'admin/user/configure/settings': return t('

In order to use the full power of Drupal a visitor must sign up for an account. This page lets you setup how a user signs up, logs out, the guidelines from the system about user subscriptions, and the e-mails the system will send to the user.

'); - case 'user/help#user': - $site = variable_get('site_name', 'this website'); - - $output = t(" -

Distributed authentication

-

One of the more tedious moments in visiting a new website is filling out the registration form. Here at %site, you do not have to fill out a registration form if you are already a member of %help-links. This capability is called distributed authentication, and is unique to Drupal, the software which powers %site.

-

Distributed authentication enables a new user to input a username and password into the login box, and immediately be recognized, even if that user never registered at %site. This works because Drupal knows how to communicate with external registration databases. For example, lets say that new user 'Joe' is already a registered member of Delphi Forums. Drupal informs Joe on registration and login screens that he may login with his Delphi ID instead of registering with %site. Joe likes that idea, and logs in with a username of joe@remote.delphiforums.com and his usual Delphi password. Drupal then contacts the remote.delphiforums.com server behind the scenes (usually using XML-RPC, HTTP POST, or SOAP) and asks: \"Is the password for user Joe correct?\". If Delphi replies yes, then we create a new %site account for Joe and log him into it. Joe may keep on logging into %site in the same manner , and he will always be logged into the same account.

", array('%help-links' => (implode(', ', user_auth_help_links())), '%site' => "$site", '%drupal' => 'http://www.drupal.org', '%delphi-forums' => 'http://www.delphiforums.com', '%xml' => 'http://www.xmlrpc.com', '%http-post' => 'http://www.w3.org/Protocols/', '%soap' => 'http://www.soapware.org')); - - foreach (module_list() as $module) { - if (module_hook($module, 'auth')) { - $output .= "

". module_invoke($module, 'info', 'name') .'

'; - $output .= module_invoke($module, 'help', "user/help#$module"); - } - } - - return $output; - case 'admin/help#user': - $output = t(" -

Introduction

-

Drupal offers a powerful access system that allows users to register, login, logout, maintain user profiles, etc. By using roles you can setup fine grained permissions allowing each role to do only what you want them to. Each user is assigned to one or more roles. By default there are two roles \"anonymous\" - a user who has not logged in, and \"authorized\" a user who has signed up and who has been authorized. As anonymous users, participants suffer numerous disadvantages, for example they cannot sign their names to nodes, and their moderated posts beginning at a lower score.

-

In contrast, those with a user account can use their own name or handle and are granted various privileges: the most important is probably the ability to moderate new submissions, to rate comments, and to fine-tune the site to their personal liking, with saved personal settings. Drupal themes make fine tuning quite a pleasure.

-

Registered users need to authenticate by supplying either a local username and password, or a remote username and password such as a Jabber ID, DelphiForums ID, or one from a Drupal powered website. See the distributed authentication help for more information on this innovative feature. - The local username and password, hashed with Message Digest 5 (MD5), are stored in your database. When you enter a password it is also hashed with MD5 and compared with what is in the database. If the hashes match, the username and password are correct. Once a user authenticated session is started, and until that session is over, the user won't have to re-authenticate. To keep track of the individual sessions, Drupal relies on PHP sessions. A visitor accessing your website is assigned an unique ID, the so-called session ID, which is stored in a cookie. For security's sake, the cookie does not contain personal information but acts as a key to retrieve the information stored on your server. When a visitor accesses your site, Drupal will check whether a specific session ID has been sent with the request. If this is the case, the prior saved environment is recreated.

-

User preferences and profiles

Each Drupal user has a profile, and a set of preferences which may be edited by clicking on the \"my account\" link. Of course, a user must be logged into reach those pages. There, users will find a page for changing their preferred time zone, language, username, e-mail address, password, theme, signature, and distributed authentication names. Changes made here take effect immediately. Also, administrators may make profile and preferences changes in account administration on behalf of their users.

- -

Distributed authentication

-

One of the more tedious moments in visiting a new website is filling out the registration form. The reg form provides helpful information to the website owner, but not much value for the user. The value for the end user is usually the ability to post a messages or receive personalized news, etc. Distributed authentication (DA) gives the user what they want without having to fill out the reg form. Removing this obstacle yields more registered and active users for the website.

-

DA enables a new user to input a username and password into the login box and immediately be recognized, even if that user never registered on your site. This works because Drupal knows how to communicate with external registration databases. For example, lets say that your new user 'Joe' is already a registered member of Delphi Forums. If your Drupal has the delphi module installed, then Drupal will inform Joe on the registration and login screens that he may login with his Delphi ID instead of registering with your Drupal instance. Joe likes that idea, and logs in with a username of joe@remote.delphiforums.com and his usual Delphi password. Drupal then communicates with remote.delphiforums.com (usually using XML, HTTP-POST, or SOAP) behind the scenes and asks "is this password for username=joe?" If Delphi replies yes, then Drupal will create a new local account for joe and log joe into it. Joe may keep on logging into your Drupal instance in the same manner, and he will be logged into the same joe@remote.delphiforums.com account.

-

One key element of DA is the 'authmap' table, which maps a user's authname (e.g. joe@remote.delphiforums.com) to his local UID (i.e. user identification number). This map is checked whenever a user successfully logs into an external authentication source. Once Drupal knows that the current user is definitely joe@remote.delphiforums.com (because Delphi says so), he looks up Joe's UID and logs Joe into that account.

-

To disable distributed authentication, simply disable or remove all DA modules. For a virgin install, that means removing/disabling the jabber module and the drupal module.

-

Drupal is setup so that it is very easy to add support for any external authentication source. You currently have the following authentication modules installed ...

", array('%user-role' => url('admin/access/roles'), '%user-permission' => url('admin/access/permissions'), '%jabber' => 'http://www.jabber.org/', '%delphi-forums' => 'http://www.delphiforums.com/', '%drupal' => 'http://www.drupal.org/', '%da-auth' => url('admin/help/user#da'), '%php-sess' => 'http://www.php.net/manual/en/ref.session.php', '%admin-user' => url('admin/user'), '%xml' => 'http://www.xmlrpc.org/', '%http-post' => 'http://www.w3.org/Protocols/', '%soap' => 'http://www.soapware.org/', '%dis-module' => url('admin/modules'), '%user-prefs' => url('user/' . $user->uid))); - - foreach (module_list() as $module) { - if (module_hook($module, 'auth')) { - $output = strtr($output, array('%module-list' => '

'. module_invoke($module, 'info', 'name') ."

\n%module-list")); - $output = strtr($output, array('%module-list' => module_invoke($module, 'help', 'user/help') . "\n%module-list")); - } - } - - return strtr($output, array('%module-list' => '')); } - } /**