public function test_add_subsection__weird_subsection_names()
 {
     $grandparent_form = new EE_Form_Section_Proper(array('name' => 'grandparent', 'subsections' => array('123-reg-money' => new EE_Form_Section_Proper(array('subsections' => array('!0!a77y-bad`string' => new EE_Text_Input()))))));
     $grandparent_form->add_subsections(array('new_one' => new EE_Text_Input()));
     $added_input = $grandparent_form->get_input('new_one');
     $this->assertInstanceOf('EE_Text_Input', $added_input);
     $this->assertEquals('new_one', $added_input->name());
     $this->assertEquals('grandparent[new_one]', $added_input->html_name());
     $grandparent_form->add_subsections(array(12 => new EE_Text_Input()));
     $other_added_input = $grandparent_form->get_input(12);
     $this->assertInstanceOf('EE_Text_Input', $other_added_input);
 }
 public static function display_add_new_state_micro_form(EE_Form_Section_Proper $question_group_reg_form)
 {
     // only add the 'new_state_micro_form' when displaying reg forms,
     // not during processing since we process the 'new_state_micro_form' in it's own AJAX request
     $action = EE_Registry::instance()->REQ->get('action', '');
     if ($action === 'process_reg_step' || $action === 'update_reg_step') {
         return $question_group_reg_form;
     }
     // is the "state" question in this form section?
     $input = $question_group_reg_form->get_subsection('state');
     // we're only doing this for state select inputs
     if ($input instanceof EE_State_Select_Input) {
         // load helpers
         EE_Registry::instance()->load_helper('HTML');
         // grab any set values from the request
         $country_name = str_replace('state', 'new_state_country', $input->html_name());
         $state_name = str_replace('state', 'new_state_name', $input->html_name());
         $abbrv_name = str_replace('state', 'new_state_abbrv', $input->html_name());
         $new_state_submit_id = str_replace('state', 'new_state', $input->html_id());
         $country_options = array();
         $countries = EEM_Country::instance()->get_all_countries();
         if (!empty($countries)) {
             foreach ($countries as $country) {
                 if ($country instanceof EE_Country) {
                     $country_options[$country->ID()] = $country->name();
                 }
             }
         }
         $new_state_micro_form = new EE_Form_Section_Proper(array('name' => 'new_state_micro_form', 'html_id' => 'new_state_micro_form', 'layout_strategy' => new EE_No_Layout(), 'subsections' => array('add_new_state' => new EE_Hidden_Input(array('html_name' => str_replace('state', 'add_new_state', $input->html_name()), 'html_id' => str_replace('state', 'add_new_state', $input->html_id()), 'default' => 0)), 'click_here_link' => new EE_Form_Section_HTML(apply_filters('FHEE__EED_Add_New_State__display_add_new_state_micro_form__click_here_link', EEH_HTML::link('', __('click here to add a new state/province', 'event_espresso'), '', 'display-' . $input->html_id(), 'ee-form-add-new-state-lnk display-the-hidden smaller-text hide-if-no-js', '', 'rel="' . $input->html_id() . '"'))), 'add_new_state_micro_form' => new EE_Form_Section_HTML(apply_filters('FHEE__EED_Add_New_State__display_add_new_state_micro_form__add_new_state_micro_form', EEH_HTML::div('', $input->html_id() . '-dv', 'ee-form-add-new-state-dv', 'display: none;') . EEH_HTML::h6(__('If your State/Province does not appear in the list above, you can easily add it by doing the following:', 'event_espresso')) . EEH_HTML::ul() . EEH_HTML::li(__('first select the Country that your State/Province belongs to', 'event_espresso')) . EEH_HTML::li(__('enter the name of your State/Province', 'event_espresso')) . EEH_HTML::li(__('enter a two to six letter abbreviation for the name of your State/Province', 'event_espresso')) . EEH_HTML::li(__('click the ADD button', 'event_espresso')) . EEH_HTML::ulx())), 'new_state_country' => new EE_Country_Select_Input($country_options, array('html_name' => $country_name, 'html_id' => str_replace('state', 'new_state_country', $input->html_id()), 'html_class' => $input->html_class() . ' new-state-country', 'html_label_text' => __('New State/Province Country', 'event_espresso'), 'default' => EE_Registry::instance()->REQ->get($country_name, ''), 'required' => false)), 'new_state_name' => new EE_Text_Input(array('html_name' => $state_name, 'html_id' => str_replace('state', 'new_state_name', $input->html_id()), 'html_class' => $input->html_class() . ' new-state-state', 'html_label_text' => __('New State/Province Name', 'event_espresso'), 'default' => EE_Registry::instance()->REQ->get($state_name, ''), 'required' => false)), 'spacer' => new EE_Form_Section_HTML(EEH_HTML::br()), 'new_state_abbrv' => new EE_Text_Input(array('html_name' => $abbrv_name, 'html_id' => str_replace('state', 'new_state_abbrv', $input->html_id()), 'html_class' => $input->html_class() . ' new-state-abbrv', 'html_label_text' => __('New State/Province Abbreviation', 'event_espresso'), 'html_other_attributes' => 'size="24"', 'default' => EE_Registry::instance()->REQ->get($abbrv_name, ''), 'required' => false)), 'add_new_state_submit_button' => new EE_Form_Section_HTML(apply_filters('FHEE__EED_Add_New_State__display_add_new_state_micro_form__add_new_state_submit_button', EEH_HTML::nbsp(3) . EEH_HTML::link('', __('ADD', 'event_espresso'), '', 'submit-' . $new_state_submit_id, 'ee-form-add-new-state-submit button button-secondary', '', 'rel="' . $new_state_submit_id . '"'))), 'add_new_state_extra' => new EE_Form_Section_HTML(apply_filters('FHEE__EED_Add_New_State__display_add_new_state_micro_form__add_new_state_extra', EEH_HTML::br(2) . EEH_HTML::div('', '', 'small-text') . EEH_HTML::strong(__('Don\'t know your State/Province Abbreviation?', 'event_espresso')) . EEH_HTML::br() . sprintf(__('You can look here: %s, for a list of Countries and links to their State/Province Abbreviations ("Subdivisions assigned codes" column).', 'event_espresso'), EEH_HTML::link('http://en.wikipedia.org/wiki/ISO_3166-2', 'http://en.wikipedia.org/wiki/ISO_3166-2', '', '', 'ee-form-add-new-state-wiki-lnk')) . EEH_HTML::divx() . EEH_HTML::br() . EEH_HTML::link('', __('cancel new state/province', 'event_espresso'), '', 'hide-' . $input->html_id(), 'ee-form-cancel-new-state-lnk smaller-text', '', 'rel="' . $input->html_id() . '"') . EEH_HTML::divx() . EEH_HTML::br())))));
         $question_group_reg_form->add_subsections(array('new_state_micro_form' => $new_state_micro_form), 'state', false);
     }
     return $question_group_reg_form;
 }
 /**
  *    _add_promotions_form_inputs
  *
  * @access    	private
  * @param 	EE_Form_Section_Proper $before_payment_options
  * @return    	EE_Form_Section_Proper
  */
 private function _add_promotions_form_inputs($before_payment_options)
 {
     add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'));
     EE_Registry::instance()->load_helper('HTML');
     $before_payment_options->add_subsections(array('promotions_form' => new EE_Form_Section_Proper(array('layout_strategy' => new EE_No_Layout(), 'subsections' => array('ee_promotion_code_input' => new EE_Text_Input(array('default' => '', 'html_id' => 'ee-promotion-code-input', 'html_class' => 'ee-promotion-code-input ee-reg-qstn', 'html_name' => 'ee_promotion_code_input', 'html_label_text' => apply_filters('FHEE__EED_Promotions___add_promotions_form_inputs__ee_promotion_code_input__html_label_text', EEH_HTML::h4($this->_config->label->singular)))), 'ee_promotion_code_submit' => new EE_Submit_Input(array('html_id' => 'ee-promotion-code', 'html_name' => 'ee_promotion_code_submit', 'default' => apply_filters('FHEE__EED_Promotions___add_promotions_form_inputs__ee_promotion_code_submit__default', sprintf(__('Submit %s', 'event_espresso'), $this->_config->label->singular)))), 'ee_promotion_code_header' => new EE_Form_Section_HTML(EEH_HTML::div(' ', '', 'clear-float')))))));
     return $before_payment_options;
 }