Index: lams_gradebook/web/releaseLessonMarks.jsp
===================================================================
diff -u -r67eb08b1f83112e23be227fbf6923a46d0dc95ba -ra8e04b385dbb553c581bd705426a86ab92e85f9a
--- lams_gradebook/web/releaseLessonMarks.jsp (.../releaseLessonMarks.jsp) (revision 67eb08b1f83112e23be227fbf6923a46d0dc95ba)
+++ lams_gradebook/web/releaseLessonMarks.jsp (.../releaseLessonMarks.jsp) (revision a8e04b385dbb553c581bd705426a86ab92e85f9a)
@@ -47,7 +47,7 @@
{name:'name',index:'name', sortable: false, sorttype: 'text'}
],
rowList:[10,20,30,40,50,100],
- rowNum:10,
+ rowNum:1,
pager: true,
sortname: 'name',
multiselect: true,
@@ -79,8 +79,94 @@
});
}
return false;
- }
- });
+ },
+ onSelectRow : function(id, status, event) {
+ var grid = $(this),
+ included = grid.data('included'),
+ excluded = grid.data('excluded'),
+ selectAllChecked = grid.closest('.ui-jqgrid-view').find('.jqgh_cbox .cbox').prop('checked');
+ if (selectAllChecked) {
+ var index = excluded.indexOf(+id);
+ // if row is deselected, add it to excluded array
+ if (index < 0) {
+ if (!status) {
+ excluded.push(+id);
+ }
+ } else if (status) {
+ excluded.splice(index, 1);
+ }
+ } else {
+ var index = included.indexOf(+id);
+ // if row is selected, add it to included array
+ if (index < 0) {
+ if (status) {
+ included.push(+id);
+ }
+ } else if (!status) {
+ included.splice(index, 1);
+ }
+ }
+ },
+ gridComplete : function(){
+ let grid = $(this),
+ included = grid.data('included'),
+ // cell containing "(de)select all" button
+ selectAllCell = grid.closest('.ui-jqgrid-view').find('.jqgh_cbox > div');
+ // remove the default button provided by jqGrid
+ $('.cbox', selectAllCell).remove();
+ // create own button which follows own rules
+ var selectAllCheckbox = $('')
+ .prop('checked', included === null)
+ .prependTo(selectAllCell)
+ .change(function(){
+ // start with deselecting everyone on current page
+ grid.resetSelection();
+ if ($(this).prop('checked')){
+ // on select all change mode and select all on current page
+ grid.data('included', null);
+ grid.data('excluded', []);
+ $('[role="row"]', grid).each(function(){
+ grid.jqGrid('setSelection', +$(this).attr('id'), false);
+ });
+ } else {
+ // on deselect all just change mode
+ grid.data('excluded', null);
+ grid.data('included', []);
+ }
+ });
+
+ grid.resetSelection();
+ if (selectAllCheckbox.prop('checked')) {
+ var excluded = grid.data('excluded');
+ // go through each loaded row
+ $('[role="row"]', grid).each(function(){
+ var id = +$(this).attr('id'),
+ selected = $(this).hasClass('success');
+ // if row is not selected and is not excluded, select it
+ if (!selected && (!excluded || !excluded.includes(id))) {
+ // select without triggering onSelectRow
+ grid.jqGrid('setSelection', id, false);
+ }
+ });
+ } else {
+ // go through each loaded row
+ $('[role="row"]', grid).each(function(){
+ var id = +$(this).attr('id'),
+ selected = $(this).hasClass('success');
+ // if row is not selected and is included, select it
+ if (!selected && included.includes(id)) {
+ // select without triggering onSelectRow
+ grid.jqGrid('setSelection', id, false);
+ }
+ });
+ }
+
+ // empty email preview on grid page change
+ $('#release-marks-email-preview').slideUp(function(){
+ $('#release-marks-email-preview-content', this).empty();
+ });
+ }}).data({'included' : null,
+ 'excluded' : []});
});
function toggleMarksRelease() {
@@ -116,10 +202,16 @@
}
function sendReleaseMarksEmails(){
+ let grid = $("#release-marks-learner-list"),
+ includedLearners = grid.data('included'),
+ excludedLearners = grid.data('excluded');
+
$.ajax({
'url' : 'gradebook/gradebookMonitoring/sendReleaseMarksEmails.do',
'data' : {
- 'lessonID' : releaseMarksLessonID
+ 'lessonID' : releaseMarksLessonID,
+ 'includedLearners' : includedLearners === null ? null : JSON.stringify(includedLearners),
+ 'excludedLearners' : excludedLearners === null ? null : JSON.stringify(excludedLearners)
},
'dataType' : 'text',
'cache' : false,