silverstripe-framework/forms/PasswordField.php

109 lines
2.0 KiB
PHP
Raw Normal View History

<?php
2015-04-27 04:10:42 +02:00
/**
* Password input field.
2015-04-27 04:10:42 +02:00
*
* @package forms
* @subpackage fields-formattedinput
*/
class PasswordField extends TextField {
/**
* Controls the autocomplete attribute on the field.
*
* Setting it to false will set the attribute to "off", which will hint the browser
* to not cache the password and to not use any password managers.
*/
private static $autocomplete;
/**
* If true, the field can accept a value attribute, e.g. from posted form data
* @var bool
*/
protected $allowValuePostback = false;
/**
2015-04-27 04:10:42 +02:00
* Returns an input field.
*
* @param string $name
* @param null|string $title
* @param string $value
*/
2015-04-27 04:10:42 +02:00
public function __construct($name, $title = null, $value = '') {
if(count(func_get_args()) > 3) {
2015-04-27 04:10:42 +02:00
Deprecation::notice(
'3.0', 'Use setMaxLength() instead of constructor arguments',
Deprecation::SCOPE_GLOBAL
);
}
parent::__construct($name, $title, $value);
}
/**
* @param bool $bool
* @return $this
*/
public function setAllowValuePostback($bool) {
$this->allowValuePostback = (bool) $bool;
return $this;
}
/**
* @return bool
*/
public function getAllowValuePostback() {
return $this->allowValuePostback;
}
2015-04-27 04:10:42 +02:00
/**
* {@inheritdoc}
*/
public function getAttributes() {
2015-04-27 04:10:42 +02:00
$attributes = array(
'type' => 'password',
);
if (!$this->getAllowValuePostback()) {
$attributes['value'] = null;
}
$autocomplete = Config::inst()->get('PasswordField', 'autocomplete');
2015-04-27 04:10:42 +02:00
if($autocomplete) {
$attributes['autocomplete'] = 'on';
} else {
$attributes['autocomplete'] = 'off';
}
2015-04-27 04:10:42 +02:00
return array_merge(
parent::getAttributes(),
$attributes
);
}
/**
2015-04-27 04:10:42 +02:00
* Creates a read-only version of the field.
*
* @return FormField
*/
public function performReadonlyTransformation() {
$field = $this->castedCopy('ReadonlyField');
2015-04-27 04:10:42 +02:00
$field->setValue('*****');
2015-04-27 04:10:42 +02:00
return $field;
}
2015-04-27 04:10:42 +02:00
/**
* {@inheritdoc}
*/
public function Type() {
return 'text password';
}
}