Skip to content
Permalink
Browse files

Add support for stacking Flash messages

See Issue #7830
  • Loading branch information...
xhs345 committed Oct 27, 2016
1 parent 135a24e commit c59fb85da8ee46ab22a24f8b2c744e48734bf97c
@@ -82,12 +82,18 @@ public function set($message, $options = array()) {
}
$options['element'] = $plugin . 'Flash/' . $element;
CakeSession::write('Message.' . $options['key'], array(
$messages = CakeSession::read('Message.' . $options['key']);
$newMessage = array(
'message' => $message,
'key' => $options['key'],
'element' => $options['element'],
'params' => $options['params']
));
);
$messages[] = $newMessage;
CakeSession::write('Message.' . $options['key'], $messages);
}
/**
@@ -59,10 +59,12 @@ public function testSet() {
$this->Flash->set('This is a test message');
$expected = array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/default',
'params' => array()
array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/default',
'params' => array()
)
);
$result = CakeSession::read('Message.flash');
$this->assertEquals($expected, $result);
@@ -72,30 +74,36 @@ public function testSet() {
'params' => array('foo' => 'bar')
));
$expected = array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/test',
'params' => array('foo' => 'bar')
array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/test',
'params' => array('foo' => 'bar')
)
);
$result = CakeSession::read('Message.flash');
$this->assertEquals($expected, $result);
$this->Flash->set('This is a test message', array('element' => 'MyPlugin.alert'));
$expected = array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'MyPlugin.Flash/alert',
'params' => array()
array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'MyPlugin.Flash/alert',
'params' => array()
)
);
$result = CakeSession::read('Message.flash');
$this->assertEquals($expected, $result);
$this->Flash->set('This is a test message', array('key' => 'foobar'));
$expected = array(
'message' => 'This is a test message',
'key' => 'foobar',
'element' => 'Flash/default',
'params' => array()
array(
'message' => 'This is a test message',
'key' => 'foobar',
'element' => 'Flash/default',
'params' => array()
)
);
$result = CakeSession::read('Message.foobar');
$this->assertEquals($expected, $result);
@@ -111,10 +119,12 @@ public function testSetWithException() {
$this->Flash->set(new Exception('This is a test message', 404));
$expected = array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/default',
'params' => array('code' => 404)
array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/default',
'params' => array('code' => 404)
)
);
$result = CakeSession::read('Message.flash');
$this->assertEquals($expected, $result);
@@ -131,10 +141,12 @@ public function testSetWithComponentConfiguration() {
$FlashWithSettings = $this->Components->load('Flash', array('element' => 'test'));
$FlashWithSettings->set('This is a test message');
$expected = array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/test',
'params' => array()
array(
'message' => 'This is a test message',
'key' => 'flash',
'element' => 'Flash/test',
'params' => array()
)
);
$result = CakeSession::read('Message.flash');
$this->assertEquals($expected, $result);
@@ -82,10 +82,15 @@ public function render($key = 'flash', $options = array()) {
));
}
$flash = $options + $flash;
CakeSession::delete("Message.$key");
$flash['key'] = $key;
return $this->_View->element($flash['element'], $flash);
$out = '';
foreach ($flash as $message) {
$message['key'] = $key;
$message = $options + $message;
$out .= $this->_View->element($message['element'], $message);
}
return $out;
}
}

0 comments on commit c59fb85

Please sign in to comment.
You can’t perform that action at this time.