Source of file AddressFinderField.php
Size: 3,112 Bytes - Last Modified: 2021-12-23T10:57:09+00:00
/var/www/docs.ssmods.com/process/src/code/AddressFinderField.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | <?php class AddressFinderField extends TextField { private $client; private static $allowed_actions = [ 'suggestions', 'details' ]; /** * List of fields to map our returned result to * @var array */ protected $fieldMap = array(); /** * @param array $array */ public function setFieldMap($array) { $this->fieldMap = $array; return $this; } public function getFieldMap() { return $this->fieldMap; } /** * Returns an input field. * * @param string $name * @param null|string $title * @param string $value * @param null|int $maxLength * @param null|Form $form */ public function __construct($name, $title = null, $value = '') { $this->client = new AddressFinderService; parent::__construct($name, $title, $value); } /** * @return string */ public function Field($properties = array()) { if (Director::isDev()) { Requirements::javascript(ADDRESSFINDER_PATH . '/dist/javascript/nzpostautocomplete.js'); } else { Requirements::javascript(ADDRESSFINDER_PATH . '/dist/javascript/nzpostautocomplete.min.js'); } $this->addExtraClass('nzpost-autocomplete text'); $this->setAttribute('autocomplete', 'off'); $this->setAttribute('data-suggest', $this->Link('suggestions')); $this->setAttribute('data-details', $this->Link('details')); if (!empty($this->getFieldMap())) { $this->setAttribute('data-fields', Convert::raw2att(Convert::raw2json($this->getFieldMap()))); } return parent::Field($properties); } public function suggestions(SS_HTTPRequest $request) { if ($request && $request->getVar('q') && !empty($request->getVar('q'))) { $query = $request->getVar('q'); $suggestions = $this->client->getSuggestions($query); $response = new SS_HTTPResponse(); $response->addHeader('Content-Type', 'application/json'); try { $response->setBody(Convert::array2json($suggestions)); } catch (Exception $e) { $response->setBody(Convert::array2json(array( 'error' => $e->getMessage() ))); } return $response; } } public function details(SS_HTTPRequest $request) { if ($request && $request->getVar('q') && !empty($request->getVar('q'))) { $query = $request->getVar('q'); $suggestions = $this->client->getDetails($query); $response = new SS_HTTPResponse(); $response->addHeader('Content-Type', 'application/json'); try { $response->setBody(Convert::array2json($suggestions)); } catch (Exception $e) { $response->setBody(Convert::array2json(array( 'error' => $e->getMessage() ))); } return $response; } } } |