public function __toString() { $name = Am_Controller::escape($this->getName()); $ret = "<div class='resourceaccess' id='{$name}'>"; $ret .= "<span class='protected-access'>\n"; $ret .= ___('Choose Products and/or Product Categories that allows access') . "<br />\n"; $ret .= ___('or %smake access free%s', "<a href='javascript:' class='make-free'>", '</a>') . "<br /><br />\n"; $select = new HTML_QuickForm2_Element_Select(null, array('class' => 'access-items')); $select->addOption(___('Please select an item...'), ''); $g = $select->addOptgroup(___('Product Categories'), array('class' => 'product_category_id', 'data-text' => ___("Category"))); $g->addOption(___('Any Product'), '-1', array('style' => 'font-weight: bold')); foreach (Am_Di::getInstance()->productCategoryTable->getAdminSelectOptions() as $k => $v) { $g->addOption($v, $k); } $g = $select->addOptgroup(___('Products'), array('class' => 'product_id', 'data-text' => ___("Product"))); foreach (Am_Di::getInstance()->productTable->getOptions() as $k => $v) { $g->addOption($v, $k); } $ret .= (string) $select; foreach (Am_Di::getInstance()->resourceAccessTable->getFnValues() as $k) { $ret .= "<div class='{$k}-list'></div>"; } $ret .= "</span>\n"; $ret .= "<span class='free-access' style='display:none;'>this item is available for all registered customers.<br />\n <a href='javascript:' class='make-free'>click to make this item protected</a>\n </span>"; $json = array(); if (!empty($this->value['product_category_id']) || !empty($this->value['product_id']) || !empty($this->value['free'])) { $json = $this->value; foreach ($json as &$fn) { foreach ($fn as &$rec) { if (is_string($rec)) { $rec = json_decode($rec, true); } } } } else { foreach ($this->value as $cl => $access) { $json[$access->getClass()][$access->getId()] = array('text' => $access->getTitle(), 'start' => $access->getStart(), 'stop' => $access->getStop()); } } $json = Am_Controller::escape(Am_Controller::getJson($json)); $ret .= "<input type='hidden' class='resourceaccess-init' value='{$json}' />\n"; $ret .= "</div>"; $without_period = $this->getAttribute('without_period') ? 'true' : 'false'; $ret .= "\n <script type='text/javascript'>\n \$('.resourceaccess').resourceaccess({without_period: {$without_period}});\n </script>\n "; return $ret; }
public function toArray() { $id = $this->getId(); $name = $this->getName(); $selectFrom = new HTML_QuickForm2_Element_Select("_{$name}", array('id' => "{$id}-from") + $this->attributes); $selectTo = new HTML_QuickForm2_Element_Select($name, array('id' => "{$id}-to") + $this->attributes); $strValues = array_map('strval', $this->values); foreach ($this->optionContainer as $option) { // We don't do optgroups here if (!is_array($option)) { continue; } $value = $option['attr']['value']; unset($option['attr']['value']); if (in_array($value, $strValues, true)) { $selectTo->addOption($option['text'], $value, empty($option['attr']) ? null : $option['attr']); } else { $selectFrom->addOption($option['text'], $value, empty($option['attr']) ? null : $option['attr']); } } $buttonFromTo = HTML_QuickForm2_Factory::createElement('button', "{$name}_fromto", array('type' => 'button', 'id' => "{$id}-fromto") + (empty($this->data['from_to']['attributes']) ? array() : self::prepareAttributes($this->data['from_to']['attributes'])), array('content' => empty($this->data['from_to']['content']) ? ' >> ' : $this->data['from_to']['content'])); $buttonToFrom = HTML_QuickForm2_Factory::createElement('button', "{$name}_tofrom", array('type' => 'button', 'id' => "{$id}-tofrom") + (empty($this->data['to_from']['attributes']) ? array() : self::prepareAttributes($this->data['to_from']['attributes'])), array('content' => empty($this->data['to_from']['content']) ? ' << ' : $this->data['to_from']['content'])); return array('select_from' => $selectFrom->__toString(), 'select_to' => $selectTo->__toString(), 'button_from_to' => $buttonFromTo->__toString(), 'button_to_from' => $buttonToFrom->__toString()); }
public function testBug11138() { $options = array('2' => 'TwoWithoutZero', '02' => 'TwoWithZero'); $sel = new HTML_QuickForm2_Element_Select('bug11138'); $sel->loadOptions($options); $sel->setValue('02'); $selHtml = $sel->__toString(); $this->assertRegExp('!selected="selected"[^>]*>TwoWithZero!', $selHtml); $this->assertNotRegExp('!selected="selected"[^>]*>TwoWithoutZero!', $selHtml); $sel->toggleFrozen(true); $selFrozen = $sel->__toString(); $this->assertContains('TwoWithZero', $selFrozen); $this->assertContains('value="02"', $selFrozen); $this->assertNotContains('TwoWithoutZero', $selFrozen); $this->assertNotContains('value="2"', $selFrozen); }
/** * Disable possibleValues checks in getValue() * * For lazy people who add options to selects on client side and do not * want to add the same stuff server-side * * @link http://pear.php.net/bugs/bug.php?id=13088 * @link http://pear.php.net/bugs/bug.php?id=16974 */ public function testDisableIntrinsicValidation() { $selectSingle = new HTML_QuickForm2_Element_Select('foo', null, array('intrinsic_validation' => false)); $selectSingle->setValue('foo'); $this->assertEquals('foo', $selectSingle->getValue()); $selectSingle->loadOptions(array('one' => 'First', 'two' => 'Second')); $selectSingle->setValue('three'); $this->assertEquals('three', $selectSingle->getValue()); $selectMultiple = new HTML_QuickForm2_Element_Select('bar', array('multiple'), array('intrinsic_validation' => false)); $selectMultiple->loadOptions(array('one' => 'First', 'two' => 'Second')); $selectMultiple->setValue(array('two', 'three')); $this->assertEquals(array('two', 'three'), $selectMultiple->getValue()); }
function addCategoriesProductsList(HTML_QuickForm2_Element_Select $select) { $g = $select->addOptgroup(___('Product Categories'), array('class' => 'product_category_id', 'data-text' => ___("Category"))); $g->addOption(___('Any Product'), 'c-1', array('style' => 'font-weight: bold')); foreach ($this->getDi()->productCategoryTable->getAdminSelectOptions() as $k => $v) { $g->addOption($v, 'c' . $k); } $g = $select->addOptgroup(___('Products'), array('class' => 'product_id', 'data-text' => ___("Product"))); foreach ($this->getDi()->productTable->getOptions() as $k => $v) { $g->addOption($v, 'p' . $k); } }
function getValue() { $value = parent::getValue(); return $value == null ? array() : $value; }
public function __construct($name = null, $attributes = null, array $data = array()) { if ($attributes === null) { $attributes = array(); } $attributes['class'] = 'magicselect'; $attributes['multiple'] = 'multiple'; $attributes['data-offer'] = '-- ' . ___("Please Select") . ' --'; parent::__construct($name, $attributes, $data); }
public function testSelectMultipleNonRecursive() { $s = new HTML_QuickForm2_Element_Select('foo', array('multiple' => 'multiple'), array('intrinsic_validation' => false)); $s->setValue(array('foo', 'bar')); $s->addFilter('count'); $this->assertEquals(2, $s->getValue()); }
/** * @see http://pear.php.net/bugs/bug.php?id=12610 */ function testValidateSelectMultiple() { $options = array('1' => 'Option 1', '2' => 'Option 2'); $multiSelect = new HTML_QuickForm2_Element_Select('mult', array('multiple'), array('options' => $options)); $nonEmpty = new HTML_QuickForm2_Rule_Nonempty($multiSelect, 'an error'); $this->assertFalse($nonEmpty->validate()); $multiSelect->setValue(array(1)); $this->assertTrue($nonEmpty->validate()); $nonEmpty->setConfig(2); $this->assertFalse($nonEmpty->validate()); }