public function objectResponse($disp)
 {
     $changed = false;
     if ($this->dynamic_attributes->isDynamic('handler')) {
         if ($new = $disp->valueChanged($this->dynamic_attributes->attribute('handler'))) {
             $hand = $new;
             $changed = true;
         } else {
             $hand = Display::rsmlValue($disp->variables(), $this->dynamic_attributes->attribute('handler'));
         }
     } else {
         $hand = $this->attribute('handler');
     }
     if (count($this->qs_nodes)) {
         $vars = array();
         foreach ($this->qs_nodes as $node) {
             $vars[] = $node->templateData(RsmlNode::CTX_ARRAY_ARGUMENT);
         }
         eval('$get_array = array(' . implode(',', $vars) . ');');
         $changed = true;
     } else {
         $get_array = '';
     }
     if ($changed && $disp->allowedHandler($hand)) {
         $disp->setResponse($this->idAttribute(RsmlNode::CTX_PLAIN), 'href', Display::hrefString($hand, $disp->remoteNum(), $get_array));
         if (!$this->hasAttribute('onclick')) {
             $disp->setResponse($this->idAttribute(RsmlNode::CTX_PLAIN), 'onclick', RemoteDisplay::onClickString($hand, $disp->remoteNum(), $get_array));
         } else {
             $disp->setResponse($this->idAttribute(RsmlNode::CTX_PLAIN), 'onclick', $this->attribute('onclick', RsmlNode::CTX_PLAIN));
         }
         if (!$this->text_node) {
             $nav = $disp->getSiteNavigation();
             $item = $nav->getItem($hand);
             $text = $item->displayInfoValue('text');
             $disp->setResponse($this->idAttribute(RsmlNode::CTX_PLAIN), 'innerHTML', $text);
         }
     }
 }
 public static function onClickUrl($handler, $remote_num, $secondary_get_vars = '')
 {
     if ($secondary_get_vars) {
         $new_secondary_get_vars = $secondary_get_vars;
     } else {
         $new_secondary_get_vars = array();
     }
     $new_secondary_get_vars['ajax'] = true;
     $new_secondary_get_vars['remote_num'] = $remote_num;
     $ret = Display::hrefString($handler, $new_secondary_get_vars);
     return $ret;
 }
 function generateInputObjects()
 {
     $ret = array();
     $tabindex_count = 0;
     foreach ($this->standard_options as $name => $values) {
         if (isset($values['value'])) {
             $value = $values['value'];
         } else {
             $value = '';
         }
         if (isset($values['label'])) {
             $label = $values['label'];
         } else {
             $label = '';
         }
         if ($this->item_link_class) {
             $secondary_get_vars = ArrayUtility::merge($this->secondary_get_vars, array($name => $value));
             $href = Display::hrefString($this->item_link_class, $secondary_get_vars);
             $label = new FormLink($href, $label);
         } else {
             $label = new FormLabel($label);
         }
         switch ($this->type) {
             case ButtonGroup::CHECK:
                 $obj = new Checkbox($name, $this->class, '', $value, $label, '');
                 break;
             case ButtonGroup::RADIO:
                 $obj = new RadioButton($name, $this->class, '', $value, $label, '');
                 break;
             case ButtonGroup::NONE:
                 $obj = $label;
                 break;
         }
         if ($obj instanceof FormInput) {
             $obj->setTabindex($this->tabindex + $tabindex_count);
         }
         $tabindex_count++;
     }
     $selected = $this->selected;
     $primary_get_string = '';
     $check_name = $this->name;
     if (!$this->options) {
         $this->options = array();
     }
     foreach ($this->options as $opt) {
         $cur_check_name = $opt->formOptionName($check_name);
         $cur_check_value = $opt->formOptionValue();
         $cur_check_label = $opt->toString();
         $opt->formLinkGetVars($this->secondary_get_vars);
         $check_selected = ArrayUtility::arrayFromString($cur_check_name, false);
         if ($this->type == ButtonGroup::CHECK || $this->type == ButtonGroup::NONE) {
             $cur_check_name .= '[]';
         }
         if ($this->item_link_class) {
             $href = Display::hrefString($this->item_link_class, $this->secondary_get_vars);
             $label = new FormLink($href, $cur_check_label);
         } else {
             $label = new FormLabel($cur_check_label);
         }
         switch ($this->type) {
             case ButtonGroup::CHECK:
                 if (count($check_selected) && is_array($check_selected)) {
                     $sel_array = ArrayUtility::getArrayValueMulti($selected, $check_selected);
                     if (!is_array($sel_array)) {
                         $sel_array = array();
                     }
                 } else {
                     $sel_array = $selected;
                 }
                 if (in_array($cur_check_value, $sel_array)) {
                     $is_selected = true;
                 } else {
                     $is_selected = false;
                 }
                 $obj = new Checkbox($cur_check_name, $this->class, '', $cur_check_value, $label, $is_selected);
                 break;
             case ButtonGroup::RADIO:
                 if ($cur_check_value == $selected) {
                     $is_selected = true;
                 } else {
                     $is_selected = false;
                 }
                 $obj = new RadioButton($cur_check_name, $this->class, '', $cur_check_value, $label, $is_selected);
                 break;
             case ButtonGroup::NONE:
                 $obj = new HiddenLabel($cur_check_name, $cur_check_value, $label, '');
                 break;
         }
         if ($obj instanceof FormInput) {
             $obj->setTabindex($this->tabindex + $tabindex_count);
         }
         $ret[] = $obj;
         $tabindex_count++;
     }
     return $ret;
 }