diff --git a/core/model/fieldtypes/HTMLText.php b/core/model/fieldtypes/HTMLText.php index 47fea31c441..3f4ee9e50ee 100755 --- a/core/model/fieldtypes/HTMLText.php +++ b/core/model/fieldtypes/HTMLText.php @@ -28,6 +28,25 @@ function LimitCharacters($limit = 20, $add = "...") { return (strlen($value) > $limit) ? substr($value, 0, $limit) . $add : $value; } + static $casting = array( + "AbsoluteLinks" => "HTMLText", + "BigSummary" => "HTMLText", + "ContextSummary" => "HTMLText", + "FirstParagraph" => "HTMLText", + "FirstSentence" => "HTMLText", + "LimitCharacters" => "HTMLText", + "LimitSentences" => "HTMLText", + "Lower" => "HTMLText", + "LowerCase" => "HTMLText", + "Summary" => "HTMLText", + "Upper" => "HTMLText", + "UpperCase" => "HTMLText", + 'EscapeXML' => 'HTMLText', + 'LimitWordCount' => 'HTMLText', + 'LimitWordCountXML' => 'HTMLText', + 'NoHTML' => 'Text', + ); + /** * Create a summary of the content. This will be some section of the first paragraph, limited by * $maxWords. All internal tags are stripped out - the return value is a string @@ -133,4 +152,4 @@ public function scaffoldSearchField($title = null) { } -?> \ No newline at end of file +?> diff --git a/core/model/fieldtypes/StringField.php b/core/model/fieldtypes/StringField.php index 50c6ffd071c..51429b126aa 100644 --- a/core/model/fieldtypes/StringField.php +++ b/core/model/fieldtypes/StringField.php @@ -9,6 +9,12 @@ abstract class StringField extends DBField { protected $nullifyEmpty = true; + static $casting = array( + "LimitCharacters" => "Text", + "Lower" => "Text", + "Upper" => "Text", + ); + /** * Construct a string type field with a set of optional parameters * @param $name string The name of the field diff --git a/core/model/fieldtypes/Text.php b/core/model/fieldtypes/Text.php index 7ace59ae571..df231a47b21 100644 --- a/core/model/fieldtypes/Text.php +++ b/core/model/fieldtypes/Text.php @@ -17,8 +17,20 @@ * @subpackage model */ class Text extends StringField { + static $casting = array( - "AbsoluteLinks" => "HTMLText", + "AbsoluteLinks" => "Text", + "BigSummary" => "Text", + "ContextSummary" => "Text", + "FirstParagraph" => "Text", + "FirstSentence" => "Text", + "LimitCharacters" => "Text", + "LimitSentences" => "Text", + "Summary" => "Text", + 'EscapeXML' => 'Text', + 'LimitWordCount' => 'Text', + 'LimitWordCountXML' => 'HTMLText', + 'NoHTML' => 'Text', ); /** diff --git a/core/model/fieldtypes/Varchar.php b/core/model/fieldtypes/Varchar.php index 1d308638c4a..707926c8c1b 100644 --- a/core/model/fieldtypes/Varchar.php +++ b/core/model/fieldtypes/Varchar.php @@ -10,6 +10,11 @@ * @subpackage model */ class Varchar extends StringField { + + static $casting = array( + "Initial" => "Text", + "URL" => "Text", + ); protected $size; diff --git a/tests/fieldtypes/HTMLTextTest.php b/tests/fieldtypes/HTMLTextTest.php index 9303ba6bb5b..6a3ba05920e 100644 --- a/tests/fieldtypes/HTMLTextTest.php +++ b/tests/fieldtypes/HTMLTextTest.php @@ -102,5 +102,33 @@ function testFirstSentence() { $this->assertEquals($match, $textObj->FirstSentence()); } } + + public function testRAW() { + $data = DBField::create('HTMLText', 'This & This'); + $this->assertEquals($data->RAW(), 'This & This'); + + $data = DBField::create('HTMLText', 'This & This'); + $this->assertEquals($data->RAW(), 'This & This'); + } + + public function testXML() { + $data = DBField::create('HTMLText', 'This & This'); + $this->assertEquals($data->XML(), 'This & This'); + } + + public function testHTML() { + $data = DBField::create('HTMLText', 'This & This'); + $this->assertEquals($data->HTML(), 'This & This'); + } + + public function testJS() { + $data = DBField::create('HTMLText', '"this is a test"'); + $this->assertEquals($data->JS(), '\"this is a test\"'); + } + + public function testATT() { + $data = DBField::create('HTMLText', '"this is a test"'); + $this->assertEquals($data->ATT(), '"this is a test"'); + } } ?> \ No newline at end of file diff --git a/tests/fieldtypes/TextTest.php b/tests/fieldtypes/TextTest.php index b4e29b6c34c..97a280441c9 100644 --- a/tests/fieldtypes/TextTest.php +++ b/tests/fieldtypes/TextTest.php @@ -142,6 +142,30 @@ function testContextSummary() { 'A dog ate a cat while looking at a Foobar', $textObj->ContextSummary(100, $testKeyword3a) ); - } + + public function testRAW() { + $data = DBField::create('Text', 'This & This'); + $this->assertEquals($data->RAW(), 'This & This'); + } + + public function testXML() { + $data = DBField::create('Text', 'This & This'); + $this->assertEquals($data->XML(), 'This & This'); + } + + public function testHTML() { + $data = DBField::create('Text', 'This & This'); + $this->assertEquals($data->HTML(), 'This & This'); + } + + public function testJS() { + $data = DBField::create('Text', '"this is a test"'); + $this->assertEquals($data->JS(), '\"this is a test\"'); + } + + public function testATT() { + $data = DBField::create('Text', '"this is a test"'); + $this->assertEquals($data->ATT(), '"this is a test"'); + } } \ No newline at end of file