From c0f6fccac3c474106e403e7672dd134dda31a83a Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Tue, 3 Aug 2004 18:01:48 +0000 Subject: [PATCH] - Patch #7336 by TDobes: in various parts of Drupal, we use the title attribute for links to provide a slightly more detailed explanation as to the purpose of a link or where it goes. --- database/database.mysql | 1 + database/database.pgsql | 1 + database/updates.inc | 4 ++++ includes/menu.inc | 17 ++++++++++++----- modules/menu.module | 7 +++++-- modules/menu/menu.module | 7 +++++-- modules/node.module | 2 +- modules/node/node.module | 2 +- 8 files changed, 30 insertions(+), 11 deletions(-) diff --git a/database/database.mysql b/database/database.mysql index ccc917d241a..69b29e3a1c6 100644 --- a/database/database.mysql +++ b/database/database.mysql @@ -268,6 +268,7 @@ CREATE TABLE menu ( pid int(10) unsigned NOT NULL default '0', path varchar(255) NOT NULL default '', title varchar(255) NOT NULL default '', + description varchar(255) NOT NULL default '', weight tinyint(4) NOT NULL default '0', type int(2) unsigned NOT NULL default '0', PRIMARY KEY (mid) diff --git a/database/database.pgsql b/database/database.pgsql index 758ab7bd63e..a4eaf9af40d 100644 --- a/database/database.pgsql +++ b/database/database.pgsql @@ -269,6 +269,7 @@ CREATE TABLE menu ( pid integer NOT NULL default '0', path varchar(255) NOT NULL default '', title varchar(255) NOT NULL default '', + description varchar(255) NOT NULL default '', weight smallint NOT NULL default '0', type smallint NOT NULL default '0', PRIMARY KEY (mid) diff --git a/database/updates.inc b/database/updates.inc index 1ab576a0c99..6f86f9e4f65 100644 --- a/database/updates.inc +++ b/database/updates.inc @@ -1207,9 +1207,13 @@ function update_95() { function update_96() { $ret = array(); + $ret[] = update_sql('ALTER TABLE {accesslog} DROP nid'); $ret[] = update_sql('ALTER TABLE {accesslog} ADD title VARCHAR(255) DEFAULT NULL'); $ret[] = update_sql('ALTER TABLE {accesslog} ADD path VARCHAR(255) DEFAULT NULL'); + + $ret[] = update_sql("ALTER TABLE {menu} ADD description varchar(255) DEFAULT '' NOT NULL"); + return $ret; } diff --git a/includes/menu.inc b/includes/menu.inc index d9ec220f700..ca7a1e3fbb4 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -178,8 +178,11 @@ define('MENU_ACCESS_DENIED', 3); * with the following key-value pairs defined: * - 'title' - The displayed title of the menu or menu item. It will already * have been translated by the locale system. + * - 'description' - The description (link title attribute) of the menu item. + * It will already have been translated by the locale system. * - 'path' - The Drupal path to the menu item. A link to a particular item - * can thus be constructed with l($item['title'], $item['path']). + * can thus be constructed with + * l($item['title'], $item['path'], array('title' => $item['description'])). * - 'children' - A linear list of the menu ID's of this item's children. * * Menu ID 0 is the "root" of the menu. The children of this item are the @@ -486,12 +489,12 @@ function menu_rebuild() { } } - $new_items[$mid] = array('mid' => $new_mid, 'pid' => $new_pid, 'path' => $item['path'], 'title' => $item['title'], 'weight' => $item['weight'], 'type' => $item['type']); + $new_items[$mid] = array('mid' => $new_mid, 'pid' => $new_pid, 'path' => $item['path'], 'title' => $item['title'], 'description' => $item['description'], 'weight' => $item['weight'], 'type' => $item['type']); } } foreach ($new_items as $item) { - db_query('INSERT INTO {menu} (mid, pid, path, title, weight, type) VALUES (%d, %d, \'%s\', \'%s\', %d, %d)', $item['mid'], $item['pid'], $item['path'], $item['title'], $item['weight'], $item['type']); + db_query('INSERT INTO {menu} (mid, pid, path, title, description, weight, type) VALUES (%d, %d, \'%s\', \'%s\', \'%s\', %d, %d)', $item['mid'], $item['pid'], $item['path'], $item['title'], $item['description'], $item['weight'], $item['type']); } // Rebuild the menu to account for any changes. @@ -548,7 +551,7 @@ function theme_menu_item($mid) { $link_mid = $menu['items'][$link_mid]['pid']; } - return l($menu['items'][$mid]['title'], $menu['items'][$link_mid]['path']); + return l($menu['items'][$mid]['title'], $menu['items'][$link_mid]['path'], $menu['items'][$mid]['description'] ? array("title" => $menu['items'][$mid]['description']) : array()); } /** @@ -666,6 +669,9 @@ function _menu_build() { if (!array_key_exists('type', $item)) { $item['type'] = MENU_NORMAL_ITEM; } + if (!array_key_exists('description', $item)) { + $item['description'] = ''; + } if (!array_key_exists('weight', $item)) { $item['weight'] = 0; } @@ -696,6 +702,7 @@ function _menu_build() { // If administrator has changed item position, reflect the change. if ($item->type & MENU_MODIFIED_BY_ADMIN) { $_menu['items'][$item->mid]['title'] = $item->title; + $_menu['items'][$item->mid]['description'] = $item->description; $_menu['items'][$item->mid]['pid'] = $item->pid; $_menu['items'][$item->mid]['weight'] = $item->weight; $_menu['items'][$item->mid]['type'] = $item->type; @@ -703,7 +710,7 @@ function _menu_build() { } // Next, add any custom items added by the administrator. else if ($item->type & MENU_CREATED_BY_ADMIN) { - $_menu['items'][$item->mid] = array('pid' => $item->pid, 'path' => $item->path, 'title' => $item->title, 'access' => TRUE, 'weight' => $item->weight, 'type' => $item->type, 'callback' => '', 'callback arguments' => array()); + $_menu['items'][$item->mid] = array('pid' => $item->pid, 'path' => $item->path, 'title' => $item->title, 'description' => $item->description, 'access' => TRUE, 'weight' => $item->weight, 'type' => $item->type, 'callback' => '', 'callback arguments' => array()); if (!empty($item->path)) { $_menu['path index'][$item->path] = $item->mid; diff --git a/modules/menu.module b/modules/menu.module index 9b4827f5c24..7a77dc493bb 100644 --- a/modules/menu.module +++ b/modules/menu.module @@ -224,6 +224,7 @@ function menu_edit_item($mid = 0) { $edit['pid'] = $item->pid; $edit['path'] = $item->path; $edit['title'] = $item->title; + $edit['description'] = $item->description; $edit['weight'] = $item->weight; $edit['type'] = $item->type; } @@ -253,6 +254,8 @@ function menu_edit_item_form($edit) { $form .= form_hidden('weight', 0); } else { + $form .= form_textfield(t('Description'), 'description', $edit['description'], 60, 128, t('The description displayed when hovering over a menu item.')); + if ($edit['type'] & MENU_CREATED_BY_ADMIN) { $form .= form_textfield(t('Path'), 'path', $edit['path'], 60, 128); } @@ -287,12 +290,12 @@ function menu_edit_item_form($edit) { */ function menu_edit_item_save($edit) { if ($edit['mid']) { - db_query("UPDATE {menu} SET pid = %d, path = '%s', title = '%s', weight = %d, type = %d WHERE mid = %d", $edit['pid'], $edit['path'], $edit['title'], $edit['weight'], $edit['type'] | MENU_MODIFIED_BY_ADMIN, $edit['mid']); + db_query("UPDATE {menu} SET pid = %d, path = '%s', title = '%s', description = '%s', weight = %d, type = %d WHERE mid = %d", $edit['pid'], $edit['path'], $edit['title'], $edit['description'], $edit['weight'], $edit['type'] | MENU_MODIFIED_BY_ADMIN, $edit['mid']); drupal_set_message(t('updated menu item "%title".', array('%title' => $edit['title']))); } else { $mid = db_next_id('{menu}_mid'); - db_query("INSERT INTO {menu} (mid, pid, path, title, weight, type) VALUES (%d, %d, '%s', '%s', %d, %d)", $mid, $edit['pid'], $edit['path'], $edit['title'], $edit['weight'], $edit['type'] | MENU_MODIFIED_BY_ADMIN); + db_query("INSERT INTO {menu} (mid, pid, path, title, description, weight, type) VALUES (%d, %d, '%s', '%s', '%s', %d, %d)", $mid, $edit['pid'], $edit['path'], $edit['title'], $edit['description'], $edit['weight'], $edit['type'] | MENU_MODIFIED_BY_ADMIN); drupal_set_message(t('created new menu item "%title".', array('%title' => $edit['title']))); } diff --git a/modules/menu/menu.module b/modules/menu/menu.module index 9b4827f5c24..7a77dc493bb 100644 --- a/modules/menu/menu.module +++ b/modules/menu/menu.module @@ -224,6 +224,7 @@ function menu_edit_item($mid = 0) { $edit['pid'] = $item->pid; $edit['path'] = $item->path; $edit['title'] = $item->title; + $edit['description'] = $item->description; $edit['weight'] = $item->weight; $edit['type'] = $item->type; } @@ -253,6 +254,8 @@ function menu_edit_item_form($edit) { $form .= form_hidden('weight', 0); } else { + $form .= form_textfield(t('Description'), 'description', $edit['description'], 60, 128, t('The description displayed when hovering over a menu item.')); + if ($edit['type'] & MENU_CREATED_BY_ADMIN) { $form .= form_textfield(t('Path'), 'path', $edit['path'], 60, 128); } @@ -287,12 +290,12 @@ function menu_edit_item_form($edit) { */ function menu_edit_item_save($edit) { if ($edit['mid']) { - db_query("UPDATE {menu} SET pid = %d, path = '%s', title = '%s', weight = %d, type = %d WHERE mid = %d", $edit['pid'], $edit['path'], $edit['title'], $edit['weight'], $edit['type'] | MENU_MODIFIED_BY_ADMIN, $edit['mid']); + db_query("UPDATE {menu} SET pid = %d, path = '%s', title = '%s', description = '%s', weight = %d, type = %d WHERE mid = %d", $edit['pid'], $edit['path'], $edit['title'], $edit['description'], $edit['weight'], $edit['type'] | MENU_MODIFIED_BY_ADMIN, $edit['mid']); drupal_set_message(t('updated menu item "%title".', array('%title' => $edit['title']))); } else { $mid = db_next_id('{menu}_mid'); - db_query("INSERT INTO {menu} (mid, pid, path, title, weight, type) VALUES (%d, %d, '%s', '%s', %d, %d)", $mid, $edit['pid'], $edit['path'], $edit['title'], $edit['weight'], $edit['type'] | MENU_MODIFIED_BY_ADMIN); + db_query("INSERT INTO {menu} (mid, pid, path, title, description, weight, type) VALUES (%d, %d, '%s', '%s', '%s', %d, %d)", $mid, $edit['pid'], $edit['path'], $edit['title'], $edit['description'], $edit['weight'], $edit['type'] | MENU_MODIFIED_BY_ADMIN); drupal_set_message(t('created new menu item "%title".', array('%title' => $edit['title']))); } diff --git a/modules/node.module b/modules/node.module index 68fcaf2e9c3..aa2f4963f52 100644 --- a/modules/node.module +++ b/modules/node.module @@ -775,7 +775,7 @@ function node_admin_nodes() { $header = array(NULL, t('title'), t('type'), t('author'), t('status'), array('data' => t('operations'), 'colspan' => 2)); while ($node = db_fetch_object($result)) { - $rows[] = array(form_checkbox(NULL, 'status]['. $node->nid, 1, 0), l($node->title, 'node/'. $node->nid) .' '. (node_is_new($node->nid, $node->changed) ? theme_mark() : ''), node_invoke($node, 'node_name'), format_name($node), ($node->status ? t('published') : t('not published')), l(t('edit %post', array('%post' => t($node->type))), 'node/'. $node->nid .'/edit'), l(t('delete %post', array('%post' => t($node->type))), 'admin/node/delete/'. $node->nid)); + $rows[] = array(form_checkbox(NULL, 'status]['. $node->nid, 1, 0), l($node->title, 'node/'. $node->nid) .' '. (node_is_new($node->nid, $node->changed) ? theme_mark() : ''), node_invoke($node, 'node_name'), format_name($node), ($node->status ? t('published') : t('not published')), l(t('edit'), 'node/'. $node->nid .'/edit'), l(t('delete'), 'admin/node/delete/'. $node->nid)); } if ($pager = theme('pager', NULL, 50, 0)) { diff --git a/modules/node/node.module b/modules/node/node.module index 68fcaf2e9c3..aa2f4963f52 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -775,7 +775,7 @@ function node_admin_nodes() { $header = array(NULL, t('title'), t('type'), t('author'), t('status'), array('data' => t('operations'), 'colspan' => 2)); while ($node = db_fetch_object($result)) { - $rows[] = array(form_checkbox(NULL, 'status]['. $node->nid, 1, 0), l($node->title, 'node/'. $node->nid) .' '. (node_is_new($node->nid, $node->changed) ? theme_mark() : ''), node_invoke($node, 'node_name'), format_name($node), ($node->status ? t('published') : t('not published')), l(t('edit %post', array('%post' => t($node->type))), 'node/'. $node->nid .'/edit'), l(t('delete %post', array('%post' => t($node->type))), 'admin/node/delete/'. $node->nid)); + $rows[] = array(form_checkbox(NULL, 'status]['. $node->nid, 1, 0), l($node->title, 'node/'. $node->nid) .' '. (node_is_new($node->nid, $node->changed) ? theme_mark() : ''), node_invoke($node, 'node_name'), format_name($node), ($node->status ? t('published') : t('not published')), l(t('edit'), 'node/'. $node->nid .'/edit'), l(t('delete'), 'admin/node/delete/'. $node->nid)); } if ($pager = theme('pager', NULL, 50, 0)) {