From a8cc3e30c374e64d1bff2fda233190fd05c9a0ee Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Sat, 22 Aug 2009 23:18:29 +0000 Subject: #471018 by clemens.tolboom, sun, stBorchert, and mverbaar: Added generic pattern/js for hiding machine readable names (applied to menu and content types). --- modules/menu/menu.admin.inc | 66 ++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 25 deletions(-) (limited to 'modules/menu') diff --git a/modules/menu/menu.admin.inc b/modules/menu/menu.admin.inc index 0fb43aa67..872dfe1c7 100644 --- a/modules/menu/menu.admin.inc +++ b/modules/menu/menu.admin.inc @@ -402,43 +402,52 @@ function menu_edit_item_submit($form, &$form_state) { */ function menu_edit_menu(&$form_state, $type, $menu = array()) { $system_menus = menu_list_system_menus(); - if ($type == 'edit') { - $form['menu_name'] = array('#type' => 'value', '#value' => $menu['menu_name']); - $form['#insert'] = FALSE; - $form['delete'] = array( - '#type' => 'submit', - '#value' => t('Delete'), - '#access' => !isset($system_menus[$menu['menu_name']]), - '#submit' => array('menu_custom_delete_submit'), - '#weight' => 10, - ); + $menu += array('menu_name' => '', 'title' => '', 'description' => ''); + + // The title of a system menu cannot be altered. + if (isset($system_menus[$menu['menu_name']])) { + $form['title'] = array('#type' => 'value', '#value' => $menu['title']); } else { - $menu = array('menu_name' => '', 'title' => '', 'description' => ''); - $form['menu_name'] = array( + $form['title'] = array( '#type' => 'textfield', - '#title' => t('Menu name'), - '#maxsize' => MENU_MAX_MENU_NAME_LENGTH_UI, - '#description' => t('The machine-readable name of this menu. This text will be used for constructing the URL of the menu overview page for this menu. This name must contain only lowercase letters, numbers, and hyphens, and must be unique.'), + '#title' => t('Title'), + '#default_value' => $menu['title'], '#required' => TRUE, + '#field_suffix' => '  ', ); - $form['#insert'] = TRUE; } - $form['#title'] = $menu['title']; - if (isset($system_menus[$menu['menu_name']])) { - $form['title'] = array( - '#type' => 'value', - '#value' => $menu['title'], - ); + + // The internal menu name can only be defined during initial menu creation. + if ($type == 'edit') { + $form['#insert'] = FALSE; + $form['menu_name'] = array('#type' => 'value', '#value' => $menu['menu_name']); } else { - $form['title'] = array( + $form['#insert'] = TRUE; + $js_settings = array( + 'type' => 'setting', + 'data' => array( + 'machineReadableValue' => array( + 'title' => array( + 'text' => t('URL path'), + 'target' => 'menu-name', + 'searchPattern' => '[^a-z0-9]+', + 'replaceToken' => '-', + ), + ), + ), + ); + $form['menu_name'] = array( '#type' => 'textfield', - '#title' => t('Title'), - '#default_value' => $menu['title'], + '#title' => t('Menu name'), + '#maxsize' => MENU_MAX_MENU_NAME_LENGTH_UI, + '#description' => t('This text will be used to construct the URL for the menu. The name must contain only lowercase letters, numbers and hyphens, and must be unique.'), '#required' => TRUE, + '#attached_js' => array(drupal_get_path('module', 'system') . '/system.js', $js_settings), ); } + $form['description'] = array( '#type' => 'textarea', '#title' => t('Description'), @@ -448,6 +457,13 @@ function menu_edit_menu(&$form_state, $type, $menu = array()) { '#type' => 'submit', '#value' => t('Save'), ); + // Only custom menus may be deleted. + $form['delete'] = array( + '#type' => 'submit', + '#value' => t('Delete'), + '#access' => $type == 'edit' && !isset($system_menus[$menu['menu_name']]), + '#submit' => array('menu_custom_delete_submit'), + ); return $form; } -- cgit v1.2.3