Index: includes/bootstrap.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/bootstrap.inc,v retrieving revision 1.284 diff -u -p -r1.284 bootstrap.inc --- includes/bootstrap.inc 26 May 2009 09:12:28 -0000 1.284 +++ includes/bootstrap.inc 27 May 2009 23:15:59 -0000 @@ -1163,11 +1163,15 @@ function watchdog($type, $message, $vari * - 'status' * - 'warning' * - 'error' + * @param $message_key + * The message key of the message. This key is used to identify the message + * in hook_message_alter. + * * @param $repeat * If this is FALSE and the message is already set, then the message won't * be repeated. */ -function drupal_set_message($message = NULL, $type = 'status', $repeat = TRUE) { +function drupal_set_message($message = NULL, $type = 'status', $message_key = NULL, $repeat = TRUE) { if ($message) { if (!isset($_SESSION['messages'])) { drupal_set_session('messages', array()); @@ -1178,7 +1182,12 @@ function drupal_set_message($message = N } if ($repeat || !in_array($message, $_SESSION['messages'][$type])) { - $_SESSION['messages'][$type][] = $message; + if (isset($message_key)) { + $_SESSION['messages'][$type][$message_key] = $message; + } + else { + $_SESSION['messages'][$type][] = $message; + } } } @@ -1206,6 +1215,7 @@ function drupal_get_messages($type = NUL unset($_SESSION['messages'][$type]); } if (isset($messages[$type])) { + drupal_alter('message', $messages[$type]); return array($type => $messages[$type]); } } @@ -1213,6 +1223,7 @@ function drupal_get_messages($type = NUL if ($clear_queue) { unset($_SESSION['messages']); } + drupal_alter('message', $messages); return $messages; } } Index: includes/menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.325 diff -u -p -r1.325 menu.inc --- includes/menu.inc 24 May 2009 17:39:30 -0000 1.325 +++ includes/menu.inc 27 May 2009 23:15:59 -0000 @@ -2728,7 +2728,7 @@ function _menu_site_is_offline() { // page redirects], and specifically suppress its display on the site // maintenance page. if (drupal_get_normal_path($_GET['q']) != 'admin/settings/maintenance-mode') { - drupal_set_message(t('Operating in maintenance mode. Go online.', array('@url' => url('admin/settings/maintenance-mode'))), 'status', FALSE); + drupal_set_message(t('Operating in maintenance mode. Go online.', array('@url' => url('admin/settings/maintenance-mode'))), 'status', NULL, FALSE); } } else { Index: includes/theme.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/theme.inc,v retrieving revision 1.491 diff -u -p -r1.491 theme.inc --- includes/theme.inc 26 May 2009 10:41:06 -0000 1.491 +++ includes/theme.inc 27 May 2009 23:16:00 -0000 @@ -1181,7 +1181,8 @@ function theme_status_messages($display $output .= " \n"; } else { - $output .= $messages[0]; + // Need to shift array since key of the first element is unknown. + $output .= array_shift($messages); } $output .= "\n"; }