diff --git a/apps/course/templates/course/_items.html b/apps/course/templates/course/_items.html index 1927dfde..a251747a 100644 --- a/apps/course/templates/course/_items.html +++ b/apps/course/templates/course/_items.html @@ -25,14 +25,14 @@
{{ course.author.first_name }} {{ course.author.last_name }}
{{ course.created_at_humanize }}
- + diff --git a/web/build/js/app.js b/web/build/js/app.js index c881e6ba..23132806 100755 --- a/web/build/js/app.js +++ b/web/build/js/app.js @@ -11492,6 +11492,37 @@ var history = (0, _createBrowserHistory2.default)(); history.replace((0, _jquery2.default)(this).attr('data-category-url')); load_courses((0, _jquery2.default)(this).attr('data-category-url'), true); }); + + // Обработчик лайков + (0, _jquery2.default)('.courses').on('click', 'a[data-course-likes]', function (e) { + e.preventDefault(); + + var likedCourseElement = (0, _jquery2.default)(this); + likedCourseElement.toggleClass('active'); + var courseID = (0, _jquery2.default)(this).attr('data-course-id'); + var isLiked = (0, _jquery2.default)(this).attr('data-course-liked'); + var likesCount = parseInt((0, _jquery2.default)(this).attr('data-course-likes-count')); + isLiked = !isLiked; + likesCount = isLiked ? likesCount + 1 : likesCount - 1; + likedCourseElement.children('.likes__counter').text(likesCount); + + _jquery2.default.ajax('/course/' + courseID + '/like', { + method: 'POST' + }).done(function (data) { + if (data.success === true) { + (0, _jquery2.default)(this).children('.likes__counter').text(data.likes_count); + } + }).fail(function (xhr) { + isLiked = !isLiked; + likesCount = isLiked ? likesCount + 1 : likesCount - 1; + likedCourseElement.children('.likes__counter').text(likesCount); + if (isLiked) { + likedCourseElement.addClass('active'); + } else { + likedCourseElement.removeClass('active'); + } + }); + }); }); function load_courses(coursesUrl, fromStart) { diff --git a/web/src/js/modules/courses.js b/web/src/js/modules/courses.js index 7e0d0e14..d11c537f 100644 --- a/web/src/js/modules/courses.js +++ b/web/src/js/modules/courses.js @@ -16,6 +16,39 @@ $(document).ready(function () { history.replace($(this).attr('data-category-url')); load_courses($(this).attr('data-category-url'), true); }); + + // Обработчик лайков + $('.courses').on('click', 'a[data-course-likes]', function (e) { + e.preventDefault(); + + const likedCourseElement = $(this); + likedCourseElement.toggleClass('active'); + const courseID = $(this).attr('data-course-id'); + let isLiked = $(this).attr('data-course-liked'); + let likesCount = parseInt($(this).attr('data-course-likes-count')); + isLiked = !isLiked; + likesCount = isLiked ? likesCount + 1 : likesCount - 1; + likedCourseElement.children('.likes__counter').text(likesCount); + + $.ajax(`/course/${courseID}/like`, { + method: 'POST' + }) + .done(function (data) { + if (data.success === true) { + $(this).children('.likes__counter').text(data.likes_count); + } + }) + .fail(function (xhr) { + isLiked = !isLiked; + likesCount = isLiked ? likesCount + 1 : likesCount - 1; + likedCourseElement.children('.likes__counter').text(likesCount); + if (isLiked) { + likedCourseElement.addClass('active'); + } else { + likedCourseElement.removeClass('active'); + } + }); + }) }); function load_courses(coursesUrl, fromStart) {