Browse Source

Add escape option and test, remove leftover class option stuff

Bryan Crowe 12 years ago
parent
commit
c4f5005a67

+ 6 - 4
src/Controller/Component/FlashComponent.php

@@ -41,7 +41,7 @@ class FlashComponent extends Component {
 	protected $_defaultConfig = [
 		'key' => 'flash',
 		'element' => null,
-		'class' => 'info',
+		'escape' => true,
 		'params' => []
 	];
 
@@ -65,7 +65,7 @@ class FlashComponent extends Component {
  *
  * - `key` The key to set under the session's Message key
  * - `element` The element used to render the flash message
- * - `class` The class to give the flash message whenever an element isn't supplied
+ * - `escape` Whether or not to escape the flash message, defaults to true
  * - `params` An array of variables to make available when using an element
  *
  * @param string $message Message to be flashed
@@ -79,16 +79,18 @@ class FlashComponent extends Component {
 			$message = $message->getMessage();
 		}
 
+		if ($opts['escape'] === true) {
+			$message = h($message);
+		}
+
 		$this->_session->write("Message.{$opts['key']}", [
 			'message' => $message,
 			'key' => $opts['key'],
 			'element' => $opts['element'],
-			'class' => $opts['class'],
 			'params' => $opts['params']
 		]);
 	}
 
-
 /**
  * Magic method for verbose flash methods based on element names.
  *

+ 30 - 5
tests/TestCase/Controller/Component/FlashComponentTest.php

@@ -100,7 +100,6 @@ class FlashComponentTest extends TestCase {
 			'message' => 'This is a test message',
 			'key' => 'flash',
 			'element' => null,
-			'class' => 'info',
 			'params' => []
 		];
 		$result = $this->Session->read('Message.flash');
@@ -111,7 +110,6 @@ class FlashComponentTest extends TestCase {
 			'message' => 'This is a test message',
 			'key' => 'flash',
 			'element' => 'test',
-			'class' => 'info',
 			'params' => ['foo' => 'bar']
 		];
 		$result = $this->Session->read('Message.flash');
@@ -122,7 +120,6 @@ class FlashComponentTest extends TestCase {
 			'message' => 'This is a test message',
 			'key' => 'flash',
 			'element' => 'MyPlugin.alert',
-			'class' => 'info',
 			'params' => []
 		];
 		$result = $this->Session->read('Message.flash');
@@ -133,7 +130,6 @@ class FlashComponentTest extends TestCase {
 			'message' => 'This is a test message',
 			'key' => 'foobar',
 			'element' => null,
-			'class' => 'info',
 			'params' => []
 		];
 		$result = $this->Session->read('Message.foobar');
@@ -141,6 +137,36 @@ class FlashComponentTest extends TestCase {
 	}
 
 /**
+ * testSetWithEscape method
+ *
+ * @return void
+ * @covers \Cake\Controller\Component\FlashComponent::set
+ */
+	public function testSetWithEscape() {
+		$this->assertNull($this->Session->read('Message.flash'));
+
+		$this->Flash->set('Hello <b>Beakman</b>!');
+		$expected = [
+			'message' => 'Hello &lt;b&gt;Beakman&lt;/b&gt;!',
+			'key' => 'flash',
+			'element' => null,
+			'params' => []
+		];
+		$result = $this->Session->read('Message.flash');
+		$this->assertEquals($expected, $result);
+
+		$this->Flash->set('Hello <b>Beakman</b>!', ['escape' => false]);
+		$expected = [
+			'message' => 'Hello <b>Beakman</b>!',
+			'key' => 'flash',
+			'element' => null,
+			'params' => []
+		];
+		$result = $this->Session->read('Message.flash');
+		$this->assertEquals($expected, $result);
+	}
+
+/**
  * testSetWithException method
  *
  * @return void
@@ -154,7 +180,6 @@ class FlashComponentTest extends TestCase {
 			'message' => 'This is a test message',
 			'key' => 'flash',
 			'element' => null,
-			'class' => 'info',
 			'params' => []
 		];
 		$result = $this->Session->read('Message.flash');