diff --git a/opentech/public/mailchimp/migrations/0001_add_newsletter_setting.py b/opentech/public/mailchimp/migrations/0001_add_newsletter_setting.py new file mode 100644 index 0000000000000000000000000000000000000000..0fba02a23744a9e84236495a361fda7416c6dde1 --- /dev/null +++ b/opentech/public/mailchimp/migrations/0001_add_newsletter_setting.py @@ -0,0 +1,27 @@ +# Generated by Django 2.1.11 on 2019-10-03 12:56 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('wagtailcore', '0041_group_collection_permissions_verbose_name_plural'), + ] + + operations = [ + migrations.CreateModel( + name='NewsletterSettings', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('newsletter_title', models.CharField(default='Get the latest internet freedom news', help_text='The title of the newsletter signup form.', max_length=255, verbose_name='Newsletter title')), + ('site', models.OneToOneField(editable=False, on_delete=django.db.models.deletion.CASCADE, to='wagtailcore.Site')), + ], + options={ + 'verbose_name': 'newsletter settings', + }, + ), + ] diff --git a/opentech/public/mailchimp/models.py b/opentech/public/mailchimp/models.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b337a66a4b9b3af65bc69216040e8679c6c68900 100644 --- a/opentech/public/mailchimp/models.py +++ b/opentech/public/mailchimp/models.py @@ -0,0 +1,21 @@ +from django.db import models + +from wagtail.admin.edit_handlers import FieldPanel +from wagtail.contrib.settings.models import BaseSetting, register_setting + + +@register_setting +class NewsletterSettings(BaseSetting): + class Meta: + verbose_name = 'newsletter settings' + + newsletter_title = models.CharField( + "Newsletter title", + max_length=255, + default='Get the latest internet freedom news', + help_text='The title of the newsletter signup form.', + ) + + panels = [ + FieldPanel('newsletter_title'), + ] diff --git a/opentech/public/mailchimp/templates/mailchimp/newsletter_signup.html b/opentech/public/mailchimp/templates/mailchimp/newsletter_signup.html index 5308980c8f72e8dec699902663a28bc8e6ff0405..63ede4bfd2a6fdd8d1d821f46dff591b26a29d58 100644 --- a/opentech/public/mailchimp/templates/mailchimp/newsletter_signup.html +++ b/opentech/public/mailchimp/templates/mailchimp/newsletter_signup.html @@ -1,5 +1,7 @@ +{% if newsletter_enabled %} {% load static i18n %} -<h4>Get the latest internet freedom news</h4> + +<h4>{{ settings.mailchimp.NewsletterSettings.newsletter_title }}</h4> <form class="form newsletter-form" action="#" data-actionpath="{{ PUBLIC_SITE.root_url }}{% url "newsletter:subscribe" %}" method="post"> <div> {% for field in newsletter_form %} @@ -20,3 +22,6 @@ {% block extra_js %} <script src="{% static 'js/public/protect-form.js' %}"></script> {% endblock %} +{% else %} +Set MAILCHIMP_API_KEY and MAILCHIMP_LIST_ID to activate newsletter form. +{% endif %} diff --git a/opentech/public/utils/context_processors.py b/opentech/public/utils/context_processors.py index 3986dc1e684e0d4fc6e04f5be36c938c32fa4788..dd24c7ced597955b33176573bd81e5599bb7bece 100644 --- a/opentech/public/utils/context_processors.py +++ b/opentech/public/utils/context_processors.py @@ -10,6 +10,7 @@ def global_vars(request): 'APPLY_SITE': ApplyHomePage.objects.first().get_site(), 'PUBLIC_SITE': HomePage.objects.first().get_site(), 'newsletter_form': NewsletterForm(), + 'newsletter_enabled': settings.MAILCHIMP_API_KEY and settings.MAILCHIMP_LIST_ID, 'ORG_LONG_NAME': settings.ORG_LONG_NAME, 'ORG_SHORT_NAME': settings.ORG_SHORT_NAME, 'ORG_EMAIL': settings.ORG_EMAIL, diff --git a/opentech/public/utils/migrations/0003_add_site_logo_setting.py b/opentech/public/utils/migrations/0003_add_site_logo_setting.py new file mode 100644 index 0000000000000000000000000000000000000000..3585554fbb52cb7e072389db5ca1ad935c602f89 --- /dev/null +++ b/opentech/public/utils/migrations/0003_add_site_logo_setting.py @@ -0,0 +1,25 @@ +# Generated by Django 2.1.11 on 2019-10-03 12:08 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('images', '0003_customimage_drupal_id'), + ('utils', '0002_add_footer_content_setting'), + ] + + operations = [ + migrations.AddField( + model_name='systemmessagessettings', + name='site_logo_default', + field=models.ForeignKey(blank=True, help_text='Default site logo', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='images.CustomImage'), + ), + migrations.AddField( + model_name='systemmessagessettings', + name='site_logo_mobile', + field=models.ForeignKey(blank=True, help_text='Mobil site logo (if not set default will be used)', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='images.CustomImage'), + ), + ] diff --git a/opentech/public/utils/models.py b/opentech/public/utils/models.py index 2d8055aa28dc462541e2ea9365b05283decccfcb..21d4d353f92f625cc55c124a63314c1f3ec70d96 100644 --- a/opentech/public/utils/models.py +++ b/opentech/public/utils/models.py @@ -228,6 +228,24 @@ class SystemMessagesSettings(BaseSetting): class Meta: verbose_name = 'system settings' + site_logo_default = models.ForeignKey( + 'images.CustomImage', + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name='+', + help_text='Default site logo', + ) + + site_logo_mobile = models.ForeignKey( + 'images.CustomImage', + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name='+', + help_text='Mobil site logo (if not set default will be used)', + ) + footer_content = models.TextField( "Footer content", default='<p>Configure this text in Wagtail admin -> Settings -> System settings.</p>', @@ -245,6 +263,10 @@ class SystemMessagesSettings(BaseSetting): ) panels = [ + MultiFieldPanel([ + FieldPanel('site_logo_default'), + FieldPanel('site_logo_mobile'), + ], 'Site logo'), FieldPanel('footer_content'), MultiFieldPanel([ FieldPanel('title_404'), diff --git a/opentech/templates/base.html b/opentech/templates/base.html index 57c690e3b1e538d441c6e2f47b890764d5fd4d11..98d31618532cf10368970a059ab96975bcf14b22 100644 --- a/opentech/templates/base.html +++ b/opentech/templates/base.html @@ -83,9 +83,20 @@ <div class="header__inner wrapper wrapper--large"> <a href="{% slugurl 'home' %}" aria-label="Home link"> + {% if settings.utils.SystemMessagesSettings.site_logo_default %} + {% image settings.utils.SystemMessagesSettings.site_logo_default width-215 as logo_default %} + <img class="header__logo header__logo--desktop" src="{{ logo_default.url }}"> + {% if settings.utils.SystemMessagesSettings.site_logo_mobile %} + {% image settings.utils.SystemMessagesSettings.site_logo_mobile width-60 as logo_mobile %} + <img class="header__logo header__logo--mobile" src="{{ logo_mobile.url }}"> + {% else %} + <img class="header__logo header__logo--mobile" src="{{ logo_default.url }}"> + {% endif %} + {% else %} <svg class="header__logo header__logo--desktop header__logo--desktop-light"><use xlink:href="#logo-desktop"></use></svg> <svg class="header__logo header__logo--desktop header__logo--desktop-dark"><use xlink:href="#logo-desktop--dark"></use></svg> <svg class="header__logo header__logo--mobile"><use xlink:href="#logo-mobile"></use></svg> + {% endif %} </a> <div class="header__inner header__inner--mobile-buttons"> @@ -112,7 +123,12 @@ <section class="header__menus header__menus--mobile"> <div class="header__inner header__inner--menu-open"> <a href="{% slugurl 'home' %}" aria-label="Home link"> + {% if settings.utils.SystemMessagesSettings.site_logo_mobile %} + {% image settings.utils.SystemMessagesSettings.site_logo_mobile width-60 as logo_mobile %} + <img class="header__logo header__logo--mobile" src="{{ logo_mobile.url }}"> + {% else %} <svg class="header__logo header__logo--mobile"><use xlink:href="#logo-mobile"></use></svg> + {% endif %} </a> <div class="header__inner header__inner--mobile-buttons"> <button class="button js-mobile-search-toggle" aria-haspopup="true" aria-label="Toggle mobile search">