[development] AHAH Questions

ad4m adam at ludwinski.net
Fri Mar 11 10:42:46 UTC 2011


Hello,

Also consider using AHAH Helper (http://www.drupal.org/project/ahah_helper)
module which significantly simplifies the usage of AHAH. Using AHAH Helper
you only need to implement o form building function and submit/validate
callbacks. The module comes with example module which explains the basic
usage of its API.

--
Kindest regards,
Adam Ludwinski
Weever Web Warehouse
mobile: +48 606 107 297
adam.ludwinski at weever.net
http://www.weever.net
Al. Jerozolimskie 87 piętro 2
02-001 Warszawa


____________________________________________

Niniejsza wiadomosc wraz z ewentualnymi zalacznikami jest poufna i
stanowi prawnie zastrzezona korespondencje przeznaczona wylacznie dla
jej odbiorcy. Jesli odbiorca tej wiadomosci nie jest jej adresatem,
niniejszym informujemy, ze otrzymali ja Panstwo omylkowo. W zwiazku z
tym prosimy o niezwloczne powiadomienie o tym nadawcy zwrotna poczta
elektroniczna oraz o usuniecie otrzymanej wiadomosci wraz z
ewentualnymi zalacznikami.

This e-mail message with any attached files is confidential and as a
legally privileged correspondence is assigned exclusively for
recipient. If you are not intended recipient we inform that delivery
is made by mistake. Please notify the sender immediately and then
delete this e-mail with all attachments.
____________________________________________



On 11 March 2011 09:12, Austin Einter <austin.einter at gmail.com> wrote:

> 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/c5750a93/attachment-0001.html 


More information about the development mailing list