diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php index 20133cd67b8b4f85fc219684eb35dec1c48c4e30..be355cf6798ccd8a02f41d125cdc7680eac6bc19 100644 --- a/app/controllers/admin/courses.php +++ b/app/controllers/admin/courses.php @@ -636,7 +636,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 eb8defcf37c3038e913a2acf164e5fd44136fd98..9c6e28c84b09f9a090db32ddf8a0c7d9f057a265 100644 --- a/resources/vue/components/AdminCourses.vue +++ b/resources/vue/components/AdminCourses.vue @@ -233,18 +233,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