diff --git a/mod/data/field/textarea/field.class.php b/mod/data/field/textarea/field.class.php
new file mode 100755
index 00000000000..80b3fa216f8
--- /dev/null
+++ b/mod/data/field/textarea/field.class.php
@@ -0,0 +1,103 @@
+dataid = $dataid;
+ $newfield->type = $type;
+ $newfield->name = $name;
+ $newfield->description = $desc;
+ $newfield->param1 = $autolink;
+ $newfield->param2 = $width;
+ $newfield->param3 = $height;
+
+ if (!insert_record('data_fields', $newfield)) {
+ notify('Insertion of new field failed!');
+ }
+ }
+
+
+ /***********************************************
+ * Prints the form element in the add template *
+ ***********************************************/
+ function display_add_field($id, $rid=0) {
+ global $CFG;
+ if (!$field = get_record('data_fields', 'id', $id)){
+ notify('That is not a valid field id!');
+ exit;
+ }
+ if ($rid) {
+ $content = get_record('data_content', 'fieldid', $id, 'recordid', $rid);
+ if (isset($content->content)) {
+ $content = $content->content;
+ }
+ }
+ else {
+ $content = '';
+ }
+ $str = '';
+
+ if ($field->description) {
+ $str .= '
';
+ }
+ $str .= '';
+ return $str;
+ }
+
+
+ function display_edit_field($id, $mode=0) {
+ parent::display_edit_field($id, $mode);
+ }
+
+
+ function update($fieldobject) {
+ $fieldobject->param1 = trim($fieldobject->param1);
+ $fieldobject->param2 = trim($fieldobject->param2);
+
+ if (!update_record('data_fields',$fieldobject)){
+ notify ('upate failed');
+ }
+ }
+}
+?>
diff --git a/mod/data/field/textarea/icon.gif b/mod/data/field/textarea/icon.gif
new file mode 100755
index 00000000000..e75b283b47c
Binary files /dev/null and b/mod/data/field/textarea/icon.gif differ
diff --git a/mod/data/field/textarea/mod.html b/mod/data/field/textarea/mod.html
new file mode 100755
index 00000000000..c241f479865
--- /dev/null
+++ b/mod/data/field/textarea/mod.html
@@ -0,0 +1,40 @@
+