Тысячи шедевров уже созданы благодаря Lil School. Более 10000 работ можно - увидеть в Инстаграм
-
- Lil School — первая образовательная онлайн-платформа креативного мышления для детей
+ {{ contest.title }}
- Приглашаем вас на месяц открытых дверей в Lil School
+ {{ contest.description }}
{% for content in contest.content.all %}
{% with template="content/blocks/"|add:content.ctype|add:".html" %}
@@ -25,20 +27,21 @@
+
{% endblock content %}
+
+{% block foot %}
+{% endblock foot %}
diff --git a/apps/content/views.py b/apps/content/views.py
index f4335009..52c3d966 100644
--- a/apps/content/views.py
+++ b/apps/content/views.py
@@ -1,7 +1,7 @@
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404
from django.utils.decorators import method_decorator
-from django.views.generic import TemplateView
+from django.views.generic import TemplateView, DetailView
from apps.content.models import Contest
@@ -22,3 +22,9 @@ class ContestEditView(TemplateView):
context = super().get_context_data()
context['object'] = self.object
return context
+
+
+class ContestView(DetailView):
+ model = Contest
+ context_object_name = 'contest'
+ template_name = 'content/contest.html'
diff --git a/project/templates/blocks/lil_store_js.html b/project/templates/blocks/lil_store_js.html
index d7d6bb9e..e944a567 100644
--- a/project/templates/blocks/lil_store_js.html
+++ b/project/templates/blocks/lil_store_js.html
@@ -1,5 +1,7 @@
+{% load static %}
+
+
diff --git a/web/src/components/blocks/ContestWork b/web/src/components/blocks/ContestWork.vue
similarity index 100%
rename from web/src/components/blocks/ContestWork
rename to web/src/components/blocks/ContestWork.vue
diff --git a/web/src/components/blocks/Image.vue b/web/src/components/blocks/Image.vue
index 9006500d..789d8a69 100644
--- a/web/src/components/blocks/Image.vue
+++ b/web/src/components/blocks/Image.vue
@@ -1,5 +1,5 @@
-
-
Галерея
+ Галлерея
-
{% for contest_work in contest_works %}
- {% include '' %}
+ {% include 'content/blocks/contest_work.html' %}
{% endfor %}
+
@@ -51,4 +51,4 @@
display: block;
object-fit: contain;
}
-
\ No newline at end of file
+
diff --git a/web/src/js/app.js b/web/src/js/app.js
index 16651100..dd17eb8e 100644
--- a/web/src/js/app.js
+++ b/web/src/js/app.js
@@ -17,3 +17,26 @@ import "./modules/notification";
import "./modules/mixpanel";
import "../sass/app.sass";
+
+import Vue from 'vue';
+import Vuelidate from 'vuelidate';
+import UploadContestWork from '../components/UploadContestWork.vue';
+
+Vue.use(Vuelidate);
+
+if (process.env.NODE_ENV === 'development') {
+ // Enable vue-devtools
+ Vue.config.devtools = true;
+}
+
+const app = new Vue({
+ el: '#lilcity-vue-app',
+ data() {
+ return {
+ store: window.LIL_STORE,
+ }
+ },
+ components: {
+ 'upload-contest-work': UploadContestWork,
+ }
+});
diff --git a/web/webpack.config.js b/web/webpack.config.js
index 3c6785ab..f91b4e9e 100644
--- a/web/webpack.config.js
+++ b/web/webpack.config.js
@@ -9,6 +9,7 @@ module.exports = {
entry: {
app: "./src/js/app.js",
courseRedactor: "./src/js/course-redactor.js",
+ contestRedactor: "./src/js/contest-redactor.js",
mixpanel: "./src/js/third_party/mixpanel-2-latest.js",
sprite: glob('./src/icons/*.svg'),
images: glob('./src/img/*'),
@@ -116,6 +117,10 @@ module.exports = {
},
watch: NODE_ENV === 'development',
+ watchOptions: {
+ ignored: 'node_modules',
+ poll: 2000,
+ },
devtool: NODE_ENV === 'development' ? 'source-map' : false
};