function testScaffoldSearchFields() { $autoCompleter = new GridFieldAddExistingAutocompleter($targetFragment = 'before', array('Test')); $gridFieldTest_Team = singleton('GridFieldTest_Team'); $this->assertEquals($autoCompleter->scaffoldSearchFields('GridFieldTest_Team'), array('Name:PartialMatch', 'City:StartsWith', 'Cheerleaders.Name:StartsWith')); $this->assertEquals($autoCompleter->scaffoldSearchFields('GridFieldTest_Cheerleader'), array('Name:StartsWith')); }
/** * Detect searchable fields and searchable relations * Only has_many relations may be searched. * Falls back to Title or Name if no earchableFields are defined. * * @param string $dataClass The class name to get fields for * * @return array * * @return array|null * * @author Sebastian Diel <*****@*****.**> * @since 15.04.2014 */ public function scaffoldSearchFields($dataClass) { $fields = parent::scaffoldSearchFields($dataClass); $has_many = Config::inst()->get($dataClass, 'has_many'); $many_many = Config::inst()->get($dataClass, 'many_many'); $belongs_many_many = Config::inst()->get($dataClass, 'belongs_many_many'); foreach ($fields as $key => $value) { if (strpos($value, '.') !== false) { $parts = explode('.', $value, 2); $relationName = $parts[0]; $searchField = $parts[1]; if (is_array($has_many) && array_key_exists($relationName, $has_many)) { $fields[$key] = $has_many[$relationName] . '.' . $searchField; } elseif (is_array($many_many) && array_key_exists($relationName, $many_many)) { unset($fields[$key]); } elseif (is_array($belongs_many_many) && array_key_exists($relationName, $belongs_many_many)) { unset($fields[$key]); } } } return $fields; }
/** * Set core properties * * @since version 1.0.0 * * @param string $targetFragment * @param object $searchFields * * @return void **/ public function __construct($targetFragment = 'before', $searchFields = null) { $this->targetFragment = $targetFragment; $this->searchFields = (array) $searchFields; parent::__construct(); }
/** * Sets the number of items to limit to * @param {string} $targetFragment Fragment to place the component in * @param {array} $searchFields Which fields on the object in the list should be searched * @param {int} $limit Number of items to limit the gridfield's relationship to * @return {LRGridFieldAddExistingAutocompleter} Returns self */ public function __construct($targetFragment = 'before', $searchFields = null, $itemLimit = null) { $this->_item_limit = $itemLimit; parent::__construct($targetFragment, $searchFields); }