diff --git a/apps/course/templates/course/content/imagetext.html b/apps/course/templates/course/content/imagetext.html index 62ec511b..6385391e 100644 --- a/apps/course/templates/course/content/imagetext.html +++ b/apps/course/templates/course/content/imagetext.html @@ -4,7 +4,11 @@
-
+
+
+ +
+
{{ content.txt | safe }}
diff --git a/apps/course/templates/course/course.html b/apps/course/templates/course/course.html index 630aeb61..f5ba90af 100644 --- a/apps/course/templates/course/course.html +++ b/apps/course/templates/course/course.html @@ -9,7 +9,7 @@ {% block ogtitle %}{{ course.title }} - {{ block.super }}{% endblock ogtitle %} {% block ogurl %}{{ request.build_absolute_uri }}{% endblock ogurl %} {% if course.cover and course.cover.image %} -{% block ogimage %}http://{{request.META.HTTP_HOST}}{{ course.cover.image.url }}{% endblock ogimage %} +{% block ogimage %}http://{{request.META.HTTP_HOST}}{% if course.cover %}{{ course.cover.image.url }}{% else %}{% static 'img/og_courses.jpg' %}{% endif %}{% endblock ogimage %} {% endif %} {% block ogdescription %}{{ course.short_description }}{% endblock ogdescription %} @@ -141,37 +141,45 @@
Описание курса {% if request.user.is_authenticated %} - {% if course.author == request.user and request.user.role >= request.user.AUTHOR_ROLE %} - УРОКИ - - {% elif request.user.role == request.user.ADMIN_ROLE %} - УРОКИ - + {% if course.author == request.user and request.user.role >= request.user.AUTHOR_ROLE %} + УРОКИ + + {% elif request.user.role == request.user.ADMIN_ROLE %} + УРОКИ + + {% else %} + УРОКИ + {% if not paid %} + + + + {% endif %} + + {% endif %} {% else %} УРОКИ - {% if not paid %} + data-popup=".js-popup-auth">УРОКИ - {% endif %} {% endif %} - {% endif %}
{% if course.cover %} diff --git a/apps/course/templates/course/course_only_lessons.html b/apps/course/templates/course/course_only_lessons.html index 3ea64dba..a919e08f 100644 --- a/apps/course/templates/course/course_only_lessons.html +++ b/apps/course/templates/course/course_only_lessons.html @@ -9,7 +9,7 @@ {% block ogtitle %}{{ course.title }} - {{ block.super }}{% endblock ogtitle %} {% block ogurl %}{{ request.build_absolute_uri }}{% endblock ogurl %} {% if course.cover %} -{% block ogimage %}{{ request.build_absolute_uri }}{{ course.cover.url }}{% endblock ogimage %} +{% block ogimage %}http://{{request.META.HTTP_HOST}}{% if course.cover %}{{ course.cover.image.url }}{% else %}{% static 'img/og_courses.jpg' %}{% endif %}{% endblock ogimage %} {% endif %} {% block ogdescription %}{{ course.short_description }}{% endblock ogdescription %} @@ -184,10 +184,15 @@
{% if lesson.cover %}
- +
+ +
{% endif %} -
{{ lesson.short_description | safe }}
+
{{ lesson.short_description | truncatechars_html:800 | safe }}
+
+
+ Перейти к уроку
diff --git a/apps/course/templates/course/courses.html b/apps/course/templates/course/courses.html index 44ee9436..a3277174 100644 --- a/apps/course/templates/course/courses.html +++ b/apps/course/templates/course/courses.html @@ -2,6 +2,7 @@ {% load static %} {% load category_items from lilcity_category %} +{% block ogimage %}http://{{request.META.HTTP_HOST}}{% static 'img/og_courses.jpg' %}{% endblock ogimage %} {% block content %}
diff --git a/apps/course/templates/course/lesson.html b/apps/course/templates/course/lesson.html index 6c9511ae..662a4dd5 100644 --- a/apps/course/templates/course/lesson.html +++ b/apps/course/templates/course/lesson.html @@ -2,11 +2,12 @@ {% load static %} {% block title %}{{ lesson.title }} - {{ block.super }}{% endblock title %} +{% block ogimage %}http://{{request.META.HTTP_HOST}}{% if lesson.course.cover %}{{ lesson.course.cover.image.url }}{% else %}{% static 'img/og_courses.jpg' %}{% endif %}{% endblock ogimage %} {% block content %}
{{ lesson.title }}
@@ -32,7 +33,7 @@ {% if lesson.cover %} {% else %} - + {% endif %} diff --git a/apps/course/views.py b/apps/course/views.py index d4598354..8a54df71 100644 --- a/apps/course/views.py +++ b/apps/course/views.py @@ -286,7 +286,9 @@ class LessonView(DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['next'] = self.request.GET.get('next', None) - context['next_lesson'] = self.request.GET.get('next_lesson', None) + lessons = list(self.object.course.lessons.values_list('id', flat=True)) + index = lessons.index(self.object.id) + context['next_lesson'] = lessons[index + 1] if index < len(lessons) - 1 else None return context diff --git a/apps/payment/templates/payment/payment_success.html b/apps/payment/templates/payment/payment_success.html index 670678fa..d7821bf9 100644 --- a/apps/payment/templates/payment/payment_success.html +++ b/apps/payment/templates/payment/payment_success.html @@ -5,7 +5,7 @@ {% if school %}
Вы успешно приобрели доступ к урокам онлайн-школы!
{% else %}
Вы успешно приобрели курс!
diff --git a/apps/school/migrations/0017_auto_20180628_2000.py b/apps/school/migrations/0017_auto_20180628_2000.py new file mode 100644 index 00000000..d641cd5e --- /dev/null +++ b/apps/school/migrations/0017_auto_20180628_2000.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.5 on 2018-06-28 20:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('school', '0016_auto_20180429_0818'), + ] + + operations = [ + migrations.AlterField( + model_name='livelesson', + name='short_description', + field=models.TextField(blank=True, default='', verbose_name='Краткое описание урока'), + ), + ] diff --git a/apps/school/migrations/0018_auto_20180629_1501.py b/apps/school/migrations/0018_auto_20180629_1501.py new file mode 100644 index 00000000..0126d518 --- /dev/null +++ b/apps/school/migrations/0018_auto_20180629_1501.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.6 on 2018-06-29 15:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('school', '0017_auto_20180628_2000'), + ] + + operations = [ + migrations.AlterField( + model_name='livelesson', + name='title', + field=models.CharField(blank=True, default='', max_length=100, verbose_name='Название урока'), + ), + ] diff --git a/apps/school/models.py b/apps/school/models.py index 1e1c6df6..29ed8795 100644 --- a/apps/school/models.py +++ b/apps/school/models.py @@ -114,8 +114,8 @@ class SchoolScheduleImage(models.Model): class LiveLesson(BaseModel, DeactivatedMixin): - title = models.CharField('Название урока', max_length=100) - short_description = models.TextField('Краткое описание урока') + title = models.CharField('Название урока', max_length=100, default='', blank=True) + short_description = models.TextField('Краткое описание урока', default='', blank=True) stream = models.URLField('Ссылка на VIMEO', default='', blank=True) date = models.DateField(default=now, unique=True) cover = models.ForeignKey( @@ -157,5 +157,5 @@ class LiveLesson(BaseModel, DeactivatedMixin): return False else: start_at = school_schedule.start_at - end_at = datetime.combine(now().today(), start_at) + timedelta(hours=2) + end_at = datetime.combine(now().today(), start_at) + timedelta(hours=1) return start_at <= now().time() and end_at.time() >= now().time() diff --git a/apps/school/templates/blocks/_schedule_purchased_item.html b/apps/school/templates/blocks/_schedule_purchased_item.html index 8017a687..b9d1db1f 100644 --- a/apps/school/templates/blocks/_schedule_purchased_item.html +++ b/apps/school/templates/blocks/_schedule_purchased_item.html @@ -6,17 +6,17 @@ {{ school_schedule }}
{% if live_lesson %} - +
{{ live_lesson.date }}
{% endif %}
{{ school_schedule.start_at }} (МСК)
{% if school_schedule.weekday in school_schedules_purchased %} - {% if live_lesson and school_schedule.is_online or live_lesson and is_previous and live_lesson in live_lessons %} - {% include './open_lesson.html' %} - {% endif %} + {% if live_lesson and live_lesson.title %} + {% include './open_lesson.html' %} + {% endif %} {% else %} - {% include './day_pay_btn.html' %} + {% include './day_pay_btn.html' %} {% endif %}
{% comment %} @@ -36,12 +36,12 @@
-
{{ school_schedule.title }}{% if live_lesson %}, +
{{ school_schedule.title }}{% if live_lesson and live_lesson.title %}, {{ live_lesson.title }} {% endif %}
- {% if live_lesson %} + {% if live_lesson and live_lesson.short_description %} {{ live_lesson.short_description }} {% else %} {{ school_schedule.description }} diff --git a/apps/school/templates/blocks/schedule_purchased.html b/apps/school/templates/blocks/schedule_purchased.html index 03e98e92..7f8f035d 100644 --- a/apps/school/templates/blocks/schedule_purchased.html +++ b/apps/school/templates/blocks/schedule_purchased.html @@ -9,7 +9,6 @@
Подписка истекает {{ subscription_ends }}
- {% include './prolong_btn.html' %} {% else %}
Подписка истекла diff --git a/apps/school/templates/school/livelesson_detail.html b/apps/school/templates/school/livelesson_detail.html index 92ca42e1..1bcb3227 100644 --- a/apps/school/templates/school/livelesson_detail.html +++ b/apps/school/templates/school/livelesson_detail.html @@ -10,7 +10,7 @@
{{ livelesson.short_description }}
{% if livelesson.stream_index %} - Если видео не загрузилось обновите страницу diff --git a/apps/school/templates/school/summer_school.html b/apps/school/templates/school/summer_school.html index 133f8d8b..00da0bf8 100644 --- a/apps/school/templates/school/summer_school.html +++ b/apps/school/templates/school/summer_school.html @@ -1,5 +1,6 @@ {% extends "templates/lilcity/index.html" %} {% load static %} {% block title %}Онлайн-школа LilCity{% endblock title%} +{% block ogimage %}http://{{request.META.HTTP_HOST}}{% static 'img/og_summer_school.jpg' %}{% endblock %} {% block content %} {% if not is_purchased %} {% include "../summer/promo.html" %} diff --git a/apps/school/templates/summer/_schedule_purchased_item.html b/apps/school/templates/summer/_schedule_purchased_item.html index 8017a687..b9d1db1f 100644 --- a/apps/school/templates/summer/_schedule_purchased_item.html +++ b/apps/school/templates/summer/_schedule_purchased_item.html @@ -6,17 +6,17 @@ {{ school_schedule }}
{% if live_lesson %} - +
{{ live_lesson.date }}
{% endif %}
{{ school_schedule.start_at }} (МСК)
{% if school_schedule.weekday in school_schedules_purchased %} - {% if live_lesson and school_schedule.is_online or live_lesson and is_previous and live_lesson in live_lessons %} - {% include './open_lesson.html' %} - {% endif %} + {% if live_lesson and live_lesson.title %} + {% include './open_lesson.html' %} + {% endif %} {% else %} - {% include './day_pay_btn.html' %} + {% include './day_pay_btn.html' %} {% endif %}
{% comment %} @@ -36,12 +36,12 @@
-
{{ school_schedule.title }}{% if live_lesson %}, +
{{ school_schedule.title }}{% if live_lesson and live_lesson.title %}, {{ live_lesson.title }} {% endif %}
- {% if live_lesson %} + {% if live_lesson and live_lesson.short_description %} {{ live_lesson.short_description }} {% else %} {{ school_schedule.description }} diff --git a/apps/school/templates/summer/schedule_purchased.html b/apps/school/templates/summer/schedule_purchased.html index 467be723..63e963fd 100644 --- a/apps/school/templates/summer/schedule_purchased.html +++ b/apps/school/templates/summer/schedule_purchased.html @@ -9,7 +9,6 @@
Подписка истекает {{ subscription_ends }}
- {% include './prolong_btn.html' %} {% else %}
Подписка истекла diff --git a/apps/user/templates/user/profile.html b/apps/user/templates/user/profile.html index cea0b4ee..caddc204 100644 --- a/apps/user/templates/user/profile.html +++ b/apps/user/templates/user/profile.html @@ -67,18 +67,18 @@
- + {% if not simple_user %} - {% endif %}
-
+
{% if is_purchased_future %}
@@ -127,7 +127,7 @@
{% if not simple_user %} -
+
{% if published.exists %} diff --git a/project/settings.py b/project/settings.py index fe902536..9323745c 100644 --- a/project/settings.py +++ b/project/settings.py @@ -55,6 +55,7 @@ INSTALLED_APPS = [ 'corsheaders', 'sorl.thumbnail', 'raven.contrib.django.raven_compat', + 'django_user_agents', ] + [ 'apps.auth.apps', 'apps.user', @@ -68,6 +69,7 @@ INSTALLED_APPS = [ MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', + 'django_user_agents.middleware.UserAgentMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', diff --git a/project/templates/blocks/about.html b/project/templates/blocks/about.html index 4caf08de..8deec906 100644 --- a/project/templates/blocks/about.html +++ b/project/templates/blocks/about.html @@ -44,21 +44,19 @@
diff --git a/project/templates/blocks/promo.html b/project/templates/blocks/promo.html index 8fa641f4..29cdd2b6 100644 --- a/project/templates/blocks/promo.html +++ b/project/templates/blocks/promo.html @@ -46,9 +46,13 @@
{% else %}
- Присоединяйтесь в Рисовальный лагерь + Урок Рисовальный лагерь, Альбрехт Дюрер завершен
+ Следующий урок пройдет 4 июля
{% endif %} diff --git a/project/templates/blocks/user_menu.html b/project/templates/blocks/user_menu.html index 54ebf6b6..13f4fbdf 100644 --- a/project/templates/blocks/user_menu.html +++ b/project/templates/blocks/user_menu.html @@ -1,7 +1,7 @@ {% load static %} {% load thumbnail %} {% if request.user.is_authenticated %}
-
ДАТА
-
+
-->
ДОСТУП
@@ -656,11 +656,11 @@ this.course = api.convertCourseJson(response.data); this.course.live = this.live; - if (this.live && this.course.date) { + /* if (this.live && this.course.date) { this.course.date = _.find(this.scheduleOptions, (item) => { return item.value == this.course.date; }) - } + } */ this.$nextTick(() => { this.courseLoading = false; @@ -841,11 +841,11 @@ this.course.id = courseData.id; } - if(this.live && courseData.date) { + /*if(this.live && courseData.date) { this.course.date = _.find(this.scheduleOptions, function(item){ return item.value == courseData.date; }); - } + }*/ this.$nextTick(() => { this.courseSyncHook = false; }); diff --git a/web/src/components/LessonRedactor.vue b/web/src/components/LessonRedactor.vue index 82faaadb..a0a245e2 100644 --- a/web/src/components/LessonRedactor.vue +++ b/web/src/components/LessonRedactor.vue @@ -14,16 +14,22 @@
{{ title }}
-
-
- -
-
-
-
- +
+ +
+
+
+ +
+
+
+
+ +
+
@@ -81,6 +87,7 @@ import BlockImages from './blocks/BlockImages' import BlockImageText from './blocks/BlockImageText' import BlockVideo from './blocks/BlockVideo' + import LilImage from "./blocks/Image" import {api} from "../js/modules/api"; import Draggable from 'vuedraggable'; import _ from 'lodash' @@ -105,7 +112,13 @@ if (blockToRemove.data.id) { api.removeContentBlock(blockToRemove, this.accessToken); } - } + }, + onUpdateCoverUrl(newValue) { + this.lesson.coverImage = newValue; + }, + onUpdateCoverId(newValue) { + this.lesson.coverImageId = newValue; + }, }, computed: { title() { @@ -120,10 +133,11 @@ 'block-images': BlockImages, 'block-video': BlockVideo, 'vue-draggable': Draggable, + 'lil-image': LilImage, } } \ No newline at end of file + diff --git a/web/src/img/og_blog.jpg b/web/src/img/og_blog.jpg new file mode 100644 index 00000000..cabead92 Binary files /dev/null and b/web/src/img/og_blog.jpg differ diff --git a/web/src/img/og_courses.jpg b/web/src/img/og_courses.jpg new file mode 100644 index 00000000..918718fe Binary files /dev/null and b/web/src/img/og_courses.jpg differ diff --git a/web/src/img/og_main.jpg b/web/src/img/og_main.jpg new file mode 100644 index 00000000..d9c04f59 Binary files /dev/null and b/web/src/img/og_main.jpg differ diff --git a/web/src/img/og_summer_school.jpg b/web/src/img/og_summer_school.jpg new file mode 100644 index 00000000..2adc8a7a Binary files /dev/null and b/web/src/img/og_summer_school.jpg differ diff --git a/web/src/js/modules/api.js b/web/src/js/modules/api.js index 59c98939..36dc5f99 100644 --- a/web/src/js/modules/api.js +++ b/web/src/js/modules/api.js @@ -204,6 +204,7 @@ export const api = { const isAdding = (!lessonObject.hasOwnProperty('id') || !lessonObject.hasOwnProperty('id')); const lessonJson = { + cover: lessonObject.coverImageId ? lessonObject.coverImageId : null, title: lessonObject.title, short_description: lessonObject.short_description, course: lessonObject.course_id, @@ -284,6 +285,8 @@ export const api = { id: lessonJSON.id, title: lessonJSON.title, short_description: lessonJSON.short_description, + coverImageId: lessonJSON.cover && lessonJSON.cover.id ? lessonJSON.cover.id : null, + coverImage: lessonJSON.cover && lessonJSON.cover.image ? lessonJSON.cover.image : null, content: api.convertContentResponse(lessonJSON.content) } }, diff --git a/web/src/sass/_common.sass b/web/src/sass/_common.sass index 096e0b1b..7e5a870a 100755 --- a/web/src/sass/_common.sass +++ b/web/src/sass/_common.sass @@ -2648,8 +2648,15 @@ a.grey-link flex: 0 0 140px +m display: none + &__pic-wrapper + width: 130px; + height: 130px; + border-radius: 50%; + overflow: hidden; &__pic - display: block + top: 50%; + position: relative; + transform: translateY(-50%); width: 100% &__content flex: 0 0 calc(100% - 165px) @@ -3061,8 +3068,6 @@ a.grey-link border-bottom: 1px solid $border align-items: center justify-content: center - +m - margin: 0 -15px 30px &__btn height: 56px border-bottom: 1px solid $border @@ -3072,7 +3077,8 @@ a.grey-link letter-spacing: 1px transition: border-color .2s, color .2s +m - flex: 0 0 50% + flex: 0 0 35% + font-size: 10px &:not(:last-child) margin-right: 40px +m