mirror of
https://github.com/silverstripe/silverstripe-userforms.git
synced 2024-10-22 17:05:42 +02:00
115 lines
3.6 KiB
PHP
Executable File
115 lines
3.6 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* EditableTextField
|
|
*
|
|
* This control represents a user-defined text field in a user defined form
|
|
*
|
|
* @package userforms
|
|
*/
|
|
class EditableTextField extends EditableFormField {
|
|
|
|
public static $db = array(
|
|
"Size" => "Int",
|
|
"MinLength" => "Int",
|
|
"MaxLength" => "Int",
|
|
"Rows" => "Int"
|
|
);
|
|
|
|
public static $size = 32;
|
|
|
|
public static $min_length = 1;
|
|
|
|
public static $max_length = 32;
|
|
|
|
public static $rows = 1;
|
|
|
|
static $singular_name = 'Text field';
|
|
|
|
static $plural_name = 'Text fields';
|
|
|
|
function __construct( $record = null, $isSingleton = false ) {
|
|
$this->Size = self::$size;
|
|
$this->MinLength = self::$min_length;
|
|
$this->MaxLength = self::$max_length;
|
|
$this->Rows = self::$rows;
|
|
parent::__construct( $record, $isSingleton );
|
|
}
|
|
|
|
function ExtraOptions() {
|
|
|
|
// eventually replace hard-coded "Fields"?
|
|
$baseName = "Fields[$this->ID]";
|
|
|
|
$extraFields = new FieldSet(
|
|
new TextField($baseName . "[Size]", _t('EditableTextField.TEXTBOXLENGTH', 'Length of text box'), (string)$this->Size),
|
|
new FieldGroup(_t('EditableTextField.TEXTLENGTH', 'Text length'),
|
|
new TextField($baseName . "[MinLength]", "", (string)$this->MinLength),
|
|
new TextField($baseName . "[MaxLength]", " - ", (string)$this->MaxLength)
|
|
),
|
|
new TextField($baseName . "[Rows]", _t('EditableTextField.NUMBERROWS', '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'] : self::$size;
|
|
$this->MinLength = !empty( $data['MinLength'] ) ? $data['MinLength'] : self::$min_length;
|
|
$this->MaxLength = !empty( $data['MaxLength'] ) ? $data['MaxLength'] : self::$max_length;
|
|
$this->Rows = !empty( $data['Rows'] ) ? $data['Rows'] : self::$rows;
|
|
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->MaxLength);
|
|
else
|
|
return new TextareaField( $this->Name, $this->Title, $this->Rows, $this->MaxLength, ( $asFilter ) ? "" : $this->getField('Default') );
|
|
}
|
|
|
|
/**
|
|
* Populates the default fields.
|
|
*/
|
|
function DefaultField() {
|
|
$disabled = ($this->readonly) ? " disabled=\"disabled\"" : '';
|
|
|
|
if($this->Rows == 1){
|
|
return '<div class="field text"><label class="left">'._t('EditableTextField.DEFAULTTEXT', 'Default Text').' </label> <input class="defaultText" name="Fields['.Convert::raw2att( $this->ID ).'][Default]" type="text" value="'.Convert::raw2att( $this->getField('Default') ).'"'.$disabled.' /></div>';
|
|
}else{
|
|
return '<div class="field text"><label class="left">'._t('EditableTextField.DEFAULTTEXT', 'Default Text').' </label> <textarea class="defaultText" name="Fields['.Convert::raw2att( $this->ID ).'][Default]"'.$disabled.'>'.Convert::raw2att( $this->getField('Default') ).'</textarea></div>';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Return the validation information related to this field. This is
|
|
* interrupted as a JSON object for validate plugin and used in the
|
|
* PHP.
|
|
*
|
|
* @see http://docs.jquery.com/Plugins/Validation/Methods
|
|
* @return Array
|
|
*/
|
|
public function getValidation() {
|
|
$options = array();
|
|
if($this->MinLength) $options['minlength'] = $this->MinLength;
|
|
if($this->MaxLength) $options['maxlength'] = $this->MinLength;
|
|
|
|
return $options;
|
|
}
|
|
}
|
|
?>
|