Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 15th, 2012  |  syntax: None  |  size: 5.96 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. function userprofile_education_form (&$form_state, $userinfo) {
  2.         ahah_helper_register($form, $form_state);       // AHAH helper
  3.         if (user_has_role("hr admin")) { $disabled = FALSE; $is_admin = TRUE; } else { $disabled = TRUE; $is_admin = FALSE; }
  4.         $form['degree'] = array(
  5.                                 '#type' => 'fieldset',
  6.                                 '#title' => t('Education'),
  7.                                 '#prefix' => '<div id="degree-wrapper">',
  8.                                 '#suffix' => '</div>',
  9.                                 '#tree' => TRUE,
  10.                         );
  11.  
  12.         $degrees = array( '' =>'- Select -') + userprofile_class_values('degree');
  13.  
  14.        
  15.         if (!isset( $form_state['storage']['numrows'])) {
  16.                         db_set_active('mgh');
  17.                         $query = "SELECT * FROM {molbio_user_degree} WHERE molbio_user_id = '%s' ORDER BY received";
  18.                         $queryResult =  db_query($query, $userinfo->userid);
  19.                         db_set_active('drupal');
  20.                        
  21.                         $userid = $userinfo->userid;
  22.                        
  23.                         while ($degreedata = db_fetch_object($queryResult)) {
  24.                                 $values[] = array( 'type' => $degreedata->degree_type,
  25.                                         'received' => array(
  26.                                                 'month' => ltrim(strftime('%m',strtotime($degreedata->received)), 0),
  27.                                                 'day' => trim(strftime('%e',strtotime($degreedata->received))),
  28.                                                 'year' => strftime('%Y',strtotime($degreedata->received))
  29.                                                 ));
  30.                                 $numrows++;                    
  31.                         }              
  32.         } else {
  33.                         // Else, this is a AHAH refresh
  34.                         $userid = $form_state['values']['userid'];
  35.                         $numrows = $form_state['values']['numrows'];
  36.                         //$userid = $form_state['storage']['userid'];
  37.                         //$numrows = $form_state['storage']['numrows'];
  38.                        
  39.                         // determine new numrows
  40.                         if( $form_state['values']['op'] == '+' ) $numrows++;
  41.                         // if ( $form_state['values']['op'] == '-' )  $numrows--;
  42.                        
  43.                         // save in temp array
  44.                         for ($i=1;$i<=$numrows;$i++) {
  45.                                 // For each row to be displayed. If adding a new row, empty data => default drop down values.
  46.                                 $values[] = array(
  47.                                         'type' => $form_state['values']['degree']['degree'.$i],
  48.                                         'received' => array(
  49.                                                 'month' =>  $form_state['values']['degree']['degree'.$i.'received']['month'],
  50.                                                 'day' => $form_state['values']['degree']['degree'.$i.'received']['day'],
  51.                                                 'year' => $form_state['values']['degree']['degree'.$i.'received']['year']
  52.                                                 ));
  53.                         }
  54.         }
  55.        
  56.         // Ask your admin message
  57.         // Display message regardless of how many rows there are
  58.         if ($disabled) {
  59.                         $form['degree']['degree'] = array(
  60.                                         '#value' => '<div class="form-item">
  61.                                         <p>'._ask_admin_message().'</p>
  62.                                         </div>',
  63.                         );
  64.         }
  65.        
  66.         $form['userid'] = array(
  67.                         '#type' => 'hidden',
  68.                         '#value' => $userid,
  69.         );
  70.                
  71.         // Display each row in $numrows
  72.         for ($i=0;$i< $numrows;$i++) {
  73.                 // For each row to be displayed. If adding a new row, empty data => default drop down values.
  74.                 //      group item numbered from 1 on (is this really necessary?)
  75.                                 $form['degree']['degree'.($i+1)] = array(
  76.                                                         '#title' => t('Degree').(($is_admin) ? ' (<a href="/inlineeditor/degree">Edit</a>)' : ''),
  77.                                                         '#type' => 'select',
  78.                                                         '#default_value' => $values[$i],
  79.                                                         '#options' => $degrees,
  80.                                                         '#prefix' => '<div class="compact-row" id="degree'.($i+1).'">',
  81.                                                         '#attributes' => array("class" => "degree-field"),
  82.                                                         '#disabled' => $disabled,
  83.                                                 );
  84.                                
  85.                                 $form['degree']['degree'.($i+1).'received'] = array(
  86.                                         '#title' => t('Received'),
  87.                                         '#type' => 'mbpddate',
  88.                                         '#default_value' => array(
  89.                                                 'month' => $values[$i]['received']['month'],
  90.                                                 'day' => $values[$i]['received']['day'],
  91.                                                 'year' => $values[$i]['received']['year']
  92.                                         ),
  93.                                         '#yearstart' => 1960,
  94.                                         '#yearend' => idate('Y')+ 10,
  95.                                         '#suffix' => '</div>',
  96.                                         '#disabled' => $disabled,
  97.                                 );
  98.         }
  99.                        
  100.         // If no rows, display single row with no data
  101.         if ($numrows==0) {
  102.                         if (!$disabled) {
  103.                                 $numrows++;
  104.                                 $form['degree']['degree'.$numrows] = array(
  105.                                                         '#title' => t('Degree').(($is_admin) ? ' (<a href="/inlineeditor/degree">Edit</a>)' : ''),
  106.                                                         '#type' => 'select',
  107.                                                         '#default_value' => $degreedata->degree_type,
  108.                                                         '#options' => $degrees,
  109.                                                         '#prefix' => '<div class="compact-row" no-data id="degree'.$numrows.'">',
  110.                                                         '#attributes' => array("class" => "degree-field"),
  111.                                                         '#disabled' => $disabled,
  112.                                                 );
  113.                                
  114.                                 $form['degree']['degree'.$numrows.'received'] = array(
  115.                                         '#title' => t('Received'),
  116.                                         '#type' => 'mbpddate',
  117.                                         '#default_value' => array(
  118.                                                 'month' => $values[$numrows]['received']['month'],
  119.                                                 'day' => $values[$numrows]['received']['day'],
  120.                                                 'year' => $values[$numrows]['received']['year']),
  121.                                         '#yearstart' => 1960,
  122.                                         '#yearend' => idate('Y')+ 10,
  123.                                         '#attributes' => array("class" => "degree-field"),
  124.                                         '#suffix' => '</div>',
  125.                                         '#disabled' => $disabled,
  126.                                 );
  127.  
  128.                         }
  129.                         // + button only
  130.                         if (!$disabled) {
  131.                         $form['degree']['addbutton'] = array (
  132.                                         '#type' => "submit",
  133.                                         '#id' => 'add_row_button',
  134.                                         '#value' => t("+"),
  135.                                         '#prefix' => '<div class="add_button">',        // no-data-button optional,makes no difference
  136.                                         '#suffix' => '</div>',
  137.                                         '#submit' => array($submit),
  138.                                         '#ahah' => array(
  139.                                                         'event' => 'click',
  140.                                                         'path' => ahah_helper_path(array('degree')),
  141.                                                         'wrapper' => degree-wrapper,   
  142.                                                         'method' => 'replace'
  143.                                         ),
  144.                                         '#disabled' => $disabled,
  145.                                 );
  146.                         }
  147.  
  148.         } else {
  149.                         $form['degree']['addbutton'] = array (
  150.                                         '#type' => "submit",
  151.                                         '#id' => 'add_row_button',
  152.                                         '#value' => t("+"),
  153.                                         '#prefix' => '<div class="add_button">',        // no-data-button optional,makes no difference
  154.                                         '#suffix' => '</div>',
  155.                                         '#submit' => array($submit),
  156.                                         '#ahah' => array(
  157.                                                         'event' => 'click',
  158.                                                         'path' => ahah_helper_path(array('degree')),
  159.                                                         'wrapper' => degree-wrapper,   
  160.                                                         'method' => 'replace'
  161.                                         ),
  162.                                         '#disabled' => $disabled,
  163.                                 );
  164.         }
  165.  
  166.  
  167.         // Store numrows               
  168.         $form['numrows'] = array(
  169. //                              '#type' => 'hidden',
  170.                         '#type' => 'textfield', // see what cirrent value is
  171.                                 '#value' => $numrows,
  172.         );
  173.  
  174.         // permissions
  175.         $form['submit'] = array('#type' => 'submit', '#value' => t('Save Changes'), '#disabled' => $disabled);
  176.        
  177.         return $form;
  178. }