Answers.Body: <p>If you are using Drupal with a no-redirection payment processor, your best chance to do this is by using <a href="https://www.drupal.org/project/webform_civicrm" rel="nofollow">Webform CiviCRM</a>. Webform comes with a lot of functionnality like multisteps, fields grouping and conditional fields.</p>
  
  <p>Otherwise, if you are not in Drupal or want to have a cross platform solution, i can see 2 possibilities :</p>
  
  <ol>
  <li>you do a contribution page with profile containing all the fields you need and then you add javascript to make it multistep (e.g. <a href="http://www.jquery-steps.com/" rel="nofollow">jquery steps</a>). You might find it difficult to make CiviCRM embedded javascript to work in all context.</li>
  <li><p>you do a contribution page that is the first step of the process and then redirect to a profile to let the user update its information when the payment is done (the user won't be able to see the thankyou page so you might want to add a thank you message in the profile). You should be able to do so using CiviCRM <a href="https://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_buildForm" rel="nofollow">hook_civicrm_buildForm</a> like :</p>
  
  <pre><code>function myextension_civicrm_buildForm($formName, &amp;$form) {
    if ($formName == 'CRM_Contribute_Form_Contribution_ThankYou') {
      $formId = $form-&gt;getVar('_id');
      if ($formId == FORM_ID) {
        ...
        $url = CRM_Utils_System::url('civicrm/profile/edit', "gid={$gid}&amp;id={$indId}&amp;reset=1&amp;context=thankyou" . $checksum, FALSE, NULL, FALSE);
        CRM_Utils_System::redirect($url);
      }
    }
  }
  </code></pre></li>
  </ol>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-09-23T13:48:54.203Z
Answers.LastActivityDate: 2016-09-23T13:48:54.203Z
Answers.UserDisplayName: samuelsov
Answers.Body: <p>In addition to samuelsov answer, if you want to redirect to a profile after a contribution page you can look at the <a href="https://github.com/eileenmcnaughton/nz.co.fuzion.frontendpageoptions" rel="nofollow">Front End Page extension</a> (note requirement for civicrm entity setting extension)</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-09-23T14:04:11.450Z
Answers.LastActivityDate: 2016-09-23T14:04:11.450Z
Answers.UserDisplayName: petednz - fuzion
Body: <p>I am trying to figure out how to allow user to update their contact details, such as address, VAT number and allowing them to upload necessary documents such as health and safety policy etc. </p>
  
  <p>I also want renew page to be multi step such as step1: update details, step2: upload necessary document, step3: view total cost and final do the payment.</p>
  
  <p>I would be thankful, if anyone can help me. I am now trying the hook: civicrm_buildForm to add various additional field in the membership renew form. But I am still not sure how to make it multi steps.</p>
  
Tags: <civimember>
Title: Allowing user to update their contact details while renewing their membership
ThreadText: # Allowing user to update their contact details while renewing their membership
  
  (Asked by: username_0 on 2016-09-23)
  
  I am trying to figure out how to allow user to update their contact details, such as address, VAT number and allowing them to upload necessary documents such as health and safety policy etc.
  
  I also want renew page to be multi step such as step1: update details, step2: upload necessary document, step3: view total cost and final do the payment.
  
  I would be thankful, if anyone can help me. I am now trying the hook: civicrm\_buildForm to add various additional field in the membership renew form. But I am still not sure how to make it multi steps.
  
  **Tags:** civimember
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2016-09-23. Score: 1
  
  If you are using Drupal with a no-redirection payment processor, your best chance to do this is by using [Webform CiviCRM](https://www.drupal.org/project/webform_civicrm). Webform comes with a lot of functionnality like multisteps, fields grouping and conditional fields.
  
  Otherwise, if you are not in Drupal or want to have a cross platform solution, i can see 2 possibilities :
  
  1. you do a contribution page with profile containing all the fields you need and then you add javascript to make it multistep (e.g. [jquery steps](http://www.jquery-steps.com/)). You might find it difficult to make CiviCRM embedded javascript to work in all context.
  2. you do a contribution page that is the first step of the process and then redirect to a profile to let the user update its information when the payment is done (the user won't be able to see the thankyou page so you might want to add a thank you message in the profile). You should be able to do so using CiviCRM [hook\_civicrm\_buildForm](https://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_buildForm) like :
  
     ```
     function myextension_civicrm_buildForm($formName, &$form) {
       if ($formName == 'CRM_Contribute_Form_Contribution_ThankYou') {
         $formId = $form->getVar('_id');
         if ($formId == FORM_ID) {
           ...
           $url = CRM_Utils_System::url('civicrm/profile/edit', "gid={$gid}&id={$indId}&reset=1&context=thankyou" . $checksum, FALSE, NULL, FALSE);
           CRM_Utils_System::redirect($url);
         }
       }
     }
  
     ```
  
  
  ---
  
  ### Answer by username_2 on 2016-09-23. Score: 0
  
  In addition to username_1 answer, if you want to redirect to a profile after a contribution page you can look at the [Front End Page extension](https://github.com/eileenmcnaughton/nz.co.username_2.frontendpageoptions) (note requirement for civicrm entity setting extension)
  
  
  ---
  
  