From dae90676e9349bcb84db1ef5e17800ce5c9e80c1 Mon Sep 17 00:00:00 2001 From: Vitaly Baev Date: Sun, 28 Jan 2018 20:37:49 +0300 Subject: [PATCH] =?UTF-8?q?LIL-95=20-=20=D0=92=D0=BE=D0=B7=D0=BC=D0=BE?= =?UTF-8?q?=D0=B6=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=BF=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BB=D0=B0=D0=B9=D0=BA=20?= =?UTF-8?q?=D0=BA=D1=83=D1=80=D1=81=D1=83=20(=D1=84=D1=80=D0=BE=D0=BD?= =?UTF-8?q?=D1=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/course/templates/course/_items.html | 6 ++--- web/build/js/app.js | 31 ++++++++++++++++++++++ web/src/js/modules/courses.js | 33 ++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 3 deletions(-) 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) {