00001 <?
00013 class AutoCompleteField extends TextField
00014 {
00015 public $lookupUrl = null;
00016 public $minChars = 1;
00017 public $indicator = true;
00018 public $indicatorUrl = '/lib/img/ajax/loading-blue.gif';
00019 public $updateElement = null;
00020 public $afterUpdateElement = null;
00021
00022 public function __construct($name, Form &$parentForm, array $attribs = array())
00023 {
00024 $this->id = $this->name;
00025
00026 if ($attribs['lookupUrl'])
00027 {
00028 $this->lookupUrl = $attribs['lookupUrl'];
00029 unset($attribs['lookupUrl']);
00030 }
00031 else
00032 throw new Exception("Expected parameter 'lookupUrl' for AutoComplete Field.");
00033
00034 parent::__construct($name, $parentForm, $attribs);
00035 }
00036
00037 public function drawInput()
00038 {
00039 parent::drawInput();
00040 ?>
00041 <span id="<?=$this->name?>_indicator" class="AjaxLoadIndicator" style="display: none"><img src="<?=$this->indicatorUrl?>" alt="Loading..." /></span>
00042 <div id="<?=$this->name?>_choices" class="autocomplete"></div>
00043 <script>
00044 new Ajax.Autocompleter('<?=$this->name?>', '<?=$this->name?>_choices', '<?=$this->lookupUrl?>', {
00045 paramName: 'like',
00046 minChars: <?=$this->minChars?>,
00047 <? if ($this->indicator){ ?> indicator: '<?=$this->name?>_indicator', <?}?>
00048 });
00049 </script>
00050 <?
00051
00052
00053
00054
00055
00056
00057 }
00058 }
00059 ?>