Skip to content
Snippets Groups Projects
Commit e791027f authored by Thomas Fradet's avatar Thomas Fradet
Browse files

dropdowns, coursidbug and assignment direct link

parent c4d19b27
No related branches found
No related tags found
No related merge requests found
...@@ -14,20 +14,12 @@ ...@@ -14,20 +14,12 @@
global $COURSE, $DB, $CFG; global $COURSE, $DB, $CFG;
try { $courseid = required_param('courseid', PARAM_INT);
$courseid = required_param('courseid', PARAM_INT);
} catch (coding_exception $e) { $url = new moodle_url('/blocks/competency_iena/competency_iena_competencies_mgmt.php', array('courseid' => $courseid));
}
try {
$url = new moodle_url('/blocks/competency_iena/competency_iena_competencies_mgmt.php', array('courseid' => $courseid));
} catch (moodle_exception $e) {
}
//$requete = $DB->get_record_sql('SELECT course FROM {block_competency_iena} WHERE id = ?', array($courseid)); //$requete = $DB->get_record_sql('SELECT course FROM {block_competency_iena} WHERE id = ?', array($courseid));
try { $PAGE->set_url($url);
$PAGE->set_url($url);
} catch (coding_exception $e) {
}
if ($_POST) { if ($_POST) {
...@@ -129,40 +121,17 @@ ...@@ -129,40 +121,17 @@
exit; exit;
} }
try { $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
$course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST); require_login($course, false, NULL);
} catch (dml_exception $e) {
} $PAGE->set_title(get_string('title_plugin', 'block_competency_iena'));
try { $PAGE->set_heading($OUTPUT->heading($COURSE->fullname, 2, 'headingblock header outline'));
require_login($course, false, NULL); echo $OUTPUT->header();
} catch (coding_exception $e) {
} catch (require_login_exception $e) {
} catch (moodle_exception $e) {
}
try {
$PAGE->set_title(get_string('title_plugin', 'block_competency_iena'));
} catch (coding_exception $e) {
}
try {
$PAGE->set_heading($OUTPUT->heading($COURSE->fullname, 2, 'headingblock header outline'));
} catch (coding_exception $e) {
}
try {
echo $OUTPUT->header();
} catch (coding_exception $e) {
}
//$PAGE->requires->js("/blocks/competency_iena/js/jquery.min.js");
$PAGE->requires->js("/blocks/competency_iena/js/file.js"); $PAGE->requires->js("/blocks/competency_iena/js/file.js");
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">"; echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">";
$view = new view_competency_iena_competencies_mgmt(); $view = new view_competency_iena_competencies_mgmt();
echo $view->get_content(htmlspecialchars($courseid)); echo $view->get_content(htmlspecialchars($courseid));
echo $OUTPUT->footer();
try {
echo $OUTPUT->footer();
} catch (coding_exception $e) {
}
...@@ -16,9 +16,7 @@ require_login($courseid, false, NULL); ...@@ -16,9 +16,7 @@ require_login($courseid, false, NULL);
$PAGE->set_pagelayout('course'); $PAGE->set_pagelayout('course');
$PAGE->set_title(get_string('title_plugin', 'block_competency_iena')); $PAGE->set_title(get_string('title_plugin', 'block_competency_iena'));
$PAGE->set_heading($OUTPUT->heading($COURSE->fullname, 2, 'headingblock header outline')); $PAGE->set_heading($OUTPUT->heading($COURSE->fullname, 2, 'headingblock header outline'));
$PAGE->requires->js("/blocks/competency_iena/js/datalist-polyfill.min.js"); $PAGE->requires->js("/blocks/competency_iena/js/dropdown.js");
$PAGE->requires->js("/blocks/competency_iena/js/stud-x-cpts.js");
$PAGE->requires->js("/blocks/competency_iena/js/cpt-x-studs.js");
$PAGE->requires->js("/blocks/competency_iena/js/cpt-stud-course.js"); $PAGE->requires->js("/blocks/competency_iena/js/cpt-stud-course.js");
/* <<< GESTION DROITS D'ACCÈS >>> */ /* <<< GESTION DROITS D'ACCÈS >>> */
...@@ -133,10 +131,6 @@ $course_cpts = \core_competency\course_competency::list_competencies($COURSE->id ...@@ -133,10 +131,6 @@ $course_cpts = \core_competency\course_competency::list_competencies($COURSE->id
/* <<< PAGE >>> */ /* <<< PAGE >>> */
// echo "<pre>";
// var_dump($cpt_scale);
// echo "</pre>";
/* STUDENT NAME */ /* STUDENT NAME */
_html("h2", $student->firstname . " " . $student->lastname, "h3' style='margin-bottom: 0.3rem;'"); _html("h2", $student->firstname . " " . $student->lastname, "h3' style='margin-bottom: 0.3rem;'");
...@@ -144,19 +138,21 @@ _html("h2", $student->firstname . " " . $student->lastname, "h3' style='margin-b ...@@ -144,19 +138,21 @@ _html("h2", $student->firstname . " " . $student->lastname, "h3' style='margin-b
/* SWITCH STUDENT FORM */ /* SWITCH STUDENT FORM */
if ( $is_teacher && $students != NULL && count($students) != 0 ) { if ( $is_teacher && $students != NULL && count($students) != 0 ) {
echo "<form action='{$CFG->wwwroot}/blocks/competency_iena/course_competency.php' id='change_stud_form' class='form-inline m-b-1'>"; echo "<form action='{$CFG->wwwroot}/blocks/competency_iena/course_competency.php' id='change_student' class='form-inline m-b-1' autocomplete='off' style='display: block;height: 1.5rem;'>";
echo "<input type='text' hidden name='courseid' value='{$courseid}'>"; echo "<input type='text' hidden name='courseid' value='{$courseid}'>";
echo "<input type='text' hidden name='competencyid' value='{$competencyid}'>"; echo "<input type='text' hidden name='competencyid' value='{$competencyid}'>";
echo "<span hidden id='studentid'>{$studentid}</span>"; echo "<span hidden id='studentid'>{$studentid}</span>";
/*echo "<label class='m-y-1 m-r-1' for='studentid_sel' style='color: black;'>Etudiant</label>";*/
echo "<input type='text' name='studentid' id='studentid_sel' value='' list='student_list' class='form-control' style='font-size: .7rem; line-height: 1;'>"; echo "<div id='student_dropdown' class='iena-dropdown' style='z-index: 10;'>";
echo "<datalist id='student_list' title='Select student'>"; echo "<input type='text' hidden name='studentid' id='studentid_sel' class='iena-drop-input-value' value=''>";
echo "<input type='text' value='' class='form-control iena-drop-input' style='font-size: .7rem; line-height: 1; width: 300px;' placeholder='{$student->firstname} {$student->lastname}'><button class='btn btn-secondary' id='prevStud' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Précédent</button><button class='btn btn-secondary' id='nextStud' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Suivant</button>";
echo "<div class='iena-droplist' id='student_list'>";
foreach ($students as $stud) { foreach ($students as $stud) {
echo "<option value='{$stud->firstname} {$stud->lastname} ({$stud->id})' data-value='{$stud->id}'>{$stud->firstname} {$stud->lastname} ({$stud->id})</option>"; echo "<a href='#' data-value='{$stud->id}' class='iena-drop-item' style='display: none;'>{$stud->firstname} {$stud->lastname}</a>";
} }
echo "</datalist>"; echo "</div>";
echo "<div><button class='btn btn-secondary' id='prevStud' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Précédent</button>"; echo "</div>";
echo "<button class='btn btn-secondary' id='nextStud' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Suivant</button></div>";
echo "</form>"; echo "</form>";
} }
...@@ -184,19 +180,21 @@ echo "<div style='margin-bottom: 0.7rem;'>" . $cpt_path_link . "</div>"; ...@@ -184,19 +180,21 @@ echo "<div style='margin-bottom: 0.7rem;'>" . $cpt_path_link . "</div>";
/* SWITCH COMPETENCY FORM */ /* SWITCH COMPETENCY FORM */
echo "<form action='{$CFG->wwwroot}/blocks/competency_iena/course_competency.php' id='change_cpt_form' class='form-inline m-b-1'>"; echo "<form action='{$CFG->wwwroot}/blocks/competency_iena/course_competency.php' id='change_cpt_form' class='form-inline m-b-1' autocomplete='off' style='display: block;height: 1.5rem;'>";
echo "<input type='text' hidden name='courseid' value='{$courseid}'>"; echo "<input type='text' hidden name='courseid' value='{$courseid}'>";
echo "<input type='text' hidden name='studentid' value='{$studentid}'>"; echo "<input type='text' hidden name='studentid' value='{$studentid}'>";
echo "<span hidden id='competencyid'>{$competencyid}</span>"; echo "<span hidden id='competencyid'>{$competencyid}</span>";
/*echo "<label class='m-r-1' for='competencyid_sel' style=''>Changer de compétence</label>";*/
echo "<input type='text' name='competencyid' id='competencyid_sel' value='' list='competency_list' class='form-control' style='font-size: .7rem; line-height: 1;'>"; echo "<div id='student_dropdown' class='iena-dropdown' style='z-index: 1;'>";
echo "<datalist id='competency_list' title='Select competency'>"; echo "<input type='text' hidden name='competencyid' id='competencyid_sel' class='iena-drop-input-value' value=''>";
echo "<input type='text' value='' class='form-control iena-drop-input' style='font-size: .7rem; line-height: 1; width: 300px;' placeholder='{$cpt->get('shortname')}' autocomplete='nope'><button class='btn btn-secondary' id='prevCpt' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Précédent</button><button class='btn btn-secondary' id='nextCpt' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Suivant</button>";
echo "<div class='iena-droplist' id='competency_list'>";
foreach ($course_cpts as $course_cpt) { foreach ($course_cpts as $course_cpt) {
echo "<option value='{$course_cpt->get('shortname')} ({$course_cpt->get('id')})' data-value='{$course_cpt->get('id')}'>{$course_cpt->get('shortname')} ({$course_cpt->get('id')})</option>"; echo "<a href='#' data-value='{$course_cpt->get('id')}' class='iena-drop-item' style='display: none;'>{$course_cpt->get('shortname')}</a>";
} }
echo "</datalist>"; echo "</div>";
echo "<button class='btn btn-secondary' id='prevCpt' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Précédent</button>"; echo "</div>";
echo "<button class='btn btn-secondary' id='nextCpt' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Suivant</button>";
echo "</form>"; echo "</form>";
/* END switch competency form */ /* END switch competency form */
...@@ -398,7 +396,12 @@ if ( count($cm_ids) !== 0 ) { ...@@ -398,7 +396,12 @@ if ( count($cm_ids) !== 0 ) {
$modinfo = get_fast_modinfo($courseid); $modinfo = get_fast_modinfo($courseid);
echo "<div class='list-group'>"; echo "<div class='list-group'>";
foreach ($cm_ids as $cm_id) { foreach ($cm_ids as $cm_id) {
echo "<a href='{$modinfo->cms[$cm_id]->url->out()}' target='_blank' class='list-group-item list-group-item-action'><img src='$CFG->wwwroot/theme/image.php/boost/{$modinfo->cms[$cm_id]->modname}/1/icon>' style='height: 1.3rem;'><span class='align-middle'> {$modinfo->cms[$cm_id]->name}</span></a>"; $url = $modinfo->cms[$cm_id]->url->out();
$is_assign = strpos($url, '/mod/assign') !== false;
if ($is_teacher && $is_assign) {
$url = $url . "&rownum=0&action=grader&userid=" . $studentid;
}
echo "<a href='{$url}' target='_blank' class='list-group-item list-group-item-action'><img src='$CFG->wwwroot/theme/image.php/boost/{$modinfo->cms[$cm_id]->modname}/1/icon>' style='height: 1.3rem;'><span class='align-middle'> {$modinfo->cms[$cm_id]->name}</span></a>";
} }
echo "</div>"; echo "</div>";
} else { } else {
......
(function() { (function() {
function filter (e) {
/* Submit datalist selector to change current competency let filter = e.target.value.toUpperCase();
on the dashboard listing avery student status regarding a particular competency. */ let a = e.target.parentNode.querySelectorAll('a');
for (let k = 0; k < a.length; k++) {
let txtValue = a[k].textContent || a[k].innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
a[k].style.display = "block";
} else {
a[k].style.display = "none";
}
}
}
window.addEventListener('load', function () { window.addEventListener('load', function () {
/* Activation of dropdowns in the page */
let drops = document.querySelectorAll('.iena-dropdown');
for (var i = 0; i < drops.length; i++) {
drops[i].querySelector('.iena-drop-input').addEventListener('focus', function(e) {
let a = e.target.parentNode.querySelectorAll('a');
for (var i = 0; i < a.length; i++) {
a[i].style.display = "block";
}
filter(e);
});
let a = drops[i].querySelectorAll('a');
for (var j = 0; j < a.length; j++) {
a[j].onmousedown = function(e) {
e.preventDefault();
let true_input = e.target.parentNode.parentNode.querySelector('.iena-drop-input-value');
let value = e.target.dataset.value;
true_input.value = value;
let input = e.target.parentNode.parentNode.querySelector('.iena-drop-input')
input.value = e.target.innerText;
let a = e.target.parentNode.querySelectorAll('a');
for (var i = 0; i < a.length; i++) {
a[i].style.display = "none";
}
e.target.parentNode.parentNode.parentNode.submit();
};
}
drops[i].querySelector('.iena-drop-input').addEventListener('blur', function(e) {
let a = e.target.parentNode.querySelectorAll('a');
for (var i = 0; i < a.length; i++) {
a[i].style.display = "none";
}
});
drops[i].querySelector('.iena-drop-input').addEventListener('keyup', function(e) {
filter(e);
});
}
/* Activation of previous and next buttons for dropdowns */
var opts = document.getElementById('student_list').childNodes;
var studentid = document.getElementById('studentid').innerHTML;
for (var i = 0; i < opts.length; i++) {
if (opts[i].dataset.value === studentid) {
var prev = opts[i - 1] === undefined ? false : opts[i - 1].dataset.value;
var next = opts[i + 1] === undefined ? false : opts[i + 1].dataset.value;
if (prev === false) {
document.getElementById('prevStud').setAttribute('disabled', 'disabled');
} else {
// document.getElementById('prevStud').href += prev;
document.getElementById('prevStud').dataset.prev = prev;
document.getElementById('prevStud').onclick = function () {
document.getElementById('studentid_sel').value = document.getElementById('prevStud').dataset.prev;
}
}
if (next === false) {
document.getElementById('nextStud').setAttribute('disabled', 'disabled');
} else {
// document.getElementById('nextStud').href += next;
document.getElementById('nextStud').dataset.next = next;
document.getElementById('nextStud').onclick = function () {
document.getElementById('studentid_sel').value = document.getElementById('nextStud').dataset.next;
}
}
}
}
var opts = document.getElementById('competency_list').childNodes; var opts = document.getElementById('competency_list').childNodes;
var competencyid = document.getElementById('competencyid').innerHTML; var competencyid = document.getElementById('competencyid').innerHTML;
for (var i = 0; i < opts.length; i++) { for (var i = 0; i < opts.length; i++) {
...@@ -29,16 +113,7 @@ ...@@ -29,16 +113,7 @@
} }
} }
} }
/* remplace le nom de l'étu par son id dans la valeur de l'input puis soumet le formulaire */
document.getElementById('competencyid_sel').oninput = function (e) {
var val = document.getElementById('competencyid_sel').value;
var opts = document.getElementById('competency_list').childNodes;
for (var i = 0; i < opts.length; i++) {
if (opts[i].value === val) {
document.getElementById('competencyid_sel').value = opts[i].dataset.value;
document.getElementById('change_cpt_form').submit();
}
}
};
}); });
})() })()
\ No newline at end of file
(function() {
window.addEventListener('load', function () {
var opts = document.getElementById('student_list').childNodes;
var studentid = document.getElementById('studentid').innerHTML;
for (var i = 0; i < opts.length; i++) {
if (opts[i].dataset.value === studentid) {
var prev = opts[i - 1] === undefined ? false : opts[i - 1].dataset.value;
var next = opts[i + 1] === undefined ? false : opts[i + 1].dataset.value;
if (prev === false) {
document.getElementById('prevStud').setAttribute('disabled', 'disabled');
} else {
// document.getElementById('prevStud').href += prev;
document.getElementById('prevStud').dataset.prev = prev;
document.getElementById('prevStud').onclick = function () {
document.getElementById('studentid_sel').value = document.getElementById('prevStud').dataset.prev;
}
}
if (next === false) {
document.getElementById('nextStud').setAttribute('disabled', 'disabled');
} else {
// document.getElementById('nextStud').href += next;
document.getElementById('nextStud').dataset.next = next;
document.getElementById('nextStud').onclick = function () {
document.getElementById('studentid_sel').value = document.getElementById('nextStud').dataset.next;
}
}
}
}
/* remplace le nom de l'étu par son id dans la valeur de l'input puis soumet le formulaire */
document.getElementById('studentid_sel').oninput = function (e) {
var val = document.getElementById('studentid_sel').value;
var opts = document.getElementById('student_list').childNodes;
for (var i = 0; i < opts.length; i++) {
if (opts[i].value === val) {
document.getElementById('studentid_sel').value = opts[i].dataset.value;
document.getElementById('change_stud_form').submit();
}
}
};
});
})()
\ No newline at end of file
...@@ -77,4 +77,24 @@ ...@@ -77,4 +77,24 @@
padding: 0.12rem 0.35rem; padding: 0.12rem 0.35rem;
background-color: #008090; background-color: #008090;
color: white; color: white;
} }
\ No newline at end of file
/* Dropdown selectors */
.iena-dropdown {
position: absolute;
}
.iena-dropdown a:hover { background-color: #ddd; }
.iena-droplist {
max-height: 250px;
overflow:scroll;
width: 300px;
background-color: #f6f6f6;
}
.iena-drop-item {
text-decoration: none !important;
padding: 0.25rem 0.5rem;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment