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