/** * @param string $name * @param string $title * @param DataObjectInterface $object * @param string $sort * @param SS_List $source * @param string $titleField */ public function __construct($name, $title, DataObjectInterface $object, $sort = false, SS_List $source = null, $titleField = 'Title') { $this->setSort($sort); if ($object->many_many($name)) { $dataSource = $object->{$name}(); // Check if we're dealing with an UnsavedRelationList $unsaved = $dataSource instanceof UnsavedRelationList; // Store the relation's class name $class = $dataSource->dataClass(); $this->dataClass = $class; // Sort the items if ($this->getSort()) { $dataSource = $dataSource->sort($this->getSort()); } // If we're dealing with an UnsavedRelationList, it'll be empty, so we // can skip this and just use an array of all available items if ($unsaved) { $dataSource = $class::get()->map()->toArray(); } else { // If we've been given a list source, filter on those IDs only. if ($source) { $dataSource = $dataSource->filter('ID', $source->column('ID')); } // Start building the data source from scratch. Currently selected items first, // in the correct sort order $dataSource = $dataSource->map('ID', $titleField)->toArray(); // Get the other items $theRest = $class::get(); // Exclude items that we've already found if (!empty($dataSource)) { $theRest = $theRest->exclude('ID', array_keys($dataSource)); } // If we've been given a list source, filter on those IDs only if ($source) { $theRest = $theRest->filter('ID', $source->column('ID')); } $theRest = $theRest->map('ID', $titleField)->toArray(); // ... we then add the remaining items in whatever order they come $dataSource = $dataSource + $theRest; } } elseif ($source instanceof SS_List) { $dataSource = $source->map('ID', $titleField)->toArray(); } elseif (is_array($source) && ArrayLib::is_associative($source)) { $dataSource = $source; } else { user_error('MultiSelectField::__construct(): MultiSelectField only supports many-to-many relations'); } parent::__construct($name, $title, $dataSource, '', null, true); }
/** * Creates a new dropdown field. * * @param string $name The field name * @param string $title The field title * @param array $source An map of the dropdown items * @param string|array $value You can pass an array of values or a single value like a drop down to be selected * @param int $size Optional size of the select element * @param form The parent form */ public function __construct($name, $title = '', $source = array(), $value = '', $size = null) { parent::__construct($name, $title, $source, $value, $size, true); }
public function __construct($name, $title = null, $source = array(), $value = '', $form = null, $emptyString = null) { parent::__construct($name, $title, $source, $value, $form, $emptyString); }
public function __construct($name, $title = null, $source = array(), $value = '', $form = null, $emptyString = null) { parent::__construct($name, $title, $source, $value, $form, $emptyString); $this->no_results_text = _t('ChosenField.NO_RESULTS', 'Oops, nothing found!'); }