сделать список материалов для урока, если он заполнен, то показывать его, вместо списка из расписания

remotes/origin/feature/live-lesson-materials-25-04-19
gzbender 7 years ago
parent b73e7a1a77
commit 684388cf8c
  1. 2
      api/v1/serializers/school.py
  2. 18
      apps/school/migrations/0022_livelesson_materials.py
  3. 1
      apps/school/models.py
  4. 4
      apps/school/templates/blocks/schedule_item.html
  5. 21
      web/src/components/CourseRedactor.vue
  6. 2
      web/src/js/modules/api.js
  7. 1
      web/src/sass/_common.sass

@ -141,6 +141,7 @@ class LiveLessonCreateSerializer(DispatchContentMixin, serializers.ModelSerializ
'cover',
'content',
'live',
'materials',
'created_at',
'update_at',
'deactivated_at',
@ -188,6 +189,7 @@ class LiveLessonSerializer(serializers.ModelSerializer):
'cover',
'content',
'live',
'materials',
'created_at',
'update_at',
'deactivated_at',

@ -0,0 +1,18 @@
# Generated by Django 2.0.7 on 2019-04-24 14:41
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('school', '0021_schoolschedule_trial_lesson'),
]
operations = [
migrations.AddField(
model_name='livelesson',
name='materials',
field=models.TextField(blank=True, default='', verbose_name='Материалы'),
),
]

@ -117,6 +117,7 @@ class LiveLesson(BaseModel, DeactivatedMixin):
short_description = models.TextField('Краткое описание урока', default='', blank=True)
stream = models.URLField('Ссылка на VIMEO', default='', blank=True)
date = models.DateField(default=now, unique=True)
materials = models.TextField('Материалы', blank=True, default='')
cover = models.ForeignKey(
ImageObject,
related_name='livelesson_covers',

@ -68,12 +68,12 @@
{% if print %}
<div class="timing__col" style="flex: 0 0 100%;">
<div class="timing__text">
{{ school_schedule.materials }}
{{ live_lesson.materials|default:school_schedule.materials|safe }}
</div>
</div>
{% else %}
<div class="timing__text">
{{ school_schedule.materials }}
{{ live_lesson.materials|default:school_schedule.materials|safe }}
</div>
{% endif %}
</div>

@ -60,13 +60,12 @@
</div>
</div>
<!-- <div v-if="live" class="info__field field"
v-bind:class="{ error: ($v.course.date.$dirty || showErrors) && $v.course.date.$invalid }">
<div class="field__label">ДАТА</div>
<div v-if="live" class="info__field field">
<div class="field__label field__label_gray">МАТЕРИАЛЫ</div>
<div class="field__wrap">
<lil-select :value.sync="course.date" :options="scheduleOptions" placeholder="Выберите дату"/>
<vue-redactor :value.sync="course.materials" placeholder="Добавить материалы для урока"/>
</div>
</div> -->
</div>
<div v-if="!live" class="info__field field">
<div class="field__label field__label_gray">ДОСТУП</div>
@ -178,15 +177,11 @@
Уроки
</button>
</div>
<div v-if="viewSection === 'course'" class="kit__body">
<block-content :content.sync="course.content" name="course-content"></block-content>
<!--<div class="kit__foot">
<button type="submit" class="kit__submit btn btn_md" v-bind:class="{ loading: courseSaving }">
Сохранить
</button>
</div>-->
</div>
<div v-if="viewSection === 'lessons'" class="kit__body">
<div class="lessons__title title">Содержание курса</div>
<div v-if="!lessonsLoading" class="lessons__list">
@ -299,6 +294,7 @@
stream: '',
time: null,
short_description: '',
materials: '',
content: [],
gallery: {
images: [],
@ -667,9 +663,6 @@
});
return request;
},
loadLessons(courseId) {
},
onCoursePublish() {
if(this.validate()) {

@ -121,6 +121,7 @@ export const api = {
gallery_images: courseObject.gallery && courseObject.gallery.images || []
},
content: api.convertContentJson(courseObject.content, true),
materials: courseObject.materials,
};
if(courseObject.live) {
@ -200,6 +201,7 @@ export const api = {
coverImage: courseJSON.cover && courseJSON.cover.image ? courseJSON.cover.image : null,
content: api.convertContentJson(courseJSON.content),
gallery: {images: (courseJSON.gallery) ? courseJSON.gallery.gallery_images:[]},
materials: courseJSON.materials,
}
},
convertGalleryImagesJson: (images) => {

@ -3593,7 +3593,6 @@ a.grey-link
flex-grow: 1
&__wrap
max-width: 349px
height: 600px
padding: 10px 40px 30px 30px
+t
max-width: 100%

Loading…
Cancel
Save