"Int", "MinLength" => "Int", "MaxLength" => "Int", "Rows" => "Int" ); static $singular_name = 'Text field'; static $plural_name = 'Text fields'; function __construct( $record = null, $isSingleton = false ) { $this->Size = 32; $this->MinLength = 1; $this->MaxLength = 32; $this->Rows = 1; parent::__construct( $record, $isSingleton ); } function ExtraOptions() { // eventually replace hard-coded "Fields"? $baseName = "Fields[$this->ID]"; $extraFields = new FieldSet( new TextField($baseName . "[Size]", "Length of text box", (string)$this->Size), new FieldGroup("Text length", new TextField($baseName . "[MinLength]", "", (string)$this->MinLength), new TextField($baseName . "[MaxLength]", " - ", (string)$this->MaxLength) ), new TextField($baseName . "[Rows]", "Number of rows", (string)$this->Rows) ); foreach( parent::ExtraOptions() as $extraField ) $extraFields->push( $extraField ); if( $this->readonly ) $extraFields = $extraFields->makeReadonly(); return $extraFields; } function populateFromPostData( $data ) { $this->Size = !empty( $data['Size'] ) ? $data['Size'] : 32; $this->MinLength = !empty( $data['MinLength'] ) ? $data['MinLength'] : 1; $this->MaxLength = !empty( $data['MaxLength'] ) ? $data['MaxLength'] : 32; $this->Rows = !empty( $data['Rows'] ) ? $data['Rows'] : 1; parent::populateFromPostData( $data ); } function getFormField() { return $this->createField(); } function getFilterField() { return $this->createField( true ); } function createField( $asFilter = false ) { if( $this->Rows == 1 ) return new TextField( $this->Name, $this->Title, ( $asFilter ) ? "" : $this->getField('Default'), ( $this->Size && $this->Size > 0 ) ? $this->Size : null ); else return new TextareaField( $this->Name, $this->Title, $this->Rows, $this->Size, ( $asFilter ) ? "" : $this->getField('Default') ); } /** * Populates the default fields. */ function DefaultField() { $disabled = ''; if( $this->readonly ){ $disabled = " disabled=\"disabled\""; } if( $this->Rows == 1 ){ return '