- function userprofile_education_form (&$form_state, $userinfo) {
- ahah_helper_register($form, $form_state); // AHAH helper
- if (user_has_role("hr admin")) { $disabled = FALSE; $is_admin = TRUE; } else { $disabled = TRUE; $is_admin = FALSE; }
- $form['degree'] = array(
- '#type' => 'fieldset',
- '#title' => t('Education'),
- '#prefix' => '<div id="degree-wrapper">',
- '#suffix' => '</div>',
- '#tree' => TRUE,
- );
- $degrees = array( '' =>'- Select -') + userprofile_class_values('degree');
- if (!isset( $form_state['storage']['numrows'])) {
- db_set_active('mgh');
- $query = "SELECT * FROM {molbio_user_degree} WHERE molbio_user_id = '%s' ORDER BY received";
- $queryResult = db_query($query, $userinfo->userid);
- db_set_active('drupal');
- $userid = $userinfo->userid;
- while ($degreedata = db_fetch_object($queryResult)) {
- $values[] = array( 'type' => $degreedata->degree_type,
- 'received' => array(
- 'month' => ltrim(strftime('%m',strtotime($degreedata->received)), 0),
- 'day' => trim(strftime('%e',strtotime($degreedata->received))),
- 'year' => strftime('%Y',strtotime($degreedata->received))
- ));
- $numrows++;
- }
- } else {
- // Else, this is a AHAH refresh
- $userid = $form_state['values']['userid'];
- $numrows = $form_state['values']['numrows'];
- //$userid = $form_state['storage']['userid'];
- //$numrows = $form_state['storage']['numrows'];
- // determine new numrows
- if( $form_state['values']['op'] == '+' ) $numrows++;
- // if ( $form_state['values']['op'] == '-' ) $numrows--;
- // save in temp array
- for ($i=1;$i<=$numrows;$i++) {
- // For each row to be displayed. If adding a new row, empty data => default drop down values.
- $values[] = array(
- 'type' => $form_state['values']['degree']['degree'.$i],
- 'received' => array(
- 'month' => $form_state['values']['degree']['degree'.$i.'received']['month'],
- 'day' => $form_state['values']['degree']['degree'.$i.'received']['day'],
- 'year' => $form_state['values']['degree']['degree'.$i.'received']['year']
- ));
- }
- }
- // Ask your admin message
- // Display message regardless of how many rows there are
- if ($disabled) {
- $form['degree']['degree'] = array(
- '#value' => '<div class="form-item">
- <p>'._ask_admin_message().'</p>
- </div>',
- );
- }
- $form['userid'] = array(
- '#type' => 'hidden',
- '#value' => $userid,
- );
- // Display each row in $numrows
- for ($i=0;$i< $numrows;$i++) {
- // For each row to be displayed. If adding a new row, empty data => default drop down values.
- // group item numbered from 1 on (is this really necessary?)
- $form['degree']['degree'.($i+1)] = array(
- '#title' => t('Degree').(($is_admin) ? ' (<a href="/inlineeditor/degree">Edit</a>)' : ''),
- '#type' => 'select',
- '#default_value' => $values[$i],
- '#options' => $degrees,
- '#prefix' => '<div class="compact-row" id="degree'.($i+1).'">',
- '#attributes' => array("class" => "degree-field"),
- '#disabled' => $disabled,
- );
- $form['degree']['degree'.($i+1).'received'] = array(
- '#title' => t('Received'),
- '#type' => 'mbpddate',
- '#default_value' => array(
- 'month' => $values[$i]['received']['month'],
- 'day' => $values[$i]['received']['day'],
- 'year' => $values[$i]['received']['year']
- ),
- '#yearstart' => 1960,
- '#yearend' => idate('Y')+ 10,
- '#suffix' => '</div>',
- '#disabled' => $disabled,
- );
- }
- // If no rows, display single row with no data
- if ($numrows==0) {
- if (!$disabled) {
- $numrows++;
- $form['degree']['degree'.$numrows] = array(
- '#title' => t('Degree').(($is_admin) ? ' (<a href="/inlineeditor/degree">Edit</a>)' : ''),
- '#type' => 'select',
- '#default_value' => $degreedata->degree_type,
- '#options' => $degrees,
- '#prefix' => '<div class="compact-row" no-data id="degree'.$numrows.'">',
- '#attributes' => array("class" => "degree-field"),
- '#disabled' => $disabled,
- );
- $form['degree']['degree'.$numrows.'received'] = array(
- '#title' => t('Received'),
- '#type' => 'mbpddate',
- '#default_value' => array(
- 'month' => $values[$numrows]['received']['month'],
- 'day' => $values[$numrows]['received']['day'],
- 'year' => $values[$numrows]['received']['year']),
- '#yearstart' => 1960,
- '#yearend' => idate('Y')+ 10,
- '#attributes' => array("class" => "degree-field"),
- '#suffix' => '</div>',
- '#disabled' => $disabled,
- );
- }
- // + button only
- if (!$disabled) {
- $form['degree']['addbutton'] = array (
- '#type' => "submit",
- '#id' => 'add_row_button',
- '#value' => t("+"),
- '#prefix' => '<div class="add_button">', // no-data-button optional,makes no difference
- '#suffix' => '</div>',
- '#submit' => array($submit),
- '#ahah' => array(
- 'event' => 'click',
- 'path' => ahah_helper_path(array('degree')),
- 'wrapper' => degree-wrapper,
- 'method' => 'replace'
- ),
- '#disabled' => $disabled,
- );
- }
- } else {
- $form['degree']['addbutton'] = array (
- '#type' => "submit",
- '#id' => 'add_row_button',
- '#value' => t("+"),
- '#prefix' => '<div class="add_button">', // no-data-button optional,makes no difference
- '#suffix' => '</div>',
- '#submit' => array($submit),
- '#ahah' => array(
- 'event' => 'click',
- 'path' => ahah_helper_path(array('degree')),
- 'wrapper' => degree-wrapper,
- 'method' => 'replace'
- ),
- '#disabled' => $disabled,
- );
- }
- // Store numrows
- $form['numrows'] = array(
- // '#type' => 'hidden',
- '#type' => 'textfield', // see what cirrent value is
- '#value' => $numrows,
- );
- // permissions
- $form['submit'] = array('#type' => 'submit', '#value' => t('Save Changes'), '#disabled' => $disabled);
- return $form;
- }