diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php index 04c2b075a3a49e4dc010776ea911e35f452dced9..31658b44f1a397ac36b69f09d57b1db769edcd40 100644 --- a/app/controllers/admin/courses.php +++ b/app/controllers/admin/courses.php @@ -643,7 +643,9 @@ class Admin_CoursesController extends AuthenticatedController $d['contents'] .= '</ul></div>'; } if (in_array('last_activity', $activated_fields)) { - $d['last_activity'] = strftime('%x', lastActivity($course->id)); + $last_activity = lastActivity($course->id); + $d['last_activity'] = strftime('%x', $last_activity); + $d['last_activity_raw'] = $last_activity; } foreach (PluginManager::getInstance()->getPlugins('AdminCourseContents') as $plugin) { diff --git a/resources/vue/components/AdminCourses.vue b/resources/vue/components/AdminCourses.vue index 3b7a29cfe05e9a8642c021a00896a7a19f49024b..a0f928c370fd6f5cb457d046c04023bade05ad36 100644 --- a/resources/vue/components/AdminCourses.vue +++ b/resources/vue/components/AdminCourses.vue @@ -246,18 +246,22 @@ export default { return collator.compare(striptags(a[sortby]), striptags(b[sortby])); }; - let is_numeric = true; - for (let i in array) { - if (striptags(array[i][sortby]) && isNaN(striptags(array[i][sortby]))) { - is_numeric = false; - break; + if (sortby === 'last_activity') { + sortFunction = (a, b) => a.last_activity_raw - b.last_activity_raw; + } else { + let is_numeric = true; + for (let i in array) { + if (striptags(array[i][sortby]) && isNaN(striptags(array[i][sortby]))) { + is_numeric = false; + break; + } + } + if (is_numeric) { + sortFunction = function (a, b) { + return (striptags(a[sortby]) ? parseInt(striptags(a[sortby]), 10) : 0) + - (striptags(b[sortby]) ? parseInt(striptags(b[sortby]), 10) : 0); + }; } - } - if (is_numeric) { - sortFunction = function (a, b) { - return (striptags(a[sortby]) ? parseInt(striptags(a[sortby]), 10) : 0) - - (striptags(b[sortby]) ? parseInt(striptags(b[sortby]), 10) : 0); - }; } // Actual sort on copy of array