Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
iena-course-format
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
iena
iena-course-format
Commits
47dc0d45
Commit
47dc0d45
authored
11 months ago
by
DELARUELLE Myriam
Browse files
Options
Downloads
Patches
Plain Diff
Début select groupes
parent
edc57a0e
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
amd/build/suivi.js
+66
-14
66 additions, 14 deletions
amd/build/suivi.js
lib.php
+0
-1
0 additions, 1 deletion
lib.php
suivi_unit.php
+33
-37
33 additions, 37 deletions
suivi_unit.php
templates/suivi.mustache
+45
-11
45 additions, 11 deletions
templates/suivi.mustache
with
144 additions
and
63 deletions
amd/build/suivi.js
+
66
−
14
View file @
47dc0d45
...
...
@@ -61,8 +61,8 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
//Evenement pour le selectall : créé une seule fois au chargement de la page
registerSelectAllActivitiesFilter
:
function
(){
$
(
'
.selectall
'
).
click
(
function
()
{
if
(
$
(
"
.selectall
"
).
is
(
'
:checked
'
))
{
$
(
'
.selectall
activities
'
).
click
(
function
()
{
if
(
$
(
"
.selectall
activities
"
).
is
(
'
:checked
'
))
{
checkAllActivitiesFilter
();
displayActivities
();
}
else
{
...
...
@@ -81,6 +81,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
initActivityFilter
(
false
);
displayTotalActivitiesFilter
(
false
);
displayActivities
(
false
);
initGroupFilter
(
false
)
changeSection
(
false
);
reloadTable
(
data
);
...
...
@@ -132,12 +133,14 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
function
changeGroup
(){
completeUrl
=
getCompleteUrl
();
loadMessage
(
"
loading
"
);
$
.
ajax
({
url
:
completeUrl
,
data
:
{
action
:
'
test
'
},
type
:
'
post
'
,
success
:
function
(
request
)
{
console
.
log
(
request
);
data
=
calcPercentage
(
JSON
.
parse
(
request
));
initGroupFilter
();
changeSection
();
}
});
...
...
@@ -246,11 +249,11 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
html
=
""
;
for
(
var
i
=
0
;
i
<
modules
.
length
;
i
++
){
if
(
modules
[
i
].
visible
){
html
+=
'
<li><label class="checkbox"><input type="checkbox" name="options[]" checked value=
'
+
modules
[
i
].
id
+
'
class="option justone">
'
+
modules
[
i
].
displayname
+
'
</label></li>
'
;
html
+=
'
<li><label class="checkbox"><input type="checkbox" name="options[]" checked value=
'
+
modules
[
i
].
id
+
'
class="option justone
-activity
">
'
+
modules
[
i
].
displayname
+
'
</label></li>
'
;
}
}
$
(
"
.iena-dynamic-
option
s
"
).
html
(
html
);
$
(
"
.iena-dynamic-
activitie
s
"
).
html
(
html
);
registerActivityFilter
();
checkAllActivitiesFilter
();
}
...
...
@@ -530,16 +533,16 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
//On va recharger dynamiquement les options donc on doit recréer les événements à chaque fois qu'on change de section
function
registerActivityFilter
(){
$
(
"
input[type='checkbox'].justone
"
).
on
(
'
click
'
,
function
(
e
){
$
(
"
input[type='checkbox'].justone
-activity
"
).
on
(
'
click
'
,
function
(
e
){
e
.
stopPropagation
();
var
a
=
$
(
"
input[type='checkbox'].justone
"
);
var
a
=
$
(
"
input[type='checkbox'].justone
-activity
"
);
if
(
a
.
length
==
a
.
filter
(
"
:checked
"
).
length
){
$
(
'
.selectall
'
).
prop
(
'
checked
'
,
true
);
$
(
'
.selectall
activities
'
).
prop
(
'
checked
'
,
true
);
$
(
"
.select-text
"
).
html
(
'
Deselect
'
);
}
else
{
$
(
'
.selectall
'
).
prop
(
'
checked
'
,
false
);
$
(
'
.selectall
activities
'
).
prop
(
'
checked
'
,
false
);
$
(
"
.select-text
"
).
html
(
'
Select
'
);
}
displayTotalActivitiesFilter
();
...
...
@@ -571,14 +574,14 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
function
initActivityFilter
(){
if
(
localStorage
.
activities
){
var
checkedActivities
=
JSON
.
parse
(
localStorage
.
activities
);
var
activities
=
$
(
"
input[type='checkbox'].justone
"
);
if
(
$
(
"
input[type='checkbox'].justone[value=
"
+
checkedActivities
[
0
]
+
"
]
"
).
length
>
0
){
var
activities
=
$
(
"
input[type='checkbox'].justone
-activity
"
);
if
(
$
(
"
input[type='checkbox'].justone
-activity
[value=
"
+
checkedActivities
[
0
]
+
"
]
"
).
length
>
0
){
if
(
activities
.
length
===
checkedActivities
.
length
){
$
(
"
.selectall
"
).
prop
(
"
checked
"
,
true
);
$
(
"
input[type='checkbox'].justone
"
).
prop
(
"
checked
"
,
true
);
$
(
"
.selectall
activities
"
).
prop
(
"
checked
"
,
true
);
$
(
"
input[type='checkbox'].justone
-activity
"
).
prop
(
"
checked
"
,
true
);
}
else
{
$
(
"
.selectall
"
).
prop
(
"
checked
"
,
false
);
$
(
"
.selectall
activities
"
).
prop
(
"
checked
"
,
false
);
for
(
var
i
=
0
;
i
<
activities
.
length
;
i
++
){
if
(
checkedActivities
.
includes
(
activities
[
i
].
value
)){
activities
[
i
].
checked
=
true
;
...
...
@@ -598,11 +601,60 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
//Coche toutes les activités quand on change de section
function
checkAllActivitiesFilter
(){
$
(
'
.selectall
'
).
prop
(
'
checked
'
,
true
);
$
(
'
.selectall
activities
'
).
prop
(
'
checked
'
,
true
);
$
(
'
.option
'
).
prop
(
'
checked
'
,
true
);
displayTotalActivitiesFilter
();
$
(
"
.select-text
"
).
html
(
'
Deselect
'
);
}
function
registerGroupFilter
(){
$
(
"
input[type='checkbox'].justone-group
"
).
on
(
'
click
'
,
function
(
e
){
e
.
stopPropagation
();
var
a
=
$
(
"
input[type='checkbox'].justone-group
"
);
if
(
a
.
length
==
a
.
filter
(
"
:checked
"
).
length
){
$
(
'
.selectallgroups
'
).
prop
(
'
checked
'
,
true
);
$
(
"
.select-text
"
).
html
(
'
Deselect
'
);
}
else
{
$
(
'
.selectallgroups
'
).
prop
(
'
checked
'
,
false
);
$
(
"
.select-text
"
).
html
(
'
Select
'
);
}
//displayTotalActivitiesFilter();
//displayActivities();
});
}
function
initGroupFilter
(){
if
(
localStorage
.
groups
){
var
checkedGroups
=
JSON
.
parse
(
localStorage
.
groups
);
var
groups
=
$
(
"
input[type='checkbox'].justone-group
"
);
if
(
$
(
"
input[type='checkbox'].justone-group[value=
"
+
checkedGroups
[
0
]
+
"
]
"
).
length
>
0
){
if
(
groups
.
length
===
checkedGroups
.
length
){
$
(
"
.selectallgroups
"
).
prop
(
"
checked
"
,
true
);
$
(
"
input[type='checkbox'].justone-group
"
).
prop
(
"
checked
"
,
true
);
}
else
{
$
(
"
.selectallgroups
"
).
prop
(
"
checked
"
,
false
);
for
(
var
i
=
0
;
i
<
groups
.
length
;
i
++
){
if
(
checkedGroups
.
includes
(
groups
[
i
].
value
)){
groups
[
i
].
checked
=
true
;
}
else
{
groups
[
i
].
checked
=
false
;
}
}
}
}
}
//displayTotalActivitiesFilter();
//displayActivities();
}
});
This diff is collapsed.
Click to expand it.
lib.php
+
0
−
1
View file @
47dc0d45
...
...
@@ -312,7 +312,6 @@ class format_iena extends format_topics {
* @return null|moodle_url
*/
public
function
get_view_url
(
$section
,
$options
=
array
())
{
var_dump
(
"on récupère l'url"
);
global
$CFG
;
$course
=
$this
->
get_course
();
$url
=
new
moodle_url
(
'/course/view.php'
,
array
(
'id'
=>
$course
->
id
));
...
...
This diff is collapsed.
Click to expand it.
suivi_unit.php
+
33
−
37
View file @
47dc0d45
...
...
@@ -56,7 +56,7 @@ function init_page($course) {
}
function
get_groups
(
$context
,
$activegroupid
,
$groups
)
{
function
get_groups
(
$context
,
$activegroupid
s
,
$groups
)
{
global
$USER
,
$COURSE
;
// Groupe du GET provenant du sélecteur de la page du cours
// ou premier groupe de l'utilisateur, ou groupe 0 (tous les groupes).
...
...
@@ -66,14 +66,16 @@ function get_groups($context, $activegroupid, $groups) {
$currentusergroups
=
[];
$othergroups
=
[];
// Si pas de groupe dans le get ou groupe 0 (tous) mais pas le droit => premier groupe existant du user ou groupe 0 (tous).
if
(
$activegroupid
==
null
||
(
$activegroupid
==
0
&&
/*if ($activegroupid == null || ($activegroupid == 0 &&
!has_capability('course/iena:suivi_edit', $context, $USER->id)) ) {
if ( count($currentusergroupsids) == 0 ) {
$activegroupid = 0;
} else {
$activegroupid = $currentusergroupsids[0];
}
}
}*/
// Groupes du cours avec id, nom et liste des id utilisateur de tous les
// membres (3 clefs d'un tableau de groupes : id, name, member).
...
...
@@ -81,10 +83,10 @@ function get_groups($context, $activegroupid, $groups) {
foreach
(
$groups
as
$group
)
{
// Récupération du nom du group actif au passage.
if
(
$group
->
id
==
$activegroupid
)
{
/*
if ( $group->id == $activegroupid ) {
$activegroupname = $group->name;
$group->selected = 'selected';
}
}
*/
if
(
in_array
(
$group
->
id
,
$currentusergroupsids
))
{
$currentusergroups
[]
=
$group
;
}
else
{
...
...
@@ -101,7 +103,7 @@ function get_groups($context, $activegroupid, $groups) {
// Formate l'achèvement d'activités pour le tableau de suivi. Pour chaque étudiant, on aura
// dans le bon ordre la liste des modules et le completionstate.
function
format_progress
(
$progress
,
$modules
,
$groups
,
$activegroupid
,
$activesectionid
)
{
function
format_progress
(
$progress
,
$modules
,
$groups
,
$activegroupid
s
,
$activesectionid
)
{
global
$CFG
,
$COURSE
;
$students
=
array
();
foreach
(
$progress
as
$proginfo
)
{
...
...
@@ -333,10 +335,10 @@ if (!has_capability('course/iena:suivi', $context = context_course::instance($co
exit
;
}
if
(
isset
(
$_
GE
T
[
'groupid'
]))
{
$activegroupid
=
$_
GE
T
[
'groupid'
];
if
(
isset
(
$_
POS
T
[
'groupid
s
'
]))
{
$activegroupid
s
=
$_
POS
T
[
'groupid
s
'
];
}
else
{
$activegroupid
=
0
;
$activegroupid
s
=
[
0
]
;
}
/*$progressrequest = $completion->get_progress_all(
...
...
@@ -352,20 +354,25 @@ if (isset($_GET['groupid'])) {
*/
$cache
=
cache
::
make
(
'format_iena'
,
'students'
);
if
(
$cache
->
get
(
$activegroupid
)
!==
false
){
$progress
=
$cache
->
get
(
$activegroupid
);
if
(
$cache
->
get
(
$activegroupid
s
)
!==
false
){
$progress
=
$cache
->
get
(
$activegroupid
s
);
}
else
{
$progressrequest
=
$completion
->
get_progress_all
(
''
,
array
(),
$activegroupid
,
'u.lastname ASC, u.firstname ASC'
,
''
,
''
,
$context
);
$progress
=
$cache
->
set
(
$activegroupid
,
$progressrequest
);
$arrayprogressgroups
=
array
();
//for($i=0; $i<count($activegroupids); $i++){
$progressrequest
=
$completion
->
get_progress_all
(
''
,
array
(),
0
,
'u.lastname ASC, u.firstname ASC'
,
''
,
''
,
$context
);
//array_push($arrayprogressgroups, $progressrequest);
//}
$progress
=
$cache
->
set
(
$activegroupids
,
$progressrequest
);
}
...
...
@@ -452,30 +459,19 @@ if (isset($_POST['action']) && $_POST['action'] == "details") {
else
if
(
isset
(
$_POST
[
'action'
])
&&
!
empty
(
$_POST
[
'action'
]))
{
// Si on change les filtres.
$data
=
[];
$progress
=
$cache
->
get
(
$activegroupid
);
$progress
=
$cache
->
get
(
$activegroupid
s
);
$modules
=
get_activities
(
$completion
,
$activesectionid
);
$data
=
set_data
(
$data
,
$modules
,
$progress
,
$groups
,
$activegroupid
,
$activesectionid
,
$listoptions
);
$data
=
set_data
(
$data
,
$modules
,
$progress
,
$groups
,
$activegroupid
s
,
$activesectionid
,
$listoptions
);
echo
json_encode
(
$data
);
}
else
{
//Si on cherche les détails d'une activité
init_page
(
$course
,
$PAGE
);
echo
$OUTPUT
->
header
();
/*$progress = $completion->get_progress_all(
'',
array(),
0,
'u.lastname ASC, u.firstname ASC',
'',
'',
$context
);
$result = $cache->set('key', $progress);*/
$progress
=
$cache
->
get
(
$activegroupid
);
$progress
=
$cache
->
get
(
$activegroupids
);
$data
=
[];
//Si la complétion du cours n'est pas activée on redirige l'enseignant vers l'interface pour l'activer
if
(
!
$COURSE
->
enablecompletion
){
...
...
@@ -490,7 +486,7 @@ else if (isset($_POST['action']) && !empty($_POST['action'])) {
$modules
=
get_activities
(
$completion
,
$activesectionid
);
//Répartit les groupes en "mes groupes" et "les groupes dont je ne fais pas partie"
$groupsall
=
get_groups
(
$context
,
$activegroupid
,
$groups
);
$groupsall
=
get_groups
(
$context
,
$activegroupid
s
,
$groups
);
if
(
isset
(
$groupsall
->
current_user_groups
)
&&
!
empty
(
$groupsall
->
current_user_groups
))
{
$currentusergroups
=
$groupsall
->
current_user_groups
;
...
...
@@ -499,7 +495,7 @@ else if (isset($_POST['action']) && !empty($_POST['action'])) {
$sections
=
get_sections
(
$activesectionid
);
$data
=
set_filters
(
$data
,
$filters
,
$symbols
,
$sections
,
array_values
(
$groups
),
$groupsall
->
current_user_groups
,
$groupsall
->
othergroups
,
$activesectionid
);
$data
=
set_data
(
$data
,
$modules
,
$progress
,
$groups
,
$activegroupid
,
$activesectionid
,
$listoptions
);
$data
=
set_data
(
$data
,
$modules
,
$progress
,
$groups
,
$activegroupid
s
,
$activesectionid
,
$listoptions
);
if
(
isset
(
$_GET
[
"msg_success"
]))
{
$msg
=
$_GET
[
"msg_success"
];
...
...
This diff is collapsed.
Click to expand it.
templates/suivi.mustache
+
45
−
11
View file @
47dc0d45
...
...
@@ -55,16 +55,17 @@
<button
class=
"btn btn-default dropdown-toggle"
type=
"button"
data-toggle=
"dropdown"
><span
class=
"dropdown-text"
>
{{#
str
}}
allActivities, format_iena
{{/
str
}}
</span>
<span
class=
"caret"
></span></button>
<ul
class=
"dropdown-menu dropdown-menu-form"
id=
"iena-activities-dropdown"
>
<li><label
class=
"checkbox"
><input
type=
"checkbox"
class=
"selectall"
checked
value=
'all'
>
Toutes les activités
</label></li>
<li
class=
"divider"
></li>
<ul
class=
"iena-dynamic-options"
>
{{#
modules
}}
{{#
visible
}}
<li><label
class=
"checkbox"
><input
type=
"checkbox"
name=
"options[]"
value=
{{
id
}}
class=
"option justone"
>
{{
displayname
}}
</label></li>
{{/
visible
}}
{{/
modules
}}
<li><label
class=
"checkbox"
>
<input
type=
"checkbox"
class=
"selectallactivities"
checked
value=
'all'
>
Toutes les activités
</label></li>
<li
class=
"divider"
></li>
<ul
class=
"iena-dynamic-activities"
>
{{#
modules
}}
{{#
visible
}}
<li><label
class=
"checkbox"
><input
type=
"checkbox"
name=
"options[]"
value=
{{
id
}}
class=
"option justone-activity"
>
{{
displayname
}}
</label></li>
{{/
visible
}}
{{/
modules
}}
</ul>
</ul>
</ul>
</div>
</div>
...
...
@@ -74,7 +75,39 @@
<div
class=
"input-group-prepend"
>
<div
class=
"input-group-text"
>
Groupes
</div>
</div>
<select
class=
"custom-select mr-sm-2"
id=
"group-select"
name=
"groupid"
>
<div
class=
"dropdown mr-sm-2 iena-custom-dropdown"
id=
"group-select"
name=
"groupid"
>
<button
class=
"btn btn-default dropdown-toggle"
type=
"button"
data-toggle=
"dropdown"
>
<span
class=
"dropdown-text"
>
Tous les groupes
</span>
<span
class=
"caret"
></span></button>
<ul
class=
"dropdown-menu dropdown-menu-form"
id=
"iena-group-dropdown"
>
<li>
<label
class=
"checkbox"
>
<input
type=
"checkbox"
class=
"selectallgroups"
checked
value=
'0'
{{
default_group
}}
>
Tous les groupes
</label>
</li>
<li
class=
"divider"
></li>
<optgroup
label=
"Mes groupes"
>
</optgroup>
<ul
class=
"iena-dynamic-options"
>
{{#
current_user_groups
}}
<li><label
class=
"checkbox"
><input
type=
"checkbox"
name=
"groupoptions[]"
value=
{{
id
}}
class=
"groupe-option justone-group"
>
{{
name
}}
</label></li>
{{/
current_user_groups
}}
</ul>
<optgroup
label=
"Autres groupes"
>
</optgroup>
{{#
othergroups
}}
<li><label
class=
"checkbox"
><input
type=
"checkbox"
name=
"groupoptions[]"
value=
{{
id
}}
class=
"groupe-option justone-group"
>
{{
name
}}
</label></li>
{{/
othergroups
}}
</ul>
</div>
<!--<select class="custom-select mr-sm-2" id="group-select" name="groupid">
<option value="0"
{{
default_group
}}
>Tous</option>
...
...
@@ -93,7 +126,8 @@
</select>
</select>-->
</div>
<label
class=
"sr-only"
for=
"filter-select"
>
Filtre %
</label>
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment