From 5dcd3c041774adf03b91def20a52f5ddc42d49dc Mon Sep 17 00:00:00 2001 From: Sashi20 Date: Fri, 12 Jul 2024 11:27:55 +0530 Subject: Display list of experiments from the completed labs page --- experiments_list.inc | 464 +++++++++++++++++++++++++++++++++++++++++++++++++++ lab_details.inc | 2 +- lab_migration.module | 12 ++ run.inc | 25 ++- 4 files changed, 495 insertions(+), 8 deletions(-) create mode 100644 experiments_list.inc diff --git a/experiments_list.inc b/experiments_list.inc new file mode 100644 index 0000000..df152ec --- /dev/null +++ b/experiments_list.inc @@ -0,0 +1,464 @@ + 'select', + '#title' => t('Title of the lab'), + '#options' => _list_of_labs(), + '#default_value' => $selected, + '#ajax' => array( + 'callback' => 'ajax_experiment_list_callback' + ) + ); + if (!$url_lab_id) + { + $form['selected_lab'] = array( + '#type' => 'item', + '#markup' => '
' + ); + $form['selected_lab_cfd'] = array( + '#type' => 'item', + '#markup' => '
' + ); + $form['selected_lab_pdf'] = array( + '#type' => 'item', + '#markup' => '
' + ); + /* $form['lab_details'] = array( + '#type' => 'item', + '#markup' => '
' + );*/ + $form['lab_experiment_list'] = array( + '#type' => 'item', + '#title' => t('Title of the experiment'), + '#options' => _ajax_get_experiments_list($selected), + //'#default_value' => isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : '',s + '#prefix' => '
', + '#suffix' => '
', + '#states' => array( + 'invisible' => array( + ':input[name="lab"]' => array( + 'value' => 0 + ) + ) + ) + ); + } + else + { + $lab_default_value = $url_lab_id; + $form['selected_lab'] = array( + '#type' => 'item', + '#markup' => '
' . l('Download Lab Solutions', 'lab-migration/download/lab/' . $lab_default_value) . '
' + ); + /* $form['selected_lab_pdf'] = array( + '#type' => 'item', + '#markup' => '
'. l('Download PDF of Lab Solutions', 'lab-migration/generate-lab/' . $lab_default_value . '/1') .'
', + + );*/ + if ($lab_default_value == '2') + { + $form['selected_lab_cfd'] = array( + '#type' => 'item', + '#markup' => '
' . l('Download Lab Solutions (OpenFOAM Version)', 'lab-migration-uploads/OpenFOAM_Version.zip') . '
' + ); + } + /* $form['lab_details'] = array( + '#type' => 'item', + '#markup' => '
' . _lab_details($lab_default_value) . '
' + );*/ + $form['lab_experiment_list'] = array( + '#type' => 'item', + '#title' => t('Titile of the experiment'), + '#options' => _ajax_get_experiments_list($selected), + '#markup' => '
' . _ajax_get_experiments_list($lab_default_value) . '
', + // '#default_value' => isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : '', + /* '#prefix' => '
', + '#suffix' => '
',*/ + '#states' => array( + 'invisible' => array( + ':input[name="lab"]' => array( + 'value' => 0 + ) + ) + ) + ); + } + /* + $form['message'] = array( + '#type' => 'textarea', + '#title' => t('If Dis-Approved please specify reason for Dis-Approval'), + '#prefix' => '
', + '#states' => array('invisible' => array(':input[name="lab"]' => array('value' => 0,),),), + + ); + + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Submit'), + '#suffix' => '
', + '#states' => array('invisible' => array(':input[name="lab"]' => array('value' => 0,),),), + + );*/ + return $form; + } +function ajax_experiment_list_callback($form, $form_state) + { + $commands = array(); + $lab_default_value = $form_state['values']['lab']; + if ($lab_default_value != 0) + { + $form['lab_details']['#markup'] = _lab_details($lab_default_value); + $lab_details = _lab_information($lab_default_value); + $user_solution_provider = user_load($lab_details->solution_provider_uid); + //var_dump($lab_details->solution_provider_uid); + if ($lab_details->solution_provider_uid > 0) + { + $commands[] = ajax_command_html('#ajax_selected_lab', l('Download Lab Solutions', 'lab-migration/download/lab/' . $lab_default_value)); + if ($lab_default_value == '2') + { + $commands[] = ajax_command_html('#ajax_selected_lab_cfd', l('Download Lab Solutions (OpenFOAM Version)', 'lab-migration_uploads/OpenFOAM_Version.zip')); + } + /* $commands[] = ajax_command_html('#ajax_selected_lab_pdf', l('Download PDF of Lab Solutions', 'lab-migration/generate-lab/' . $lab_default_value . '/1'));*/ + } + else + { + $commands[] = ajax_command_html('#ajax_selected_lab', ''); + $commands[] = ajax_command_html('#ajax_selected_lab_pdf', ''); + $commands[] = ajax_command_html('#ajax_selected_lab_cfd', ''); + } + $commands[] = ajax_command_html('#ajax_lab_details', _lab_details($lab_default_value)); + $form['lab_experiment_list']['#options'] = _ajax_get_experiments_list($lab_default_value); + $commands[] = ajax_command_replace('#ajax_selected_experiment', drupal_render($form['lab_experiment_list'])); + $commands[] = ajax_command_html('#ajax_selected_solution', ''); + $commands[] = ajax_command_html('#ajax_solution_files', ''); + $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); + $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); + $commands[] = ajax_command_html('#ajax_download_experiments', ''); + } + else + { + $form['lab_experiment_list']['#options'] = _ajax_get_experiments_list(); + $commands[] = ajax_command_replace('#ajax_selected_experiment', drupal_render($form['lab_experiment_list'])); + $commands[] = ajax_command_html('#ajax_lab_details', ''); + $commands[] = ajax_command_html('#ajax_selected_lab', ''); + $commands[] = ajax_command_html('#ajax_selected_lab_cfd', ''); + $commands[] = ajax_command_html('#ajax_selected_lab_pdf', ''); + $commands[] = ajax_command_data('#ajax_selected_lab', 'form_state_value_select', $form_state['values']['lab']); + $commands[] = ajax_command_html('#ajax_selected_experiment', ''); + $commands[] = ajax_command_html('#ajax_download_experiments', ''); + $commands[] = ajax_command_html('#ajax_selected_solution', ''); + $commands[] = ajax_command_html('#ajax_solution_files', ''); + $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); + $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); + } + return array( + '#type' => 'ajax', + '#commands' => $commands + ); + } +function ajax_solution_list_callback($form, $form_state) + { + $commands = array(); + $experiment_list_default_value = $form_state['values']['lab_experiment_list']; + //var_dump($lab_default_value); + if ($experiment_list_default_value != 0) + { + $form['lab_solution_list']['#options'] = _ajax_get_solution_list($experiment_list_default_value); + $commands[] = ajax_command_html('#ajax_download_experiments', l('Download Experiment', 'lab-migration/download/experiment/' . $experiment_list_default_value)); + $commands[] = ajax_command_html('#ajax_selected_experiment', drupal_render($form['lab_experiment_list'])); + $commands[] = ajax_command_html('#ajax_selected_solution', drupal_render($form['lab_solution_list'])); + // $commands[] = ajax_command_html('#ajax_solution_files', ''); + // $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); + // $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); + } + else + { + $form['lab_solution_list']['#options'] = _ajax_get_solution_list(); + $commands[] = ajax_command_html('#ajax_selected_solution', drupal_render($form['lab_solution_list'])); + $commands[] = ajax_command_html('#ajax_download_experiments', ''); + $commands[] = ajax_command_html('#ajax_selected_solution', ''); + $commands[] = ajax_command_html('#ajax_solution_files', ''); + $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); + $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); + // $commands[] = ajax_command_replace('#ajax_selected_experiment',drupal_render($form['lab_experiment_list'])); + } + return array( + '#type' => 'ajax', + '#commands' => $commands + ); + } +function ajax_solution_files_callback($form, $form_state) + { + $commands = array(); + $solution_list_default_value = $form_state['values']['lab_solution_list']; + //var_dump($lab_default_value); + if ($solution_list_default_value != 0) + { + $commands[] = ajax_command_html('#ajax_selected_lab_experiment_solution_action', drupal_render($form['lab_experiment_solution_actions'])); + /*************************************************************************************/ + //$solution_list_q = db_query("SELECT * FROM {lab_migration_solution_files} WHERE solution_id = %d", $form_state['values']['solution']); + $query = db_select('lab_migration_solution_files'); + $query->fields('lab_migration_solution_files'); + $query->condition('solution_id', $solution_list_default_value); + $solution_list_q = $query->execute(); + if ($solution_list_q) + { + $solution_files_rows = array(); + while ($solution_list_data = $solution_list_q->fetchObject()) + { + $solution_file_type = ''; + switch ($solution_list_data->filetype) + { + case 'S': + $solution_file_type = 'Source or Main file'; + break; + case 'R': + $solution_file_type = 'Result file'; + break; + case 'X': + $solution_file_type = 'xcos file'; + break; + default: + $solution_file_type = 'Unknown'; + break; + } + $solution_files_rows[] = array( + l($solution_list_data->filename, 'lab-migration/download/file/' . $solution_list_data->id), + $solution_file_type + ); + } + /* dependency files */ + //$dependency_q = db_query("SELECT * FROM {lab_migration_solution_dependency} WHERE solution_id = %d", $form_state['values']['solution']); + $query = db_select('lab_migration_solution_dependency'); + $query->fields('lab_migration_solution_dependency'); + $query->condition('solution_id', $solution_list_default_value); + $dependency_q = $query->execute(); + while ($dependency_data = $dependency_q->fetchObject()) + { + //$dependency_files_q = db_query("SELECT * FROM {lab_migration_dependency_files} WHERE id = %d", $dependency_data->dependency_id); + $query = db_select('lab_migration_dependency_files'); + $query->fields('lab_migration_dependency_files'); + $query->condition('id', $dependency_data->dependency_id); + $dependency_files_q = $query->execute(); + $dependency_files_data = $dependency_files_q->fetchObject(); + $solution_file_type = 'Dependency file'; + $solution_files_rows[] = array( + l($dependency_files_data->filename, 'lab-migration/download/dependency/' . $dependency_files_data->id), + $solution_file_type + ); + } + /* creating list of files table */ + $solution_files_header = array( + 'Filename', + 'Type' + ); + $solution_files = theme('table', array( + 'header' => $solution_files_header, + 'rows' => $solution_files_rows + )); + } + $form['solution_files']['#title'] = 'List of solution files'; + $form['solution_files']['#markup'] = $solution_files; + $commands[] = ajax_command_html('#ajax_download_experiment_solution', l('Download Solution', 'lab-migration/download/solution/' . $solution_list_default_value)); + // $commands[] = ajax_command_html('#ajax_edit_experiment_solution', l('Edit Solution', 'code_approval/editcode/' . $solution_list_default_value)); + // $commands[] = ajax_command_html('#ajax_solution_files', $solution_files); + $commands[] = ajax_command_html('#ajax_solution_files', drupal_render($form['solution_files'])); + } + else + { + $commands[] = ajax_command_html('#ajax_selected_lab_experiment_solution_action', ''); + $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); + $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); + $commands[] = ajax_command_html('#ajax_solution_files', ''); + } + return array( + '#type' => 'ajax', + '#commands' => $commands + ); + } +function bootstrap_table_format($headers, $rows) + { + $thead = ""; + $tbody = ""; + foreach ($headers as $header) + { + $thead .= "{$header}"; + } + foreach ($rows as $row) + { + $tbody .= ""; + foreach ($row as $data) + { + $tbody .= "{$data}"; + } + $tbody .= ""; + } + $table = " + + {$thead} + {$tbody} +
+ "; + return $table; + } +/*****************************************************/ +function _list_of_labs() + { + $lab_titles = array( + '0' => 'Please select...' + ); + //$lab_titles_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE solution_display = 1 ORDER BY lab_title ASC"); + $query = db_select('lab_migration_proposal'); + $query->fields('lab_migration_proposal'); + $query->condition('solution_display', 1); + $query->condition('approval_status', 3); + $query->orderBy('lab_title', 'ASC'); + $lab_titles_q = $query->execute(); + while ($lab_titles_data = $lab_titles_q->fetchObject()) + { + $lab_titles[$lab_titles_data->id] = $lab_titles_data->lab_title . ' (Proposed by ' . $lab_titles_data->name_title .' '.$lab_titles_data->name . ')'; + } + return $lab_titles; + } +function _ajax_get_experiments_list($lab_default_value = '') + { + $experiments = array( + '0' => 'Please select...' + ); + $query = db_select('lab_migration_proposal'); + $query->fields('lab_migration_proposal'); + $query->condition('id', $lab_default_value); + $query->orderBy('lab_title', 'ASC'); + $lab_titles_q = $query->execute(); + $lab_titles_data = $lab_titles_q->fetchObject(); + //$experiments_q = db_query("SELECT * FROM {lab_migration_experiment} WHERE proposal_id = %d ORDER BY number ASC", $proposal_id); + $query = db_select('lab_migration_experiment'); + $query->fields('lab_migration_experiment'); + $query->condition('proposal_id', $lab_default_value); + $query->orderBy('number', 'ASC'); + $experiments_q = $query->execute(); + $solution_provider_user_name = ''; + $user_data = user_load($proposal_data->solution_provider_uid); + if ($user_data) + { + $solution_provider_user_name = $user_data->name; + } + else + { + $solution_provider_user_name = $lab_titles_data->name; + } + while ($experiments_data = $experiments_q->fetchObject()) + { + $pending_solution_rows[] = array( + $lab_titles_data->lab_title, + $experiments_data->title, + $lab_titles_data->name, + $solution_provider_user_name, + l('View Solution', 'lab-migration/lab-migration-run/' . $lab_titles_data->id . '/' . $experiments_data->id) + ); + } + $header = array( + 'Title of the Lab', + 'Experiment', + 'Proposer', + 'Solution Provider', + 'Actions' + ); + //$output = theme_table($header, $pending_solution_rows); + $output = theme('table', array( + 'header' => $header, + 'rows' => $pending_solution_rows + )); + return $output; + } +function _ajax_get_solution_list($lab_experiment_list = '') + { + $solutions = array( + '0' => 'Please select...' + ); + // $solutions_q = db_query("SELECT * FROM {lab_migration_solution} WHERE experiment_id = %d ORDER BY + // CAST(SUBSTRING_INDEX(code_number, '.', 1) AS BINARY) ASC, + // CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(code_number , '.', 2), '.', -1) AS UNSIGNED) ASC, + // CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(code_number , '.', -1), '.', 1) AS UNSIGNED) ASC", $experiment_id); + $query = db_select('lab_migration_solution'); + $query->fields('lab_migration_solution'); + $query->condition('experiment_id', $lab_experiment_list); + //$query->orderBy("CAST(SUBSTRING_INDEX(code_number, '.', 1) AS BINARY", "ASC"); + // $query->orderBy("CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(code_number , '.', 2), '.', -1) AS UNSIGNED", "ASC"); + // $query->orderBy("CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(code_number , '.', -1), '.', 1) AS UNSIGNED", "ASC"); + $solutions_q = $query->execute(); + while ($solutions_data = $solutions_q->fetchObject()) + { + $solutions[$solutions_data->id] = $solutions_data->code_number . ' (' . $solutions_data->caption . ')'; + } + return $solutions; + } +function _lab_information($proposal_id) + { + //$lab_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $proposal_id); + $query = db_select('lab_migration_proposal'); + $query->fields('lab_migration_proposal'); + $query->condition('id', $proposal_id); + $query->condition('approval_status', 3); + $lab_q = $query->execute(); + $lab_data = $lab_q->fetchObject(); + if($lab_data){ + return $lab_data; + } + else + { + return ; + } + + } +function _lab_details($lab_default_value) + { + //$lab_default_value = $form_state['values']['lab']; + $lab_details = _lab_information($lab_default_value); + if ($lab_default_value != 0) + { + if ($lab_details){ + if ($lab_details->solution_provider_uid > 0) + { + $user_solution_provider = user_load($lab_details->solution_provider_uid); + if ($user_solution_provider) + { + $solution_provider = 'Solution Provider
' . ''; + } + else + { + $solution_provider = 'Solution Provider
' . ''; + } + } + else + { + $solution_provider = 'Solution Provider
' . ''; + }} + else{ + drupal_goto('lab-migration/lab-migration-run'); + + } + $form['lab_details']['#markup'] = 'About the Lab
' . '' . $solution_provider; + $details = $form['lab_details']['#markup']; + return $details; + } + } diff --git a/lab_details.inc b/lab_details.inc index 898b504..16edc5e 100755 --- a/lab_details.inc +++ b/lab_details.inc @@ -23,7 +23,7 @@ function lab_migration_completed_labs_all() $preference_rows[] = array( $i, $row->university, - l($row->lab_title, "lab-migration/lab-migration-run/" . $row->id), + l($row->lab_title, "lab-migration/experiments-list/" . $row->id), $approval_date ); $i--; diff --git a/lab_migration.module b/lab_migration.module index fb03977..ef77bdc 100755 --- a/lab_migration.module +++ b/lab_migration.module @@ -408,6 +408,18 @@ function lab_migration_menu() ), 'file' => 'lab_details.inc' ); + $items['lab-migration/experiments-list'] = array( + 'title' => 'Download Codes', + 'page callback' => 'drupal_get_form', + 'page arguments' => array( + 'lab_migration_experiments_list' + ), + 'access arguments' => array( + 'lab migration download code' + ), + 'type' => MENU_NORMAL_ITEM, + 'file' => 'experiments_list.inc' + ); /* LABS IN PROGRESS */ $items['lab-migration/labs-progress'] = array( 'title' => 'Labs in Progress', diff --git a/run.inc b/run.inc index 4ad250b..713ceb8 100755 --- a/run.inc +++ b/run.inc @@ -5,6 +5,7 @@ function lab_migration_run_form($form, &$form_state) $options_two = _ajax_get_experiment_list(); $select_two = isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : key($options_two); $url_lab_id = (int) arg(2); + $url_experiment_id = (int) arg(3); if (!$url_lab_id) { $selected = isset($form_state['values']['lab']) ? $form_state['values']['lab'] : key($options_first); @@ -16,7 +17,18 @@ function lab_migration_run_form($form, &$form_state) else { $selected = $url_lab_id; - ; + } + if (!$url_experiment_id) + { + $selected_experiment = isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : key($options_two); + } + elseif ($url_experiment_id == '') + { + $selected_experiment = 0; + } + else + { + $selected_experiment = $url_experiment_id; } $form = array(); $form['lab'] = array( @@ -24,9 +36,8 @@ function lab_migration_run_form($form, &$form_state) '#title' => t('Title of the lab'), '#options' => _list_of_labs(), '#default_value' => $selected, - '#ajax' => array( - 'callback' => 'ajax_experiment_list_callback' - ) + '#disabled' => TRUE, + ); if (!$url_lab_id) { @@ -48,7 +59,7 @@ function lab_migration_run_form($form, &$form_state) ); $form['lab_experiment_list'] = array( '#type' => 'select', - '#title' => t('Titile of the experiment'), + '#title' => t('Title of the experiment'), '#options' => _ajax_get_experiment_list($selected), //'#default_value' => isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : '', '#ajax' => array( @@ -135,7 +146,7 @@ function lab_migration_run_form($form, &$form_state) '#type' => 'select', '#title' => t('Titile of the experiment'), '#options' => _ajax_get_experiment_list($selected), - // '#default_value' => isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : '', + '#default_value' => $selected_experiment, '#ajax' => array( 'callback' => 'ajax_solution_list_callback' ), @@ -156,7 +167,7 @@ function lab_migration_run_form($form, &$form_state) $form['lab_solution_list'] = array( '#type' => 'select', '#title' => t('Solution'), - '#options' => _ajax_get_solution_list($select_two), + '#options' => _ajax_get_solution_list($selected_experiment), '#default_value' => isset($form_state['values']['lab_solution_list']) ? $form_state['values']['lab_solution_list'] : '', '#ajax' => array( 'callback' => 'ajax_solution_files_callback' -- cgit From 060ae0aab14b523afaef9065410d648e404f8898 Mon Sep 17 00:00:00 2001 From: Sashi20 Date: Thu, 25 Jul 2024 16:23:34 +0530 Subject: Add field for problem statement in proposal, display list of expirements from completed labs page --- download.inc | 12 ++++ experiments_list.inc | 29 ++++------ lab_details.inc | 8 +++ lab_migration.module | 20 ++++--- manage_proposal.inc | 5 ++ proposal.inc | 81 +++++++++++++++++++++++++-- run.inc | 151 ++++++++++++++++++++++----------------------------- settings.inc | 36 ++++++------ upload_code.inc | 49 +++++------------ 9 files changed, 222 insertions(+), 169 deletions(-) diff --git a/download.inc b/download.inc index f16cf0f..821025b 100755 --- a/download.inc +++ b/download.inc @@ -18,6 +18,18 @@ function lab_migration_download_solution_file() header('Content-Length: ' . filesize($root_path . $solution_file_data->directory_name . '/' . $solution_file_data->filepath)); readfile($root_path . $solution_file_data->directory_name . '/' . $solution_file_data->filepath); } + function lab_migration_download_problem_statement() + { + $proposal_id = arg(3); + $root_path = lab_migration_path(); + $proposal_q = db_query("SELECT lmp.* FROM lab_migration_proposal lmp WHERE lmp.id = :proposal_id LIMIT 1", array(':proposal_id' => $proposal_id)); + $proposal_data = $proposal_q->fetchObject(); + header('Content-Type: doc'); + //header('Content-Type: application/octet-stram'); + header('Content-disposition: attachment; filename="' . str_replace(' ', '_', ($proposal_data->problem_statement_file)) . '"'); + header('Content-Length: ' . filesize($root_path . $proposal_data->directory_name . '/' . $proposal_data->problem_statement_file)); + readfile($root_path . $proposal_data->directory_name . '/' . $proposal_data->problem_statement_file); + } function lab_migration_download_dependency_file() { $dependency_file_id = arg(3); diff --git a/experiments_list.inc b/experiments_list.inc index df152ec..7d63fea 100644 --- a/experiments_list.inc +++ b/experiments_list.inc @@ -25,7 +25,7 @@ function lab_migration_experiments_list($form, &$form_state) '#options' => _list_of_labs(), '#default_value' => $selected, '#ajax' => array( - 'callback' => 'ajax_experiment_list_callback' + 'callback' => 'ajax_experiments_list_callback' ) ); if (!$url_lab_id) @@ -49,7 +49,7 @@ function lab_migration_experiments_list($form, &$form_state) $form['lab_experiment_list'] = array( '#type' => 'item', '#title' => t('Title of the experiment'), - '#options' => _ajax_get_experiments_list($selected), + '#markup' => _ajax_get_experiments_list($selected), //'#default_value' => isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : '',s '#prefix' => '
', '#suffix' => '
', @@ -88,11 +88,11 @@ function lab_migration_experiments_list($form, &$form_state) $form['lab_experiment_list'] = array( '#type' => 'item', '#title' => t('Titile of the experiment'), - '#options' => _ajax_get_experiments_list($selected), - '#markup' => '
' . _ajax_get_experiments_list($lab_default_value) . '
', - // '#default_value' => isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : '', - /* '#prefix' => '
', - '#suffix' => '
',*/ + //'#options' => _ajax_get_experiments_list($selected), + '#markup' => _ajax_get_experiments_list($lab_default_value), + // '#default_value' => isset($form_state['values']['lab_experiment_list']) ? //$form_state['values']['lab_experiment_list'] : '', + '#prefix' => '
', + '#suffix' => '
', '#states' => array( 'invisible' => array( ':input[name="lab"]' => array( @@ -120,7 +120,7 @@ function lab_migration_experiments_list($form, &$form_state) );*/ return $form; } -function ajax_experiment_list_callback($form, $form_state) +function ajax_experiments_list_callback($form, $form_state) { $commands = array(); $lab_default_value = $form_state['values']['lab']; @@ -146,17 +146,12 @@ function ajax_experiment_list_callback($form, $form_state) $commands[] = ajax_command_html('#ajax_selected_lab_cfd', ''); } $commands[] = ajax_command_html('#ajax_lab_details', _lab_details($lab_default_value)); - $form['lab_experiment_list']['#options'] = _ajax_get_experiments_list($lab_default_value); + $form['lab_experiment_list']['#markup'] = _ajax_get_experiments_list($lab_default_value); $commands[] = ajax_command_replace('#ajax_selected_experiment', drupal_render($form['lab_experiment_list'])); - $commands[] = ajax_command_html('#ajax_selected_solution', ''); - $commands[] = ajax_command_html('#ajax_solution_files', ''); - $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); - $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); - $commands[] = ajax_command_html('#ajax_download_experiments', ''); } else { - $form['lab_experiment_list']['#options'] = _ajax_get_experiments_list(); + $form['lab_experiment_list']['#markup'] = _ajax_get_experiments_list(); $commands[] = ajax_command_replace('#ajax_selected_experiment', drupal_render($form['lab_experiment_list'])); $commands[] = ajax_command_html('#ajax_lab_details', ''); $commands[] = ajax_command_html('#ajax_selected_lab', ''); @@ -371,16 +366,12 @@ function _ajax_get_experiments_list($lab_default_value = '') $pending_solution_rows[] = array( $lab_titles_data->lab_title, $experiments_data->title, - $lab_titles_data->name, - $solution_provider_user_name, l('View Solution', 'lab-migration/lab-migration-run/' . $lab_titles_data->id . '/' . $experiments_data->id) ); } $header = array( 'Title of the Lab', 'Experiment', - 'Proposer', - 'Solution Provider', 'Actions' ); //$output = theme_table($header, $pending_solution_rows); diff --git a/lab_details.inc b/lab_details.inc index 16edc5e..bd270f7 100755 --- a/lab_details.inc +++ b/lab_details.inc @@ -20,10 +20,17 @@ function lab_migration_completed_labs_all() while ($row = $result->fetchObject()) { $approval_date = date("Y", $row->approval_date); + if($row->problem_statement_file == ''){ + $problem_statement_file = "NA"; + } + else{ + $problem_statement_file = l('View', 'lab-migration/download/problem-statement/' . $row->id); + } $preference_rows[] = array( $i, $row->university, l($row->lab_title, "lab-migration/experiments-list/" . $row->id), + $problem_statement_file, $approval_date ); $i--; @@ -32,6 +39,7 @@ function lab_migration_completed_labs_all() 'No', 'Institute', 'Lab', + 'Problem Statement', 'Year' ); $output .= theme('table', array( diff --git a/lab_migration.module b/lab_migration.module index ef77bdc..68d849f 100755 --- a/lab_migration.module +++ b/lab_migration.module @@ -341,14 +341,16 @@ function lab_migration_menu() 'type' => MENU_CALLBACK, 'file' => 'download.inc' ); - /*$items['lab_migration/download/dependency'] = array( - 'title' => 'Code Download', - 'description' => 'Code Download', - 'page callback' => 'lab_migration_download_dependency_file', - 'access arguments' => array('lab migration download code'), - 'type' => MENU_CALLBACK, - 'file' => 'download.inc', - );*/ + $items['lab-migration/download/problem-statement'] = array( + 'title' => 'Download Problem Statement', + 'description' => 'Download Problem Statement', + 'page callback' => 'lab_migration_download_problem_statement', + 'access arguments' => array( + 'lab migration download code' + ), + 'type' => MENU_CALLBACK, + 'file' => 'download.inc' + ); $items['lab-migration/download/solution'] = array( 'title' => 'Code Download', 'description' => 'Code Download', @@ -727,7 +729,7 @@ function lab_migration_ajax() /*************************** VALIDATION FUNCTIONS *****************************/ function lab_migration_check_valid_filename($file_name) { - if (!preg_match('/^[0-9a-zA-Z\.]+$/', $file_name)) + if (!preg_match('/^[0-9a-zA-Z_\.]+$/', $file_name)) return FALSE; else if (substr_count($file_name, ".") > 1) return FALSE; diff --git a/manage_proposal.inc b/manage_proposal.inc index 6df058c..411c24e 100755 --- a/manage_proposal.inc +++ b/manage_proposal.inc @@ -297,6 +297,11 @@ function lab_migration_proposal_approval_form($form, $form_state) '#title' => t('Do you want to provide the solution'), '#markup' => $solution_provider ); + $form['problem_statement_file'] = array( + '#type' => 'item', + '#title' => t('Problem statement file uploaded by the proposer'), + '#markup' => l('View', 'lab-migration/download/problem-statement/' . $proposal_data->id) + ); /* $form['solution_display'] = array( '#type' => 'item', '#title' => t('Do you want to display the solution on the www.dwsim.fossee.in website'), diff --git a/proposal.inc b/proposal.inc index 720d1a7..0bed1bf 100755 --- a/proposal.inc +++ b/proposal.inc @@ -232,12 +232,13 @@ function lab_migration_proposal_form($form, &$form_state) $first_experiemnt = TRUE; for ($counter = 1; $counter <= 15; $counter++) { - if ($counter <= 5) + if ($counter <= 1) { $form['lab_experiment-' . $counter] = array( '#type' => 'textfield', '#title' => t('Title of the Experiment ') . $counter, '#size' => 50, + '#required' => TRUE ); $namefield = "lab_experiment-" . $counter; $form['lab_experiment_description-' . $counter] = array( @@ -308,6 +309,19 @@ function lab_migration_proposal_form($form, &$form_state) '#description' => 'If yes, solutions will be made available to everyone for downloading.', '#disabled' => FALSE ); + $form['problem_statement'] = array( + '#type' => 'fieldset', + '#title' => t('Problem statement for the proposed lab*'), + '#collapsible' => FALSE, + '#collapsed' => FALSE, + ); + $form['problem_statement']['ps_file'] = array( + '#type' => 'file', + '#title' => t('NOTE: Please upload a Problem Statement for each experiment proposed in a document format. To view the template of the document please click here'), + '#size' => 48, + '#description' => t('Only alphabets and numbers are allowed as a valid filename.') . '
' . + t('Allowed file extensions: ') . variable_get('lab_migration_problem_statement_extensions', ''), + ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit') @@ -387,10 +401,35 @@ function lab_migration_proposal_form_validate($form, &$form_state) form_set_error('older', t('Please provide valid version')); } } + if (isset($_FILES['files'])) + { + /* check if atleast one source or result file is uploaded */ + if (!($_FILES['files']['name']['ps_file'])) + form_set_error('ps_file', t('Please upload file with the problem statement.')); + /* check for valid filename extensions */ + foreach ($_FILES['files']['name'] as $file_form_name => $file_name) + { + if ($file_name) + { + $allowed_extensions_str = variable_get('lab_migration_problem_statement_extensions', ''); + $allowed_extensions = explode(',', $allowed_extensions_str); + $fnames = explode('.', strtolower($_FILES['files']['name'][$file_form_name])); + $temp_extension = end($fnames); + if (!in_array($temp_extension, $allowed_extensions)) + form_set_error($file_form_name, t('Only file with ' . $allowed_extensions_str . ' extensions can be uploaded.')); + if ($_FILES['files']['size'][$file_form_name] <= 0) + form_set_error($file_form_name, t('File size cannot be zero.')); + /* check if valid file name */ + if (!lab_migration_check_valid_filename($_FILES['files']['name'][$file_form_name])) + form_set_error($file_form_name, t('Invalid file name specified. Only alphabets and numbers are allowed as a valid filename.')); + } //$file_name + } //$_FILES['files']['name'] as $file_form_name => $file_name + } return; } function lab_migration_proposal_form_submit($form, &$form_state) { + $root_path = lab_migration_path(); global $user; if (!$user->uid) { @@ -442,11 +481,11 @@ function lab_migration_proposal_form_submit($form, &$form_state) $university = $v['university']; $directory_name = _lm_dir_name($lab_title, $proposar_name, $university); $result = "INSERT INTO {lab_migration_proposal} - (uid, approver_uid, name_title, name, contact_ph, department, university, city, pincode, state, country, version, lab_title, approval_status, solution_status, solution_provider_uid, solution_display, creation_date, approval_date, solution_date, solution_provider_name_title, solution_provider_name, solution_provider_contact_ph, solution_provider_department, solution_provider_university, solution_provider_city, solution_provider_country, solution_provider_state, solution_provider_pincode, directory_name) VALUES + (uid, approver_uid, name_title, name, contact_ph, department, university, city, pincode, state, country, version, lab_title, approval_status, solution_status, solution_provider_uid, solution_display, creation_date, approval_date, solution_date, solution_provider_name_title, solution_provider_name, solution_provider_contact_ph, solution_provider_department, solution_provider_university, solution_provider_city, solution_provider_country, solution_provider_state, solution_provider_pincode, directory_name,problem_statement_file) VALUES (:uid, :approver_uid, :name_title, :name, :contact_ph, :department, :university, :city, :pincode, :state, :country, :version, :lab_title, :approval_status, :solution_status, :solution_provider_uid, :solution_display, :creation_date, :approval_date, :solution_date, :solution_provider_name_title, :solution_provider_name, - :solution_provider_contact_ph, :solution_provider_department, :solution_provider_university, :solution_provider_city, :solution_provider_country, :solution_provider_state, :solution_provider_pincode, :directory_name)"; + :solution_provider_contact_ph, :solution_provider_department, :solution_provider_university, :solution_provider_city, :solution_provider_country, :solution_provider_state, :solution_provider_pincode, :directory_name, :problem_statement_file)"; $args = array( ":uid" => $user->uid, ":approver_uid" => 0, @@ -477,11 +516,45 @@ function lab_migration_proposal_form_submit($form, &$form_state) ":solution_provider_country" => $solution_provider_country, ":solution_provider_state" => $solution_provider_state, ":solution_provider_pincode" => $solution_provider_pincode, - ":directory_name" => $directory_name + ":directory_name" => $directory_name, + ":problem_statement_file" => "" ); $proposal_id = db_query($result, $args, array( 'return' => Database::RETURN_INSERT_ID )); + $dest_path = $directory_name . '/'; + if (!is_dir($root_path . $dest_path)) + mkdir($root_path . $dest_path); + /* uploading files */ + foreach ($_FILES['files']['name'] as $file_form_name => $file_name) + { + if ($file_name) + { + /* checking file type */ + //$file_type = 'S'; + if (file_exists($root_path . $dest_path . $_FILES['files']['name'][$file_form_name])) + { + drupal_set_message(t("Error uploading file. File !filename already exists.", array('!filename' => $_FILES['files']['name'][$file_form_name])), 'error'); + //unlink($root_path . $dest_path . $_FILES['files']['name'][$file_form_name]); + } //file_exists($root_path . $dest_path . $_FILES['files']['name'][$file_form_name]) + /* uploading file */ + if (move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $dest_path . $_FILES['files']['name'][$file_form_name])) + { + $query = "UPDATE lab_migration_proposal SET problem_statement_file = :problem_statement_file WHERE id = :id"; + $args = array( + ":problem_statement_file" => $_FILES['files']['name'][$file_form_name], + ":id" => $proposal_id + ); + + $updateresult = db_query($query, $args); + drupal_set_message($file_name . ' uploaded successfully.', 'status'); + } //move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $dest_path . $_FILES['files']['name'][$file_form_name]) + else + { + drupal_set_message('Error uploading file : ' . $dest_path . $file_name, 'error'); + } + } //$file_name + } if (!$proposal_id) { drupal_set_message(t('Error receiving your proposal. Please try again.'), 'error'); diff --git a/run.inc b/run.inc index 713ceb8..833a34d 100755 --- a/run.inc +++ b/run.inc @@ -1,11 +1,12 @@ 'select', '#title' => t('Title of the lab'), - '#options' => _list_of_labs(), + '#options' => _list_of_labs($selected), '#default_value' => $selected, - '#disabled' => TRUE, - ); - if (!$url_lab_id) + /*if (!$url_lab_id) { $form['selected_lab'] = array( '#type' => 'item', @@ -61,19 +60,12 @@ function lab_migration_run_form($form, &$form_state) '#type' => 'select', '#title' => t('Title of the experiment'), '#options' => _ajax_get_experiment_list($selected), - //'#default_value' => isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : '', + '#default_value' => isset($form_state['values']['lab_experiment_list']) ? $form_state['values']['lab_experiment_list'] : '', '#ajax' => array( 'callback' => 'ajax_solution_list_callback' ), '#prefix' => '
', '#suffix' => '
', - '#states' => array( - 'invisible' => array( - ':input[name="lab"]' => array( - 'value' => 0 - ) - ) - ) ); $form['download_experiment'] = array( '#type' => 'item', @@ -90,13 +82,6 @@ function lab_migration_run_form($form, &$form_state) ), '#prefix' => '
', '#suffix' => '
', - '#states' => array( - 'invisible' => array( - ':input[name="lab"]' => array( - 'value' => 0 - ) - ) - ) ); $form['download_solution'] = array( '#type' => 'item', @@ -120,31 +105,27 @@ function lab_migration_run_form($form, &$form_state) ); } else - { + {*/ $lab_default_value = $url_lab_id; - $form['selected_lab'] = array( + $experiment_default_value = $url_experiment_id; + /*$form['selected_lab'] = array( '#type' => 'item', '#markup' => '
' . l('Download Lab Solutions', 'lab-migration/download/lab/' . $lab_default_value) . '
' ); - /* $form['selected_lab_pdf'] = array( - '#type' => 'item', - '#markup' => '
'. l('Download PDF of Lab Solutions', 'lab-migration/generate-lab/' . $lab_default_value . '/1') .'
', - - );*/ if ($lab_default_value == '2') { $form['selected_lab_dwsim'] = array( '#type' => 'item', '#markup' => '
' . l('Download Lab Solutions (dwsim Version)', 'lab-migration-uploads/dwsim_Version.zip') . '
' ); - } - $form['lab_details'] = array( + }*/ + $form['selected_lab'] = array( '#type' => 'item', - '#markup' => '
' . _lab_details($lab_default_value) . '
' + '#markup' => '
' . l('Download Lab Solutions', 'lab-migration/download/lab/' . $lab_default_value) . '
' ); $form['lab_experiment_list'] = array( '#type' => 'select', - '#title' => t('Titile of the experiment'), + '#title' => t('Title of the experiment'), '#options' => _ajax_get_experiment_list($selected), '#default_value' => $selected_experiment, '#ajax' => array( @@ -152,35 +133,35 @@ function lab_migration_run_form($form, &$form_state) ), '#prefix' => '
', '#suffix' => '
', - '#states' => array( + /*'#states' => array( 'invisible' => array( ':input[name="lab"]' => array( 'value' => 0 ) ) - ) + )*/ ); $form['download_experiment'] = array( '#type' => 'item', - '#markup' => '
' + '#markup' => '
' . l('Download Experiment', 'lab-migration/download/experiment/' . $selected_experiment) . '
' ); $form['lab_solution_list'] = array( '#type' => 'select', '#title' => t('Solution'), '#options' => _ajax_get_solution_list($selected_experiment), - '#default_value' => isset($form_state['values']['lab_solution_list']) ? $form_state['values']['lab_solution_list'] : '', + //'#default_value' => isset($form_state['values']['lab_solution_list']) ? $form_state['values']['lab_solution_list'] : '', '#ajax' => array( 'callback' => 'ajax_solution_files_callback' ), '#prefix' => '
', '#suffix' => '
', - '#states' => array( + /*'#states' => array( 'invisible' => array( ':input[name="lab_experiment_list"]' => array( 'value' => 0 ) ) - ) + )*/ ); $form['download_solution'] = array( '#type' => 'item', @@ -202,54 +183,50 @@ function lab_migration_run_form($form, &$form_state) ) ) ); - } - /* - $form['message'] = array( - '#type' => 'textarea', - '#title' => t('If Dis-Approved please specify reason for Dis-Approval'), - '#prefix' => '
', - '#states' => array('invisible' => array(':input[name="lab"]' => array('value' => 0,),),), - - ); - - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Submit'), - '#suffix' => '
', - '#states' => array('invisible' => array(':input[name="lab"]' => array('value' => 0,),),), - - );*/ + $form['lab_details'] = array( + '#type' => 'item', + '#markup' => '
' . _lab_details($lab_default_value) . '
' + ); + $form['back_to_completed_labs'] = array( + '#type' => 'item', + '#markup' => l('Back to Completed Labs', 'lab-migration/completed-labs') + ); + //} return $form; } function ajax_experiment_list_callback($form, $form_state) { $commands = array(); $lab_default_value = $form_state['values']['lab']; + //var_dump($lab_default_value);die; if ($lab_default_value != 0) { $form['lab_details']['#markup'] = _lab_details($lab_default_value); $lab_details = _lab_information($lab_default_value); $user_solution_provider = user_load($lab_details->solution_provider_uid); //var_dump($lab_details->solution_provider_uid); - if ($lab_details->solution_provider_uid > 0) + /*if ($lab_details->solution_provider_uid > 0) { $commands[] = ajax_command_html('#ajax_selected_lab', l('Download Lab Solutions', 'lab-migration/download/lab/' . $lab_default_value)); if ($lab_default_value == '2') { $commands[] = ajax_command_html('#ajax_selected_lab_dwsim', l('Download Lab Solutions (dwsim Version)', 'lab-migration_uploads/dwsim_Version.zip')); } - /* $commands[] = ajax_command_html('#ajax_selected_lab_pdf', l('Download PDF of Lab Solutions', 'lab-migration/generate-lab/' . $lab_default_value . '/1'));*/ + } else { $commands[] = ajax_command_html('#ajax_selected_lab', ''); $commands[] = ajax_command_html('#ajax_selected_lab_pdf', ''); $commands[] = ajax_command_html('#ajax_selected_lab_dwsim', ''); - } + }*/ $commands[] = ajax_command_html('#ajax_lab_details', _lab_details($lab_default_value)); $form['lab_experiment_list']['#options'] = _ajax_get_experiment_list($lab_default_value); $commands[] = ajax_command_replace('#ajax_selected_experiment', drupal_render($form['lab_experiment_list'])); $commands[] = ajax_command_html('#ajax_selected_solution', ''); + /*$form['lab_solution_list']['#options'] = _ajax_get_solution_list(); + $commands[] = ajax_command_html('#ajax_selected_solution', drupal_render($form['lab_solution_list'])); + *///$commands[] = ajax_command_replace('#ajax_selected_solution', drupal_render($form['lab_solution_list'])); $commands[] = ajax_command_html('#ajax_solution_files', ''); $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); @@ -259,14 +236,16 @@ function ajax_experiment_list_callback($form, $form_state) { $form['lab_experiment_list']['#options'] = _ajax_get_experiment_list(); $commands[] = ajax_command_replace('#ajax_selected_experiment', drupal_render($form['lab_experiment_list'])); + /*$form['lab_solution_list']['#options'] = _ajax_get_solution_list();*/ $commands[] = ajax_command_html('#ajax_lab_details', ''); $commands[] = ajax_command_html('#ajax_selected_lab', ''); $commands[] = ajax_command_html('#ajax_selected_lab_dwsim', ''); $commands[] = ajax_command_html('#ajax_selected_lab_pdf', ''); - $commands[] = ajax_command_data('#ajax_selected_lab', 'form_state_value_select', $form_state['values']['lab']); - $commands[] = ajax_command_html('#ajax_selected_experiment', ''); + //$commands[] = ajax_command_data('#ajax_selected_lab', 'form_state_value_select', $form_state['values']['lab']); + //$commands[] = ajax_command_html('#ajax_selected_experiment', ''); $commands[] = ajax_command_html('#ajax_download_experiments', ''); $commands[] = ajax_command_html('#ajax_selected_solution', ''); + //$commands[] = ajax_command_replace('#ajax_selected_solution', drupal_render($form['lab_solution_list'])); $commands[] = ajax_command_html('#ajax_solution_files', ''); $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); @@ -279,14 +258,17 @@ function ajax_experiment_list_callback($form, $form_state) function ajax_solution_list_callback($form, $form_state) { $commands = array(); + //$lab_default_value = $form_state['values']['lab']; $experiment_list_default_value = $form_state['values']['lab_experiment_list']; - //var_dump($lab_default_value); + //var_dump($lab_default_value . ' ' . $experiment_list_default_value);die; if ($experiment_list_default_value != 0) { + //var_dump($experiment_list_default_value); $form['lab_solution_list']['#options'] = _ajax_get_solution_list($experiment_list_default_value); + $commands[] = ajax_command_replace('#ajax_selected_solution', drupal_render($form['lab_solution_list'])); $commands[] = ajax_command_html('#ajax_download_experiments', l('Download Experiment', 'lab-migration/download/experiment/' . $experiment_list_default_value)); - $commands[] = ajax_command_html('#ajax_selected_experiment', drupal_render($form['lab_experiment_list'])); - $commands[] = ajax_command_html('#ajax_selected_solution', drupal_render($form['lab_solution_list'])); +/* $commands[] = ajax_command_html('#ajax_selected_experiment', drupal_render($form['lab_experiment_list'])); +*/ // $commands[] = ajax_command_html('#ajax_solution_files', ''); // $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); // $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); @@ -294,12 +276,12 @@ function ajax_solution_list_callback($form, $form_state) else { $form['lab_solution_list']['#options'] = _ajax_get_solution_list(); - $commands[] = ajax_command_html('#ajax_selected_solution', drupal_render($form['lab_solution_list'])); - $commands[] = ajax_command_html('#ajax_download_experiments', ''); - $commands[] = ajax_command_html('#ajax_selected_solution', ''); + $commands[] = ajax_command_html('#ajax_selected_solution', drupal_render($form['lab_solution_list'])); + /* $commands[] = ajax_command_html('#ajax_download_experiments', ''); + //$commands[] = ajax_command_html('#ajax_selected_solution', ''); $commands[] = ajax_command_html('#ajax_solution_files', ''); $commands[] = ajax_command_html('#ajax_download_experiment_solution', ''); - $commands[] = ajax_command_html('#ajax_edit_experiment_solution', ''); + $commands[] = ajax_command_html('#ajax_edit_experiment_solution', '');*/ // $commands[] = ajax_command_replace('#ajax_selected_experiment',drupal_render($form['lab_experiment_list'])); } return array( @@ -316,7 +298,6 @@ function ajax_solution_files_callback($form, $form_state) { $commands[] = ajax_command_html('#ajax_selected_lab_experiment_solution_action', drupal_render($form['lab_experiment_solution_actions'])); /*************************************************************************************/ - //$solution_list_q = db_query("SELECT * FROM {lab_migration_solution_files} WHERE solution_id = %d", $form_state['values']['solution']); $query = db_select('lab_migration_solution_files'); $query->fields('lab_migration_solution_files'); $query->condition('solution_id', $solution_list_default_value); @@ -421,17 +402,13 @@ function bootstrap_table_format($headers, $rows) "; return $table; } -/*****************************************************/ -function _list_of_labs() + function _list_of_labs($selected) { - $lab_titles = array( - '0' => 'Please select...' - ); + $lab_titles = array(); //$lab_titles_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE solution_display = 1 ORDER BY lab_title ASC"); $query = db_select('lab_migration_proposal'); $query->fields('lab_migration_proposal'); - $query->condition('solution_display', 1); - $query->condition('approval_status', 3); + $query->condition('id',$selected); $query->orderBy('lab_title', 'ASC'); $lab_titles_q = $query->execute(); while ($lab_titles_data = $lab_titles_q->fetchObject()) @@ -440,6 +417,17 @@ function _list_of_labs() } return $lab_titles; } +/*****************************************************/ +function _selected_lab_name($selected) + { + $query = db_select('lab_migration_proposal'); + $query->fields('lab_migration_proposal'); + $query->condition('id', $selected); + $query->condition('approval_status', 3); + $lab_titles_q = $query->execute(); + $lab_titles_data = $lab_titles_q->fetchObject(); + return $lab_titles_data->lab_title; + } function _ajax_get_experiment_list($lab_default_value = '') { $experiments = array( @@ -462,16 +450,9 @@ function _ajax_get_solution_list($lab_experiment_list = '') $solutions = array( '0' => 'Please select...' ); - // $solutions_q = db_query("SELECT * FROM {lab_migration_solution} WHERE experiment_id = %d ORDER BY - // CAST(SUBSTRING_INDEX(code_number, '.', 1) AS BINARY) ASC, - // CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(code_number , '.', 2), '.', -1) AS UNSIGNED) ASC, - // CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(code_number , '.', -1), '.', 1) AS UNSIGNED) ASC", $experiment_id); $query = db_select('lab_migration_solution'); $query->fields('lab_migration_solution'); $query->condition('experiment_id', $lab_experiment_list); - //$query->orderBy("CAST(SUBSTRING_INDEX(code_number, '.', 1) AS BINARY", "ASC"); - // $query->orderBy("CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(code_number , '.', 2), '.', -1) AS UNSIGNED", "ASC"); - // $query->orderBy("CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(code_number , '.', -1), '.', 1) AS UNSIGNED", "ASC"); $solutions_q = $query->execute(); while ($solutions_data = $solutions_q->fetchObject()) { @@ -509,22 +490,22 @@ function _lab_details($lab_default_value) $user_solution_provider = user_load($lab_details->solution_provider_uid); if ($user_solution_provider) { - $solution_provider = 'Solution Provider
' . ''; + $solution_provider = 'Solution Provider' . ''; } else { - $solution_provider = 'Solution Provider
' . ''; + $solution_provider = 'Solution Provider' . ''; } } else { - $solution_provider = 'Solution Provider
' . ''; + $solution_provider = 'Solution Provider' . ''; }} else{ drupal_goto('lab-migration/lab-migration-run'); } - $form['lab_details']['#markup'] = 'About the Lab
' . '' . $solution_provider; + $form['lab_details']['#markup'] = '
About the Lab' . '
    ' . '
  • Proposer Name: ' . $lab_details->name_title . ' ' . $lab_details->name . '
  • ' . '
  • Title of the Lab: ' . $lab_details->lab_title . '
  • ' . '
  • Department: ' . $lab_details->department . '
  • ' . '
  • University: ' . $lab_details->university . '
  • ' . '
  • Category: ' . $lab_details->category . '
  • ' . '
' . $solution_provider . '
'; $details = $form['lab_details']['#markup']; return $details; } diff --git a/settings.inc b/settings.inc index 1856a25..8af9fd3 100755 --- a/settings.inc +++ b/settings.inc @@ -29,6 +29,15 @@ function lab_migration_settings_form($form, $form_state) '#required' => TRUE, '#default_value' => variable_get('lab_migration_from_email', '') ); + $form['extensions']['proposal_problem_statement'] = array( + '#type' => 'textfield', + '#title' => t('Allowed extensions for the problem statement in the Proposal form'), + '#description' => t('A comma separated list WITHOUT SPACE of file extensions for the problem statement that are permitted to be uploaded on the server'), + '#size' => 50, + '#maxlength' => 255, + '#required' => TRUE, + '#default_value' => variable_get('lab_migration_problem_statement_extensions', '') + ); $form['extensions']['source'] = array( '#type' => 'textfield', '#title' => t('Allowed source file extensions'), @@ -38,33 +47,24 @@ function lab_migration_settings_form($form, $form_state) '#required' => TRUE, '#default_value' => variable_get('lab_migration_source_extensions', '') ); - $form['extensions']['dependency'] = array( + $form['extensions']['code_submission_result_pdf'] = array( '#type' => 'textfield', - '#title' => t('Allowed dependency file extensions'), - '#description' => t('A comma separated list WITHOUT SPACE of dependency file extensions that are permitted to be uploaded on the server'), + '#title' => t('Allowed file extensions for results in the form of PDF'), + '#description' => t('A comma separated list WITHOUT SPACE of report file extensions that are permitted to be uploaded on the server'), '#size' => 50, '#maxlength' => 255, '#required' => TRUE, - '#default_value' => variable_get('lab_migration_dependency_extensions', '') + '#default_value' => variable_get('lab_migration_result_pdf_extensions', '') ); - $form['extensions']['result'] = array( + $form['extensions']['result_zip'] = array( '#type' => 'textfield', - '#title' => t('Allowed result file extensions'), + '#title' => t('Allowed result file extensions in the zip format'), '#description' => t('A comma separated list WITHOUT SPACE of result file extensions that are permitted to be uploaded on the server'), '#size' => 50, '#maxlength' => 255, '#required' => TRUE, '#default_value' => variable_get('lab_migration_result_extensions', '') ); - $form['extensions']['xcos'] = array( - '#type' => 'textfield', - '#title' => t('Allowed xcos file extensions'), - '#description' => t('A comma separated list WITHOUT SPACE of xcos file extensions that are permitted to be uploaded on the server'), - '#size' => 50, - '#maxlength' => 255, - '#required' => TRUE, - '#default_value' => variable_get('lab_migration_xcos_extensions', '') - ); $form['extensions']['pdf'] = array( '#type' => 'textfield', '#title' => t('Allowed pdf file extensions'), @@ -89,10 +89,10 @@ function lab_migration_settings_form_submit($form, &$form_state) variable_set('lab_migration_emails', $form_state['values']['emails']); variable_set('lab_migration_cc_emails', $form_state['values']['cc_emails']); variable_set('lab_migration_from_email', $form_state['values']['from_email']); + variable_set('lab_migration_problem_statement_extensions', $form_state['values']['proposal_problem_statement']); variable_set('lab_migration_source_extensions', $form_state['values']['source']); - variable_set('lab_migration_dependency_extensions', $form_state['values']['dependency']); - variable_set('lab_migration_result_extensions', $form_state['values']['result']); - variable_set('lab_migration_xcos_extensions', $form_state['values']['xcos']); + variable_set('lab_migration_result_pdf_extensions', $form_state['values']['code_submission_result_pdf']); + variable_set('lab_migration_result_extensions', $form_state['values']['result_zip']); variable_set('lab_migration_pdf_extensions', $form_state['values']['pdf']); drupal_set_message(t('Settings updated'), 'status'); } diff --git a/upload_code.inc b/upload_code.inc index 7dca349..be59edc 100755 --- a/upload_code.inc +++ b/upload_code.inc @@ -219,7 +219,7 @@ function lab_migration_upload_code_form($form,$form_state) ); $form['code_warning'] = array( '#type' => 'item', - '#title' => t('Upload all the dwsim project files in .zip format'), + '#title' => t('Upload all the OpenFOAM project files in .zip format'), '#prefix' => '
', '#suffix' => '
', ); @@ -234,7 +234,7 @@ function lab_migration_upload_code_form($form,$form_state) '#title' => t('Upload main or source file'), '#size' => 48, '#description' => t('Only alphabets and numbers are allowed as a valid filename.') . '
' . - t('Allowed file extensions : ') . variable_get('lab_migration_source_extensions', ''), + t('Allowed file extensions: ') . variable_get('lab_migration_source_extensions', ''), ); /* $form['dep_files'] = array( @@ -292,40 +292,18 @@ function lab_migration_upload_code_form($form,$form_state) ); $form['result']['result1'] = array( '#type' => 'file', - '#title' => t('Upload result file'), + '#title' => t('Upload result file. To view the template for result submission please click here.'), '#size' => 48, '#description' => t('Separate filenames with underscore. No spaces or any special characters allowed in filename.') . '
' . - t('Allowed file extensions : ') . variable_get('lab_migration_result_extensions', ''), + t('Allowed file extensions: ') . variable_get('lab_migration_result_pdf_extensions', ''), ); $form['result']['result2'] = array( '#type' => 'file', '#title' => t('Upload result file'), '#size' => 48, '#description' => t('Separate filenames with underscore. No spaces or any special characters allowed in filename.') . '
' . - t('Allowed file extensions : ') . variable_get('lab_migration_result_extensions', ''), - ); -/* - $form['xcos'] = array( - '#type' => 'fieldset', - '#title' => t('XCOS Files'), - '#collapsible' => FALSE, - '#collapsed' => FALSE, - ); - $form['xcos']['xcos1'] = array( - '#type' => 'file', - '#title' => t('Upload xcos file'), - '#size' => 48, - '#description' => t('Separate filenames with underscore. No spaces or any special characters allowed in filename.') . '
' . - t('Allowed file extensions : ') . variable_get('lab_migration_xcos_extensions', ''), - ); - $form['xcos']['xcos2'] = array( - '#type' => 'file', - '#title' => t('Upload xcos file'), - '#size' => 48, - '#description' => t('Separate filenames with underscore. No spaces or any special characters allowed in filename.') . '
' . - t('Allowed file extensions : ') . variable_get('lab_migration_xcos_extensions', ''), + t('Allowed file extensions: ') . variable_get('lab_migration_result_extensions', ''), ); -*/ $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit') @@ -357,7 +335,8 @@ function lab_migration_upload_code_form_validate($form, &$form_state) /* check if atleast one source or result file is uploaded */ if ( ! ($_FILES['files']['name']['sourcefile1'] )) form_set_error('sourcefile1', t('Please upload atleast one main or source file.')); - +if ( ! ($_FILES['files']['name']['result1'] )) + form_set_error('result1', t('Please upload the result file in the form of pdf.')); /* check for valid filename extensions */ foreach ($_FILES['files']['name'] as $file_form_name => $file_name) { @@ -366,10 +345,10 @@ function lab_migration_upload_code_form_validate($form, &$form_state) /* checking file type */ if (strstr($file_form_name, 'source')) $file_type = 'S'; - else if (strstr($file_form_name, 'result')) + else if (strstr($file_form_name, 'result1')) + $file_type = 'P'; + else if (strstr($file_form_name, 'result2')) $file_type = 'R'; - else if (strstr($file_form_name, 'xcos')) - $file_type = 'X'; else $file_type = 'U'; @@ -382,8 +361,8 @@ function lab_migration_upload_code_form_validate($form, &$form_state) case 'R': $allowed_extensions_str = variable_get('lab_migration_result_extensions', ''); break; - case 'X': - $allowed_extensions_str = variable_get('lab_migration_xcos_extensions', ''); + case 'P': + $allowed_extensions_str = variable_get('lab_migration_result_pdf_extensions', ''); break; } $allowed_extensions = explode(',' , $allowed_extensions_str); @@ -562,17 +541,19 @@ function lab_migration_upload_code_form_submit($form, &$form_state) { return; } + /* uploading file */ if (move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $dest_path . $_FILES['files']['name'][$file_form_name])) { /* for uploaded files making an entry in the database */ + //var_dump($_FILES['files']['type'][$file_form_name]);die; $query = "INSERT INTO {lab_migration_solution_files} (solution_id, filename, filepath, filemime, filesize, filetype, timestamp) VALUES (:solution_id, :filename, :filepath, :filemime, :filesize, :filetype, :timestamp)"; $args = array( ":solution_id" => $solution_id, ":filename" => $_FILES['files']['name'][$file_form_name], ":filepath" => $file_path . $_FILES['files']['name'][$file_form_name], - ":filemime" => 'application/zip', + ":filemime" => $_FILES['files']['type'][$file_form_name], ":filesize" => $_FILES['files']['size'][$file_form_name], ":filetype" => $file_type, ":timestamp" => time() -- cgit From 3e4125b2568cdc8467e0f949560986ae7e722990 Mon Sep 17 00:00:00 2001 From: Sashi20 Date: Thu, 1 Aug 2024 10:50:03 +0530 Subject: Update problem statement file from edit proposal --- manage_proposal.inc | 136 ++++++++++++++++++++++++-------------------------- proposal.inc | 1 + solution_proposal.inc | 8 +++ 3 files changed, 73 insertions(+), 72 deletions(-) diff --git a/manage_proposal.inc b/manage_proposal.inc index 411c24e..9769880 100755 --- a/manage_proposal.inc +++ b/manage_proposal.inc @@ -866,7 +866,7 @@ function lab_migration_proposal_edit_form($form, $form_state) '#type' => 'textfield', '#title' => t('Title of the Lab'), '#size' => 30, - '#maxlength' => 50, + '#maxlength' => 255, '#required' => TRUE, '#default_value' => $proposal_data->lab_title ); @@ -946,6 +946,19 @@ function lab_migration_proposal_edit_form($form, $form_state) ); } } + if(!$proposal_data->problem_statement_file){ + $existing_uploaded_A_file = new stdClass(); + $existing_uploaded_A_file->filename = "No file uploaded"; + } + else{ + $existing_uploaded_A_file->filename = $proposal_data->problem_statement_file; + } + $form['edit_problem_statement'] = array( + '#type' => 'file', + '#title' => t('Edit the Problem statement file'), + //'#required' => TRUE, + '#description' => t('Current File : ' . $existing_uploaded_A_file->filename . '
Separate filenames with underscore. No spaces or any special characters allowed in filename.') . '
' . t('Allowed file extensions: ') . variable_get('lab_migration_problem_statement_extensions', '') . '', + ); if ($proposal_data->solution_provider_uid == 0) { $solution_provider_user = 'Open'; @@ -1021,12 +1034,34 @@ function lab_migration_proposal_edit_form_validate($form, &$form_state) } } } + if (isset($_FILES['files'])) + { + /* check for valid filename extensions */ + foreach ($_FILES['files']['name'] as $file_form_name => $file_name) + { + if ($file_name) + { + $allowed_extensions_str = variable_get('lab_migration_problem_statement_extensions', ''); + $allowed_extensions = explode(',', $allowed_extensions_str); + $fnames = explode('.', strtolower($_FILES['files']['name'][$file_form_name])); + $temp_extension = end($fnames); + if (!in_array($temp_extension, $allowed_extensions)) + form_set_error($file_form_name, t('Only file with ' . $allowed_extensions_str . ' extensions can be uploaded.')); + if ($_FILES['files']['size'][$file_form_name] <= 0) + form_set_error($file_form_name, t('File size cannot be zero.')); + /* check if valid file name */ + if (!lab_migration_check_valid_filename($_FILES['files']['name'][$file_form_name])) + form_set_error($file_form_name, t('Invalid file name specified. Only alphabets and numbers are allowed as a valid filename.')); + } //$file_name + } //$_FILES['files']['name'] as $file_form_name => $file_name + } return; } function lab_migration_proposal_edit_form_submit($form, &$form_state) { global $user; /* get current proposal */ + $root_path = lab_migration_path(); $proposal_id = (int) arg(3); // $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $proposal_id); $query = db_select('lab_migration_proposal'); @@ -1102,17 +1137,6 @@ function lab_migration_proposal_edit_form_submit($form, &$form_state) } /* update proposal */ $v = $form_state['values']; - //$query = "UPDATE {lab_migration_proposal} SET name_title = :name_title, name = :name, contact_ph = :contact_ph, department = :department, university = :unversity, lab_title = :lab_title, solution_display = :solution_display WHERE id = :id"; - // $args= array( - // ":name_title" => $v['name_title'], - // ":name" => $v['name'], - // "contact_ph" => $v['contact_ph'], - // ":department" => $v['department'], - // ":university" => $v['university'], - // ":lab_title" => $v['lab_title'], - // ":solution_display" => $solution_display, - // ":id" => $proposal_id, - // ); $lab_title = $v['lab_title']; $proposar_name = $v['name_title'] . ' ' . $v['name']; $university = $v['university']; @@ -1136,9 +1160,35 @@ function lab_migration_proposal_edit_form_submit($form, &$form_state) 'state' => $v['all_state'], 'lab_title' => $v['lab_title'], 'solution_display' => $solution_display, - 'directory_name' => $directory_name + 'directory_name' => $directory_name, ))->condition('id', $proposal_id); $result1 = $query->execute(); + /*Updating the Problem statement file*/ + if (isset($_FILES['files'])) { + foreach ($_FILES['files']['name'] as $file_form_name => $file_name) { + if (file_exists($root_path . $directory_name . '/' . $_FILES['files']['name'][$file_form_name])) { + unlink($root_path . $directory_name . '/' . $_FILES['files']['name'][$file_form_name]); + move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $directory_name . '/' . $_FILES['files']['name'][$file_form_name]); + drupal_set_message(t("File !filename already exists hence overwirtten the exisitng file ", array( + '!filename' => $_FILES['files']['name'][$file_form_name], + )), 'status'); + } //file_exists($root_path . $dest_path . $_FILES['files']['name'][$file_form_name]) + /* uploading file */ + else if (move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $directory_name . '/' . $_FILES['files']['name'][$file_form_name])) { + /* for uploaded files making an entry in the database */ + unlink($root_path . $directory_name . '/' . $proposal_data->problem_statement_file); + $query = "UPDATE lab_migration_proposal SET problem_statement_file = :filename WHERE id = :proposal_id"; + $args = array( + ":filename" => $_FILES['files']['name'][$file_form_name], + ":proposal_id" => $proposal_id, + ); + db_query($query, $args, array('return' => Database::RETURN_INSERT_ID, + )); + + drupal_set_message($file_name . ' file updated successfully.', 'status'); + } + } //move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $dest_path . $_FILES['files']['name'][$file_form_name]) + } //$result=db_query($query, $args); /* updating existing experiments */ $query = db_select('lab_migration_experiment'); @@ -1177,28 +1227,6 @@ function lab_migration_proposal_edit_form_submit($form, &$form_state) } } } - /* foreach ($form_state['values']['lab_experiment']['update'] as $update_id => $update_value) { - if (strlen(trim($update_value)) >= 1) { - $description= $form_state['values']['lab_experiment_description']['update']; - $query = "UPDATE {lab_migration_experiment} SET title = :title and description=:description WHERE id = :id"; - $args = array( - ":title"=> trim($update_value), - ":description"=>trim($description), - ":id"=> $update_id, - ); - $result2 = db_query($query, $args); - if (!$result2) - { - drupal_set_message(t('Could not update Title of the Experiment : ') . trim($update_value), 'error'); - } - } else { - $query = "DELETE FROM {lab_migration_experiment} WHERE id = :id LIMIT 1"; - $args = array( - ":id" => $update_id - ); - $result3 = db_query($query, $args); - } - }*/ /* inserting new experiments */ $query = db_select('lab_migration_experiment'); $query->fields('lab_migration_experiment'); @@ -1241,43 +1269,7 @@ function lab_migration_proposal_edit_form_submit($form, &$form_state) } } } - /* $query = db_select('lab_migration_experiment'); - $query->fields('lab_migration_experiment'); - $query->condition('proposal_id', $proposal_id); - $query->orderBy('number', 'DESC'); - $query->range(0, 1); - $number_q = $query->execute(); - if ($number_data = $number_q->fetchObject()) { - $number = (int)$number_data->number; - $number++; - } else { - $number = 1; - } - $insertvalue = array($insert_id => $insert_value); - $lab_experimentinsert = $form_state['values']['lab_experiment']['insert']; - $lab_exp_descriptioninsert=$form_state['values']['lab_experiment_description']['insert']; - if (is_array($lab_experimentinsert) || is_object($lab_experimentinsert)) - { - foreach ($lab_experimentinsert as $insertvalue) { - //foreach ($form_state['values']['lab_experiment']['insert'] as $insert_id => $insert_value) { - if (strlen(trim($insert_value)) >= 1) { - $query = "INSERT INTO {lab_migration_experiment} (proposal_id, number, title, description) VALUES :proposal_id, :number, :title, :description"; - $args = array( - ":proposal_id" => $proposal_id, - ":number" => $number, - ":title" => trim($insert_value), - ":description"=>"" - ); - $result4 = db_query($query, $args); - if (!$result4) - { - drupal_set_message(t('Could not insert Title of the Experiment : ') . trim($insert_value), 'error'); - } else { - $number++; - } - } - } - }*/ + drupal_set_message(t('Proposal Updated'), 'status'); } /******************************************************************************/ diff --git a/proposal.inc b/proposal.inc index 0bed1bf..d6d3e8c 100755 --- a/proposal.inc +++ b/proposal.inc @@ -227,6 +227,7 @@ function lab_migration_proposal_form($form, &$form_state) '#type' => 'textfield', '#title' => t('Title of the Lab'), '#size' => 50, + '#maxlength' => 255, '#required' => TRUE ); $first_experiemnt = TRUE; diff --git a/solution_proposal.inc b/solution_proposal.inc index e23f4fa..b06b6f5 100755 --- a/solution_proposal.inc +++ b/solution_proposal.inc @@ -16,13 +16,21 @@ function lab_migration_proposal_open() { while ($proposal_data = $proposal_q->fetchObject()) { + if($proposal_data->problem_statement_file == ''){ + $problem_statement_file = "NA"; + } + else{ + $problem_statement_file = l('View', 'lab-migration/download/problem-statement/' . $proposal_data->id); + } $proposal_rows[] = array( l($proposal_data->lab_title, 'lab-migration/show-proposal/' . $proposal_data->id), + $problem_statement_file, l('Apply', 'lab-migration/show-proposal/' . $proposal_data->id) ); } $proposal_header = array( 'Title of the Lab', + 'Problem Statement', 'Actions' ); $return_html = theme('table', array( -- cgit