<?php require_once('common.inc.php'); require_once('form.inc.php'); require_once('user.inc.php'); require_once('incomplete.inc.php'); require_once('project.inc.php'); require_once('filter.inc.php'); require_once('project_number.inc.php'); $mysqli = sfiab_init('committee'); $u = user_load($mysqli); $roles = array(); $action = ''; if(array_key_exists('action', $_POST)) { $action = $_POST['action']; } switch($action) { case 'c': /* Mark project as approved */ $pid = (int)$_POST['pid']; if($pid > 0) { $p = project_load($mysqli, $pid); $p['ethics_approved'] = 1; project_save($mysqli, $p); } form_ajax_response(0); exit(); case 'i': $pid = (int)$_POST['pid']; if($pid > 0) { $p = project_load($mysqli, $pid); $p['ethics_approved'] = 0; project_save($mysqli, $p); } form_ajax_response(0); exit(); } function l_projects_load_all($mysqli, $year) { /* Load projects first */ $q = $mysqli->query("SELECT * FROM projects WHERE year='$year' "); $projects_tmp = array(); while($p = $q->fetch_assoc()) { $p_temp = project_load($mysqli, $p['pid'], $p); $projects_tmp[$p['pid']] = $p_temp; } $projects = array(); /* Now match users to projects, copying projects * into the real return array as we find them */ $q = $mysqli->query("SELECT users.*,schools.school FROM users LEFT JOIN schools ON users.schools_id=schools.id WHERE users.year='$year' AND users.enabled = '1' AND users.new = '0' AND FIND_IN_SET('student', users.`roles`)>0 "); $users = array(); while($j = $q->fetch_assoc()) { $p_user = user_load($mysqli, -1, -1, NULL, $j); $pid = $p_user['s_pid']; if($pid == 0) { print("No project for student uid={$p_user['uid']}<br/>"); } if(!array_key_exists($pid, $projects)) { $projects[$pid] = $projects_tmp[$pid]; $projects[$pid]['students'] = array(); $projects[$pid]['s_complete'] = true; } $projects[$pid]['students'][] = $p_user; if($p_user['s_complete'] == 0) { $projects[$pid]['s_complete'] = false; } } return $projects; } $page_id = 'c_input_ethics'; $help = '<p>There are two buttons that may appear: <font color=red>Mark as Approved</font> and <font color=green>Mark as NOT Approved</font>. The <font color=red>Mark as Approved</font> button is red so you can scan through the list quickly and find all projects that are not approved for ethics but need to be. Similarly the <font color=green>Mark as NOT Approved</font> button is green so you can find all the projects with ethics approval. When the green <font color=green>Mark as NOT Approved</font> button is showing, it means the project has been marked as having ethics approval.'; sfiab_page_begin($u, "Input Ethics Approval", $page_id, $help); ?> <div data-role="page" id="<?=$page_id?>"><div data-role="main" class="sfiab_page" > <h3>Input Ethics Approvals</h3> <p>Use the list below to mark projects having ethics approval. There are two buttons that may appear: <font color=red>Mark as Approved</font> and <font color=green>Mark as NOT Approved</font>. The <font color=red>Mark as Approved</font> button is red so you can scan through the list quickly and find all projects that are not approved for ethics but need to be. Similarly the <font color=green>Mark as NOT Approved</font> button is green so you can find all the projects with ethics approval. When the green <font color=green>Mark as NOT Approved</font> button is showing, it means the project has been marked as having ethics approval. <ul data-role="listview" data-filter="true" data-filter-placeholder="Search by project number, project title, student name, school name..." data-inset="true"> <?php $projects = l_projects_load_all($mysqli, $config['year']); foreach($projects as &$p) { $pid = $p['pid']; $e =& $p['ethics']; if($e['human1'] === NULL || $e['animals'] === NULL) { /* Project hasn't filled out ethics yet */ continue; } else if($e['human1'] == 0 && $e['animals'] == 0) { /* Does not require ethics approval */ continue; } $ethics = ''; if($e['human1']) { $ethics .= ' Human'; } if($e['animals']) { $ethics .= ' Animals'; } $filter_text = "{$p['pid']} {$p['title']}"; foreach($p['students'] as &$s) { $filter_text .= " {$s['name']} {$s['school']}"; } ?> <li id="ethics_approval_<?=$p['pid']?>" data-filtertext="<?=$filter_text?>"> <h3>Project <?=$p['pid']?>: <?=$p['title']?></h3> <div class="ui-grid-a" data-role="fieldcontain"> <div class="ui-block-a" style="width:80%"> <table> <?php foreach($p['students'] as &$s) { $status = $s['s_complete'] == 0 ? '<font color=red>(incomplete)</font>' : '<font color=green>(complete)</font>'; ?> <tr><td><?=$status?></td> <td><?=$s['name']?>, </td> <td>Grade <?=$s['grade']?>, </td> <td><?=$s['school']?></td> </tr> <?php } ?> </table> <br/> <b>Ethics: <?=$ethics?></b><br/> </div> <div class="ui-block-b" style="width:20%"> <?php if($p['ethics_approved']) { $mark_as_approved_style = 'style="display:none;"'; $mark_as_notapproved_style = ''; } else { $mark_as_approved_style = ''; $mark_as_notapproved_style = 'style="display:none;"'; } ?> <a href="#" onclick="input_ethics_mark_as_approved(<?=$pid?>)" id="input_ethics_c_<?=$pid?>" <?=$mark_as_approved_style?> data-role="button" data-theme="r" >Mark as Approved</a> <a href="#" onclick="input_ethics_mark_as_notapproved(<?=$pid?>)" id="input_ethics_i_<?=$pid?>" <?=$mark_as_notapproved_style?> data-role="button" data-theme="g" >Mark as NOT Approved</a> </div> </div> </li> <?php } ?> </ul> <script> function input_ethics_mark_as_approved(pid) { $.post('c_input_ethics.php', { action: "c", pid: pid }, function(data) { if(data.status == 0) { $('#input_ethics_c_'+pid).hide(); $('#input_ethics_i_'+pid).show(); } }, "json"); return false; } function input_ethics_mark_as_notapproved(pid) { $.post('c_input_ethics.php', { action: "i", pid: pid }, function(data) { if(data.status == 0) { $('#input_ethics_c_'+pid).show(); $('#input_ethics_i_'+pid).hide(); } }, "json"); return false; } </script> <?php sfiab_page_end(); ?>