You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2019/11/05 21:40:07 UTC

[airavata-django-portal] branch master updated: AIRAVATA-3264 Wagtail: ExtraWebResources for including CSS/JS on all pages

This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git


The following commit(s) were added to refs/heads/master by this push:
     new 71f972e  AIRAVATA-3264 Wagtail: ExtraWebResources for including CSS/JS on all pages
71f972e is described below

commit 71f972ec358cc37bc4974523e46eb16aa17aafec
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Tue Nov 5 16:39:37 2019 -0500

    AIRAVATA-3264 Wagtail: ExtraWebResources for including CSS/JS on all pages
---
 .../includes/extra_web_resources.html              |  7 +++
 django_airavata/templates/includes/head.html       |  2 +
 .../base/migrations/0021_auto_20191105_2053.py     | 56 +++++++++++++++++++++
 django_airavata/wagtailapps/base/models.py         | 58 ++++++++++++++++++++++
 .../base/templatetags/navigation_tags.py           | 10 ++++
 5 files changed, 133 insertions(+)

diff --git a/django_airavata/templates/django_airavata_wagtail_base/includes/extra_web_resources.html b/django_airavata/templates/django_airavata_wagtail_base/includes/extra_web_resources.html
new file mode 100644
index 0000000..9836f97
--- /dev/null
+++ b/django_airavata/templates/django_airavata_wagtail_base/includes/extra_web_resources.html
@@ -0,0 +1,7 @@
+{% for css_link in extra_web_resources.css_links.all %}
+<link media="all" type="text/css" rel="stylesheet" href="{{ css_link.url }}">
+{% endfor %}
+
+{% for js_link in extra_web_resources.js_links.all %}
+<script src="{{ js_link.url }}"></script>
+{% endfor %}
diff --git a/django_airavata/templates/includes/head.html b/django_airavata/templates/includes/head.html
index 83a7db9..2e3febe 100644
--- a/django_airavata/templates/includes/head.html
+++ b/django_airavata/templates/includes/head.html
@@ -27,6 +27,8 @@
       {% include "includes/head-extra.html" %}
     {% endblock head-extra %}
 
+    {% extra_web_resources %}
+
     <style>
       {% get_css %}
     </style>
diff --git a/django_airavata/wagtailapps/base/migrations/0021_auto_20191105_2053.py b/django_airavata/wagtailapps/base/migrations/0021_auto_20191105_2053.py
new file mode 100644
index 0000000..f75ffa2
--- /dev/null
+++ b/django_airavata/wagtailapps/base/migrations/0021_auto_20191105_2053.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.21 on 2019-11-05 20:53
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import modelcluster.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('django_airavata_wagtail_base', '0020_auto_20190417_1949'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='CssLink',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
+                ('url', models.CharField(help_text='URL of CSS stylesheet.', max_length=255)),
+            ],
+            options={
+                'ordering': ['sort_order'],
+                'abstract': False,
+            },
+        ),
+        migrations.CreateModel(
+            name='ExtraWebResources',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+            ],
+            options={
+                'verbose_name_plural': 'Extra Web Resources',
+            },
+        ),
+        migrations.CreateModel(
+            name='JsLink',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
+                ('url', models.CharField(help_text='URL of JavaScript script.', max_length=255)),
+                ('extra_web_resources', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='js_links', to='django_airavata_wagtail_base.ExtraWebResources')),
+            ],
+            options={
+                'ordering': ['sort_order'],
+                'abstract': False,
+            },
+        ),
+        migrations.AddField(
+            model_name='csslink',
+            name='extra_web_resources',
+            field=modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='css_links', to='django_airavata_wagtail_base.ExtraWebResources'),
+        ),
+    ]
diff --git a/django_airavata/wagtailapps/base/models.py b/django_airavata/wagtailapps/base/models.py
index 3a88e8e..4a85e1b 100644
--- a/django_airavata/wagtailapps/base/models.py
+++ b/django_airavata/wagtailapps/base/models.py
@@ -1,7 +1,10 @@
 from __future__ import unicode_literals
 
+import os
+
 from django.db import models
 from modelcluster.fields import ParentalKey
+from modelcluster.models import ClusterableModel
 from wagtail.admin.edit_handlers import (
     FieldPanel,
     InlinePanel,
@@ -374,6 +377,61 @@ class GatewayTitle(models.Model):
         verbose_name_plural = 'Gateway Title'
 
 
+@register_snippet
+class ExtraWebResources(ClusterableModel):
+    """
+    Links to CSS and JavaScript to be included in all pages.
+    """
+
+    panels = [
+        InlinePanel('css_links', label="CSS Links"),
+        InlinePanel('js_links', label="JS Links"),
+    ]
+
+    def __str__(self):
+        try:
+            return "Extra Web Resources: {}".format(", ".join(
+                [os.path.basename(l.url) for l in self.css_links.all()] +
+                [os.path.basename(l.url) for l in self.js_links.all()]))
+        except Exception:
+            return "Extra Web Resources"
+
+    class Meta:
+        verbose_name_plural = 'Extra Web Resources'
+
+
+class CssLink(Orderable):
+    url = models.CharField(
+        max_length=255,
+        help_text='URL of CSS stylesheet.'
+    )
+    panels = [
+        FieldPanel('url'),
+    ]
+    extra_web_resources = ParentalKey(ExtraWebResources,
+                                      on_delete=models.CASCADE,
+                                      related_name="css_links")
+
+    class Meta:
+        verbose_name = 'CSS Link'
+
+
+class JsLink(Orderable):
+    url = models.CharField(
+        max_length=255,
+        help_text='URL of JavaScript script.'
+    )
+    panels = [
+        FieldPanel('url'),
+    ]
+    extra_web_resources = ParentalKey(ExtraWebResources,
+                                      on_delete=models.CASCADE,
+                                      related_name="js_links")
+
+    class Meta:
+        verbose_name = 'JS Link'
+
+
 class HomePage(Page):
     """
     The Home Page. This looks slightly more complicated than it is. You can
diff --git a/django_airavata/wagtailapps/base/templatetags/navigation_tags.py b/django_airavata/wagtailapps/base/templatetags/navigation_tags.py
index b46e3a9..84391a3 100644
--- a/django_airavata/wagtailapps/base/templatetags/navigation_tags.py
+++ b/django_airavata/wagtailapps/base/templatetags/navigation_tags.py
@@ -6,6 +6,7 @@ from django_airavata.wagtailapps.base.models import (
     Announcements,
     CustomCss,
     CustomHeaderLinks,
+    ExtraWebResources,
     FooterText,
     GatewayIcon,
     GatewayTitle,
@@ -184,3 +185,12 @@ def gateway_title(context):
         'gateway_title': gateway_title,
         'default_title': settings.PORTAL_TITLE,
     }
+
+
+@register.inclusion_tag('django_airavata_wagtail_base/includes/extra_web_resources.html',
+                        takes_context=True)
+def extra_web_resources(context):
+    extra_web_resources = ExtraWebResources.objects.first()
+    return {
+        'extra_web_resources': extra_web_resources,
+    }