File: //proc/self/cwd/wp-content/plugins/smart-slider-3/Nextend/Framework/Form/Element/Select.php
<?php
namespace Nextend\Framework\Form\Element;
use Nextend\Framework\Asset\Js\Js;
use Nextend\Framework\View\Html;
class Select extends AbstractFieldHidden {
public $value;
protected $values = array();
protected $options = array();
protected $optgroup = array();
protected $isMultiple = false;
protected $size = '';
protected $relatedValueFields = array();
protected $relatedAttribute = '';
protected function fetchElement() {
$this->values = explode('||', $this->getValue());
if (!is_array($this->values)) {
$this->values = array();
}
$html = Html::openTag("div", array(
"class" => "n2_field_select",
"style" => $this->style
));
$selectAttributes = array(
'id' => $this->fieldID . '_select',
'name' => 'select' . $this->getFieldName(),
'aria-labelledby' => $this->fieldID,
'autocomplete' => 'off'
);
if (!empty($this->size)) {
$selectAttributes['size'] = $this->size;
}
if ($this->isMultiple) {
$selectAttributes['multiple'] = 'multiple';
$selectAttributes['class'] = 'nextend-element-hastip';
$selectAttributes['title'] = n2_('Hold down the ctrl (Windows) or command (MAC) button to select multiple options.');
}
$html .= Html::tag('select', $selectAttributes, $this->renderOptions($this->options) . (!empty($this->optgroup) ? $this->renderOptgroup() : ''));
$html .= Html::closeTag("div");
$html .= parent::fetchElement();
$options = array();
if (!empty($this->relatedFields)) {
$options['relatedFields'] = $this->relatedFields;
}
if (!empty($this->relatedValueFields)) {
$options['relatedValueFields'] = $this->relatedValueFields;
}
if (!empty($this->relatedAttribute)) {
$options['relatedAttribute'] = $this->relatedAttribute;
}
Js::addInline('new _N2.FormElementList("' . $this->fieldID . '", ' . json_encode($options) . ');');
return $html;
}
/**
*
* @return string
*/
protected function renderOptgroup() {
$html = '';
foreach ($this->optgroup as $label => $options) {
if (is_array($options)) {
$html .= "<optgroup label='" . $label . "'>";
$html .= $this->renderOptions($options);
$html .= "</optgroup>";
} else {
$html .= $this->renderOption($label, $options);
}
}
return $html;
}
/**
* @param array $options
*
* @return string
*/
protected function renderOptions($options) {
$html = '';
foreach ($options as $value => $label) {
$html .= $this->renderOption($value, $label);
}
return $html;
}
protected function renderOption($value, $label) {
return '<option value="' . esc_attr($value) . '" ' . $this->isSelected($value) . '>' . $label . '</option>';
}
protected function isSelected($value) {
if (in_array($value, $this->values)) {
return ' selected="selected"';
}
return '';
}
/**
* @param array $options
*/
public function setOptions($options) {
$this->options = $options;
}
/**
* @param array $optgroup
*/
public function setOptgroup($optgroup) {
$this->optgroup = $optgroup;
}
/**
* @param bool $isMultiple
*/
public function setIsMultiple($isMultiple) {
$this->isMultiple = $isMultiple;
$this->size = 10;
}
/**
* @param string $size
*/
public function setSize($size) {
$this->size = $size;
}
protected function createTree(&$list, &$new, $parent, $cindent = '', $indent = '- ') {
if (isset($new[$parent])) {
for ($i = 0; $i < count($new[$parent]); $i++) {
$new[$parent][$i]->treename = $cindent . $new[$parent][$i]->name;
$list[] = $new[$parent][$i];
$this->createTree($list, $new, $new[$parent][$i]->cat_ID, $cindent . $indent, $indent);
}
}
return $list;
}
public function setRelatedValueFields($relatedValueFields) {
$this->relatedValueFields = $relatedValueFields;
}
public function setRelatedAttribute($relatedAttribute) {
$this->relatedAttribute = $relatedAttribute;
}
}