/** * Ordering option list helper. * * @param Array $config An optional configuration object */ public function ordering($config = array()) { $config = new KConfig($config); $options = array(); $orders = array('newest' => 'Newest first', 'oldest' => 'Oldest first', 'popular' => 'Most popular', 'alpha' => 'Alphabetical', 'category' => 'Section/Category'); foreach ($orders as $value => $title) { $options[] = $this->option(array('value' => $value, 'text' => $title)); } $config->append(array('options' => $options, 'name' => 'ordering', 'translate' => true))->append(array('selected' => $config->{$config->name})); return parent::optionlist($config); }
/** * Adds the option to enhance the select box using Select2 * * @param array|KObjectConfig $config * @return string */ public function optionlist($config = array()) { $translator = $this->getObject('translator'); $config = new KObjectConfigJson($config); $config->append(array('prompt' => '- ' . $translator->translate('Select') . ' -', 'options' => array(), 'select2' => false, 'attribs' => array())); if ($config->attribs->multiple && $config->name && substr($config->name, -2) !== '[]') { $config->name .= '[]'; } $html = ''; if ($config->select2) { $config->append(array('select2_options' => array('element' => $config->attribs->id ? '#' . $config->attribs->id : 'select[name=\\"' . $config->name . '\\"]', 'options' => array()))); if ($config->deselect) { // select2 needs the first option empty for placeholders to work on single select boxes if (!$config->attribs->multiple) { $config->options = array_merge(array($this->option(array('label' => ''))), $config->options->toArray()); } // special configuration for select2 placeholder $config->select2_options->append(array('options' => array('placeholder' => $translator->translate($config->prompt), 'allowClear' => true))); } $html .= $this->getTemplate()->createHelper('behavior')->select2($config->select2_options); } $html .= parent::optionlist($config); return $html; }