[development] AHAH Questions
Austin Einter
austin.einter at gmail.com
Fri Mar 11 08:12:43 UTC 2011
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 <randy at randyfay.com> 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 <austin.einter at gmail.com>
> 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
> randy at randyfay.com
> +1 970.462.7450
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20110311/6564a217/attachment.html
More information about the development
mailing list