From 8b3dd1ec37e8dcf018fb3d601c8905caf336e14c Mon Sep 17 00:00:00 2001 From: Nazar Kotyuk Date: Wed, 13 Aug 2014 10:30:12 +0300 Subject: [PATCH] Big commit --- accounts/urls.py | 3 +- accounts/views.py | 15 +- article/admin.py | 109 +++- article/admin_blog.py | 10 - article/admin_urls.py | 9 + article/forms.py | 88 ++- article/models.py | 193 +++++-- article/urls.py | 10 + article/views.py | 55 ++ city/admin.py | 4 +- company/forms.py | 49 +- exposition/views.py | 18 +- functions/model_utils.py | 37 ++ functions/search_forms.py | 4 +- functions/url_utils.py | 37 ++ news/models.py | 2 + proj/admin_urls.py | 1 - proj/settings.py | 5 + proj/urls.py | 1 + settings/templatetags/template_filters.py | 47 ++ static/client/css/main.css | 183 +++++- static/client/img/2.png | Bin 0 -> 1395 bytes static/client/img/ad-themes/Thumbs.db | Bin 0 -> 9728 bytes static/client/img/ad-themes/adt-1.png | Bin 0 -> 2669 bytes static/client/img/ad-themes/adt-2.png | Bin 0 -> 2105 bytes static/client/img/ad-themes/adt-3.png | Bin 0 -> 2082 bytes static/client/img/add_link_text.png | Bin 0 -> 964 bytes static/client/img/add_pic_block_bg.png | Bin 0 -> 964 bytes static/client/img/add_pic_block_bg1.png | Bin 0 -> 966 bytes static/client/img/add_pic_block_bg2.png | Bin 0 -> 987 bytes .../client/img/soc-medias/icon-fb_hover.png | Bin 0 -> 1101 bytes .../client/img/soc-medias/icon-lin_hover.png | Bin 0 -> 1123 bytes .../img/soc-medias/sm-icon-twit_hover.png | Bin 0 -> 1160 bytes .../img/soc-medias/sm-icon-vk_hover.png | Bin 0 -> 1186 bytes static/client/img/sprites.png | Bin 66702 -> 70060 bytes static/client/js/profile.js | 9 +- static/custom_js/make_select.js | 57 +- templates/admin/article/article_add.html | 32 +- .../admin/article/article_admin_list.html | 54 ++ templates/admin/article/blog_form.html | 99 ++++ templates/admin/base.html | 4 +- templates/client/accounts/fill_company.html | 542 ++++++++++++++++++ templates/client/accounts/new_profile.html | 395 +++++++++++++ templates/client/article/article.html | 64 +++ templates/client/article/blog_list.html | 115 ++++ templates/client/article/news.html | 58 ++ templates/client/article/news_list.html | 112 ++++ templates/client/blank.html | 4 +- .../client/exposition/exposition_by_city.html | 12 +- .../exposition/exposition_by_country.html | 14 +- .../exposition/exposition_by_theme.html | 15 +- .../client/includes/article/article_logo.html | 10 + .../includes/article/article_preview.html | 10 + .../client/includes/article/news_preview.html | 10 + templates/client/includes/article_tags.html | 4 + templates/client/includes/header.html | 4 +- templates/client/popups/place.html | 71 +-- templates/client/popups/theme.html | 35 +- theme/admin.py | 15 +- theme/admin_urls.py | 1 + 60 files changed, 2462 insertions(+), 164 deletions(-) delete mode 100644 article/admin_blog.py create mode 100644 article/urls.py create mode 100644 article/views.py create mode 100644 functions/model_utils.py create mode 100644 functions/url_utils.py create mode 100644 static/client/img/2.png create mode 100644 static/client/img/ad-themes/Thumbs.db create mode 100644 static/client/img/ad-themes/adt-1.png create mode 100644 static/client/img/ad-themes/adt-2.png create mode 100644 static/client/img/ad-themes/adt-3.png create mode 100644 static/client/img/add_link_text.png create mode 100644 static/client/img/add_pic_block_bg.png create mode 100644 static/client/img/add_pic_block_bg1.png create mode 100644 static/client/img/add_pic_block_bg2.png create mode 100644 static/client/img/soc-medias/icon-fb_hover.png create mode 100644 static/client/img/soc-medias/icon-lin_hover.png create mode 100644 static/client/img/soc-medias/sm-icon-twit_hover.png create mode 100644 static/client/img/soc-medias/sm-icon-vk_hover.png create mode 100644 templates/admin/article/article_admin_list.html create mode 100644 templates/admin/article/blog_form.html create mode 100644 templates/client/accounts/fill_company.html create mode 100644 templates/client/accounts/new_profile.html create mode 100644 templates/client/article/article.html create mode 100644 templates/client/article/blog_list.html create mode 100644 templates/client/article/news.html create mode 100644 templates/client/article/news_list.html create mode 100644 templates/client/includes/article/article_logo.html create mode 100644 templates/client/includes/article/article_preview.html create mode 100644 templates/client/includes/article/news_preview.html create mode 100644 templates/client/includes/article_tags.html diff --git a/accounts/urls.py b/accounts/urls.py index 375e0e07..eae55d03 100644 --- a/accounts/urls.py +++ b/accounts/urls.py @@ -3,12 +3,13 @@ from django.conf.urls import patterns, url from django.contrib.auth.decorators import login_required from views import SettingsView, ProfileView, CalendarView, UserView, UserExpositionsView, UserConferenceView, UserSeminarView from views import NameView, HomeView, AvatarView, WorkView, AboutCompanyView, PhoneView, EmailView, WebPageView,\ - SocialView, AboutView + SocialView, AboutView, ProfileCompanyView from views import test urlpatterns = patterns('', url(r'^profile/$', login_required(ProfileView.as_view())), + url(r'^profile/company/$', login_required(ProfileCompanyView.as_view())), url(r'^profile/settings/$', login_required(SettingsView.as_view())), url(r'^profile/calendar/$', login_required(CalendarView.as_view())), url(r'^user/(?P.*)/expositions/(?P\d+)/$', UserExpositionsView.as_view()), diff --git a/accounts/views.py b/accounts/views.py index 49a33656..957c7234 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -8,6 +8,7 @@ from django.utils.translation import ugettext as _ from django.utils import timezone # forms from forms import ChangePasswordForm, EmailAnnouncementForm +from company.forms import CompanyFormClient from edit_forms import AvatarForm, NameForm, HomeForm, WorkForm, AboutCompanyForm, PhoneForm, EmailForm,\ WebPageForm, SocialForm, AboutForm from models import User @@ -89,7 +90,7 @@ def get_calendar(request, year, month): return HttpResponse(json.dumps(args), content_type='application/json') class ProfileView(TemplateView): - template_name = 'accounts/profile.html' + template_name = 'accounts/new_profile.html' def post(self): return HttpResponse(self.request.POST) @@ -111,6 +112,18 @@ class ProfileView(TemplateView): context.update(profile_forms) return context +class ProfileCompanyView(FormView): + form_class = CompanyFormClient + template_name = 'accounts/fill_company.html' + success_url = '/profile/company/' + + def form_valid(self, form): + return HttpResponse('success') + + def form_invalid(self, form): + return HttpResponse(form.errors) + + class MessagesView(TemplateView): template_name = 'accounts/messages.html' diff --git a/article/admin.py b/article/admin.py index a664da6d..26801086 100644 --- a/article/admin.py +++ b/article/admin.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- from django.shortcuts import render_to_response, get_object_or_404 -from django.http import HttpResponseRedirect +from django.http import HttpResponseRedirect, HttpResponse from django.core.context_processors import csrf from django.conf import settings from django.contrib.auth.decorators import login_required from django.contrib.contenttypes.models import ContentType #models and forms -from forms import ArticleForm, ArticleDeleteForm, Article +from forms import ArticleForm, ArticleDeleteForm, Article, NewsForm from theme.models import Tag from file.models import FileModel, TmpFile from file.forms import FileModelForm @@ -25,7 +25,7 @@ def article_all(request): @login_required def article_copy(request, url): - article = Article.objects.safe_get(url=url) + article = Article.objects.safe_get(slug=url) if not article: return HttpResponseRedirect(get_referer(request)) else: @@ -60,7 +60,7 @@ def article_change(request, url): """ try: #check if article_id exists else redirect to the list of cities - article = Article.objects.get(url=url) + article = Article.objects.get(slug=url) file_form = FileModelForm(initial={'model': 'article.Article'}) article_id = getattr(article, 'id') except: @@ -77,7 +77,7 @@ def article_change(request, url): else: data = {} #fill form with data from database - data['author'] = article.user + data['author'] = article.author data['theme'] = [item.id for item in article.theme.all()] data['tag'] = [item.id for item in article.tag.all()] #hidden field @@ -112,6 +112,104 @@ def article_change(request, url): return render_to_response('article_add.html', args) #----------------------- +from django.views.generic import ListView, FormView +from forms import BlogForm + +class BlogList(ListView): + model = Article + template_name = 'article/article_admin_list.html' + + def get_queryset(self): + return self.model.objects.blogs() + + def get_context_data(self, **kwargs): + context = super(BlogList, self).get_context_data(**kwargs) + context['blog_flag'] = True + return context + +class BlogView(FormView): + form_class = BlogForm + template_name = 'article/blog_form.html' + success_url = '/admin/article/blog/all/' + obj = None + + def set_obj(self): + slug = self.kwargs.get('slug') + if slug: + article = get_object_or_404(Article, slug=slug) + self.obj = article + else: + self.obj = None + + def form_valid(self, form): + self.set_obj() + author = self.request.user + form.save(author, article=self.obj) + return HttpResponseRedirect(self.success_url) + + def form_invalid(self, form): + + return HttpResponse(form.errors) + + def get_form(self, form_class): + if self.request.POST: + return super(BlogView, self).get_form(form_class) + self.set_obj() + if self.obj: + article = self.obj + data = {} + data['theme'] = [item.id for item in article.theme.all()] + data['exposition'] = article.exposition + data['conference'] = article.conference + a = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()]) + + data['tag'] = ','.join(['%s:%s'%(item.id, item.name) for item in article.tag.all()]) + for code, name in settings.LANGUAGES: + obj = Article._meta.translations_model.objects.get(language_code = code,master__id=getattr(article, 'id')) #access to translated fields + data['main_title_%s' % code] = obj.main_title + data['preview_%s' % code] = obj.preview + data['description_%s' % code] = obj.description + data['title_%s' % code] = obj.title + data['keywords_%s' % code] = obj.keywords + data['descriptions_%s' % code] = obj.descriptions + form = form_class(data) + #form.fields['tag'].widget.attrs['data-init-text'] = [item.name for item in article.tag.all()] + return form_class(data) + else: + return form_class() + + + + def get_context_data(self, **kwargs): + context = super(BlogView, self).get_context_data(**kwargs) + self.set_obj() + context['article'] = self.obj + context['languages'] = settings.LANGUAGES + return context + + +class NewsList(ListView): + model = Article + template_name = 'article/article_admin_list.html' + + def get_queryset(self): + return self.model.objects.news() + + def get_context_data(self, **kwargs): + context = super(NewsList, self).get_context_data(**kwargs) + context['news_flag'] = True + return context + +class NewsView(BlogView): + form_class = NewsForm + template_name = 'article/blog_form.html' + success_url = '/admin/article/news/all/' + obj = None + + + + +""" from django.views.generic import CreateView from models import Blog from forms import BlogForm @@ -120,3 +218,4 @@ class BlogCreate(CreateView): model = Blog form_class = BlogForm template_name = 'admin/blog/blog_add.html' +""" \ No newline at end of file diff --git a/article/admin_blog.py b/article/admin_blog.py deleted file mode 100644 index 62163b00..00000000 --- a/article/admin_blog.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.conf.urls import patterns, url -from admin import BlogCreate - -urlpatterns = patterns('', - url(r'^add/$', BlogCreate.as_view()), - #url(r'^delete/(?P.*)/$', 'article_delete'), - #url(r'^change/(.*)/$', 'article_change'), - #url(r'^copy/(.*)/$', 'article_copy'), - #url(r'^all/$', 'article_all'), -) diff --git a/article/admin_urls.py b/article/admin_urls.py index e9537329..3b083c2f 100644 --- a/article/admin_urls.py +++ b/article/admin_urls.py @@ -1,10 +1,19 @@ # -*- coding: utf-8 -*- from django.conf.urls import patterns, url +from admin import BlogList, BlogView, NewsList, NewsView urlpatterns = patterns('article.admin', + url(r'^add/$', 'article_add'), url(r'^delete/(?P.*)/$', 'article_delete'), url(r'^change/(.*)/$', 'article_change'), url(r'^copy/(.*)/$', 'article_copy'), url(r'^all/$', 'article_all'), + url(r'^blog/all/$', BlogList.as_view()), + url(r'^blog/$', BlogView.as_view()), + url(r'^news/all/$', NewsList.as_view()), + url(r'^news/$', NewsView.as_view()), + + url(r'^blog/(?P.*)/$', BlogView.as_view()), + url(r'^news/(?P.*)/$', NewsView.as_view()), ) \ No newline at end of file diff --git a/article/forms.py b/article/forms.py index 5eac49f7..44fcdad8 100644 --- a/article/forms.py +++ b/article/forms.py @@ -12,8 +12,92 @@ from functions.form_check import translit_with_separator from models import Article from accounts.models import User from theme.models import Theme, Tag +from exposition.models import Exposition +from conference.models import Conference +class BlogForm(forms.Form): + type = Article.blog + theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all(), required=False, + widget=forms.SelectMultiple(attrs={'style':'width: 550px'})) + tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False) + logo = forms.ImageField(label=u'Лого', required=False) + def __init__(self, *args, **kwargs): + """ + create dynamical translated fields fields + """ + super(BlogForm, self).__init__(*args, **kwargs) + #creates translated forms example: name_ru, name_en + # len(10) is a hack for detect if settings.LANGUAGES is not configured it return all langs + if len(settings.LANGUAGES) in range(10): + for lid, (code, name) in enumerate(settings.LANGUAGES): + # uses enumerate for detect iteration number + # first iteration is a default lang so it required fields + required = True if lid == 0 else False + self.fields['main_title_%s' % code] = forms.CharField(label='Заголовок', required=required) + self.fields['preview_%s' % code] = forms.CharField(label='Превью', required=False, widget=CKEditorWidget) + self.fields['description_%s' % code] = forms.CharField(label='Описание', required=False, widget=CKEditorWidget) + #meta data + self.fields['title_%s' % code] = forms.CharField(label='Тайтл', required=False, max_length=255, + widget=forms.TextInput(attrs={'style':'width: 550px'})) + self.fields['keywords_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, + widget=forms.TextInput(attrs={'style':'width: 550px'})) + self.fields['descriptions_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, + widget=forms.TextInput(attrs={'style':'width: 550px'})) + + def save(self, author, article=None): + data = self.cleaned_data + #create new Article object or get exists + if not article: + article = Article() + + article.author = author + article.type = self.type + article.logo = data['logo'] + # fill translated fields and save object + fill_with_signal(Article, article, data) + # fill manytomany fields + article.theme.clear() + article.tag.clear() + article.theme.add(*Theme.objects.filter(id__in=data['theme'])) + article.tag.add(*Tag.objects.filter(id__in=data['tag'])) + #for item in data['theme']: + # article.theme.add(item.id)#.id cause select uses queryset + + #for item in data['tag']: + # article.tag.add(item) + + article.save() + + return article + + def clean_tag(self): + tags = self.cleaned_data.get('tag') + if tags: + res = [] + for id in tags.split(','): + try: + res.append(int(id)) + except: + continue + return res + else: + return [] + +class NewsForm(BlogForm): + type = Article.news + exposition = forms.ModelChoiceField(label = u'Выставка', required=False, queryset=Exposition.objects.all()) + conference = forms.ModelChoiceField(label = u'Конференция', required=False, queryset=Conference.objects.all()) + + def save(self, author, article=None): + article = super(NewsForm, self).save(author, article) + exposition = self.cleaned_data.get('exposition') + conference = self.cleaned_data.get('conference') + article.exposition = exposition + article.conference = conference + article.save() + return article + class ArticleForm(forms.Form): """ Create Article form for creating conference @@ -115,6 +199,7 @@ class ArticleDeleteForm(forms.ModelForm): fields = ('url',) #---------------------------------- +""" from models import Blog class BlogForm(forms.ModelForm): @@ -140,4 +225,5 @@ class BlogForm(forms.ModelForm): self.fields['keywords_%s' % code] = forms.CharField(label='Дескрипшен', required=False, max_length=255, widget=forms.TextInput(attrs={'style':'width: 550px'})) self.fields['descriptions_%s' % code] = forms.CharField(label='Кейвордс', required=False, max_length=255, - widget=forms.TextInput(attrs={'style':'width: 550px'})) \ No newline at end of file + widget=forms.TextInput(attrs={'style':'width: 550px'})) +""" \ No newline at end of file diff --git a/article/models.py b/article/models.py index 009474de..6f65aaa3 100644 --- a/article/models.py +++ b/article/models.py @@ -2,8 +2,12 @@ import copy from django.db import models from django.utils.translation import ugettext_lazy as _ +from django.utils.timezone import now from hvad.models import TranslatableModel, TranslatedFields, TranslationManager +from django.utils.html import strip_tags from sorl.thumbnail import ImageField +from functions.url_utils import slugify, unique_slug +from functions.model_utils import base_concrete_model class ArticleManager(TranslationManager): @@ -14,6 +18,20 @@ class ArticleManager(TranslationManager): except: return None + def news(self): + """ + return queryset of news + """ + model = self.model + return model.objects.filter(type=model.news) + + def blogs(self): + """ + return queryset of blogs + """ + model = self.model + return model.objects.filter(type=model.blog) + class Article(TranslatableModel): """ Create Article model @@ -21,15 +39,45 @@ class Article(TranslatableModel): Uses hvad.TranslatableModel which is child of django.db.models class """ + + MAX_ON_MAIN_PAGE = 3 + # types of article + blog = 1 + news = 2 + #set manager of this model objects = ArticleManager() - - url = models.SlugField(unique=True) + slug = models.SlugField(unique=True, max_length=255) + logo = ImageField(upload_to='articles_preview', blank=True) theme = models.ManyToManyField('theme.Theme') tag = models.ManyToManyField('theme.Tag', related_name='tags',blank=True, null=True) - user = models.ForeignKey('accounts.User', verbose_name='Автор', + author = models.ForeignKey('accounts.User', verbose_name='Автор', on_delete=models.PROTECT, related_name='articles') - main_page = models.PositiveIntegerField(default=0, db_index=True) + exposition = models.ForeignKey('exposition.Exposition', blank=True, null=True) + conference = models.ForeignKey('conference.Conference', blank=True, null=True) + type = models.PositiveSmallIntegerField(default=1) + allow_comments = models.BooleanField(default=True) + + # fields that provides features of a visible page on the website + publish_date = models.DateTimeField(blank=True, null=True) + expiry_date = models.DateTimeField(_("Expires on"), + help_text=_("With Published chosen, won't be shown after this time"), + blank=True, null=True) + in_sitemap = models.BooleanField(_("Show in sitemap"), default=False) + + # fields that provides features of a visible on main page + main_page = models.BooleanField(default=False) + main_page_time = models.DateTimeField(blank=True, null=True) + + # field that check if need generate description + gen_description = models.BooleanField(_("Generate description"), + help_text=_("If checked, the description will be automatically " + "generated from content. Uncheck if you want to manually " + "set a custom description."), default=True) + +# published = models. + created = models.DateTimeField(auto_now_add=True) + modified = models.DateTimeField(auto_now=True) #translated fields translations = TranslatedFields( @@ -45,6 +93,97 @@ class Article(TranslatableModel): def __unicode__(self): return self.lazy_translation_getter('main_title', self.pk) + def translation_model(self): + return self._meta.translations_model + + + def publish(self): + self.in_sitemap = True + if not self.publish_date: + # save time only first time + self.publish_date = now() + self.save() + + return self + + def get_event(self): + if self.exposition: + return self.exposition + elif self.conference: + return self.conference + return None + + + def save(self, *args, **kwargs): + + # If no slug is provided, generates one before saving. + if not self.slug: + self.slug = self.generate_unique_slug() + + #Set the description field on save. + if self.gen_description: + self.description = strip_tags(self.description_from_content()) + super(Article, self).save(*args, **kwargs) + + def description_from_content(self): + """ + """ + # place for logic + return '' + + def generate_unique_slug(self): + """ + Create a unique slug by passing the result of get_slug() to + utils.urls.unique_slug, which appends an index if necessary. + """ + # For custom content types, use the ``Page`` instance for + # slug lookup. + concrete_model = base_concrete_model(Article, self) + slug_qs = concrete_model.objects.exclude(id=self.id) + return unique_slug(slug_qs, "slug", self.get_slug()) + + def get_slug(self): + """ + Allows subclasses to implement their own slug creation logic. + """ + return slugify(self.get_available_title()) + + def get_available_title(self): + #print self.lazy_translation_getter('main_title', self.pk) + return u'%s'%self.lazy_translation_getter('main_title', self.pk) + + + def _get_next_or_previous_by_publish_date(self, is_next, **kwargs): + """ + Retrieves next or previous object by publish date. We implement + our own version instead of Django's so we can hook into the + published manager and concrete subclasses. + """ + arg = "publish_date__gt" if is_next else "publish_date__lt" + order = "publish_date" if is_next else "-publish_date" + lookup = {arg: self.publish_date} + concrete_model = base_concrete_model(Article, self) + try: + queryset = concrete_model.objects.published + except AttributeError: + queryset = concrete_model.objects.all + try: + return queryset(**kwargs).filter(**lookup).order_by(order)[0] + except IndexError: + pass + + def get_next_by_publish_date(self, **kwargs): + """ + Retrieves next object by publish date. + """ + return self._get_next_or_previous_by_publish_date(True, **kwargs) + + def get_previous_by_publish_date(self, **kwargs): + """ + Retrieves previous object by publish date. + """ + return self._get_next_or_previous_by_publish_date(False, **kwargs) + def clone(self): """ Return an identical copy of the instance with a new ID. @@ -100,39 +239,19 @@ class Article(TranslatableModel): return duplicate -from django.db.models.signals import post_save -from functions.signal_handlers import post_save_handler - -post_save.connect(post_save_handler, sender=Article) + def admin_url(self): + if self.type == 1: + return '/admin/article/blog/%s'%self.slug + elif self.type == 2: + return '/admin/article/news/%s'%self.slug + def get_permanent_url(self): + if self.type == 1: + return '/blogs/%s'%self.slug + elif self.type == 2: + return '/news/%s'%self.slug -#-------------------------------- -class Blog(TranslatableModel): - url = models.SlugField(unique=True) - theme = models.ManyToManyField('theme.Theme', related_name='blog_theme') - tag = models.ManyToManyField('theme.Tag', related_name='blog_tag',blank=True, null=True) - creator = models.ForeignKey('accounts.User', verbose_name='Автор', - on_delete=models.PROTECT, related_name='blog') - date = models.DateField(verbose_name=_(u'Дата')) - preview_img = ImageField(upload_to='article', blank=True) - - # - main_page = models.PositiveIntegerField(default=0, db_index=True) - translations = TranslatedFields( - main_title = models.CharField(max_length=255), - preview = models.TextField(), - description = models.TextField(), - #-----meta - title = models.CharField(max_length=255, blank=True), - descriptions = models.CharField(max_length=255, blank=True), - keywords = models.CharField(max_length=255, blank=True), - ) - #fields saves information about creating and changing model - created = models.DateTimeField(auto_now_add=True) - modified = models.DateTimeField(auto_now=True) - - def __unicode__(self): - return self.lazy_translation_getter('main_title', self.pk) - +from django.db.models.signals import post_save +from functions.signal_handlers import post_save_handler -#post_save.connect(post_save_handler, sender=Blog) \ No newline at end of file +post_save.connect(post_save_handler, sender=Article) \ No newline at end of file diff --git a/article/urls.py b/article/urls.py new file mode 100644 index 00000000..84a18675 --- /dev/null +++ b/article/urls.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +from django.conf.urls import patterns, url +from views import BlogList, NewsList, BlogDetail, NewsDetail + +urlpatterns = patterns('', + url(r'blogs/$', BlogList.as_view()), + url(r'news/$', NewsList.as_view()), + url(r'blogs/(?P.*)$', BlogDetail.as_view()), + url(r'news/(?P.*)$', NewsDetail.as_view()), +) diff --git a/article/views.py b/article/views.py new file mode 100644 index 00000000..862e73fb --- /dev/null +++ b/article/views.py @@ -0,0 +1,55 @@ +from django.views.generic import DetailView, ListView +from django.http import HttpResponse +from models import Article + +class NewsList(ListView): + model = Article + template_name = 'article/news_list.html' + + def get_queryset(self): + if self.request.GET: + qs = self.model.objects.news() + themes = self.request.GET.getlist('theme') + if themes: + qs = qs.filter(theme__id__in=themes) + + tags = self.request.GET.getlist('tag') + if tags: + qs = qs.filter(tag__id__in=tags) + + return qs + else: + return self.model.objects.news() + +class NewsDetail(DetailView): + model = Article + slug_field = 'slug' + template_name = 'article/news.html' + + +class BlogList(ListView): + model = Article + template_name = 'article/blog_list.html' + + def get_queryset(self): + if self.request.GET: + qs = self.model.objects.blogs() + + themes = self.request.GET.getlist('theme') + if themes: + qs = qs.filter(theme__id__in=themes) + + tags = self.request.GET.getlist('tag') + if tags: + qs = qs.filter(tag__id__in=tags) + + return qs + else: + return self.model.objects.blogs() + + + +class BlogDetail(DetailView): + model = Article + slug_field = 'slug' + template_name = 'article/article.html' \ No newline at end of file diff --git a/city/admin.py b/city/admin.py index 476013e2..75efe755 100644 --- a/city/admin.py +++ b/city/admin.py @@ -104,6 +104,4 @@ def search_city(request): qs = City.objects.language().filter(country=country, translations__name__contains=term) result = [{'id': city.id, 'label': city.name} for city in qs] - - return HttpResponse(json.dumps(result), content_type='application/json') - return HttpResponse(country_id) \ No newline at end of file + return HttpResponse(json.dumps(result), content_type='application/json') \ No newline at end of file diff --git a/company/forms.py b/company/forms.py index 26c09324..0bdef773 100644 --- a/company/forms.py +++ b/company/forms.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from django import forms from django.conf import settings +from django.utils.translation import ugettext as _ from ckeditor.widgets import CKEditorWidget from django.core.exceptions import ValidationError from django.forms.util import ErrorList @@ -208,4 +209,50 @@ class CompanyDeleteForm(forms.ModelForm): class Meta: model = Company - fields = ('id',) \ No newline at end of file + fields = ('id',) + +class CompanyFormClient(forms.Form): + + # translated fields + name = forms.CharField(label=_(u'название')) + specialization = forms.CharField(label=_(u'краткое описание компании'), required=False) + address_inf = forms.CharField(label=_(u'адрес компании'), required=False) + description = forms.CharField(label=_(u'подробное описание компании'), required=False) + # + logo = forms.ImageField(required=False) + country = forms.ModelChoiceField(label=_(u'Страна'), queryset=Country.objects.all(), empty_label=None) + city = forms.CharField(label=_(u'Город'), widget=forms.HiddenInput()) + theme = forms.ModelMultipleChoiceField(label=_(u'Тематики'), queryset=Theme.objects.all()) + tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False) + + phone = forms.CharField(label='Телефон', required=False) + fax = forms.CharField(label='Факс', required=False) + web_page = forms.URLField(label='Веб-сайт', required=False) + email = forms.EmailField(label='Email', required=False) + foundation = forms.IntegerField(label=_(u'Год основания'), required=False) + staff_number = forms.IntegerField(label=_(u'Количество сотрудников'), required=False) + vk = forms.URLField(label=_(u'в контакте'), required=False) + twitter = forms.URLField(label=u'Twitter', required=False) + facebook = forms.URLField(label=u'Facebook', required=False) + linkedin = forms.URLField(label=u'Linkedin', required=False) + + + def __init__(self, *args, **kwargs): + """ + create dynamical translated fields fields + """ + super(CompanyFormClient, self).__init__(*args, **kwargs) + #creates translated forms example: name_ru, name_en + # len(10) is a hack for detect if settings.LANGUAGES is not configured it return all langs + if len(settings.LANGUAGES) in range(10): + for lid, (code, name) in enumerate(settings.LANGUAGES): + # uses enumerate for detect iteration number + # first iteration is a default lang so it required fields + required = True if lid == 0 else False + self.fields['name_%s' % code] = forms.CharField(label=_(u'название'), required=required) + self.fields['description_%s' % code] = forms.CharField(label=_(u'подробное описание компании'), + required=False) + self.fields['specialization_%s' % code] = forms.CharField(label=_(u'краткое описание компании'), + required=False) + self.fields['address_inf_%s' % code] = forms.CharField(label=_(u'адрес компании'), + required=False) \ No newline at end of file diff --git a/exposition/views.py b/exposition/views.py index d77b9910..e9bcff9f 100644 --- a/exposition/views.py +++ b/exposition/views.py @@ -10,6 +10,7 @@ from functions.search_forms import ExpositionSearchForm from service.views import order_forms from django.shortcuts import get_object_or_404 from django.http import Http404 +from django.utils import translation # from service.models import Service from country.models import Country @@ -24,14 +25,20 @@ class ExpositionByCountry(ListView): model = Country template_name = 'exposition/exposition_by_country.html' def get_queryset(self): - return self.model.objects.select_related('exposition_country').filter(exposition_country__country__isnull=False).all().distinct() + lang = translation.get_language() + return self.model.objects.select_related('exposition_country')\ + .filter(exposition_country__country__isnull=False, translations__language_code=lang)\ + .order_by('translations__name').distinct() class ExpositionByTheme(ListView): model = Theme template_name = 'exposition/exposition_by_theme.html' def get_queryset(self): - return self.model.objects.select_related('exposition_themes').filter(exposition_themes__theme__isnull=False).all().distinct() + lang = translation.get_language() + return self.model.objects.select_related('exposition_themes')\ + .filter(exposition_themes__theme__isnull=False, translations__language_code=lang)\ + .order_by('translations__name').distinct() class ExpositionByCity(ListView): @@ -39,7 +46,10 @@ class ExpositionByCity(ListView): template_name = 'exposition/exposition_by_city.html' def get_queryset(self): - return self.model.objects.select_related('exposition_city').filter(exposition_city__city__isnull=False).all().distinct() + lang = translation.get_language() + return self.model.objects.select_related('exposition_city')\ + .filter(exposition_city__city__isnull=False, translations__language_code=lang)\ + .order_by('translations__name').distinct() class ExpositionServiceView(FormView, ExpoMixin): params = None @@ -156,7 +166,7 @@ class ExpositionSearchView(ListView): if queries.has_key('page'): del queries['page'] context['queries'] = queries - context['search_action'] = '/expositions/search/' + context['search_action'] = '/expo/search/' return context diff --git a/functions/model_utils.py b/functions/model_utils.py new file mode 100644 index 00000000..d548d446 --- /dev/null +++ b/functions/model_utils.py @@ -0,0 +1,37 @@ +def base_concrete_model(abstract, instance): + """ + Used in methods of abstract models to find the super-most concrete + (non abstract) model in the inheritance chain that inherits from the + given abstract model. This is so the methods in the abstract model can + query data consistently across the correct concrete model. + + Consider the following:: + + class Abstract(models.Model) + + class Meta: + abstract = True + + def concrete(self): + return base_concrete_model(Abstract, self) + + class Super(Abstract): + pass + + class Sub(Super): + pass + + sub = Sub.objects.create() + sub.concrete() # returns Super + + In actual Mezzanine usage, this allows methods in the ``Displayable`` and + ``Orderable`` abstract models to access the ``Page`` instance when + instances of custom content types, (eg: models that inherit from ``Page``) + need to query the ``Page`` model to determine correct values for ``slug`` + and ``_order`` which are only relevant in the context of the ``Page`` + model and not the model of the custom content type. + """ + for cls in reversed(instance.__class__.__mro__): + if issubclass(cls, abstract) and not cls._meta.abstract: + return cls + return instance.__class__ diff --git a/functions/search_forms.py b/functions/search_forms.py index 33b914e8..132467ce 100644 --- a/functions/search_forms.py +++ b/functions/search_forms.py @@ -77,12 +77,14 @@ class CompanySearchForm(AbstactSearchForm): from country.models import Area +from theme.models import Theme class ExpositionSearchForm(forms.Form): q = forms.CharField(label=_(u'Поиск'), required=False) w = forms.CharField(label=_(u'Где'), required=False) - th = forms.CharField(label=_(u'Тематика'), required=False, widget=forms.SelectMultiple()) + th = forms.ModelMultipleChoiceField(label=_(u'Тематика'), queryset=Theme.objects.all(), + required=False, widget=forms.SelectMultiple()) tg = forms.CharField(label=_(u'Теги'), required=False, widget=forms.SelectMultiple()) area = forms.MultipleChoiceField(label=_(u'Регион'), choices=[(item.id, item.name) for item in Area.objects.language()], diff --git a/functions/url_utils.py b/functions/url_utils.py new file mode 100644 index 00000000..34e9e3ab --- /dev/null +++ b/functions/url_utils.py @@ -0,0 +1,37 @@ +import unicodedata, re + +from django.utils.encoding import smart_text +from django.core.exceptions import ObjectDoesNotExist + +def unique_slug(queryset, slug_field, slug): + """ + Ensures a slug is unique for the given queryset, appending + an integer to its end until the slug is unique. + """ + i = 0 + while True: + if i > 0: + if i > 1: + slug = slug.rsplit("-", 1)[0] + slug = "%s-%s" % (slug, i) + try: + queryset.get(**{slug_field: slug}) + except ObjectDoesNotExist: + break + i += 1 + return slug + +def slugify(s): + """ + Replacement for Django's slugify which allows unicode chars in + slugs, for URLs in Chinese, Russian, etc. + Adopted from https://github.com/mozilla/unicode-slugify/ + """ + chars = [] + for char in smart_text(s): + cat = unicodedata.category(char)[0] + if cat in "LN" or char in "-_~": + chars.append(char) + elif cat == "Z": + chars.append(" ") + return re.sub("[-\s]+", "-", "".join(chars).strip()).lower() \ No newline at end of file diff --git a/news/models.py b/news/models.py index 7f8263c6..96792e50 100644 --- a/news/models.py +++ b/news/models.py @@ -17,6 +17,8 @@ class NewsManager(TranslationManager): TYPES = ('announcement', 'news', 'overview') class News(TranslatableModel): + MAX_ON_MAIN_PAGE = 3 + #set manager of this model objects = NewsManager() diff --git a/proj/admin_urls.py b/proj/admin_urls.py index 7cd20cd4..997f0d76 100644 --- a/proj/admin_urls.py +++ b/proj/admin_urls.py @@ -12,7 +12,6 @@ urlpatterns = required( url(r'^', include('import_xls.admin_urls')), url(r'^accounts/', include('accounts.admin_urls')), url(r'^article/', include('article.admin_urls')), - url(r'^blog/', include('article.admin_blog')), url(r'^city/', include('city.admin_urls')), url(r'^company/', include('company.admin_urls')), url(r'^conference/', include('conference.admin_urls')), diff --git a/proj/settings.py b/proj/settings.py index 6503f3ec..7b08caa9 100644 --- a/proj/settings.py +++ b/proj/settings.py @@ -51,6 +51,8 @@ TIME_ZONE = 'UTC' # http://www.i18nguy.com/unicode/language-identifiers.html LANGUAGE_CODE = 'ru' +DEFAULT_LANGUAGE = 'ru' + LANGUAGES = ( ('ru', _('Russian')), ('en', _('English')), @@ -379,9 +381,12 @@ LOGGING = { } THUMBNAIL_DEBUG = True + CALLBACK_EMAIL = 'kotzilla@ukr.net' + BOOKING_AID = '333667' + try: from local import * except ImportError, e: diff --git a/proj/urls.py b/proj/urls.py index 26f63bb2..badff0eb 100644 --- a/proj/urls.py +++ b/proj/urls.py @@ -15,6 +15,7 @@ urlpatterns = patterns('', url(r'^', include('webinar.urls')), url(r'^', include('company.urls')), url(r'^', include('photoreport.urls')), + url(r'^', include('article.urls')), url(r'^country/', include('country.urls')), url(r'^city/', include('city.urls')), url(r'^organiser/', include('organiser.urls')), diff --git a/settings/templatetags/template_filters.py b/settings/templatetags/template_filters.py index b54a57ab..0ad33831 100644 --- a/settings/templatetags/template_filters.py +++ b/settings/templatetags/template_filters.py @@ -132,3 +132,50 @@ def random_social(value): @register.filter def is_current_page(request, param): return request.path == param + +from country.models import Country +from django.utils import translation +from city.models import City + +@register.filter +def get_country_by_area(value): + lang = translation.get_language() + countries = Country.objects.select_related('exposition_country')\ + .filter(exposition_country__country__isnull=False, translations__language_code=lang, area__id=value)\ + .order_by('translations__name').distinct() + return list(countries) + +@register.filter +def get_city_by_country(value): + lang = translation.get_language() + cities = City.objects.select_related('exposition_city')\ + .filter(exposition_city__city__isnull=False, translations__language_code=lang, country__id=value)\ + .order_by('translations__name').distinct() + + return list(cities) + +class SetVarNode(template.Node): + + def __init__(self, var_name, var_value): + self.var_name = var_name + self.var_value = var_value + + def render(self, context): + try: + value = template.Variable(self.var_value).resolve(context) + except template.VariableDoesNotExist: + value = "" + context[self.var_name] = value + return u"" + + +def set_var(parser, token): + """ + {% set = %} + """ + parts = token.split_contents() + if len(parts) < 4: + raise template.TemplateSyntaxError("'set' tag must be of the form: {% set = %}") + return SetVarNode(parts[1], parts[3]) + +register.tag('set', set_var) \ No newline at end of file diff --git a/static/client/css/main.css b/static/client/css/main.css index 8f85443f..d41b45df 100644 --- a/static/client/css/main.css +++ b/static/client/css/main.css @@ -11504,6 +11504,20 @@ hr + .rq-note { #mCSB_1 { min-height: 188px; } +/* Page group by*/ +.leter-list{ + float:left; + width: 30%; + min-height:6em; +} + + + +.leter-list .leter{ + color: #ff6600; + } + +/* END block*/ /*dimonn style*/ .clear { clear: both;} @@ -11850,4 +11864,171 @@ margin: 5px -11px 0 -15px;} .places_list .cli-info { margin-bottom: 5px;} .places_list .button.about { margin-top: 0;} -/*dimonn style*/ \ No newline at end of file +/*dimonn style*/ + +/*dimonn style 14.07.2014*/ + .end_reg_list {margin:0 0 0 0;padding:0 0 0 0;} + .end_reg_list li {padding:0 0 24px 0;list-style-type:none;} + .end_reg_list li:last-child {padding:0 0 0 0;} + .end_reg_list li.input_top {padding-right:140px;} + .end_reg_list .input_bottom {padding-right:120px;} + .end_reg_list li table {} + .end_reg_list li table tr th {text-align:left;vertical-align:top;padding:13px 5px 0 0;font-size:17px;color:#000;font-weight:normal;} + .end_reg_list li table tr td {text-align:left;vertical-align:top;} + .end_reg_list li table tr td p {padding:0 0 25px 0;margin:0 0 0 0;text-align:center;font-size:13px;color:#a2a2a2;} + .end_reg_list li table tr td.width1 {width:78px;padding:0 9px 0 0;} + .end_reg_list li table tr td.width2 {width:88px;padding:0 9px 0 0;} + .end_reg_list li table tr td.width3 {width:205px;} + + .add_pic_block {display:block;width:100px;height:80px;padding:20px 0 0 0;text-align:center;font-size:12px;color:#a2a2a2;font-weight:500;text-decoration:none;position:relative;line-height:1.0;-webkit-transition:background .3s, color .3s;-moz-transition:background .3s, color .3s;-ms-transition:background .3s, color .3s;-o-transition:background .3s, color .3s;transition:background .3s, color .3s;font-family:'dindisplay_pro';} + .add_pic_block span {display:block;margin:0 auto;width:35px;height:35px;background-color:#d0d0d0;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background-image:url(../img/add_pic_block_bg.png);background-position:center center;background-repeat:no-repeat;-webkit-transition:background .3s, color .3s;-moz-transition:background .3s, color .3s;-ms-transition:background .3s, color .3s;-o-transition:background .3s, color .3s;transition:background .3s, color .3s; position: relative;} + .add_pic_block .input { display: block; width: 100px; height: 100px; position: absolute; left: 0; top: 0; opacity: 0; cursor: pointer;} + .add_pic_block i {display:block;font-style:normal;padding:10px 0 1px 0;} + .add_pic_block b {font-size:14px;font-weight:500;} + .add_pic_block b:before {content:'';display:inline-block;width:14px;height:12px;background:url(../img/sprites.png) -365px -53px no-repeat;margin:0 4px 0 0;position:relative;top:1px;} + + .add_pic_block:hover { color: #ff6600;} + .add_pic_block:hover span { background-color: #ff6600;} + .add_pic_block:hover b:before { background-position: -181px -32px;} + + .add_link_text { padding-left: 0 !important; line-height: 20px; min-height: 25px;} + .add_link_text_text { font-size: 17px; color: #a2a2a2;font-family:'dindisplay_pro'; font-weight: 500; display: inline-block; position: relative; top: -1px;} + .add_link_text_top { min-height: 60px;} + + .add_link_text a {color: #a2a2a2;} + + .add_link_text .edit-wrap { display: inline-block!important; position: relative; left: 0; top: 0; margin: 0 5px 0 0!important; height: 20px;} + .add_link_text a.e-btn {color: #a2a2a2; display: block; padding: 0 0 0 22px; margin: 0 5px 0 0; width: auto; height: auto;font-size: 17px; color: #a2a2a2;font-family:'dindisplay_pro'; font-weight: 500; opacity: 1; float: left;} + .add_link_text a.e-btn:before { content:'';display: inline-block;width:16px;height:17px; background: url(../img/sprites.png) -385px -51px;-webkit-transition: color .3s;-moz-transition: color .3s;-ms-transition: color .3s;-o-transition: color .3s;transition: color .3s; position: absolute; top: 0; left: 0;} + .add_link_text b { margin-left: 10px;} + .add_link_text b:before {content:'';display:inline-block;width:14px;height:12px;background:url(../img/sprites.png) -365px -53px no-repeat;margin:0 4px 0 0;} + .add_link_text_medium a:before { top: 2px;} + + .add_link_text.p-editable.pe-current .edit-wrap .e-form {display: block!important; top: -5px;} + .add_link_text.p-editable.pe-current a.e-btn { text-indent: -9000px; position: relative; padding: 5px 0 5px 5px; left: -5px; position: absolute; top: -5px;} + .add_link_text.p-editable.pe-current a.e-btn:before { position: absolute; left: 5px; top: 5px;display: block !important;background-position: -405px -51px;} + .add_link_text.p-editable.pe-current .add_link_text_text { display: none;} + + .add_link_text_medium a.e-btn, .add_link_text_medium .add_link_text_text, .add_link_text_medium { font-size: 15px !important;} + .add_link_text_medium .add_link_text_text { top: 0;} + + .i-info header .i-place.add_link_text:before { display: none;} + .i-info header .i-place.add_link_text a { text-decoration: underline;color: #a2a2a2;} + .i-info header .i-place.add_link_text a:hover { color: #ff6600;} + + .dd_width_1 { width: 200px !important;} + .dd_width_2 { width: 328px; padding-right: 23px!important;padding-left: 75px!important;} + .dd_width_3 { width:218px; padding-right: 23px!important;} + .dd_width_4 { width: 320px !important;} + .dd_width_5 { width: 260px !important;} + + .i-place.add_link_text.p-editable.pe-current .add_link_text_text { display: block; padding-left: 35px; top: 0;} + .i-place.add_link_text.p-editable.pe-current a.e-btn:before { left: 10px;} + + + .add_link_text a:hover { color: #ff6600;} + .add_link_text a:hover:before { background-position: -425px -51px;} + + + .add_link_teg .select { float: left; width: 368px; margin: 0 13px 0 0; min-height: 36px;} + .add_link_teg b { float: left; position: relative; top: 10px; font-size: 15px; color: #a2a2a2;font-family:'dindisplay_pro'; font-weight: 500;} + .add_link_teg b:before {content:'';display:inline-block;width:14px;height:12px;background:url(../img/sprites.png) -365px -53px no-repeat;margin:0 4px 0 0;} + + .ic-buttons_pos { position: relative;} + .ic-buttons_text { position: absolute; left: 0; top: 32px; font-size: 13px; color: #a2a2a2; font-weight: 500;font-family:'dindisplay_pro';} + + .add_indent { margin-bottom: 4px;} + .ic-links_indent { padding-top: 5px;} + + .soc-media-buttons1 { display: inline-block; position: relative; margin: 0 0 0 0!important; top: -2px; left: 5px;} + .soc-media-indent { margin: 29px 0 0 0;} + .pe-current .soc-media-buttons1 { position: static;} +/* + .soc-media-buttons1 li { position: relative;} + .soc-media-buttons1 li span { display: block; position: absolute; left: 0; top: 0;} + .soc-media-buttons1 li:hover span { display: none;} + .soc-media-buttons1 .add_link_teg b { top: 6px;} +*/ + + + .add_indo_table { width: 100%;font-family:'dindisplay_pro';} + .add_indo_table tr th { text-align: left; vertical-align: top; font-size: 19px; color: #a2a2a2; font-weight: normal; padding: 0 0 13px 0;} + .add_indo_table tr th b { font-size: 20px; color: #a2a2a2;font-family:'dindisplay_pro'; font-weight: 500;} + .add_indo_table tr th b:before {content:'';display:inline-block;width:14px;height:12px;background:url(../img/sprites.png) -365px -53px no-repeat;margin:0 4px 0 0;} + .add_indo_table tr td { text-align: left; vertical-align: middle; font-size: 17px; color: #464646; padding: 5px 0;} + .add_indo_table tr td.click_td span { color: #ff6600; font-size: 14px;} + .add_indo_table tr td.click_td span a {color: #ff6600;} + .add_indo_table tr td.click_td span a:hover { opacity: 0.5;} + .add_indo_table tr td.click_td span a:before { content:'';display: inline-block;width:11px;height:12px; background: url(../img/sprites.png) 0 0; position: relative; top:2px; margin: 0 4px 0 0;} + + .add_indo_table tr td.click_td b { color: #ff6600; font-weight: normal; font-size: 14px;} + .add_indo_table tr td.click_td b a {color: #ff6600;} + .add_indo_table tr td.click_td b a:hover { opacity: 0.5;} + .add_indo_table tr td.click_td b a:before { content:'';display: inline-block;width:12px;height:13px; background: url(../img/sprites.png) -368px -69px; position: relative; top:2px; margin: 0 4px 0 0;} + .add_indo_table tr td .headline { width: 1px; height: 1px; position: relative;} + .add_indo_table tr td .headline p { position: absolute; left: 0; top: 5px;} + + .add_pic_list li { position: relative;} + .add_pic_list li span.close { display: block; position: absolute; right: 29px; top: 9px; width: 16px; height: 16px; background: url(../img/sprites.png) -385px -72px no-repeat; cursor: pointer;} + + .add_pic_list li span.close:hover { background-position: -404px -72px;} + + .add_pic_list li a.add_pic_link {text-align:center;background:#ffffff; display: block;-webkit-box-shadow:inset 0 1px 0 #e8e8e7;-moz-box-shadow:inset 0 1px 0 #e8e8e7;box-shadow:inset 0 1px 0 #e8e8e7;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box; +font-size:16px;color:#a2a2a2;font-weight:500;text-decoration:none;position:relative;line-height:1.0;-webkit-transition:background .3s, color .3s;-moz-transition:background .3s, color .3s;-ms-transition:background .3s, color .3s;-o-transition:background .3s, color .3s;transition:background .3s, color .3s;font-family:'dindisplay_pro';} + .add_pic_list li a.add_pic_link span {display:block;margin:30px auto 0 auto;width:46px;height:46px;background-color:#d0d0d0;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background-image:url(../img/add_pic_block_bg2.png);background-position:center center;background-repeat:no-repeat;-webkit-transition:background .3s, color .3s;-moz-transition:background .3s, color .3s;-ms-transition:background .3s, color .3s;-o-transition:background .3s, color .3s;transition:background .3s, color .3s; position: relative;} + .add_pic_list li a.add_pic_link .input { display: block; width: 100%; height: 100%; position: absolute; left: 0; top: 0; opacity: 0; cursor: pointer;} + .add_pic_list li a.add_pic_link i {display:block;font-style:normal;padding:10px 0 1px 0;} + .add_pic_list li a.add_pic_link b {font-size:14px;font-weight:500;} + .add_pic_list li a.add_pic_link b:before {content:'';display:inline-block;width:14px;height:12px;background:url(../img/sprites.png) -365px -53px no-repeat;margin:0 4px 0 0;position:relative;top:1px;} + .add_pic_list li a.add_pic_link:hover { color: #ff6600;} + .add_pic_list li a.add_pic_link:hover span { background-color: #ff6600;} + .add_pic_list li a.add_pic_link:hover b:before { background-position: -181px -32px;} + + + .i-staff-list > ul > li a.add_pic_link {text-align:center;background:#ffffff; display: block;-webkit-box-shadow:inset 0 1px 0 #e8e8e7;-moz-box-shadow:inset 0 1px 0 #e8e8e7;box-shadow:inset 0 1px 0 #e8e8e7;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box; width: 90px; height: 79px; padding: 11px 0 0 0; +font-size:13px;color:#a2a2a2;font-weight:500;text-decoration:none;position:relative;line-height:1.0;-webkit-transition:background .3s, color .3s;-moz-transition:background .3s, color .3s;-ms-transition:background .3s, color .3s;-o-transition:background .3s, color .3s;transition:background .3s, color .3s;font-family:'dindisplay_pro';} + .i-staff-list > ul > li a.add_pic_link span {display:block;margin:0 auto;width:27px;height:27px;background-color:#d0d0d0;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background-image:url(../img/add_pic_block_bg1.png);background-position:center center;background-repeat:no-repeat;-webkit-transition:background .3s, color .3s;-moz-transition:background .3s, color .3s;-ms-transition:background .3s, color .3s;-o-transition:background .3s, color .3s;transition:background .3s, color .3s; position: relative;} + .i-staff-list > ul > li a.add_pic_link .input { display: block; width: 100%; height: 100%; position: absolute; left: 0; top: 0; opacity: 0; cursor: pointer;} + .i-staff-list > ul > li a.add_pic_link i {display:block;font-style:normal;padding:10px 0 1px 0;} + .i-staff-list > ul > li a.add_pic_link b {font-size:14px;font-weight:500;} + .i-staff-list > ul > li a.add_pic_link b:before {content:'';display:inline-block;width:14px;height:12px;background:url(../img/sprites.png) -365px -53px no-repeat;margin:0 4px 0 0;position:relative;top:1px;} + .i-staff-list > ul > li a.add_pic_link:hover { color: #ff6600;} + .i-staff-list > ul > li a.add_pic_link:hover span { background-color: #ff6600;} + .i-staff-list > ul > li a.add_pic_link:hover b:before { background-position: -181px -32px;} + + .reason_block { font-size: 11px; color: #ff6600; line-height: 13px; margin: -10px 0 0 0;} + .reason_block p { padding: 6px 0 0 0; margin:0 0 0 0;} + + .i-info header { position: relative;} + + .site_link { position: absolute; right: 0; width: 201px; top: 41px; font-size: 15px !important; color: #ff6600 !important;font-family:'dindisplay_pro'; font-weight: 500; z-index: 50;} + .site_link a { text-decoration: none !important;color: #ff6600 !important;} + .site_link a:before { content:''; width: 16px; height: 16px; background: url(../img/sprites.png) -426px -73px; display: inline-block; margin: 0 5px 0 0; position: relative; top: 4px;} + + .site_link a:hover:before { background-position: -426px -73px!important;} + + .i-contacts1 { margin-top: 0!important;} + .i-additional1 {margin-bottom: 0!important;} + + .cl-item_active { border: 1px solid #fe9232;} + .doings_block { padding-right: 0;} + .doings_block .button { border-color: #ccc; margin: 0 10px 10px 0; font-weight: 400; color: #424242;font-family:'dindisplay_pro'; font-size: 17px;} + .doings_block .button:hover { color: #fff;border-color: #ff7600;} + .doings_block .button.more:after { background-position: -158px -16px;} + .doings_block .button.more:hover:after { background-position: -165px -23px;} + + + .button.dark_green {border-color:#a5c67d;color:#4e9000;} + .button.dark_green:hover {border-color:#4e9000;background:#4e9000;color:#fff;} + .button.icon-up:before {width:13px;height:15px;background-position:-348px -92px;} + .button.icon-up:hover:before {background-position:-365px -92px;} + + .s-news-list ul li {} + .s-news-list .nl-pict { float: left; margin: 0 10px 5px 0;} + + .add_company { text-align: right;} + .add_company a { color: #fff; text-decoration: underline; word-spacing: normal; position: relative; top: -6px;} + .add_company a:hover { text-decoration: none; color: #fff;} + .add_company a:before { content:'';background: url(../img/sprites.png) -405px -51px; display: inline-block !important; width: 16px; height: 17px; position: relative; left: -5px; top: 4px;} + .add_company a:hover:before {background: url(../img/sprites.png) -405px -51px !important;} +/*dimonn style 14.07.2014*/ \ No newline at end of file diff --git a/static/client/img/2.png b/static/client/img/2.png new file mode 100644 index 0000000000000000000000000000000000000000..42786c8598a83d03342cea4f9a6e94b9fa5981c7 GIT binary patch literal 1395 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 literal 0 HcmV?d00001 diff --git a/static/client/img/ad-themes/adt-1.png b/static/client/img/ad-themes/adt-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e672d56bd9c5339af561be896756db52cb777482 GIT binary patch literal 2669 zcmYjTc|4n07mj5bv=URL)kdN%T57Ad->4;OX%(%lv6r-#?ix!{MM$WvcC9IjVrq$m z*w-4NXr{hVK7?9gi#68N7KF^(nQwkGf4t9q-*eA<@43%&&-tB~Ru(4WV#mcmAdtA} zbz>V~YyzG>kplppI+30W3^LfO4%l0mdszRwzMdch4~(0qoT=B{`<^zQcRd1pK6~nd zKw?l+V*}Llp~bA>$44CD^sXZE@|UaU#W*#j=Q8oB@s2J&p7hRy9H_EN@ori4_%TJU zV$=3T0+D+vOwQOtTAfq|t$fgUvqH>p-8NpHBRG2D^zqkK%=u+9RqxE4n$COoGfYo1 z8;_LenWvKT&W){6x>m5bYAiEsHJBfJTaD1Y)~LYVloyb=keBjsxF+aU(UdE0_ucQa zew50=WCFQ)fJCP-Qs1Y#+Z!C>*v?hHG@e}1%z`(~HH<#O&B_Zx74JCq6Z6;a6*ahA zoohJ~)9#ivy?biI0t1S(4q4a}-~8cNzRsec92X>vAdU-3;6Y(f34@Mzv@Kmr<+j&n zEQ?1+U4!;^HX^80wfp+?3edr&Csq!?k@&Pa-{}}z7Z+7mT8Qea&v{?#eBP(&_*3msDBFCzlB#~OPLT6NDyOXZX#T-0>f-j$kr#Q&2(m@ zI+VLzwMdWmn`{%^Wl-#G&LuisgFqlV2al>9=`FMzP?ldAqp3SPIkiUOR1xhCW5eUgF0rFHz5vG>1ZI;tqd<&$GvmuDHjj%=I^tJE$+ z*<=qYp_;=VxlK1W6XC|L?ktQ6!v4jTskH#k`uwec?Qhd<-Q7tpwzdkI>2Y;FtjOn_ z$p|!B-vxHrw+)G%OVYdl1r{*z@rR({8k%VS&CQ9{C`sxxS>It!}RATt+Z}4>JscQ4hu}j0X zyJiou)2VxVdv06H%>67K|2*>YK4ABBcYoi17Crx3*MB+Fq3S`h70n2y^Xx|P?Rp!& z1=_2Zk6KMiAldpKzF( zZ%jFxR04y7rXs~pgnQ{UV7f1uy7uk22b$`sgj@lP-Se;r!l*CSIkhv``ziR-bx-l$UMj#*cYc z9cGQhtE&qggVFCgtvkt#-rmz085w%h>vp+GspMZ4ns-+WZ$CyTMImA?haX zTDI|y!UP|bdvHGp72v;q!%{Q7uTc4`ljAR>6V1h6(yZdi@8-8xv_uvt)u7BQ(SJ(P zl~n-|Gv;3`c+=ppiRyArXq=i5YZ(NDyEiD43E1BbtfOYX{J+y2$XK z|JT*r;i2j2a;>bO;NC}}FH+1&O9j7~aD}?NLrPct4iZ_35zEWV=ZomyrvF>?^^R-1 zzspe*FbXVpU3us8%(R^k-KSeNx`rj`kyD?a`vWXHQu@JDf#07zofjg`Jj<-Au5Nct zcXD=ClJI%>)I37bA^ORGGRRb_B2V!$@}@@jh+w!QuIimt(aBMGd-UBm2tqxYg&-tktV6=r3I?m!sNT$*`E!P1M z0K8>UU=buyNjT6&cF(TG46|m0(eto76C$iPEJvSd&8Whj9Zpf}sRU>_mWR$5{m9|)yM?nQ>2f5) zC>D#$CBR^`%+?bL&}1Bs10VIq`?<){!KVSZpCmKSF8Aj7LejO6#{C?6&~I&=`Ts{A zIw~ihfap7Uh#qC76Cx3%0YiL`{`)bosnB>97D7s=ms9_NAp_1Js>=J}zn z_9isjvYuhyS7)dX54aVmF~8mNq)9FjV6bjSn8-59bJ0sl=z>I+JvzJgr}>TEIbP6r>6qJw)c0dU#?_jjl9XIcZ<6fIJoMu$$e=H*uKhNAp#aZc6< z`?QOPLH~A;yb^-k($n>g(G1c%+*dIVeMVtTt literal 0 HcmV?d00001 diff --git a/static/client/img/ad-themes/adt-2.png b/static/client/img/ad-themes/adt-2.png new file mode 100644 index 0000000000000000000000000000000000000000..473bc9386647763f4063b51763ee8aedf042fc09 GIT binary patch literal 2105 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 bRb4>&s6}H&(dklU(+7BYoPyDgg_HgRF8L)A literal 0 HcmV?d00001 diff --git a/static/client/img/add_link_text.png b/static/client/img/add_link_text.png new file mode 100644 index 0000000000000000000000000000000000000000..74974dd2143d7dfbb134a835d42b0ca3d857a60f GIT binary patch literal 964 zcmaJ=O>fgM81_~%jY<0fgNw;P0z~7uZ77KrrZq`f(Ne0e(t1KoW48@k;*fYW?U5Tt z{>ZLKAjFwp0OHOWAtZ#vq~dgK$AJdOJOZ=`?N`2GJ5`z?f{Ux;kVkn?HuSH3uHIL$Y~G> zHUK-jY2H55P6L`OrcjmDyrznqUl(LvquuqV$#!_R&^FjScWvB9DWF0jFA(`;6mmDs zhspL_!J>&5`w{n92s1^u%TBo=iA*m_2%?2-n9SNF8irCgLReO^lIB3i`9CxW7U+aG z>1DqE6i!;Bh@vJ<*lFyE!S%MYP?2uN)a5L0F?KTVVq?HKO9m{0rU`E!`5|G$Diw_F(q6e*(r~3{DHxloZO*wC^G*XA@;R4W za?4A(*(L;$h-}f=e?dt#W&xa5tozGzDJ|8Tamn&r)TLY`l0n&A|C;mMC6*_QLpWDAyp1ubwYhdjR+ljA6h2WYLX|28x)cfNa2Jq>@6K^TV%1cQozkE>ikv_*#<8!B+t}yYSK>qr z2q7UhX8r&h5)u*v11t>u1dtdJBPOXJz@yG5}zu zzGK>AUlrfwi%a7F(*F8XY-_yM;Vrh$hfYkvmdAP&)&u8&+SKtz$Dim1087{Wc87PY zUCm{I>|_`@4I;q?U}H0l9QTNF*rNx2s7pWIy_cZx>C#@&!d7I^zP~e$X=~hQyW=Cb z;z^sg;YO+nfq-%crokXgv{aWSx|%p=ZY048gdgeBSyCOV2@MugSd@!-7ZVlUs>q~B z)H1mV6-){U7Z54riK5|(Mv8E{BoQt4_BGqwp2iZEF7-K&G=zr3p*$?eEIvS_QmG)U zAVtXwL_QgX+)49cvOZHVY2wCy#C;aROwsAF6Rt}l)3XwSXf7Kj(`ynJhEgX&M8;W3 zGoWSt9~uO6bi!?Vp6@?}llCa0$fgN9iCxjS{q-zVq!}@FIE&ki4Q994>@&`iK8v7X z!0UT{=&@mPV*F&rPqA|a`@44?*8+z`}6lz_yN4Iz{fYQ55Ef#sMi|it7`Z0ABD3ke*gdg literal 0 HcmV?d00001 diff --git a/static/client/img/add_pic_block_bg1.png b/static/client/img/add_pic_block_bg1.png new file mode 100644 index 0000000000000000000000000000000000000000..74debc37be8b0fe4fb6a44e0daec1e56dfc28043 GIT binary patch literal 966 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 literal 0 HcmV?d00001 diff --git a/static/client/img/soc-medias/icon-lin_hover.png b/static/client/img/soc-medias/icon-lin_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..c33719f434b304caee3b51588c7962b489f28458 GIT binary patch literal 1123 zcmaJ=O=#3u9DlZ5TWf2l3W|dEnTlJ*$;V9MG_kWf&9ru;DP=m?5fqvxZ#uC}UYfi* zX~CtsqUb>e@le!55oPz}2Z$hx?qzqyi-@PEcJJVlZW&Gc&t zw!0$h_{(jg4dVjcV((clTU5qUH&gE3T!R72hL=n%$$W*5X6Q>5Ev%q*J-z z#puy{#n#$L2biph?BgRX+raxe_z1kZb3j@ggIgDBC%Ynvn#tM?<&Kg0rrA$_G<`U@ z{#wI-H^A@Z+xc=G%RE^3`q;^Azq+@t?Fl@Y{rvd!|BJsS=I6=_^{3`qFSJ~LpL$tn zK=s{k+%0EXL~s{~5AE5rFIBJU3ed(kmH%B=Hp(^GT>GCBmztSfck0ij=E=v_x20c- z@8G#LO52g9n>R-4Hny*we=v6x99rGj|Lm{NeWy~*{Ox12JMY(tT%@LLHduAJ02+8O XcXh|}-B+Zc@Y!d22GX~>M^1kMVbWlV literal 0 HcmV?d00001 diff --git a/static/client/img/soc-medias/sm-icon-twit_hover.png b/static/client/img/soc-medias/sm-icon-twit_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5b587d4c91ec3d7cca583e3dddccc8c1c52c4e GIT binary patch literal 1160 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv8U}fi7AzZCsS=07?>3^Ln2Bde0{8v^KDjP)EVYz|dIVz*yhVSl7_V%D~df&{P2mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7`ij`p|xTF>*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu09svw}u=W?o8u zd9fx~xv#I4XI^nhVqS8pr;Du;&;Y&6%oHmNV+#u>6GICFXA=`cLst_gV;2`kXG23% zV`DR8XLC20UYGpj(%jU%5}4i;gkDRWdO;~6w*Y9fOKMSOS!#+~QGTuh*vD3xxZPrg z(>$o&6x?nx$EjBz=oo!ayduRjObD2GKumb51#;l&J~a=R*o%Ovx^pR~7BENr^>lFz zskpUf%0u2J1A*4YAMxfBcvD!+0?ZRw%qH-12(L(Foa1m~f${;iRHi+%!ix`X<0v}m zy^uZr{iW-_4jWWtA6=$%dguQm60Dw|TpB*Qbg3ywu2i*E{5ofX))PAe(@5)vRkOG= z&p+F?L|gMn^@>Dm6;T7z13~Ub*+Xu!t*PG|)t7Qg%hoD^_2svF3~a9%KVR_s_qeU& zBij)k6Z2b!YknP$JH(bIGwohpJc&AFIBZv4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`Gu2HtFf>sxx70H< zH8im>)KM@pFf`UTFxEFT)-^P;GO)BVG*y5CC7^9ZDQQ+gE^bh}fIM5JjFOT9D}DX) z@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal z@=Hr>m4GgVcp0+w{G(ayiGsVix&DFx()XChy*~G-q(AC7z(aqS&%+%T3 zz{%CX+}Hr7*Cju>G&eP`1g19yq1OVZUQkNNEdbi=l3J8mmYU*Ll%J~r_OVqaZnv1? zG!Lpb1-DzwaO%|uIz}H9uSoF>69Oh45EGtifgE_cPt5}+_99@a4%o|B&A`AY?&;zf zQgLg`l!v@c1_G@cAMVdnP~OnkbAW9_qXlCRgLFa!gLy&ACdNDl;e^?HCKbsgnCyL` zdTCyK-1_UnmrW}5RBYTIn)`0vS|7x9^44eV4ME%uol>7Rlq>$P)Hr&re4)t1IhWcO zZ{8}wWWk_ta$l}ez$wYYYd74PX`z++W9`Gg$2z&waU~UfcbiivIAPKZkFAP~ z;jE8$-C(?aV)NrZqjPVU#qRgGB>G`OVU+RoUz@ykym&mNaH{dTFRp4nd2N^L8%pcL z>i2ZI?qw}LeYgL?k#`1MasiVH*@M2ujvlDP*SZ&g&e$ZNhVx+jHh^7heOF8lJ9xF6*2UngAH) Bm>U29 literal 0 HcmV?d00001 diff --git a/static/client/img/sprites.png b/static/client/img/sprites.png index fa25870de3efd82d446122b048bbe1bb32177697..77d3a20cd94a59d137a9d81fd717c0fd9a0424e3 100644 GIT binary patch delta 53915 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

M?3aU1rizafpXYxFJS`M;(3Zmai(XP8HGEy&6 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 z

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 diff --git a/static/client/js/profile.js b/static/client/js/profile.js index e90905b4..9e144f3f 100644 --- a/static/client/js/profile.js +++ b/static/client/js/profile.js @@ -103,8 +103,8 @@ function handleAboutForm(data){ function formHandler(id, handleFunction){ $(id).on('submit', function(event){ - event.preventDefault() - $this = $(this) + event.preventDefault(); + $this = $(this); var url = $this.attr('action'); var formData = $this.serialize(); $.post(url, formData, handleFunction); @@ -123,10 +123,9 @@ $(document).ready(function(){ formHandler('#web_page_form', handleWebPageForm); formHandler('#about_form', handleAboutForm); - //$('#id_country').onchange = function(){alert('111');} - $('#id_country').on('change', function(){alert('111');}) +// $('#id_country').on('change', function(){alert('111');}) -}) +}); diff --git a/static/custom_js/make_select.js b/static/custom_js/make_select.js index 08304949..04ec7a53 100644 --- a/static/custom_js/make_select.js +++ b/static/custom_js/make_select.js @@ -7,6 +7,8 @@ $(document).ready(function(){ });//end select + + $('#id_city').select2({ placeholder: "Search city", width: 'element', @@ -34,13 +36,58 @@ $(document).ready(function(){ return {results: results}; } }, - initSelection : function(element, callback) { - var id= $(element).val(); - var text = $(element).attr('data-init-text'); - callback({id: id, text:text}); + initSelection : function(element, callback) { + var id= $(element).val(); + var text = $(element).attr('data-init-text'); + callback({id: id, text:text}); - } + } }); + // + $('#id_tag').select2({ + placeholder: "Search tag", + width: '550px', + multiple: true, + ajax: { + + url: "/admin/theme/tag/search/", + dataType: "json", + quietMillis: 200, + multiple: true, + + data: function(term, page, theme){ + var theme = $('#id_theme').serialize(); + return {term: term, + page: page, + theme: theme}; + }, + + results: function (data) { + var results = []; + $.each(data, function(index, item){ + results.push({ + id: item.id, + text: item.label + }); + }); + return {results: results}; + } + }, + initSelection : function(element, callback) { + var data = []; + $(element.val().split(",")).each(function(i) { + var item = this.split(':'); + data.push({ + id: item[0], + text: item[1] + }); + }); + callback(data); + + } + + }); + })//end ready diff --git a/templates/admin/article/article_add.html b/templates/admin/article/article_add.html index 66fe50c6..2adcb5a2 100644 --- a/templates/admin/article/article_add.html +++ b/templates/admin/article/article_add.html @@ -33,9 +33,8 @@ {{ form.article_id }} {# main_title #} - {% with field='main_title' form=form languages=languages %} - {% include 'admin/forms/multilang.html' %} - {% endwith %} + + {% include 'admin/forms/multilang.html' with field='main_title' form=form languages=languages %} {# theme #}

@@ -53,9 +52,9 @@
{# preview #} - {% with field='preview' form=form languages=languages %} - {% include 'admin/forms/multilang.html' %} - {% endwith %} + + {% include 'admin/forms/multilang.html' with field='preview' form=form languages=languages %} + {# author #}
@@ -65,21 +64,18 @@
{# description #} - {% with field='description' form=form languages=languages %} - {% include 'admin/forms/multilang.html' %} - {% endwith %} + {% include 'admin/forms/multilang.html' with field='description' form=form languages=languages %} {# keywords #} - {% with field='keywords' form=form languages=languages %} - {% include 'admin/forms/multilang.html' %} - {% endwith %} + + {% include 'admin/forms/multilang.html' with field='keywords' form=form languages=languages %} + {# title #} - {% with field='title' form=form languages=languages %} - {% include 'admin/forms/multilang.html' %} - {% endwith %} + + {% include 'admin/forms/multilang.html' with field='title' form=form languages=languages %} + {# descriptions #} - {% with field='descriptions' form=form languages=languages %} - {% include 'admin/forms/multilang.html' %} - {% endwith %} + + {% include 'admin/forms/multilang.html' with field='descriptions' form=form languages=languages %} diff --git a/templates/admin/article/article_admin_list.html b/templates/admin/article/article_admin_list.html new file mode 100644 index 00000000..1c0526b5 --- /dev/null +++ b/templates/admin/article/article_admin_list.html @@ -0,0 +1,54 @@ +{% extends 'base.html' %} +{% block body %} +
+
+

Список статей

+
+
+ + + + + + + + + + + + {% for item in object_list %} + + + + + + + + + + + {% endfor %} + +
ЗаголовокАвтор 
{{ item.main_title }}{% ifnotequal item.author None %}{{ item.author }} {% endifnotequal %} + + Изменить + + + + Копировать + + + + Удалить + +
+ + Добавить + {% if blog_flag %}статью{% else %}{% if news_flag %}новость{% endif %}{% endif %} + +
+
+{% endblock %} \ No newline at end of file diff --git a/templates/admin/article/blog_form.html b/templates/admin/article/blog_form.html new file mode 100644 index 00000000..eb531763 --- /dev/null +++ b/templates/admin/article/blog_form.html @@ -0,0 +1,99 @@ +{% extends 'base.html' %} +{% load static %} +{# Displays article form #} + + {% block scripts %} + + + {# selects #} + + + + {# ajax #} + + + + {% endblock %} + +{% block body %} +
{% csrf_token %} +
+ {% if article %} Изменить {% else %} Добавить {% endif %}статью + +
+
+

Основная информация

+
+
+ + {# main_title #} + {% include 'admin/forms/multilang.html' with field='main_title' form=form languages=languages %} + + {# theme #} +
+ +
+ {{ form.theme }} + {{ form.theme.errors }} +
+
+ {# tag #} +
+ +
+ {{ form.tag }} + {{ form.tag.errors }} +
+
+ {# exposition #} + {% if form.exposition %} +
+ +
+ {{ form.exposition }} + {{ form.exposition.errors }} +
+
+ {% endif %} + {# conference #} + {% if form.conference%} +
+ +
+ {{ form.conference }} + {{ form.conference.errors }} +
+
+ {% endif %} + {# logo #} +
+ +
+ {{ form.logo }} + {% if article.logo %} + + + {% endif %} + {{ form.logo.errors }} +
+
+ {# preview #} + {% include 'admin/forms/multilang.html' with field='preview' form=form languages=languages %} + {# description #} + {% include 'admin/forms/multilang.html' with field='description' form=form languages=languages %} + {# keywords #} + {% include 'admin/forms/multilang.html' with field='keywords' form=form languages=languages %} + {# title #} + {% include 'admin/forms/multilang.html' with field='title' form=form languages=languages %} + {# descriptions #} + {% include 'admin/forms/multilang.html' with field='descriptions' form=form languages=languages %} +
+
+
+ + + +
+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/admin/base.html b/templates/admin/base.html index fd794200..f8d573ce 100644 --- a/templates/admin/base.html +++ b/templates/admin/base.html @@ -110,8 +110,8 @@