BUGFIX Ensure TextareaField template is encoding characters correctly

This commit is contained in:
Sean Harvey 2011-03-24 17:45:01 +13:00 committed by Ingo Schommer
parent 9e548f501e
commit 19e9b19a1a
2 changed files with 6 additions and 28 deletions

View File

@ -1,5 +1,5 @@
<% if isReadonly %> <% if isReadonly %>
<span id="$ID" class="textarea readonly$extraClass"><% if Value %>$Value<% else %><em>(<% _t('NONE', 'none') %>)</em><% end_if %></span> <span id="$ID" class="readonly$extraClass" name="$Name"><% if Value %>$Value<% else %><em>(<% _t('NONE', 'none') %>)</em><% end_if %></span>
<% else %> <% else %>
<textarea id="$ID" class="textarea$extraClass" name="$Name" rows="$Rows" cols="$Cols"<% if isDisabled %> disabled<% end_if %>></textarea> <textarea id="$ID" class="textarea$extraClass" name="$Name" rows="$Rows" cols="$Cols"<% if isDisabled %> disabled<% end_if %>>$Value</textarea>
<% end_if %> <% end_if %>

View File

@ -6,43 +6,21 @@ class TextareaFieldTest extends SapphireTest {
* Quick smoke test to ensure that text is being encoded properly. * Quick smoke test to ensure that text is being encoded properly.
*/ */
function testTextEncoding() { function testTextEncoding() {
$inputText = "This is my <text> $inputText = "This is my <text>These are some unicodes: äöü&<>";
What's on a new-line?
These are some unicodes: äöü&<>";
$field = new TextareaField("Test", "Test", 5, 20); $field = new TextareaField("Test", "Test", 5, 20);
$field->setValue($inputText); $field->setValue($inputText);
$this->assertContains('This is my &lt;text&gt;These are some unicodes: &auml;&ouml;&uuml;&amp;&lt;&gt;', $field->Field());
$this->assertEquals(<<<HTML
<textarea id="Test" name="Test" rows="5" cols="20">This is my &lt;text&gt;
What's on a new-line?
These are some unicodes: &auml;&ouml;&uuml;&amp;&lt;&gt;</textarea>
HTML
, $field->Field());
} }
/** /**
* Quick smoke test to ensure that text is being encoded properly in readonly fields. * Quick smoke test to ensure that text is being encoded properly in readonly fields.
*/ */
function testReadonlyTextEncoding() { function testReadonlyTextEncoding() {
$inputText = "This is my <text> $inputText = "This is my <text>These are some unicodes: äöü&<>";
What's on a new-line?
These are some unicodes: äöü&<>";
$field = new TextareaField("Test", "Test", 5, 20); $field = new TextareaField("Test", "Test", 5, 20);
$field = $field->performReadonlyTransformation(); $field = $field->performReadonlyTransformation();
// Make sure that the field is smart enough to have its value set after being made readonly
$field->setValue($inputText); $field->setValue($inputText);
$this->assertEquals(<<<HTML $this->assertContains('This is my &lt;text&gt;These are some unicodes: &auml;&ouml;&uuml;&amp;&lt;&gt;', $field->Field());
<span id="Test" class="readonly" name="Test" readonly="readonly">This is my &lt;text&gt;<br />
What's on a new-line?<br />
These are some unicodes: &auml;&ouml;&uuml;&amp;&lt;&gt;</span>
<input type="hidden" name="Test" value="This is my &amp;lt;text&amp;gt;&lt;br /&gt;
What&#039;s on a new-line?&lt;br /&gt;
These are some unicodes: &amp;auml;&amp;ouml;&amp;uuml;&amp;amp;&amp;lt;&amp;gt;" />
HTML
, $field->Field());
} }
} }