Commit 926606ee authored by Dries's avatar Dries

- Patch #535564 by Gábor Hojtsy: the D7UX mockups call for a top level Content...

- Patch #535564 by Gábor Hojtsy: the D7UX mockups call for a top level Content item, which would immediatey lead to the "Find content" screen. The current Drupal 7 code is almost there, but still has an RSS settings item blocking the implementation of this by default and aggregator and book also add subitems.
parent 8c852108
......@@ -289,7 +289,7 @@ function drupal_get_destination() {
* destination in either the $_REQUEST-array (i.e. by using
* the query string of an URI) This is used to direct the user back to
* the proper page after completing a form. For example, after editing
* a post on the 'admin/content/node'-page or after having logged on using the
* a post on the 'admin/content'-page or after having logged on using the
* 'user login'-block in a sidebar. The function drupal_get_destination()
* can be used to help set the destination URL.
*
......@@ -1988,7 +1988,7 @@ function _format_date_callback(array $matches = NULL, $new_langcode = NULL) {
* Generate a URL from a Drupal menu path. Will also pass-through existing URLs.
*
* @param $path
* The Drupal path being linked to, such as "admin/content/node", or an
* The Drupal path being linked to, such as "admin/content", or an
* existing URL like "http://drupal.org/". The special path
* '<front>' may also be given and will generate the site's base URL.
* @param $options
......@@ -2160,10 +2160,10 @@ function drupal_attributes(array $attributes = array()) {
* @param $text
* The text to be enclosed with the anchor tag.
* @param $path
* The Drupal path being linked to, such as "admin/content/node". Can be an
* The Drupal path being linked to, such as "admin/content". Can be an
* external or internal URL.
* - If you provide the full URL, it will be considered an external URL.
* - If you provide only the path (e.g. "admin/content/node"), it is
* - If you provide only the path (e.g. "admin/content"), it is
* considered an internal link. In this case, it must be a system URL
* as the url() function will generate the alias.
* - If you provide '<front>', it generates a link to the site's
......
......@@ -27,10 +27,10 @@ function aggregator_view() {
$header = array(t('Title'), t('Items'), t('Last update'), t('Next update'), array('data' => t('Operations'), 'colspan' => '3'));
$rows = array();
foreach ($result as $feed) {
$rows[] = array(l($feed->title, "aggregator/sources/$feed->fid"), format_plural($feed->items, '1 item', '@count items'), ($feed->checked ? t('@time ago', array('@time' => format_interval(REQUEST_TIME - $feed->checked))) : t('never')), ($feed->checked && $feed->refresh ? t('%time left', array('%time' => format_interval($feed->checked + $feed->refresh - REQUEST_TIME))) : t('never')), l(t('edit'), "admin/content/aggregator/edit/feed/$feed->fid"), l(t('remove items'), "admin/content/aggregator/remove/$feed->fid"), l(t('update items'), "admin/content/aggregator/update/$feed->fid"));
$rows[] = array(l($feed->title, "aggregator/sources/$feed->fid"), format_plural($feed->items, '1 item', '@count items'), ($feed->checked ? t('@time ago', array('@time' => format_interval(REQUEST_TIME - $feed->checked))) : t('never')), ($feed->checked && $feed->refresh ? t('%time left', array('%time' => format_interval($feed->checked + $feed->refresh - REQUEST_TIME))) : t('never')), l(t('edit'), "admin/settings/aggregator/edit/feed/$feed->fid"), l(t('remove items'), "admin/settings/aggregator/remove/$feed->fid"), l(t('update items'), "admin/settings/aggregator/update/$feed->fid"));
}
if (empty($rows)) {
$rows[] = array(array('data' => t('No feeds available. <a href="@link">Add feed</a>.', array('@link' => url('admin/content/aggregator/add/feed'))), 'colspan' => '5', 'class' => 'message'));
$rows[] = array(array('data' => t('No feeds available. <a href="@link">Add feed</a>.', array('@link' => url('admin/settings/aggregator/add/feed'))), 'colspan' => '5', 'class' => 'message'));
}
$output .= theme('table', $header, $rows);
......@@ -41,10 +41,10 @@ function aggregator_view() {
$header = array(t('Title'), t('Items'), t('Operations'));
$rows = array();
foreach ($result as $category) {
$rows[] = array(l($category->title, "aggregator/categories/$category->cid"), format_plural($category->items, '1 item', '@count items'), l(t('edit'), "admin/content/aggregator/edit/category/$category->cid"));
$rows[] = array(l($category->title, "aggregator/categories/$category->cid"), format_plural($category->items, '1 item', '@count items'), l(t('edit'), "admin/settings/aggregator/edit/category/$category->cid"));
}
if (empty($rows)) {
$rows[] = array(array('data' => t('No categories available. <a href="@link">Add category</a>.', array('@link' => url('admin/content/aggregator/add/category'))), 'colspan' => '5', 'class' => 'message'));
$rows[] = array(array('data' => t('No categories available. <a href="@link">Add category</a>.', array('@link' => url('admin/settings/aggregator/add/category'))), 'colspan' => '5', 'class' => 'message'));
}
$output .= theme('table', $header, $rows);
......@@ -169,7 +169,7 @@ function aggregator_form_feed_submit($form, &$form_state) {
if (isset($form_state['values']['title'])) {
drupal_set_message(t('The feed %feed has been updated.', array('%feed' => $form_state['values']['title'])));
if (arg(0) == 'admin') {
$form_state['redirect'] = 'admin/content/aggregator/';
$form_state['redirect'] = 'admin/settings/aggregator/';
return;
}
else {
......@@ -181,7 +181,7 @@ function aggregator_form_feed_submit($form, &$form_state) {
watchdog('aggregator', 'Feed %feed deleted.', array('%feed' => $title));
drupal_set_message(t('The feed %feed has been deleted.', array('%feed' => $title)));
if (arg(0) == 'admin') {
$form_state['redirect'] = 'admin/content/aggregator/';
$form_state['redirect'] = 'admin/settings/aggregator/';
return;
}
else {
......@@ -191,7 +191,7 @@ function aggregator_form_feed_submit($form, &$form_state) {
}
}
else {
watchdog('aggregator', 'Feed %feed added.', array('%feed' => $form_state['values']['title']), WATCHDOG_NOTICE, l(t('view'), 'admin/content/aggregator'));
watchdog('aggregator', 'Feed %feed added.', array('%feed' => $form_state['values']['title']), WATCHDOG_NOTICE, l(t('view'), 'admin/settings/aggregator'));
drupal_set_message(t('The feed %feed has been added.', array('%feed' => $form_state['values']['title'])));
}
}
......@@ -205,7 +205,7 @@ function aggregator_admin_remove_feed($form_state, $feed) {
),
),
t('Are you sure you want to remove all items from the feed %feed?', array('%feed' => $feed->title)),
'admin/content/aggregator',
'admin/settings/aggregator',
t('This action cannot be undone.'),
t('Remove items'),
t('Cancel')
......@@ -220,7 +220,7 @@ function aggregator_admin_remove_feed($form_state, $feed) {
*/
function aggregator_admin_remove_feed_submit($form, &$form_state) {
aggregator_remove($form_state['values']['feed']);
$form_state['redirect'] = 'admin/content/aggregator';
$form_state['redirect'] = 'admin/settings/aggregator';
}
/**
......@@ -339,7 +339,7 @@ function aggregator_form_opml_submit($form, &$form_state) {
drupal_form_submit('aggregator_form_feed', $form_state);
}
$form_state['redirect'] = 'admin/content/aggregator';
$form_state['redirect'] = 'admin/settings/aggregator';
}
/**
......@@ -382,7 +382,7 @@ function _aggregator_parse_opml($opml) {
*/
function aggregator_admin_refresh_feed($feed) {
aggregator_refresh($feed);
drupal_goto('admin/content/aggregator');
drupal_goto('admin/settings/aggregator');
}
/**
......@@ -552,7 +552,7 @@ function aggregator_form_category_submit($form, &$form_state) {
if (isset($form_state['values']['title'])) {
drupal_set_message(t('The category %category has been updated.', array('%category' => $form_state['values']['title'])));
if (arg(0) == 'admin') {
$form_state['redirect'] = 'admin/content/aggregator/';
$form_state['redirect'] = 'admin/settings/aggregator/';
return;
}
else {
......@@ -564,7 +564,7 @@ function aggregator_form_category_submit($form, &$form_state) {
watchdog('aggregator', 'Category %category deleted.', array('%category' => $title));
drupal_set_message(t('The category %category has been deleted.', array('%category' => $title)));
if (arg(0) == 'admin') {
$form_state['redirect'] = 'admin/content/aggregator/';
$form_state['redirect'] = 'admin/settings/aggregator/';
return;
}
else {
......@@ -574,7 +574,7 @@ function aggregator_form_category_submit($form, &$form_state) {
}
}
else {
watchdog('aggregator', 'Category %category added.', array('%category' => $form_state['values']['title']), WATCHDOG_NOTICE, l(t('view'), 'admin/content/aggregator'));
watchdog('aggregator', 'Category %category added.', array('%category' => $form_state['values']['title']), WATCHDOG_NOTICE, l(t('view'), 'admin/settings/aggregator'));
drupal_set_message(t('The category %category has been added.', array('%category' => $form_state['values']['title'])));
}
}
......@@ -18,18 +18,18 @@ function aggregator_help($path, $arg) {
switch ($path) {
case 'admin/help#aggregator':
$output = '<p>' . t('The aggregator is a powerful on-site syndicator and news reader that gathers fresh content from RSS-, RDF-, and Atom-based feeds made available across the web. Thousands of sites (particularly news sites and blogs) publish their latest headlines and posts in feeds, using a number of standardized XML-based formats. Formats supported by the aggregator include <a href="@rss">RSS</a>, <a href="@rdf">RDF</a>, and <a href="@atom">Atom</a>.', array('@rss' => 'http://cyber.law.harvard.edu/rss/', '@rdf' => 'http://www.w3.org/RDF/', '@atom' => 'http://www.atomenabled.org')) . '</p>';
$output .= '<p>' . t('Feeds contain feed items, or individual posts published by the site providing the feed. Feeds may be grouped in categories, generally by topic. Users view feed items in the <a href="@aggregator">main aggregator display</a> or by <a href="@aggregator-sources">their source</a>. Administrators can <a href="@feededit">add, edit and delete feeds</a> and choose how often to check each feed for newly updated items. The most recent items in either a feed or category can be displayed as a block through the <a href="@admin-block">blocks administration page</a>. A <a href="@aggregator-opml">machine-readable OPML file</a> of all feeds is available. A correctly configured <a href="@cron">cron maintenance task</a> is required to update feeds automatically.', array('@aggregator' => url('aggregator'), '@aggregator-sources' => url('aggregator/sources'), '@feededit' => url('admin/content/aggregator'), '@admin-block' => url('admin/structure/block'), '@aggregator-opml' => url('aggregator/opml'), '@cron' => url('admin/reports/status'))) . '</p>';
$output .= '<p>' . t('Feeds contain feed items, or individual posts published by the site providing the feed. Feeds may be grouped in categories, generally by topic. Users view feed items in the <a href="@aggregator">main aggregator display</a> or by <a href="@aggregator-sources">their source</a>. Administrators can <a href="@feededit">add, edit and delete feeds</a> and choose how often to check each feed for newly updated items. The most recent items in either a feed or category can be displayed as a block through the <a href="@admin-block">blocks administration page</a>. A <a href="@aggregator-opml">machine-readable OPML file</a> of all feeds is available. A correctly configured <a href="@cron">cron maintenance task</a> is required to update feeds automatically.', array('@aggregator' => url('aggregator'), '@aggregator-sources' => url('aggregator/sources'), '@feededit' => url('admin/settings/aggregator'), '@admin-block' => url('admin/structure/block'), '@aggregator-opml' => url('aggregator/opml'), '@cron' => url('admin/reports/status'))) . '</p>';
$output .= '<p>' . t('For more information, see the online handbook entry for <a href="@aggregator">Aggregator module</a>.', array('@aggregator' => 'http://drupal.org/handbook/modules/aggregator/')) . '</p>';
return $output;
case 'admin/content/aggregator':
case 'admin/settings/aggregator':
$output = '<p>' . t('Thousands of sites (particularly news sites and blogs) publish their latest headlines and posts in feeds, using a number of standardized XML-based formats. Formats supported by the aggregator include <a href="@rss">RSS</a>, <a href="@rdf">RDF</a>, and <a href="@atom">Atom</a>.', array('@rss' => 'http://cyber.law.harvard.edu/rss/', '@rdf' => 'http://www.w3.org/RDF/', '@atom' => 'http://www.atomenabled.org')) . '</p>';
$output .= '<p>' . t('Current feeds are listed below, and <a href="@addfeed">new feeds may be added</a>. For each feed or feed category, the <em>latest items</em> block may be enabled at the <a href="@block">blocks administration page</a>.', array('@addfeed' => url('admin/content/aggregator/add/feed'), '@block' => url('admin/structure/block'))) . '</p>';
$output .= '<p>' . t('Current feeds are listed below, and <a href="@addfeed">new feeds may be added</a>. For each feed or feed category, the <em>latest items</em> block may be enabled at the <a href="@block">blocks administration page</a>.', array('@addfeed' => url('admin/settings/aggregator/add/feed'), '@block' => url('admin/structure/block'))) . '</p>';
return $output;
case 'admin/content/aggregator/add/feed':
case 'admin/settings/aggregator/add/feed':
return '<p>' . t('Add a feed in RSS, RDF or Atom format. A feed may only have one entry.') . '</p>';
case 'admin/content/aggregator/add/category':
case 'admin/settings/aggregator/add/category':
return '<p>' . t('Categories allow feed items from different feeds to be grouped together. For example, several sport-related feeds may belong to a category named <em>Sports</em>. Feed items may be grouped automatically (by selecting a category when creating or editing a feed) or manually (via the <em>Categorize</em> page available from feed item listings). Each category provides its own feed page and block.') . '</p>';
case 'admin/content/aggregator/add/opml':
case 'admin/settings/aggregator/add/opml':
return '<p>' . t('<acronym title="Outline Processor Markup Language">OPML</acronym> is an XML format used to exchange multiple feeds between aggregators. A single OPML document may contain a collection of many feeds. Drupal can parse such a file and import all feeds at once, saving you the effort of adding them manually. You may either upload a local file from your computer or enter a URL where Drupal can download it.') . '</p>';
}
}
......@@ -86,51 +86,51 @@ function aggregator_theme() {
* Implement hook_menu().
*/
function aggregator_menu() {
$items['admin/content/aggregator'] = array(
$items['admin/settings/aggregator'] = array(
'title' => 'Feed aggregator',
'description' => "Configure which content your site aggregates from other sites, how often it polls them, and how they're categorized.",
'page callback' => 'aggregator_admin_overview',
'access arguments' => array('administer news feeds'),
);
$items['admin/content/aggregator/add/feed'] = array(
$items['admin/settings/aggregator/add/feed'] = array(
'title' => 'Add feed',
'page callback' => 'drupal_get_form',
'page arguments' => array('aggregator_form_feed'),
'access arguments' => array('administer news feeds'),
'type' => MENU_LOCAL_TASK,
'parent' => 'admin/content/aggregator',
'parent' => 'admin/settings/aggregator',
);
$items['admin/content/aggregator/add/category'] = array(
$items['admin/settings/aggregator/add/category'] = array(
'title' => 'Add category',
'page callback' => 'drupal_get_form',
'page arguments' => array('aggregator_form_category'),
'access arguments' => array('administer news feeds'),
'type' => MENU_LOCAL_TASK,
'parent' => 'admin/content/aggregator',
'parent' => 'admin/settings/aggregator',
);
$items['admin/content/aggregator/add/opml'] = array(
$items['admin/settings/aggregator/add/opml'] = array(
'title' => 'Import OPML',
'page callback' => 'drupal_get_form',
'page arguments' => array('aggregator_form_opml'),
'access arguments' => array('administer news feeds'),
'type' => MENU_LOCAL_TASK,
'parent' => 'admin/content/aggregator',
'parent' => 'admin/settings/aggregator',
);
$items['admin/content/aggregator/remove/%aggregator_feed'] = array(
$items['admin/settings/aggregator/remove/%aggregator_feed'] = array(
'title' => 'Remove items',
'page callback' => 'drupal_get_form',
'page arguments' => array('aggregator_admin_remove_feed', 4),
'access arguments' => array('administer news feeds'),
'type' => MENU_CALLBACK,
);
$items['admin/content/aggregator/update/%aggregator_feed'] = array(
$items['admin/settings/aggregator/update/%aggregator_feed'] = array(
'title' => 'Update items',
'page callback' => 'aggregator_admin_refresh_feed',
'page arguments' => array(4),
'access arguments' => array('administer news feeds'),
'type' => MENU_CALLBACK,
);
$items['admin/content/aggregator/list'] = array(
$items['admin/settings/aggregator/list'] = array(
'title' => 'List',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
......@@ -224,14 +224,14 @@ function aggregator_menu() {
'type' => MENU_LOCAL_TASK,
'weight' => 1,
);
$items['admin/content/aggregator/edit/feed/%aggregator_feed'] = array(
$items['admin/settings/aggregator/edit/feed/%aggregator_feed'] = array(
'title' => 'Edit feed',
'page callback' => 'drupal_get_form',
'page arguments' => array('aggregator_form_feed', 5),
'access arguments' => array('administer news feeds'),
'type' => MENU_CALLBACK,
);
$items['admin/content/aggregator/edit/category/%aggregator_category'] = array(
$items['admin/settings/aggregator/edit/category/%aggregator_category'] = array(
'title' => 'Edit category',
'page callback' => 'drupal_get_form',
'page arguments' => array('aggregator_form_category', 5),
......
......@@ -499,6 +499,6 @@ function template_preprocess_aggregator_feed_source(&$variables) {
}
if (user_access('administer news feeds')) {
$variables['last_checked'] = l($variables['last_checked'], 'admin/content/aggregator');
$variables['last_checked'] = l($variables['last_checked'], 'admin/settings/aggregator');
}
}
This diff is collapsed.
......@@ -102,9 +102,9 @@ function book_node_view_link($node, $build_mode) {
function book_menu() {
$items['admin/content/book'] = array(
'title' => 'Books',
'description' => "Manage your site's book outlines.",
'page callback' => 'book_admin_overview',
'access arguments' => array('administer book outlines'),
'type' => MENU_LOCAL_TASK,
);
$items['admin/content/book/list'] = array(
'title' => 'List',
......
......@@ -114,7 +114,7 @@ function comment_admin_overview_validate($form, &$form_state) {
// We can't execute any 'Update options' if no comments were selected.
if (count($form_state['values']['comments']) == 0) {
form_set_error('', t('Please select one or more comments to perform the update on.'));
drupal_goto('admin/content/content/comment');
drupal_goto('admin/content/comment');
}
}
......@@ -145,7 +145,7 @@ function comment_admin_overview_submit($form, &$form_state) {
}
cache_clear_all();
drupal_set_message(t('The update has been performed.'));
$form_state['redirect'] = 'admin/content/content/comment';
$form_state['redirect'] = 'admin/content/comment';
}
}
......@@ -181,12 +181,12 @@ function comment_multiple_delete_confirm(&$form_state) {
if (!$comment_counter) {
drupal_set_message(t('There do not appear to be any comments to delete, or your selected comment was deleted by another administrator.'));
drupal_goto('admin/content/content/comment');
drupal_goto('admin/content/comment');
}
else {
return confirm_form($form,
t('Are you sure you want to delete these comments and all their children?'),
'admin/content/content/comment', t('This action cannot be undone.'),
'admin/content/comment', t('This action cannot be undone.'),
t('Delete comments'), t('Cancel'));
}
}
......@@ -205,7 +205,7 @@ function comment_multiple_delete_confirm_submit($form, &$form_state) {
cache_clear_all();
drupal_set_message(t('The comments have been deleted.'));
}
$form_state['redirect'] = 'admin/content/content/comment';
$form_state['redirect'] = 'admin/content/comment';
}
/**
......
......@@ -127,7 +127,7 @@ function comment_theme() {
* Implement hook_menu().
*/
function comment_menu() {
$items['admin/content/content/comment'] = array(
$items['admin/content/comment'] = array(
'title' => 'Comments',
'description' => 'List and edit site comments and the comment approval queue.',
'page callback' => 'comment_admin',
......@@ -135,12 +135,12 @@ function comment_menu() {
'type' => MENU_LOCAL_TASK,
);
// Tabs begin here.
$items['admin/content/content/comment/new'] = array(
$items['admin/content/comment/new'] = array(
'title' => 'Published comments',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
$items['admin/content/content/comment/approval'] = array(
$items['admin/content/comment/approval'] = array(
'title' => 'Approval queue',
'page arguments' => array('approval'),
'access arguments' => array('administer comments'),
......@@ -2351,6 +2351,6 @@ function comment_ranking() {
* Implement hook_menu_alter().
*/
function comment_menu_alter(&$items) {
// Add comments to the description for admin/content/content.
// Add comments to the description for admin/content.
$items['admin/content/content']['description'] = "View, edit, and delete your site's content and comments.";
}
......@@ -203,7 +203,7 @@ class CommentHelperCase extends DrupalWebTestCase {
$edit = array();
$edit['operation'] = $operation;
$edit['comments[' . $comment->id . ']'] = TRUE;
$this->drupalPost('admin/content/content/comment' . ($approval ? '/approval' : ''), $edit, t('Update'));
$this->drupalPost('admin/content/comment' . ($approval ? '/approval' : ''), $edit, t('Update'));
if ($operation == 'delete') {
$this->drupalPost(NULL, array(), t('Delete comments'));
......@@ -223,7 +223,7 @@ class CommentHelperCase extends DrupalWebTestCase {
* Comment id.
*/
function getUnapprovedComment($subject) {
$this->drupalGet('admin/content/content/comment/approval');
$this->drupalGet('admin/content/comment/approval');
preg_match('/href="(.*?)#comment-([^"]+)"(.*?)>(' . $subject . ')/', $this->drupalGetContent(), $match);
return $match[2];
......@@ -422,19 +422,19 @@ class CommentAnonymous extends CommentHelperCase {
$this->drupalLogin($this->admin_user);
$this->performCommentOperation($anonymous_comment3, 'unpublish');
$this->drupalGet('admin/content/content/comment/approval');
$this->drupalGet('admin/content/comment/approval');
$this->assertRaw('comments[' . $anonymous_comment3->id . ']', t('Comment was unpublished.'));
// Publish comment.
$this->performCommentOperation($anonymous_comment3, 'publish', TRUE);
$this->drupalGet('admin/content/content/comment');
$this->drupalGet('admin/content/comment');
$this->assertRaw('comments[' . $anonymous_comment3->id . ']', t('Comment was published.'));
// Delete comment.
$this->performCommentOperation($anonymous_comment3, 'delete');
$this->drupalGet('admin/content/content/comment');
$this->drupalGet('admin/content/comment');
$this->assertNoRaw('comments[' . $anonymous_comment3->id . ']', t('Comment was deleted.'));
// Reset.
......@@ -562,7 +562,7 @@ class CommentApprovalTest extends CommentHelperCase {
}
/**
* Test comment approval functionality through admin/content/content/comment.
* Test comment approval functionality through admin/content/comment.
*/
function testApprovalAdminInterface() {
$this->drupalLogin($this->admin_user);
......
......@@ -166,7 +166,7 @@ function forum_confirm_delete(&$form_state, $tid) {
$form['tid'] = array('#type' => 'value', '#value' => $tid);
$form['name'] = array('#type' => 'value', '#value' => $term->name);
return confirm_form($form, t('Are you sure you want to delete the forum %name?', array('%name' => $term->name)), 'admin/structure/forum', t('Deleting a forum or container will also delete its sub-forums, if any. To delete posts in this forum, visit <a href="@content">content administration</a> first. This action cannot be undone.', array('@content' => url('admin/content/node'))), t('Delete'), t('Cancel'));
return confirm_form($form, t('Are you sure you want to delete the forum %name?', array('%name' => $term->name)), 'admin/structure/forum', t('Deleting a forum or container will also delete its sub-forums, if any. To delete posts in this forum, visit <a href="@content">content administration</a> first. This action cannot be undone.', array('@content' => url('admin/content'))), t('Delete'), t('Cancel'));
}
/**
......
......@@ -578,7 +578,7 @@ function node_multiple_delete_confirm(&$form_state, $nodes) {
'Are you sure you want to delete these items?');
return confirm_form($form,
$confirm_question,
'admin/content/node', t('This action cannot be undone.'),
'admin/content', t('This action cannot be undone.'),
t('Delete'), t('Cancel'));
}
......@@ -589,7 +589,7 @@ function node_multiple_delete_confirm_submit($form, &$form_state) {
watchdog('content', 'Deleted @count posts.', array('@count' => $count));
drupal_set_message(t('Deleted @count posts.', array('@count' => $count)));
}
$form_state['redirect'] = 'admin/content/node';
$form_state['redirect'] = 'admin/content';
return;
}
......
......@@ -219,7 +219,7 @@ function hook_node_grants_alter(&$grants, $account, $op) {
* Add mass node operations.
*
* This hook enables modules to inject custom operations into the mass operations
* dropdown found at admin/content/node, by associating a callback function with
* dropdown found at admin/content, by associating a callback function with
* the operation, which is called when the form is submitted. The callback function
* receives one initial argument, which is an array of the checked nodes.
*
......
......@@ -37,10 +37,10 @@ function node_help($path, $arg) {
case 'admin/help#node':
$output = '<p>' . t('The node module manages content on your site, and stores all posts (regardless of type) as a "node" . In addition to basic publishing settings, including whether the post has been published, promoted to the site front page, or should remain present (or sticky) at the top of lists, the node module also records basic information about the author of a post. Optional revision control over edits is available. For additional functionality, the node module is often extended by other modules.') . '</p>';
$output .= '<p>' . t('Though each post on your site is a node, each post is also of a particular <a href="@content-type">content type</a>. <a href="@content-type">Content types</a> are used to define the characteristics of a post, including the title and description of the fields displayed on its add and edit pages. Each content type may have different default settings for <em>Publishing options</em> and other workflow controls. By default, the two content types in a standard Drupal installation are <em>Page</em> and <em>Story</em>. Use the <a href="@content-type">content types page</a> to add new or edit existing content types. Additional content types also become available as you enable additional core, contributed and custom modules.', array('@content-type' => url('admin/structure/types'))) . '</p>';
$output .= '<p>' . t('The administrative <a href="@content">content page</a> allows you to review and manage your site content. The node module makes a number of permissions available for each content type, which may be set by role on the <a href="@permissions">permissions page</a>.', array('@content' => url('admin/content/node'), '@permissions' => url('admin/user/permissions'))) . '</p>';
$output .= '<p>' . t('The administrative <a href="@content">content page</a> allows you to review and manage your site content. The node module makes a number of permissions available for each content type, which may be set by role on the <a href="@permissions">permissions page</a>.', array('@content' => url('admin/content'), '@permissions' => url('admin/user/permissions'))) . '</p>';
$output .= '<p>' . t('For more information, see the online handbook entry for <a href="@node">Node module</a>.', array('@node' => 'http://drupal.org/handbook/modules/node/')) . '</p>';
return $output;
case 'admin/content/node':
case 'admin/content':
return ' '; // Return a non-null value so that the 'more help' link is shown.
case 'admin/structure/types/add':
return '<p>' . t('To create a new content type, enter the human-readable name, the machine-readable name, and all other relevant fields that are on this page. Once created, users of your site will be able to create posts that are instances of this content type.') . '</p>';
......@@ -1656,14 +1656,14 @@ function _node_add_access() {
* Implement hook_menu().
*/
function node_menu() {
$items['admin/content/content'] = array(
$items['admin/content'] = array(
'title' => 'Content',
'description' => "View, edit, and delete your site's content.",
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('administer nodes'),
'weight' => -10,
);
$items['admin/content/content/node'] = array(
$items['admin/content/node'] = array(
'title' => 'Content',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
......
......@@ -518,15 +518,6 @@ function system_menu() {
'type' => MENU_LOCAL_TASK,
'weight' => 2,
);
$items['admin/content'] = array(
'title' => 'Content management',
'description' => "Manage your site's content.",
'position' => 'left',
'weight' => -10,
'page callback' => 'system_admin_menu_block_page',
'access callback' => 'system_admin_menu_block_access',
'access arguments' => array('admin/content', 'access administration pages'),
);
// Menu items that are basically just menu blocks.
$items['admin/settings'] = array(
......@@ -724,7 +715,7 @@ function system_menu() {
'page arguments' => array('system_image_toolkit_settings'),
'access arguments' => array('administer site configuration'),
);
$items['admin/content/rss-publishing'] = array(
$items['admin/settings/rss-publishing'] = array(
'title' => 'RSS publishing',
'description' => 'Configure the site description, the number of items per feed and whether feeds should be titles/teasers/full-text.',
'page callback' => 'drupal_get_form',
......
......@@ -26,7 +26,7 @@ function toolbar_install() {
menu_rebuild();
$items = array(
'node/add' => 'Add',
'admin/content/content' => 'Find content',
'admin/content' => 'Find content',
'admin' => 'Dashboard',
);
$weight = -20;
......
......@@ -40,7 +40,7 @@ function translation_help($path, $arg) {
$output .= '<ul><li>' . t('Use the <em>Language</em> drop down to select the appropriate language when creating or editing posts.') . '</li>';
$output .= '<li>' . t('Provide new or edit current translations for existing posts via the <em>Translation</em> tab. Only visible while viewing a post as a user with the <em>translate content</em> permission, this tab allows translations to be added or edited using a specialized editing form that also displays the content being translated.') . '</li>';
$output .= '<li>' . t('Update translations as needed, so that they accurately reflect changes in the content of the original post. The translation status flag provides a simple method for tracking outdated translations. After editing a post, for example, select the <em>Flag translations as outdated</em> check box to mark all of its translations as outdated and in need of revision. Individual translations may be marked for revision by selecting the <em>This translation needs to be updated</em> check box on the translation editing form.') . '</li>';
$output .= '<li>' . t('The <a href="@content-node">Content management administration page</a> displays the language of each post, and also allows filtering by language or translation status.', array('@content-node' => url('admin/content/node'))) . '</li></ul>';
$output .= '<li>' . t('The <a href="@content-node">Content management administration page</a> displays the language of each post, and also allows filtering by language or translation status.', array('@content-node' => url('admin/content'))) . '</li></ul>';
$output .= '<p>' . t('Use the <a href="@blocks">language switcher block</a> provided by locale module to allow users to select a language. If available, both the site interface and site content are presented in the language selected.', array('@blocks' => url('admin/structure/block'))) . '</p>';
$output .= '<p>' . t('For more information, see the online handbook entry for <a href="@translation">Translation module</a>.', array('@translation' => 'http://drupal.org/handbook/modules/translation/')) . '</p>';
return $output;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment