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";
}