From e180be7cce99d59054b206a061386188c5652f02 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Wed, 12 Jun 2019 10:18:02 +0200 Subject: [PATCH] Cite/banner/carousel change. --- src/social/admin.py | 32 +++- .../migrations/0009_auto_20190715_1405.py | 50 ++++++ .../migrations/0010_cite_background_plain.py | 20 +++ src/social/models.py | 35 +++- src/social/templates/social/carousel.html | 21 ++- src/social/templates/social/cite_promo.html | 13 +- src/social/templatetags/social_tags.py | 34 +++- src/social/utils.py | 4 +- src/sponsors/static/sponsors/js/sponsors.js | 2 +- src/wolnelektury/settings/static.py | 2 +- .../static/js/contrib/jquery.cycle.min.js | 11 -- .../static/js/contrib/jquery.cycle2.min.js | 15 ++ src/wolnelektury/static/scss/main/cite.scss | 58 +++++- .../static/scss/main/main_page.scss | 168 +++++++++++++----- src/wolnelektury/views.py | 8 - 15 files changed, 376 insertions(+), 97 deletions(-) create mode 100644 src/social/migrations/0009_auto_20190715_1405.py create mode 100644 src/social/migrations/0010_cite_background_plain.py delete mode 100644 src/wolnelektury/static/js/contrib/jquery.cycle.min.js create mode 100644 src/wolnelektury/static/js/contrib/jquery.cycle2.min.js diff --git a/src/social/admin.py b/src/social/admin.py index 75c7156ef..01e60fa91 100755 --- a/src/social/admin.py +++ b/src/social/admin.py @@ -2,23 +2,47 @@ # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # from django.contrib import admin +from django.forms import ModelForm +from django.forms.widgets import TextInput from django.utils.translation import ugettext_lazy as _ from admin_ordering.admin import OrderableAdmin from social.models import Cite, BannerGroup, Carousel, CarouselItem +class CiteForm(ModelForm): + class Meta: + model = Cite + fields = '__all__' + widgets = { + 'background_color': TextInput(attrs={'type': 'color'}), + } + class CiteAdmin(admin.ModelAdmin): + form = CiteForm list_display = ['nonempty_text', 'created_at', 'sticky', 'vip', 'small', 'has_image'] list_filter = ['group'] readonly_fields = ['created_at'] + raw_id_fields = ['book'] fieldsets = ( - (None, {'fields': ('group', 'sticky', 'created_at')}), - (_('Content'), {'fields': ('book', 'text', 'small', 'vip', 'link', 'video', 'picture', 'banner')}), + (None, {'fields': ('group', 'sticky', 'created_at', 'book')}), + (_('Content'), {'fields': ('link', 'vip', 'text', 'small')}), + (_('Media box'), {'fields': ( + 'video', + 'picture', 'picture_alt', + 'picture_title', 'picture_author', 'picture_link', + 'picture_license', 'picture_license_link' + + #'banner', + )}), ( _('Background'), {'fields': ( - 'image', 'image_shift', 'image_title', 'image_author', - 'image_link', 'image_license', 'image_license_link')}, + ('background_plain', 'background_color'), + 'image', 'image_shift', + 'banner', + 'image_title', 'image_author', 'image_link', + 'image_license', 'image_license_link' + )}, ) ) diff --git a/src/social/migrations/0009_auto_20190715_1405.py b/src/social/migrations/0009_auto_20190715_1405.py new file mode 100644 index 000000000..f8c140044 --- /dev/null +++ b/src/social/migrations/0009_auto_20190715_1405.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-07-15 12:05 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('social', '0008_auto_20190403_1510'), + ] + + operations = [ + migrations.AddField( + model_name='cite', + name='background_color', + field=models.CharField(blank=True, max_length=32, verbose_name='background color'), + ), + migrations.AddField( + model_name='cite', + name='picture_alt', + field=models.CharField(blank=True, max_length=255, verbose_name='picture alternative text'), + ), + migrations.AddField( + model_name='cite', + name='picture_author', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='picture author'), + ), + migrations.AddField( + model_name='cite', + name='picture_license', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='picture license name'), + ), + migrations.AddField( + model_name='cite', + name='picture_license_link', + field=models.URLField(blank=True, null=True, verbose_name='picture license link'), + ), + migrations.AddField( + model_name='cite', + name='picture_link', + field=models.URLField(blank=True, null=True, verbose_name='picture link'), + ), + migrations.AddField( + model_name='cite', + name='picture_title', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='picture title'), + ), + ] diff --git a/src/social/migrations/0010_cite_background_plain.py b/src/social/migrations/0010_cite_background_plain.py new file mode 100644 index 000000000..54715ab81 --- /dev/null +++ b/src/social/migrations/0010_cite_background_plain.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-07-15 12:12 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('social', '0009_auto_20190715_1405'), + ] + + operations = [ + migrations.AddField( + model_name='cite', + name='background_plain', + field=models.BooleanField(default=False, verbose_name='plain background'), + ), + ] diff --git a/src/social/models.py b/src/social/models.py index cd78a3cff..6f1f697fa 100644 --- a/src/social/models.py +++ b/src/social/models.py @@ -6,7 +6,7 @@ from django.db import models from django.conf import settings from django.core.exceptions import ValidationError from django.core.urlresolvers import reverse -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext_lazy as _, string_concat from ssify import flush_ssi_includes from catalogue.models import Book @@ -42,18 +42,27 @@ class Cite(models.Model): vip = models.CharField(_('VIP'), max_length=128, null=True, blank=True) link = models.URLField(_('link')) video = models.URLField(_('video'), blank=True) - picture = models.ImageField(_('picture'), blank=True) + picture = models.ImageField(_('picture'), blank=True, + help_text='Najlepsze wymiary: 975 x 315 z tekstem, 487 x 315 bez tekstu.') + picture_alt = models.CharField(_('picture alternative text'), max_length=255, blank=True) + picture_title = models.CharField(_('picture title'), max_length=255, null=True, blank=True) + picture_author = models.CharField(_('picture author'), max_length=255, blank=True, null=True) + picture_link = models.URLField(_('picture link'), blank=True, null=True) + picture_license = models.CharField(_('picture license name'), max_length=255, blank=True, null=True) + picture_license_link = models.URLField(_('picture license link'), blank=True, null=True) sticky = models.BooleanField(_('sticky'), default=False, db_index=True, help_text=_('Sticky cites will take precedense.')) - banner = models.BooleanField(_('banner'), default=False, help_text=_('Adjust size to image, ignore the text')) + banner = models.BooleanField(_('banner'), default=False, help_text=string_concat(_('Adjust size to image, ignore the text'), '
(Przestarzałe; użyj funkcji "Obraz" w sekcji "Media box")')) + background_plain = models.BooleanField(_('plain background'), default=False) + background_color = models.CharField(_('background color'), max_length=32, blank=True) image = models.ImageField( _('image'), upload_to='social/cite', null=True, blank=True, help_text=_('Best image is exactly 975px wide and weights under 100kB.')) image_shift = models.IntegerField( _('shift'), null=True, blank=True, - help_text=_(u'Vertical shift, in percents. 0 means top, 100 is bottom. Default is 50%.')) + help_text=string_concat(_('Vertical shift, in percents. 0 means top, 100 is bottom. Default is 50%.'), '
(Przestarzałe; użyj obrazka o właściwych proporcjach;)')) image_title = models.CharField(_('title'), max_length=255, null=True, blank=True) image_author = models.CharField(_('author'), max_length=255, blank=True, null=True) image_link = models.URLField(_('link'), blank=True, null=True) @@ -69,11 +78,23 @@ class Cite(models.Model): verbose_name_plural = _('banners') def __str__(self): - return u"%s: %s…" % (self.vip, self.text[:60]) + t = [] + if self.text: + t.append(self.text[:60]) + if self.book_id: + t.append('[ks.]'[:60]) + t.append(self.link[:60]) + if self.vip: + t.append('vip: ' + self.vip) + if self.picture: + t.append('[obr.]') + if self.video: + t.append('[vid.]') + return ', '.join(t) def get_absolute_url(self): """This is used for testing.""" - return "%s?choose_cite=%d" % (reverse('main_page'), self.id) + return "%s?banner=%d" % (reverse('main_page'), self.id) def has_box(self): return self.video or self.picture @@ -90,8 +111,6 @@ class Cite(models.Model): pieces.append('box') if self.has_body(): pieces.append('text') - if self.small: - pieces.append('small') return '-'.join(pieces) diff --git a/src/social/templates/social/carousel.html b/src/social/templates/social/carousel.html index 4d3e4e50c..ed63b5bf1 100644 --- a/src/social/templates/social/carousel.html +++ b/src/social/templates/social/carousel.html @@ -1,15 +1,18 @@ {% spaceless %} -{% load i18n %} +