Thanks Randy. I will try to use those examples as a starting point. Thanks Austin
On Fri, Mar 11, 2011 at 11:59 AM, Randy Fay <[email protected]> wrote: > Please start your investigations using the AHAH Example in the > Examples Project (http://drupal.org/project/examples) and > http://randyfay.com/ahah. If you build a form starting with that > foundation, then please come back for help at that point. > > Thanks, > -Randy > > On Thu, Mar 10, 2011 at 9:10 PM, Austin Einter <[email protected]> > wrote: > > Hi All > > I am quite new to AHAH, strugling to find how it works. I referred > > documentation and poll module. > > I want 3 fields in a fieldset, Company, Start-Date, End-Date. > > > > I have a button "Add More Company", if clicked, it should add a new row > > having Company, Start-Date, End-Date dynamically. > > How many times user clicks, those many rows needs to be added. > > > > To get the above mentioned form, I have put the code as below. > > However, on button click, new rows are not adding up. > > > > Please help me to find whats the error with code. > > > > Regards, > > Austin > > > > Code > > =============================================== > > <?php > > function submitresume_menu() { > > $items = array(); > > $items['submitresume/form'] = array( > > 'title' => t('Submit Your Resume'), > > 'page callback' => 'submitresume_form', > > 'access arguments' => array('access content'), > > 'description' => t('Submit Your Resume'), > > 'type' => MENU_CALLBACK, > > ); > > $items['submitresume/form/morecompanies'] = array( > > 'page callback' => 'submitresume_add_more_companies', > > 'access arguments' => array('access content'), > > 'type' => MENU_CALLBACK, > > ); > > return $items; > > } > > function submitresume_form() { > > return drupal_get_form('submitresume_my_form'); > > } > > function submitresume_my_form($form_state) { > > $form = array('#cache' => TRUE,); > > if (isset($form_state['all_companies'])) { > > $all_companies = $form_state['all_companies']; > > } > > else { > > $all_companies = 1; > > } > > //Add a wrapper for the companies and add more button. > > $form['work_history_wrapper'] = array( > > '#title' => t("Work history: Mention all the companies you gave worked > so > > far"), > > '#type' => 'fieldset', > > '#collapsible' => TRUE, > > '#collapsed' => FALSE, > > '#prefix' => '<div class="clear-block" id="work-history-wrapper">', > > '#suffix' => '</div>', > > ); > > //Container for just companies > > $form['work_history_wrapper']['allcompanies'] = array( > > '#prefix' => '<div id="all-companies">', > > '#suffix' => '</div>', > > ); > > for ($delta = 0; $delta < $all_companies; $delta++) > > { > > //Need to do: Get the company name, start date and end date, pass it to > > submitresume_add_one_company_form, so that it is shown properly > > $form['work_history_wrapper']['allcompanies'][$delta] = > > submitresume_add_one_company_form($delta, $company_name, $compsdt, > > $compedt); > > } > > $form['work_history_wrapper']['morecompany'] = array( > > '#type' => 'button', > > '#value' => t('Add More Companies'), > > '#weight' => 1, > > '#submit' => array('add_more_companies_submit'), // If no javascript > > action. > > '#ahah' => array( > > 'path' => 'submitresume/form/morecompanies', > > 'wrapper' => 'all-companies', > > 'method' => 'replace', > > 'effect' => 'fade', > > ), > > ); > > > > $form['submit'] = array( > > '#type' => 'submit', > > '#value' => 'Submit', > > ); > > return $form; > > } > > function submitresume_add_one_company_form($delta, $company_name, > $compsdt, > > $compedt) { > > $form = array( > > '#tree' => TRUE, > > ); > > $form['companies'] = array( > > '#type' => 'textfield', > > '#title' => t('Company')."-".$delta, > > '#parents' => array('allcompanies', $delta, 'companies'), > > '#size' => 30, > > '#maxlength' => 100, > > ); > > $form['startdate'] = array( > > '#type' => 'date', > > '#title' => t('Start Date'), > > '#parents' => array('allcompanies', $delta, 'startdate'), > > ); > > $form['enddate'] = array( > > '#type' => 'date', > > '#title' => t('End Date'), > > '#parents' => array('allcompanies', $delta, 'enddate'), > > ); > > return $form; > > } > > function add_more_companies_submit($form, &$form_state) { > > // Set the form to rebuild and run submit handlers. > > node_form_submit_build_node($form, $form_state); > > // Make the changes we want to the form state. > > if ($form_state['values']['morecompany']) { > > $n = $_GET['q'] == 'submitresume/form/morecompanies' ? 1 : 5; > > $form_state['all_companies'] = > > count($form_state['values']['allcompanies']) + $n; > > } > > } > > function submitresume_add_more_companies() { > > include_once 'modules/node/node.pages.inc'; > > $form_state = array('storage' => NULL, 'submitted' => FALSE); > > $form_build_id = $_POST['form_build_id']; > > // Get the form from the cache. > > $form = form_get_cache($form_build_id, $form_state); > > $args = $form['#parameters']; > > $form_id = array_shift($args); > > // We will run some of the submit handlers so we need to disable > > redirecting. > > $form['#redirect'] = FALSE; > > // We need to process the form, prepare for that by setting a few > internals > > // variables. > > $form['#post'] = $_POST; > > $form['#programmed'] = FALSE; > > $form_state['post'] = $_POST; > > // Build, validate and if possible, submit the form. > > drupal_process_form($form_id, $form, $form_state); > > // This call recreates the form relying solely on the form_state that > the > > // drupal_process_form set up. > > $form = drupal_rebuild_form($form_id, $form_state, $args, > $form_build_id); > > // Render the new output. > > $choice_form = $form['work_history_wrapper']['allcompanies']; > > unset($choice_form['#prefix'], $choice_form['#suffix']); // Prevent > > duplicate wrappers. > > $output = theme('status_messages') . drupal_render($choice_form); > > drupal_json(array('status' => TRUE, 'data' => $output)); > > } > > function submitresume_validate($form, &$form_state) { > > } > > function submitresume_submit($form, &$form_state) { > > drupal_set_message(t('The form has been submitted.')); > > } > > ?> > > > > > > -- > Randy Fay > Drupal Module and Site Development > [email protected] > +1 970.462.7450 >
