From 9f99a903b83efbb6484e39408061a0a668ba7700 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=A1bor=20Hojtsy?= <gabor@hojtsy.hu>
Date: Sun, 27 Jan 2008 18:03:05 +0000
Subject: [PATCH] #204415 by Lynn, traxer, pwolanin: migrate node type URLs to
 a path model based on menu paths, so conflicts between action and node type
 names are not a problem

---
 modules/node/content_types.inc | 17 +++++++++--------
 modules/node/node.module       |  8 ++++++--
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/modules/node/content_types.inc b/modules/node/content_types.inc
index 7dd3a2377d2f..f959d1f8d1ec 100644
--- a/modules/node/content_types.inc
+++ b/modules/node/content_types.inc
@@ -20,16 +20,16 @@ function node_overview_types() {
     if (node_hook($type, 'form')) {
       $type_url_str = str_replace('_', '-', $type->type);
       $row = array(
-        l($name, 'admin/content/types/'. $type_url_str),
+        l($name, 'admin/content/node-type/'. $type_url_str),
         check_plain($type->type),
         filter_xss_admin($type->description),
       );
       // Set the edit column.
-      $row[] = array('data' => l(t('edit'), 'admin/content/types/'. $type_url_str));
+      $row[] = array('data' => l(t('edit'), 'admin/content/node-type/'. $type_url_str));
 
       // Set the delete column.
       if ($type->custom) {
-        $row[] = array('data' => l(t('delete'), 'admin/content/types/'. $type_url_str .'/delete'));
+        $row[] = array('data' => l(t('delete'), 'admin/content/node-type/'. $type_url_str .'/delete'));
       }
       else {
         $row[] = array('data' => '');
@@ -72,7 +72,7 @@ function node_type_form(&$form_state, $type = NULL) {
     '#title' => t('Name'),
     '#type' => 'textfield',
     '#default_value' => $type->name,
-    '#description' => t('The human-readable name of this content type. This text will be displayed as part of the list on the <em>create content</em> page. This name must begin with a capital letter and contain only letters, numbers, and <strong>spaces</strong>. This name must be unique.'),
+    '#description' => t('The human-readable name of this content type. This text will be displayed as part of the list on the <em>create content</em> page. It is recommended that this name begin with a capital letter and contain only letters, numbers, and <strong>spaces</strong>. This name must be unique.'),
     '#required' => TRUE,
   );
 
@@ -233,9 +233,10 @@ function node_type_form_validate($form, &$form_state) {
     if (!preg_match('!^[a-z0-9_]+$!', $type->type)) {
       form_set_error('type', t('The machine-readable name must contain only lowercase letters, numbers, and underscores.'));
     }
-    // The type cannot be just the character '0', since elsewhere we check it using empty().
-    if ($type->type === '0') {
-      form_set_error('type', t("Invalid type. Please enter a type name other than '0' (the character zero)."));
+    // 'theme' conflicts with theme_node_form().
+    // '0' is invalid, since elsewhere we check it using empty().
+    if (in_array($type->type, array('0', 'theme'))) {
+      form_set_error('type', t("Invalid machine-readable name. Please enter a name other than %invalid.", array('%invalid' => $type->type)));
     }
   }
 
@@ -279,7 +280,7 @@ function node_type_form_submit($form, &$form_state) {
     node_type_reset($type);
   }
   elseif ($op == t('Delete content type')) {
-    $form_state['redirect'] = 'admin/content/types/'. str_replace('_', '-', $type->old_type) .'/delete';
+    $form_state['redirect'] = 'admin/content/node-type/'. str_replace('_', '-', $type->old_type) .'/delete';
     return;
   }
 
diff --git a/modules/node/node.module b/modules/node/node.module
index ef97886007d4..4562b1e93bb8 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1479,14 +1479,18 @@ function node_menu() {
       'description' => $type->description,
       'file' => 'node.pages.inc',
     );
-    $items['admin/content/types/'. $type_url_str] = array(
+    $items['admin/content/node-type/'. $type_url_str] = array(
       'title' => $type->name,
       'page callback' => 'drupal_get_form',
       'page arguments' => array('node_type_form', $type),
       'file' => 'content_types.inc',
       'type' => MENU_CALLBACK,
     );
-    $items['admin/content/types/'. $type_url_str .'/delete'] = array(
+    $items['admin/content/node-type/'. $type_url_str .'/edit'] = array(
+      'title' => 'Edit',
+      'type' => MENU_DEFAULT_LOCAL_TASK,
+    );
+    $items['admin/content/node-type/'. $type_url_str .'/delete'] = array(
       'title' => 'Delete',
       'page arguments' => array('node_type_delete_confirm', $type),
       'file' => 'content_types.inc',
-- 
GitLab