Show More
@@ -0,0 +1,31 b'' | |||
|
1 | {% extends "boards/base.html" %} | |
|
2 | ||
|
3 | {% load i18n %} | |
|
4 | {% load static %} | |
|
5 | ||
|
6 | {% block head %} | |
|
7 | <title>{{ site_name }}</title> | |
|
8 | {% endblock %} | |
|
9 | ||
|
10 | {% block content %} | |
|
11 | <div class="post"> | |
|
12 | <div class="landing-images"> | |
|
13 | {% for image in images %} | |
|
14 | <div class="gallery_image"> | |
|
15 | {{ image.get_view|safe }} | |
|
16 | {% with image.get_random_associated_post as post %} | |
|
17 | {{ post.get_link_view|safe }} | |
|
18 | {% endwith %} | |
|
19 | </div> | |
|
20 | {% endfor %} | |
|
21 | </div> | |
|
22 | <div class="landing-tags"> | |
|
23 | {{ section_str|safe }} | |
|
24 | </div> | |
|
25 | <div class="landing-threads"> | |
|
26 | {% for op in latest_threads %} | |
|
27 | {{ op.get_link_view|safe }} {{ op.get_title_or_text }}<br /> | |
|
28 | {% endfor %} | |
|
29 | </div> | |
|
30 | </div> | |
|
31 | {% endblock %} |
@@ -0,0 +1,32 b'' | |||
|
1 | from django.shortcuts import render | |
|
2 | from django.utils.decorators import method_decorator | |
|
3 | from django.views.decorators.csrf import csrf_protect | |
|
4 | ||
|
5 | from boards.views.base import BaseBoardView | |
|
6 | from boards.models import Tag, Post, Attachment | |
|
7 | ||
|
8 | ||
|
9 | PARAM_SECTION_STR = 'section_str' | |
|
10 | PARAM_LATEST_THREADS = 'latest_threads' | |
|
11 | PARAM_IMAGES = 'images' | |
|
12 | ||
|
13 | TEMPLATE = 'boards/landing.html' | |
|
14 | ||
|
15 | MAX_NEW_THREADS = 10 | |
|
16 | RANDOM_IMAGE_COUNT = 3 | |
|
17 | ||
|
18 | ||
|
19 | class LandingView(BaseBoardView): | |
|
20 | @method_decorator(csrf_protect) | |
|
21 | def get(self, request): | |
|
22 | params = dict() | |
|
23 | ||
|
24 | params[PARAM_SECTION_STR] = Tag.objects.get_tag_url_list( | |
|
25 | Tag.objects.filter(required=True)) | |
|
26 | params[PARAM_LATEST_THREADS] = Post.objects.filter(opening=True)\ | |
|
27 | .order_by('-pub_time')[:MAX_NEW_THREADS] | |
|
28 | params[PARAM_IMAGES] = Attachment.objects.get_random_images( | |
|
29 | RANDOM_IMAGE_COUNT) | |
|
30 | ||
|
31 | return render(request, TEMPLATE, params) | |
|
32 |
@@ -173,3 +173,14 b' textarea, input {' | |||
|
173 | 173 | .url-image:hover { |
|
174 | 174 | filter: invert(100%); |
|
175 | 175 | } |
|
176 | ||
|
177 | .landing-tags, .landing-threads, .landing-images { | |
|
178 | max-width: 800px; | |
|
179 | margin-left: auto; | |
|
180 | margin-right: auto; | |
|
181 | } | |
|
182 | ||
|
183 | .landing-images { | |
|
184 | text-align: center; | |
|
185 | } | |
|
186 |
@@ -29,7 +29,8 b'' | |||
|
29 | 29 | <script src="{% static 'js/jquery-2.2.0.min.js' %}"></script> |
|
30 | 30 | |
|
31 | 31 | <header class="navigation_panel"> |
|
32 |
<a class="link" href="{% url ' |
|
|
32 | <a class="link" href="{% url 'landing' %}">{{ site_name }}</a> | |
|
33 | <a class="link" href="{% url 'index' %}">{% trans "All threads" %}</a>, | |
|
33 | 34 | {% if tags_str %} |
|
34 | 35 | <form action="{% url 'index' %}" method="post" class="post-button-form">{% csrf_token %} |
|
35 | 36 | {% if only_favorites %} |
@@ -39,8 +40,6 b'' | |||
|
39 | 40 | {% endif %} |
|
40 | 41 | </form> |
|
41 | 42 | {{ tags_str|safe }}, |
|
42 | {% else %} | |
|
43 | {% trans 'Add tags' %} → | |
|
44 | 43 | {% endif %} |
|
45 | 44 | <a href="{% url 'tags' 'required'%}" title="{% trans 'Tag management' %}">{% trans "tags" %}</a>, |
|
46 | 45 | <a href="{% url 'search' %}" title="{% trans 'Search' %}">{% trans 'search' %}</a>, |
@@ -13,9 +13,7 b'' | |||
|
13 | 13 | <div> |
|
14 | 14 | {% for image in images %} |
|
15 | 15 | <div class="gallery_image"> |
|
16 |
{ |
|
|
17 | {{ image.get_view }} | |
|
18 | {% endautoescape %} | |
|
16 | {{ image.get_view|safe }} | |
|
19 | 17 | {% with image.get_random_associated_post as post %} |
|
20 | 18 | {{ post.get_link_view|safe }} |
|
21 | 19 | <div> |
@@ -15,6 +15,7 b' from boards.views.random import RandomIm' | |||
|
15 | 15 | from boards.views.tag_gallery import TagGalleryView |
|
16 | 16 | from boards.views.translation import cached_javascript_catalog |
|
17 | 17 | from boards.views.search import BoardSearchView |
|
18 | from boards.views.landing import LandingView | |
|
18 | 19 | |
|
19 | 20 | |
|
20 | 21 | js_info_dict = { |
@@ -23,7 +24,7 b' js_info_dict = {' | |||
|
23 | 24 | |
|
24 | 25 | urlpatterns = [ |
|
25 | 26 | # /boards/ |
|
26 | url(r'^$', all_threads.AllThreadsView.as_view(), name='index'), | |
|
27 | url(r'^all/$', all_threads.AllThreadsView.as_view(), name='index'), | |
|
27 | 28 | |
|
28 | 29 | # /boards/tag/tag_name/ |
|
29 | 30 | url(r'^tag/(?P<tag_name>\w+)/$', tag_threads.TagView.as_view(), |
@@ -51,6 +52,7 b' urlpatterns = [' | |||
|
51 | 52 | url(r'^random/$', RandomImageView.as_view(), name='random'), |
|
52 | 53 | url(r'^tag/(?P<tag_name>\w+)/gallery/$', TagGalleryView.as_view(), name='tag_gallery'), |
|
53 | 54 | url(r'^search/$', BoardSearchView.as_view(), name='search'), |
|
55 | url(r'^$', LandingView.as_view(), name='landing'), | |
|
54 | 56 | |
|
55 | 57 | # RSS feeds |
|
56 | 58 | url(r'^rss/$', AllThreadsFeed()), |
General Comments 0
You need to be logged in to leave comments.
Login now