Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
iena-competency-block
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
iena
iena-competency-block
Commits
e791027f
Commit
e791027f
authored
Oct 24, 2019
by
Thomas Fradet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dropdowns, coursidbug and assignment direct link
parent
c4d19b27
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
180 additions
and
111 deletions
+180
-111
competency_iena_competencies_mgmt.php
competency_iena_competencies_mgmt.php
+13
-44
course_competency.php
course_competency.php
+27
-24
js/dropdown.js
js/dropdown.js
+119
-0
js/stud-x-cpts.js
js/stud-x-cpts.js
+0
-42
styles.css
styles.css
+21
-1
No files found.
competency_iena_competencies_mgmt.php
View file @
e791027f
...
...
@@ -14,20 +14,12 @@
global
$COURSE
,
$DB
,
$CFG
;
try
{
$courseid
=
required_param
(
'courseid'
,
PARAM_INT
);
}
catch
(
coding_exception
$e
)
{
}
try
{
$url
=
new
moodle_url
(
'/blocks/competency_iena/competency_iena_competencies_mgmt.php'
,
array
(
'courseid'
=>
$courseid
));
}
catch
(
moodle_exception
$e
)
{
}
$courseid
=
required_param
(
'courseid'
,
PARAM_INT
);
$url
=
new
moodle_url
(
'/blocks/competency_iena/competency_iena_competencies_mgmt.php'
,
array
(
'courseid'
=>
$courseid
));
//$requete = $DB->get_record_sql('SELECT course FROM {block_competency_iena} WHERE id = ?', array($courseid));
try
{
$PAGE
->
set_url
(
$url
);
}
catch
(
coding_exception
$e
)
{
}
$PAGE
->
set_url
(
$url
);
if
(
$_POST
)
{
...
...
@@ -129,40 +121,17 @@
exit
;
}
try
{
$course
=
$DB
->
get_record
(
'course'
,
array
(
'id'
=>
$courseid
),
'*'
,
MUST_EXIST
);
}
catch
(
dml_exception
$e
)
{
}
try
{
require_login
(
$course
,
false
,
NULL
);
}
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");
$course
=
$DB
->
get_record
(
'course'
,
array
(
'id'
=>
$courseid
),
'*'
,
MUST_EXIST
);
require_login
(
$course
,
false
,
NULL
);
$PAGE
->
set_title
(
get_string
(
'title_plugin'
,
'block_competency_iena'
));
$PAGE
->
set_heading
(
$OUTPUT
->
heading
(
$COURSE
->
fullname
,
2
,
'headingblock header outline'
));
echo
$OUTPUT
->
header
();
$PAGE
->
requires
->
js
(
"/blocks/competency_iena/js/file.js"
);
echo
"<link rel=
\"
stylesheet
\"
type=
\"
text/css
\"
href=
\"
styles.css
\"
>"
;
$view
=
new
view_competency_iena_competencies_mgmt
();
echo
$view
->
get_content
(
htmlspecialchars
(
$courseid
));
try
{
echo
$OUTPUT
->
footer
();
}
catch
(
coding_exception
$e
)
{
}
echo
$OUTPUT
->
footer
();
course_competency.php
View file @
e791027f
...
...
@@ -16,9 +16,7 @@ require_login($courseid, false, NULL);
$PAGE
->
set_pagelayout
(
'course'
);
$PAGE
->
set_title
(
get_string
(
'title_plugin'
,
'block_competency_iena'
));
$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/stud-x-cpts.js"
);
$PAGE
->
requires
->
js
(
"/blocks/competency_iena/js/cpt-x-studs.js"
);
$PAGE
->
requires
->
js
(
"/blocks/competency_iena/js/dropdown.js"
);
$PAGE
->
requires
->
js
(
"/blocks/competency_iena/js/cpt-stud-course.js"
);
/* <<< GESTION DROITS D'ACCÈS >>> */
...
...
@@ -133,10 +131,6 @@ $course_cpts = \core_competency\course_competency::list_competencies($COURSE->id
/* <<< PAGE >>> */
// echo "<pre>";
// var_dump($cpt_scale);
// echo "</pre>";
/* STUDENT NAME */
_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
/* SWITCH STUDENT FORM */
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_stud
ent' 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='competencyid' value='
{
$competencyid
}
'>"
;
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
"<datalist id='student_list' title='Select student'>"
;
echo
"<div id='student_dropdown' class='iena-dropdown' style='z-index: 10;'>"
;
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
)
{
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
"</d
atalist
>"
;
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
"<button class='btn btn-secondary' id='nextStud' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Suivant</button></div>"
;
echo
"</d
iv
>"
;
echo
"<
/div
>"
;
echo
"</form>"
;
}
...
...
@@ -184,19 +180,21 @@ echo "<div style='margin-bottom: 0.7rem;'>" . $cpt_path_link . "</div>";
/* 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='studentid' value='
{
$studentid
}
'>"
;
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
"<datalist id='competency_list' title='Select competency'>"
;
echo
"<div id='student_dropdown' class='iena-dropdown' style='z-index: 1;'>"
;
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
)
{
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
"</d
atalist
>"
;
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
"<button class='btn btn-secondary' id='nextCpt' style='font-size: .8rem;line-height: 1.09; margin-left: 0.5rem;'>Suivant</button>"
;
echo
"</d
iv
>"
;
echo
"<
/div
>"
;
echo
"</form>"
;
/* END switch competency form */
...
...
@@ -398,7 +396,12 @@ if ( count($cm_ids) !== 0 ) {
$modinfo
=
get_fast_modinfo
(
$courseid
);
echo
"<div class='list-group'>"
;
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>"
;
}
else
{
...
...
js/
cpt-x-studs
.js
→
js/
dropdown
.js
View file @
e791027f
(
function
()
{
/* Submit datalist selector to change current competency
on the dashboard listing avery student status regarding a particular competency. */
function
filter
(
e
)
{
let
filter
=
e
.
target
.
value
.
toUpperCase
();
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
()
{
/* 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
competencyid
=
document
.
getElementById
(
'
competencyid
'
).
innerHTML
;
for
(
var
i
=
0
;
i
<
opts
.
length
;
i
++
)
{
...
...
@@ -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
js/stud-x-cpts.js
deleted
100644 → 0
View file @
c4d19b27
(
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
styles.css
View file @
e791027f
...
...
@@ -77,4 +77,24 @@
padding
:
0.12rem
0.35rem
;
background-color
:
#008090
;
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
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment