backgroundtext is an own package now
This commit is contained in:
parent
3cacd46d82
commit
71e665fd9b
@ -1,166 +0,0 @@
|
|||||||
<?php
|
|
||||||
require_once 'HTML/QuickForm2/Element/InputText.php';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Text input element with pre-set text that vanishes when
|
|
||||||
* the user focuses it. Setting a special class is also supported.
|
|
||||||
*
|
|
||||||
* Example:
|
|
||||||
* before:
|
|
||||||
* Name: [John Do| ]
|
|
||||||
* E-Mail: [Please type your email address]
|
|
||||||
*
|
|
||||||
* after:
|
|
||||||
* Name: [John Doe ]
|
|
||||||
* E-Mail: [| ]
|
|
||||||
*
|
|
||||||
* @category HTML
|
|
||||||
* @package HTML_QuickForm2
|
|
||||||
* @author Christian Weiske <cweiske@php.net>
|
|
||||||
* @license http://opensource.org/licenses/bsd-license.php New BSD License
|
|
||||||
* @link http://pear.php.net/package/HTML_QuickForm2
|
|
||||||
*/
|
|
||||||
class HTML_QuickForm2_Element_BackgroundText
|
|
||||||
extends HTML_QuickForm2_Element_InputText
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Background text to use
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $btText = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Element class to use when background text is active
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $btClass = null;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the background text to show when the text element is
|
|
||||||
* empty and not focused
|
|
||||||
*
|
|
||||||
* @param string $text Background text to set
|
|
||||||
*
|
|
||||||
* @return SemanticScuttle_QuickForm2_BackgroundText This object
|
|
||||||
*/
|
|
||||||
public function setBackgroundText($text)
|
|
||||||
{
|
|
||||||
//we add a invisible separator character to distiguish
|
|
||||||
// user content from our default text
|
|
||||||
$this->btText = $text . "\342\201\243";
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the HTML class to use when the text element is
|
|
||||||
* empty and not focused
|
|
||||||
*
|
|
||||||
* @param string $class HTML class to set when the element
|
|
||||||
* is not focused
|
|
||||||
*
|
|
||||||
* @return SemanticScuttle_QuickForm2_BackgroundText This object
|
|
||||||
*/
|
|
||||||
public function setBackgroundClass($class)
|
|
||||||
{
|
|
||||||
$this->btClass = $class;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the attributes array before rendering to prepare
|
|
||||||
* for the rendering process.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
protected function btUpdateAttributes()
|
|
||||||
{
|
|
||||||
if ($this->btText == '') {
|
|
||||||
//deactivate it
|
|
||||||
unset($this->attributes['onfocus']);
|
|
||||||
unset($this->attributes['onblur']);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$jBtText = json_encode((string)$this->btText);
|
|
||||||
$jBtClass = json_encode($this->btClass);
|
|
||||||
$jOldClass = json_encode('');
|
|
||||||
if (isset($this->attributes['class'])) {
|
|
||||||
$jOldClass = json_encode($this->attributes['class']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->attributes['onfocus']
|
|
||||||
= 'if (this.value == ' . $jBtText . ') {'
|
|
||||||
. 'this.value = "";'
|
|
||||||
. 'this.className = ' . $jOldClass . ';'
|
|
||||||
. '}';
|
|
||||||
$this->attributes['onblur']
|
|
||||||
= 'if (this.value == "") {'
|
|
||||||
. 'this.value = ' . $jBtText . ';'
|
|
||||||
. 'this.className = ' . $jBtClass . ';'
|
|
||||||
. '}';
|
|
||||||
|
|
||||||
//default when loading the form
|
|
||||||
if (!isset($this->attributes['value'])
|
|
||||||
|| !$this->attributes['value']
|
|
||||||
) {
|
|
||||||
$this->attributes['value'] = $this->btText;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->attributes['value'] == $this->btText) {
|
|
||||||
$this->attributes['class'] = $this->btClass;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when the element needs to update its value
|
|
||||||
* from form's data sources.
|
|
||||||
* This method overwrites the parent one to skip the background text
|
|
||||||
* values.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
protected function updateValue()
|
|
||||||
{
|
|
||||||
$name = $this->getName();
|
|
||||||
foreach ($this->getDataSources() as $ds) {
|
|
||||||
if (null !== ($value = $ds->getValue($name))
|
|
||||||
&& $value !== $this->btText
|
|
||||||
) {
|
|
||||||
$this->setValue($value);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Renders the element using the given renderer.
|
|
||||||
* Automatically sets the background CSS class if the value
|
|
||||||
* is the background text.
|
|
||||||
*
|
|
||||||
* @param HTML_QuickForm2_Renderer $renderer Renderer instance
|
|
||||||
*
|
|
||||||
* @return HTML_QuickForm2_Renderer
|
|
||||||
*/
|
|
||||||
public function render(HTML_QuickForm2_Renderer $renderer)
|
|
||||||
{
|
|
||||||
$this->btUpdateAttributes();
|
|
||||||
|
|
||||||
$renderer->renderElement($this);
|
|
||||||
return $renderer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
Loading…
Reference in New Issue
Block a user