array( "title" => t("Access fossee_stats"), "description" => t("Allows users to view job postings.") ), "manage fossee_stats" => array( "title" => t("Manage fossee_stats"), "description" => t("Allows users to manage job postings.") ), /* "manage download_application" => array( "title" => t("Manage Download Portal"), "description" => t("Allows users to download job applications.") ),*/ ); } function fossee_stats_menu() { $items = array(); $items["fossee-stats"] = array( "title" => "FOSSEE STATS", "page callback" => "drupal_get_form", "page arguments" => array("fossee_stats_form"), "access arguments" => array("access fossee_stats"), "type" => MENU_NORMAL_ITEM, ); $items["jobs/ajax"] = array( "title" => "Ajax callbacks", "page callback" => "fossee_stats_ajax", "access arguments" => array("access fossee_stats"), "type" => MENU_CALLBACK ); return $items; } function fossee_stats_form($form, &$form_state) { $options_first = _ajax_example_get_first_dropdown_options(); // If we have a value for the first dropdown from $form_state['values'] we use // this both as the default value for the first dropdown and also as a // parameter to pass to the function that retrieves the options for the // second dropdown. if(isset($form_state['values']['foss_sub_project'])&&isset($form_state['values']['foss_type'])&&isset($form_state['values']['foss_sub_project_status'])){ $foss_project = isset($form_state['values']['foss_type']) ? $form_state['values']['foss_type'] : key($options_first); }else{ $foss_project = ''; } //$foss_project=$selected; $form['foss_type'] = array( '#type' => 'select', '#title' => 'FOSS Type', '#options' => $options_first, '#default_value' => $foss_project, // Bind an ajax callback to the change event (which is the default for the // select form type) of the first dropdown. It will replace the second // dropdown when rebuilt. '#ajax' => array( // When 'event' occurs, Drupal will perform an ajax request in the // background. Usually the default value is sufficient (eg. change for // select elements), but valid values include any jQuery event, // most notably 'mousedown', 'blur', and 'submit'. // 'event' => 'change', 'callback' =>'ajax_example_dependent_dropdown_callback', 'wrapper' => 'dropdown-second-replace', ), ); if(isset($form_state['values']['foss_sub_project'])&&isset($form_state['values']['foss_type'])&&isset($form_state['values']['foss_sub_project_status'])){ $foss_sub_project = isset($form_state['values']['foss_sub_project']) ? $form_state['values']['foss_sub_project'] : key(_ajax_example_get_second_dropdown_options($foss_project)); }else{ $foss_sub_project = ''; } $form['foss_sub_project'] = array( '#type' => 'select', '#title' => t('Foss Sub Project'), '#options' => _ajax_example_get_second_dropdown_options($foss_project), // The entire enclosing div created here gets replaced when foss_type // is changed. '#prefix' => '', // When the form is rebuilt during ajax processing, the $selected variable // will now have the new value and so the options will change. // '#options' => _ajax_example_get_second_dropdown_options($selected), '#default_value' => '', '#ajax' => array( // When 'event' occurs, Drupal will perform an ajax request in the // background. Usually the default value is sufficient (eg. change for // select elements), but valid values include any jQuery event, // most notably 'mousedown', 'blur', and 'submit'. // 'event' => 'change', 'callback' =>'ajax_example_dependent_dropdown_callback1', 'wrapper' => 'dropdown-third-replace', ), ); if(isset($form_state['values']['foss_sub_project'])&&isset($form_state['values']['foss_type'])&&isset($form_state['values']['foss_sub_project_status'])){ $foss_sub_project_status = isset($form_state['values']['$foss_sub_project_status']) ? $form_state['values']['$foss_sub_project_status'] : ''; }else{ $foss_sub_project_status = ''; } $form['foss_sub_project_status'] = array( '#type' => 'select', '#title' => t('Status'), '#options' => _ajax_example_get_third_dropdown_options($foss_sub_project), // The entire enclosing div created here gets replaced when foss_type // is changed. '#prefix' => '', // When the form is rebuilt during ajax processing, the $selected variable // will now have the new value and so the options will change. // '#options' => _ajax_example_get_second_dropdown_options($selected), '#default_value' => $foss_sub_project_status, ); if(isset($form_state['values']['foss_sub_project'])&&isset($form_state['values']['foss_type'])&&isset($form_state['values']['foss_sub_project_status'])){ $foss_select_branch = isset($form_state['values']['foss_select_branch']) ? $form_state['values']['foss_select_branch'] : ''; }else{ $foss_select_branch = ''; } $form['foss_select_branch'] = array( '#type' => 'select', '#title' => t('Branch'), '#options' => _ajax_get_branch_options($foss_project), // The entire enclosing div created here gets replaced when foss_type // is changed. '#prefix' => '', // When the form is rebuilt during ajax processing, the $selected variable // will now have the new value and so the options will change. // '#options' => _ajax_example_get_second_dropdown_options($selected), '#default_value' => $foss_select_branch, ); $today = date("Y-m-d H:i:s"); $form['start_date'] = array( '#type' => 'date_popup', '#default_value' => $today, '#date_type' => DATE_DATETIME, '#date_format' => 'd/m/Y', '#date_increment' => 1, '#date_year_range' => '-3:+3', ); $today = date("Y-m-d H:i:s"); $form['end_date'] = array( '#type' => 'date_popup', '#default_value' => $today, '#date_type' => DATE_DATETIME, '#date_format' => 'd/m/Y', '#date_increment' => 1, '#date_year_range' => '-3:+3', ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Filter'), ); $form['reset'] = array( '#type' => 'submit', '#value' => t('Reset'), ); return $form; } function _ajax_example_get_first_dropdown_options(){ $query = db_select('foss_type'); $query->fields('foss_type', array('id')); $query->fields('foss_type', array('foss_name')); $result = $query->execute(); $options = array(); $options[''] = "--------------"; while ($foss_detail = $result->fetchObject()) { $options[$foss_detail->id] = $foss_detail->foss_name; } return $options; } function _ajax_example_get_second_dropdown_options($foss_project = ''){ if($foss_project != NULL){ $query = db_select('foss_type'); $query->fields('foss_type', array('tbc')); $query->fields('foss_type', array('lab_migration')); $query->condition('id',$foss_project); $result = $query->execute(); $subproject_detail = $result->fetchObject(); $options = array(); if(($subproject_detail->tbc)!=0&&($subproject_detail->lab_migration)!=0){ $options[0] = "--------------"; $options[1] = "Textbook Companion"; $options[2] = "Lab Migration"; }else if(($subproject_detail->tbc)!=0&&($subproject_detail->lab_migration)==0){ $options[0] = "--------------"; $options[1] = "Textbook Companion"; }else if(($subproject_detail->tbc)==0&&($subproject_detail->lab_migration)!=0){ $options[0] = "--------------"; $options[1] = "Lab Migration"; }else if(($subproject_detail->tbc)==0&&($subproject_detail->lab_migration)==0) { $options[0] = "No Sub-Project Available"; }else { $options[0] = "--------------"; } return $options; }else{ $options[0] = "--------------"; return $options; } } function _ajax_example_get_third_dropdown_options($foss_sub_project=''){ $options = array(); if($foss_sub_project!=0){ if($foss_sub_project==1){ $options[0] = "----------"; $options[1] = "Books In Progress"; $options[2] = "Completed Books"; }else if($foss_sub_project==2){ $options[0] = "----------"; $options[1] = "Labs in Progress"; $options[2] = "Completed Labs"; }else { $options[0] = "----------"; } }else{ $options[0] = "----------"; } return $options; } function _ajax_get_branch_options($foss_project = ''){ if($foss_project!=0){ $other_database = array( 'database' => 'scilab_nolinks', 'username' => 'root', // assuming this is necessary 'password' => 'root', // assuming this is necessary 'host' => 'localhost', // assumes localhost 'driver' => 'mysql', // replace with your database driver ); // replace 'YourDatabaseKey' with something that's unique to your module Database::addConnectionInfo('YourDatabaseKey', 'default', $other_database); db_set_active('YourDatabaseKey'); $options = array(); $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal', array('branch')); $query->distinct(); $result = $query->execute(); $options['0'] = "--------------"; $x = 1; while ($foss_branch = $result->fetchObject()) { $options[$x++] = $foss_branch->branch; } db_set_active('default'); // We need to call the main (drupal) db back return $options; db_set_active(); // without the paramater means set back to the default for the site drupal_set_message(t('The queries have been made.')); }else{ $options[0] ='-----------'; } return $options; } function ajax_example_dependent_dropdown_callback($form, $form_state) { //$form['foss_sub_project']['#value'] = ''; //$form['foss_sub_project_status']['#value'] = ''; $form['foss_sub_project_status']['#options']=_ajax_example_get_third_dropdown_options($foss_sub_project); $form['foss_select_branch']['#value'] = ''; // $commands = array(); $commands[] = ajax_command_replace("#dropdown-second-replace", drupal_render($form['foss_sub_project'])); $commands[] = ajax_command_replace("#dropdown-third-replace", drupal_render($form['foss_sub_project_status'])); $commands[] = ajax_command_replace("#dropdown-fourth-replace", drupal_render($form['foss_select_branch'])); return array('#type' => 'ajax', '#commands' => $commands); //return $form['foss_sub_project']; } function ajax_example_dependent_dropdown_callback1($form, $form_state){ return $form['foss_sub_project_status']; }