diff --git a/deployment/.env b/deployment/.env index aecdd96..48bad91 100644 --- a/deployment/.env +++ b/deployment/.env @@ -1,15 +1,3 @@ -############################################################## -# # -# SPCgeonode Settings # -# # -# The defauts settings are suited for testing on localhost. # -# If you're deploying SPCgeonode for production, you need to # -# adapt the following settings # -# # -# DO NOT FORGET to also modify values in _secrets ! # -# # -############################################################## - # Name of the setup (you only need to change this if you run several instances of the stack) COMPOSE_PROJECT_NAME=igrac @@ -69,3 +57,5 @@ S3_ACCESS_KEY= S3_SECRET_KEY= S3_REGION= S3_BUCKET= + +VERSION=4.0.0 diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml index 8a9d495..0de39f3 100644 --- a/deployment/docker-compose.yml +++ b/deployment/docker-compose.yml @@ -3,7 +3,7 @@ version: '3.4' # Common Django template for Geonode, Celery and Celerycam services below x-common-django: &default-common-django - image: kartoza/igrac_ggis:2.1.0 + image: kartoza/igrac_ggis:${VERSION} build: context: ../ dockerfile: deployment/docker/Dockerfile @@ -49,13 +49,12 @@ x-common-django: - GWML_FOLDER=/home/web/gwml2-file/ - SFTP_FOLDER=/home/web/sftp/ - FILE_UPLOAD_TEMP_DIR=/home/web/temp/ - - STATIC_URL=/static/ - MEDIA_URL=/uploaded/ - GEOSERVER_LOCATION=http://nginx/geoserver/ - ASYNC_SIGNALS=True - SESSION_EXPIRED_CONTROL_ENABLED=False - MONITORING_ENABLED=False - - PYTHONPATH=/home/web/django_project:/spcgeonode + - PYTHONPATH=/home/web/django_project:/geonode - ADD_TIMESTAMP_IN_THUMBNAIL=True volumes: - ../django_project:/home/web/django_project @@ -154,7 +153,7 @@ services: # django application for development dev: <<: *default-common-django - image: kartoza/igrac_ggis:2.0.0-dev + image: kartoza/igrac_ggis:${VERSION}-dev entrypoint: [] build: context: ../ diff --git a/deployment/docker/Dockerfile b/deployment/docker/Dockerfile index 2568db3..144f710 100644 --- a/deployment/docker/Dockerfile +++ b/deployment/docker/Dockerfile @@ -11,9 +11,9 @@ RUN echo "Activate memcached" && \ WORKDIR / RUN rm -r /usr/src/geonode -RUN git clone --branch 3.3.x --single-branch https://github.com/kartoza/geonode.git spcgeonode +RUN git clone --branch 4.0.3 --single-branch https://github.com/kartoza/geonode.git geonode -WORKDIR /spcgeonode +WORKDIR /geonode RUN pip install -r requirements.txt RUN pip uninstall -y django-geonode-mapstore-client diff --git a/deployment/docker/REQUIREMENTS.txt b/deployment/docker/REQUIREMENTS.txt index fe65dea..1e95873 100644 --- a/deployment/docker/REQUIREMENTS.txt +++ b/deployment/docker/REQUIREMENTS.txt @@ -1,10 +1,10 @@ -psycopg2-binary==2.8.6 -django-admin-sortable==2.1.8 -django-braces==1.14.0 -django-model-utils==1.4.0 -django-pipeline==1.6.14 +psycopg2-binary==2.9.5 +django-admin-sortable==2.3 +django-braces==1.15.0 +django-model-utils==4.3.1 +django-pipeline==2.1.0 django-preferences==1.0.0 -django-role-permissions==2.2.0 +django-role-permissions==3.1.1 raven==6.10.0 django-sentry==1.13.5 @@ -12,12 +12,10 @@ django-sentry==1.13.5 service_identity # igrac -wagtail==2.9.3 -wagtailmenus==3.1.3 -openpyxl==3.0.5 +wagtail==4.2.1 +wagtailmenus==3.1.5 +openpyxl==3.0.10 pyexcel-xls==0.7.0 pyexcel-xlsx==0.6.0 -git+https://github.com/kartoza/geonode-mapstore-client.git@3.2.x -# git+https://github.com/kartoza/django-mapstore-adapter.git@geonode_latest -# git+https://github.com/kartoza/geonode-mapstore-client.git@2.0.16 +git+https://github.com/kartoza/geonode-mapstore-client.git@4.0.7 diff --git a/deployment/docker/uwsgi.conf b/deployment/docker/uwsgi.conf index 25c377f..23944b9 100644 --- a/deployment/docker/uwsgi.conf +++ b/deployment/docker/uwsgi.conf @@ -18,5 +18,5 @@ logger = file:/var/log/uwsgi-errors.log #uid = 1000 #gid = 1000 memory-report = true -harakiri = 1200 +harakiri = 3600 # plugin = python36 diff --git a/django_project/core/api/layer.py b/django_project/core/api/layer.py index ab11052..e39a3c0 100644 --- a/django_project/core/api/layer.py +++ b/django_project/core/api/layer.py @@ -1,7 +1,7 @@ from django.http import Http404 from rest_framework.views import APIView from rest_framework.response import Response -from geonode.layers.models import Layer +from geonode.layers.models import Dataset from core.serializer.attribute import AttributeSerializer @@ -13,7 +13,8 @@ class LayerAttributeAPI(APIView): def get(self, request, alternate, *args): try: - layer = Layer.objects.get(alternate=alternate) - return Response(AttributeSerializer(layer.attribute_set.all(), many=True).data) - except Layer.DoesNotExist: + dataset = Dataset.objects.get(alternate=alternate) + return Response(AttributeSerializer( + dataset.attribute_set.all(), many=True).data) + except Dataset.DoesNotExist: raise Http404('Layer not found') diff --git a/django_project/core/settings/base.py b/django_project/core/settings/base.py index 2cd7cc3..794ad28 100644 --- a/django_project/core/settings/base.py +++ b/django_project/core/settings/base.py @@ -26,7 +26,7 @@ 'wagtail.images', 'wagtail.search', 'wagtail.admin', - 'wagtail.core', + 'wagtail', 'wagtail.contrib.modeladmin', 'wagtailmenus', 'modelcluster', @@ -47,12 +47,13 @@ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', + 'whitenoise.middleware.WhiteNoiseMiddleware', 'oauth2_provider.middleware.OAuth2TokenMiddleware', + 'django_user_agents.middleware.UserAgentMiddleware', 'geonode.base.middleware.MaintenanceMiddleware', 'geonode.base.middleware.ReadOnlyMiddleware', # a Middleware enabling Read Only mode of Geonode # Wagtail moddleware - 'wagtail.core.middleware.SiteMiddleware', 'wagtail.contrib.redirects.middleware.RedirectMiddleware', ) diff --git a/django_project/core/settings/prod.py b/django_project/core/settings/prod.py index 61e3a09..a0af39c 100644 --- a/django_project/core/settings/prod.py +++ b/django_project/core/settings/prod.py @@ -29,3 +29,4 @@ ) DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' +STATIC_URL = '/static/' diff --git a/django_project/gwml2 b/django_project/gwml2 index 7f29998..ab6ab29 160000 --- a/django_project/gwml2 +++ b/django_project/gwml2 @@ -1 +1 @@ -Subproject commit 7f299980a4c1c135d7466b9aba254f1ee8620605 +Subproject commit ab6ab29dab917e87162ff01631eedfd46cc8aaf0 diff --git a/django_project/igrac/admin.py b/django_project/igrac/admin.py index 0894a30..a7b83c8 100644 --- a/django_project/igrac/admin.py +++ b/django_project/igrac/admin.py @@ -1,7 +1,7 @@ from adminsortable.admin import SortableAdmin from django.contrib import admin from django.utils.translation import ugettext_lazy as _ -from geonode.base.admin import set_user_and_group_layer_permission +from geonode.base.admin import set_user_and_group_dataset_permission from geonode.people.admin import ProfileAdmin from geonode.people.models import Profile from preferences.admin import PreferencesAdmin @@ -37,7 +37,7 @@ class IgracProfileAdmin(ProfileAdmin): 'username', 'organization', 'profile', 'first_name', 'last_name', 'email' ) - actions = [set_user_and_group_layer_permission, make_active] + actions = [set_user_and_group_dataset_permission, make_active] fieldsets = ( (None, {'fields': ('username', 'password')}), (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}), diff --git a/django_project/igrac/api_views/__init__.py b/django_project/igrac/api_views/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django_project/igrac/api_views/featured.py b/django_project/igrac/api_views/featured.py new file mode 100644 index 0000000..6e46078 --- /dev/null +++ b/django_project/igrac/api_views/featured.py @@ -0,0 +1,67 @@ +from geonode.base.api.serializers import ResourceBaseSerializer +from geonode.base.models import ( + ResourceBase, +) +from geonode.geoapps.models import GeoApp +from geonode.maps.models import Map +from rest_framework import serializers +from rest_framework.response import Response +from rest_framework.views import APIView + +from igrac.models.map_slug import MapSlugMapping + + +class MapFeaturedSerializer(ResourceBaseSerializer): + slug = serializers.SerializerMethodField() + detail_url = serializers.SerializerMethodField() + + def get_slug(self, obj: ResourceBase): + map_slug = MapSlugMapping.objects.filter(map=obj).first() + if map_slug: + return map_slug.slug + return '' + + def get_detail_url(self, obj: ResourceBase): + map_slug = MapSlugMapping.objects.filter(map=obj).first() + if map_slug: + return map_slug.slug + return '' + + class Meta: + model = ResourceBase + name = ResourceBaseSerializer.Meta.name + view_name = ResourceBaseSerializer.Meta.view_name + fields = ResourceBaseSerializer.Meta.fields + ('slug',) + + +class FeaturedMaps(APIView): + def get(self, request, *args): + featured_map = Map.objects.filter( + featured=True + ).order_by( + 'mapslugmapping__order', 'id' + ) + serializer = MapFeaturedSerializer( + featured_map, + many=True + ) + resources = serializer.data + resources += ResourceBaseSerializer( + GeoApp.objects.filter(featured=True, resource_type='dashboard'), + many=True + ).data + resources += ResourceBaseSerializer( + GeoApp.objects.filter(featured=True, resource_type='geostory'), + many=True + ).data + + return Response({ + "links": { + "next": None, + "previous": None + }, + "total": featured_map.count(), + "page": 1, + "page_size": 99, + "resources": resources + }) diff --git a/django_project/igrac/apps.py b/django_project/igrac/apps.py index 3366e20..4389e05 100644 --- a/django_project/igrac/apps.py +++ b/django_project/igrac/apps.py @@ -7,3 +7,14 @@ class IgracConfig(AppConfig): def ready(self): import igrac.signals import igrac.monkeypatch + from django.conf import settings + geonode_mapstore_client_template_dir = '' + for template_dir in settings.TEMPLATES[0]['DIRS']: + if 'geonode_mapstore_client' in template_dir: + geonode_mapstore_client_template_dir = template_dir + settings.TEMPLATES[0]['DIRS'].remove(template_dir) + break + if geonode_mapstore_client_template_dir: + settings.TEMPLATES[0]['DIRS'].append( + geonode_mapstore_client_template_dir + ) diff --git a/django_project/igrac/static/css/base-igrac.css b/django_project/igrac/static/css/base-igrac.css index 87de71f..c0fa53a 100644 --- a/django_project/igrac/static/css/base-igrac.css +++ b/django_project/igrac/static/css/base-igrac.css @@ -2,6 +2,13 @@ html { height: 100%; } +:root { + --white: #fff; + --primary: #2c689c; + --secondary: #ff6b0d; + --primaryBold: #005198 +} + body.igrac-home { padding-top: 51px; background: #f6f6f6; @@ -58,6 +65,7 @@ body.igrac-home { .branding { height: 100%; + margin-right: 1rem !important; } .branding a { @@ -67,7 +75,7 @@ body.igrac-home { .branding a img { height: 100%; - padding: 11px 0; + padding: 5px 0; } .navbar-nav > li > a { @@ -116,6 +124,10 @@ body.igrac-home { z-index: 20; } +h1, h2, h5 { + font-weight: 600 !important; +} + .banner-text h2 { font-size: 36px; margin-bottom: 20px; @@ -353,8 +365,108 @@ body.igrac-home { .open-banner { float: right; - margin-right: 10px; + z-index: 1; display: none; + position: absolute; + right: 0; + margin-top: 20px; + margin-right: 20px; +} + +.msgapi .btn-primary { + background: var(--white); + color: var(--primaryBold); + border: var(--white); +} + +form .btn-primary { + color: #fff !important; + background-color: #2c689c !important; + border-color: #265a88 !important; +} + +form .btn-primary:hover { + background-color: var(--secondary) !important; + box-shadow: unset !important; +} + +form .row { + display: flex; + margin-left: 0 !important; + margin-right: 0 !important; +} + + +.footer-item { + color: var(--primaryBold) +} + +.msgapi .btn-primary:hover, +.msgapi .btn-primary:active, +.msgapi .btn-primary:active:focus, +.msgapi .btn-primary.active, +.msgapi .btn-primary:active, +.msgapi .open > .dropdown-toggle.btn-primary, +.msgapi .open > .dropdown-toggle.btn-primary:focus, +.dropdown-menu a:focus { + background-color: var(--secondary); + box-shadow: unset !important; +} + + +.msgapi .btn-primary:focus { + background-color: white; + color: var(--primaryBold); +} + +.msgapi body, +[data-ms2-container] { + font-family: sans-serif !important; + -ms-text-size-adjust: 100% !important;; + -webkit-text-size-adjust: 100% !important;; +} + +.msgapi .gn-menu { + padding: 0; +} + +.msgapi .gn-menu.gn-primary { + border-top: 1px solid #f2f0f0; + background: #fff; + -webkit-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.23); + -moz-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.23); + box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.23); +} + +.msgapi .gn-menu .gn-menu-container { + background-color: white; +} + +.msgapi .gn-menu-divider { + background-color: #f2f0f0; +} + +.gn-search-bar-li { + padding-right: 1rem !important; +} + +#gn-search-bar { + border-width: 1px; + box-shadow: unset; +} + +.gn-user-menu-dropdown button { + padding: 0.25rem 0.5rem !important; + border-radius: 0 !important; +} + +.gn-user-menu-dropdown button:hover, +.gn-user-menu-dropdown button:focus { + background-color: var(--secondary) !important; +} + +#gn-search-bar-apply:focus { + box-shadow: unset !important; } @@ -426,4 +538,103 @@ body.igrac-home { .geostory-button-container .btn:hover, .geostory-button-container .btn:focus { color: #ff6b0d !important; +} + +.home-menu a:hover { + background-color: white !important; + color: #ff6b0d !important; +} + +.fa-home { + font-size: 1.4rem !important; +} + +.dropdown-menu { + background-color: #2c689c !important; + border-top: 1px solid #2c689c !important; + border: unset !important; +} +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus { + background-color: #ff6b0d !important; +} + +.dropdown-menu a { + color: white !important; +} + +.dropdown-menu .divider { + background-color: #204d74 !important; +} + +/*.dropdown-submenu>.dropdown-menu {*/ +/* top: 0;*/ +/* left: 100%;*/ +/* margin-top: -6px;*/ +/* margin-left: -1px;*/ +/*}*/ + +/*.dropdown-submenu:hover>.dropdown-menu {*/ +/* display: block;*/ +/*}*/ + +/*.dropdown-submenu>a:after {*/ +/* display: block;*/ +/* content: " ";*/ +/* float: right;*/ +/* width: 0;*/ +/* height: 0;*/ +/* border-color: transparent;*/ +/* border-style: solid;*/ +/* border-width: 5px 0 5px 5px;*/ +/* border-left-color: #ccc;*/ +/* margin-top: 5px;*/ +/* margin-right: -10px;*/ +/*}*/ + +/*.dropdown-submenu:hover>a:after {*/ +/* border-left-color: #fff;*/ +/*}*/ + +/*.dropdown-submenu.pull-left {*/ +/* float: none;*/ +/*}*/ + +/*.dropdown-submenu.pull-left>.dropdown-menu {*/ +/* left: -100%;*/ +/* margin-left: 10px;*/ +/*}*/ +.error-data { + text-align: center; + color: red; + padding: 2rem; +} + +#wrap { + padding-top: 0 !important; + padding-bottom: 80px !important; + margin-top: 0 !important; +} + +#gn-brand-navbar { + z-index: 1401 !important; + -webkit-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.23); + -moz-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.23); + box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.23) +} + +#gn-brand-navbar .btn-primary { + padding: 0.9rem 0.5rem; +} + +.nav-link:focus { + box-shadow: unset !important; +} + +.menu-sidebar a { + outline: none !important; +} + +.menu-sidebar a:focus { + text-decoration: unset; } \ No newline at end of file diff --git a/django_project/igrac/static/css/default.css b/django_project/igrac/static/css/default.css index f4ef7f8..950f775 100644 --- a/django_project/igrac/static/css/default.css +++ b/django_project/igrac/static/css/default.css @@ -66,7 +66,12 @@ body { position: absolute; width: 100%; height: 100%; - background: #cad2d3; +} + +.gn-homepage #container { + height: auto; + padding-bottom: 100px; + min-height: 60%; } .navbar { @@ -157,12 +162,27 @@ body { display: block; } -.navbar-nav .dropdown > .dropdown-menu { - margin-left: 15px; +#gn-topbar > .dropdown > .dropdown-menu { + margin-left: 0 !important; } -.navbar-nav > .dropdown > .dropdown-menu { - margin-left: 0 !important; +#gn-topbar .dropdown-menu { + background-color: var(--primary); + border: 1px solid var(--primary); + color: var(--white); +} + +#gn-topbar .dropdown-menu .divider { + background-color: #204d74; +} + +#gn-topbar .dropdown-menu>li>a { + color: var(--white); +} + +#gn-topbar .dropdown-menu>li>a:focus, #gn-topbar .dropdown-menu>li>a:hover { + background-color: var(--secondary); + color: var(--white); } #branding, .branding { @@ -192,8 +212,8 @@ body { } .footer-wrapper { - background: rgba(255, 255, 255, 0.85); - height: 20px; + background-color: rgba(255, 255, 255, 0.85) !important; + height: 50px; position: fixed; bottom: 0; color: #2c689c; @@ -221,9 +241,6 @@ body { line-height: 47px; } -#ms-container { - top: 52px !important; -} .navbar-nav .search input { border-color: lightgrey !important; @@ -274,4 +291,50 @@ body { .pagination > li > a { height: 37px; +} + +.gn-home-section .gn-footer-wrapper{ + display: none; +} + +.gn-home-section .gn-resource-action-buttons { + display: none; +} + +.gn-home-section .gn-card-grid .gn-card-grid-container > ul li { + margin-top: 20px !important; +} + +.msgapi .gn-resource-card .card-title a { + color: var(--primary); +} + +.explore-viewer-title { + font-size: 30px !important; + font-weight: 700 !important; + margin: 25px 10px 15px !important; + color: var(--primaryBold) !important; +} + +.gn-home-section .gn-card-description { + white-space: initial !important; +} + +.gn-home-section .map-abstract { + height: 50px !important; + overflow-y: auto !important; +} + +.gn-home-section .gn-resource-card .card-body { + pointer-events: unset; +} + +.gn-home-section .gn-resource-card .card-img-top { + filter: grayscale(1); + opacity: 0.5 +} + +.gn-home-section .gn-resource-card:hover .card-img-top { + filter: unset; + opacity: 1; } \ No newline at end of file diff --git a/django_project/igrac/static/css/manual-page-style.css b/django_project/igrac/static/css/manual-page-style.css index d5c4379..8d51b0c 100644 --- a/django_project/igrac/static/css/manual-page-style.css +++ b/django_project/igrac/static/css/manual-page-style.css @@ -31,16 +31,21 @@ body { margin-bottom: 22px; font-size: 14px; list-style: none; - background-color: #ececec; + background-color: #ececec!important; border-radius: 0; } +.manual-content h1, +.manual-content h2 { + font-size: 100% !important; +} + .manual-title { - font-size: 2em; - font-style: normal; - font-weight: 700; - color: #24619d; - line-height: 1; + font-size: 2em !important; + font-style: normal !important; + font-weight: 700 !important; + color: #24619d !important; + line-height: 1 !important; } .manual-intro { @@ -141,7 +146,7 @@ body { } .manual-content { - padding: 25px; + padding: 25px !important; padding-bottom: 70px; padding-left: 35px; height: 100%; @@ -196,4 +201,4 @@ ol ol, ul ol { height: 100%; padding-bottom: 56.49999999999999% !important; } -} +} \ No newline at end of file diff --git a/django_project/igrac/static/js/g3p-timeseries-chart.js b/django_project/igrac/static/js/g3p-timeseries-chart.js index 4d19d89..ae0feea 100644 --- a/django_project/igrac/static/js/g3p-timeseries-chart.js +++ b/django_project/igrac/static/js/g3p-timeseries-chart.js @@ -169,7 +169,7 @@ let TimeseriesChartObj = function (id, identifier, $loading, xlabel = "", ylabel if (!chartData || chartData.length === 0) { that.$loading.hide(); $(`#g3p-${this.id}-chart`).html( - '
No data found
'); + '
No data found
'); return } if (xlabel === "") { @@ -213,7 +213,7 @@ let TimeseriesChartObj = function (id, identifier, $loading, xlabel = "", ylabel error: function (error, textStatus, request) { that.$loading.hide(); $(`#g3p-${this.id}-chart`).html( - '
No data found
') + '
No data found
') } }) } diff --git a/django_project/igrac/templates/account/signup.html b/django_project/igrac/templates/account/signup.html index 0d2a1c3..e7b63d8 100644 --- a/django_project/igrac/templates/account/signup.html +++ b/django_project/igrac/templates/account/signup.html @@ -1,7 +1,7 @@ {% extends "account/base.html" %} {% load i18n %} -{% load staticfiles %} +{% load static %} {% load bootstrap_tags %} {% load igrac_bootstrap_tags %} {% load account socialaccount %} diff --git a/django_project/igrac/templates/apps/app_detail.html b/django_project/igrac/templates/apps/app_detail.html index 20abc3a..9891e72 100644 --- a/django_project/igrac/templates/apps/app_detail.html +++ b/django_project/igrac/templates/apps/app_detail.html @@ -1,7 +1,7 @@ {% extends "apps/app_base.html" %} {% load i18n %} {% load l10n %} -{% load staticfiles %} +{% load static %} {% load dialogos_tags %} {% load pinax_ratings_tags %} {% load bootstrap_tags %} diff --git a/django_project/igrac/templates/base.html b/django_project/igrac/templates/base.html index 0641a4f..ea7d74b 100644 --- a/django_project/igrac/templates/base.html +++ b/django_project/igrac/templates/base.html @@ -1,865 +1,132 @@ - - -{% load i18n avatar_tags %} -{% load static from staticfiles %} -{% load account socialaccount %} -{% load base_tags %} -{% load menu_tags %} -{% load gwml2_menu %} - - - - - - - - - - - - - {% block title %}{{ SITE_NAME }}{% endblock %} - - - - - - {% block head %} - - - - {% if DEBUG_STATIC %} - - - - - - - - {% else %} - {% endif %} - - - - - - - - - - {% block extra_head %} - {% endblock %} - {% endblock %} - - - - - - - + {% endif %} - + {% endif %} - {% block additional_head %} + {% if custom_theme.jumbotron_bg %} + .home .jumbotron .container { + position: relative; + z-index: 1; + } + .home .jumbotron:after { + content: ""; + background-image: url({{ custom_theme.jumbotron_bg.url }}); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + {% if not custom_theme.jumbotron_welcome_hide %} + opacity: 0.5; + {% endif %} + top: 0; + left: 0; + bottom: 0; + right: 0; + position: absolute; + z-index: 0; + } + {% endif %} + + {% block extra_head %} {% endblock %} - - - - - -{% block header %} - -{% endblock header %} - - - - -{% block banner %} {% endblock %} -
- {% block middle %} -
- {% include "_status_message.html" %} - {% include "_announcements.html" %} - {% include "_messages.html" %} - {% block body_outer %} -
-
- {% block body %}{% endblock %} -
-
- {% block sidebar %}{% endblock %} -
-
- {% endblock %} -
- {% endblock middle %} +{% block body_extra_class %}gn-legacy gn-theme {% if request.user_agent.is_mobile %}gn-mobile{% else %}gn-desktop{% endif %}{% endblock %} - {% block extra_mainbody %} - {% endblock extra_mainbody %} - -
- -{% block monitoring %} +{% block header %} +{% include './geonode-mapstore-client/snippets/header.html' %} {% endblock %} {% block footer %} - +{% include './geonode-mapstore-client/snippets/footer.html' %} {% endblock %} -{% block additional_footer %}{% endblock %} - - -{% if not user.is_authenticated %} - -{% endif %} - - -{% if DEBUG_STATIC %} - - - - - - - - - - - - - - - -{% else %} - -{% endif %} - - - -{% block extra_script %}{% endblock extra_script %} - - - - - - - - - - - \ No newline at end of file + +{% endblock extra_script %} diff --git a/django_project/igrac/templates/g3p_timeseries_chart.html b/django_project/igrac/templates/g3p_timeseries_chart.html index 00ab1cd..c41e3eb 100644 --- a/django_project/igrac/templates/g3p_timeseries_chart.html +++ b/django_project/igrac/templates/g3p_timeseries_chart.html @@ -1,4 +1,4 @@ -{% load staticfiles %} +{% load static %} diff --git a/django_project/igrac/templates/g3p_timeseries_chart_iframe.html b/django_project/igrac/templates/g3p_timeseries_chart_iframe.html index 4c58ed3..a54722c 100644 --- a/django_project/igrac/templates/g3p_timeseries_chart_iframe.html +++ b/django_project/igrac/templates/g3p_timeseries_chart_iframe.html @@ -1,4 +1,4 @@ -{% load staticfiles %} +{% load static %} diff --git a/django_project/igrac/templates/geonode-mapstore-client/catalogue.html b/django_project/igrac/templates/geonode-mapstore-client/catalogue.html new file mode 100644 index 0000000..7b5c688 --- /dev/null +++ b/django_project/igrac/templates/geonode-mapstore-client/catalogue.html @@ -0,0 +1,125 @@ +{% load static %} +{% load client_lib_tags %} +{% load client_version %} + + + + + + + + + + + + {{ SITE_NAME }} + + {% include './snippets/loader_style.html' %} + + {% block custom_theme %} + {% include './snippets/custom_theme.html' %} + {% endblock %} + + {% block extra_style %} + {% endblock %} + + + + +
+ {% block gn_config %} + {% include './_geonode_config.html' %} + {% endblock %} +
+ {% block header %} + {% include './snippets/header.html' %} + {% endblock %} + + {% block container %} +
+
+
+
+
+
+
+
+ {% endblock %} + + {% block ms_scripts %} + + {% endblock %} + + {% block footer %} + {% include './snippets/footer.html' %} + {% endblock %} + + {% block scripts %} + + + + {% endblock %} +
+
+ + diff --git a/django_project/igrac/templates/geonode-mapstore-client/map_embed.html b/django_project/igrac/templates/geonode-mapstore-client/map_embed.html new file mode 100644 index 0000000..3d78774 --- /dev/null +++ b/django_project/igrac/templates/geonode-mapstore-client/map_embed.html @@ -0,0 +1,130 @@ +{% load static %} +{% load client_lib_tags %} +{% load client_version %} + + + + + + + + + + + + {{ SITE_NAME }} + + {% include './snippets/loader_style.html' %} + + {% block custom_theme %} + {% include './snippets/custom_theme.html' %} + {% endblock %} + + {% block extra_style %} + {% endblock %} + + + +
+ {% block gn_config %} + {% include './_geonode_config.html' with plugins_config_key='map_viewer' is_embed='false' %} + {% endblock %} +
+ {% block header %} + {% if '/view/' in request.build_absolute_uri %} + {% include './snippets/header.html' %} + {% endif %} + {% endblock %} + + {% block container %} +
+
+
+
+
+
+
+
+ {% endblock %} + + {% block ms_scripts %} + + {% endblock %} +
+
+ + + + + + diff --git a/django_project/igrac/templates/geonode-mapstore-client/snippets/brand_navbar.html b/django_project/igrac/templates/geonode-mapstore-client/snippets/brand_navbar.html new file mode 100644 index 0000000..db9b75e --- /dev/null +++ b/django_project/igrac/templates/geonode-mapstore-client/snippets/brand_navbar.html @@ -0,0 +1,142 @@ +{% load static %} +{% load get_menu_json %} +{% load manual_menu %} +{% load catalogue_urls %} +{% get_igrac_user_menu as USER_MENU %} + +{% get_igrac_base_left_topbar_menu as BASE_TOPBAR_MENU_LEFT %} +{% get_menu_json 'TOPBAR_MENU' as TOPBAR_MENU %} +{% get_menu_json 'TOPBAR_MENU_LEFT' as TOPBAR_MENU_LEFT %} +{% get_igrac_base_right_topbar_menu as BASE_TOPBAR_MENU_RIGHT %} +{% get_menu_json 'TOPBAR_MENU_RIGHT' as TOPBAR_MENU_RIGHT %} + +{% block extra_style %} +{% endblock %} + + + + +{% include './topbar.html' with id='gn-topbar' %} +
+ {% block bottom_menu %} + {% include './search_bar.html' with search_bar_id='gn-search-bar-bottom' %} + {% endblock %} +
+{% block extra_script %} + + +{% endblock extra_script %} \ No newline at end of file diff --git a/django_project/igrac/templates/geonode-mapstore-client/snippets/footer.html b/django_project/igrac/templates/geonode-mapstore-client/snippets/footer.html new file mode 100644 index 0000000..2247f27 --- /dev/null +++ b/django_project/igrac/templates/geonode-mapstore-client/snippets/footer.html @@ -0,0 +1,28 @@ +{% load i18n %} + + diff --git a/django_project/igrac/templates/geonode-mapstore-client/snippets/header.html b/django_project/igrac/templates/geonode-mapstore-client/snippets/header.html new file mode 100644 index 0000000..012e256 --- /dev/null +++ b/django_project/igrac/templates/geonode-mapstore-client/snippets/header.html @@ -0,0 +1,28 @@ +{% load static %} +
+ {% include './brand_navbar.html' with id='gn-brand-navbar' %} +
+
+ +{% if show_hero %} + {% include './hero.html' %} +{% endif %} + + diff --git a/django_project/igrac/templates/geonode-mapstore-client/snippets/hero.html b/django_project/igrac/templates/geonode-mapstore-client/snippets/hero.html new file mode 100644 index 0000000..7d22b4f --- /dev/null +++ b/django_project/igrac/templates/geonode-mapstore-client/snippets/hero.html @@ -0,0 +1,21 @@ +{% load i18n %} + \ No newline at end of file diff --git a/django_project/igrac/templates/geonode-mapstore-client/snippets/menu_item.html b/django_project/igrac/templates/geonode-mapstore-client/snippets/menu_item.html new file mode 100644 index 0000000..b378192 --- /dev/null +++ b/django_project/igrac/templates/geonode-mapstore-client/snippets/menu_item.html @@ -0,0 +1,76 @@ +{% load i18n %} +{% if menu_item %} + {% if menu_item.type == 'link' %} +
  • + + {% trans menu_item.label %} + +
  • + {% endif %} + {% if menu_item.type == 'divider' %} + + {% endif %} + {% if menu_item.type == 'dropdown' %} +
  • + +
  • + {% endif %} +{% endif %} diff --git a/django_project/igrac/templates/geonode-mapstore-client/snippets/topbar.html b/django_project/igrac/templates/geonode-mapstore-client/snippets/topbar.html new file mode 100644 index 0000000..00e0068 --- /dev/null +++ b/django_project/igrac/templates/geonode-mapstore-client/snippets/topbar.html @@ -0,0 +1,112 @@ +{#{% load get_menu_json %}#} +{#{% load manual_menu %}#} +{#{% get_igrac_base_left_topbar_menu as BASE_TOPBAR_MENU_LEFT %}#} +{#{% get_menu_json 'TOPBAR_MENU' as TOPBAR_MENU %}#} +{#{% get_menu_json 'TOPBAR_MENU_LEFT' as TOPBAR_MENU_LEFT %}#} +{#{% get_igrac_base_right_topbar_menu as BASE_TOPBAR_MENU_RIGHT %}#} +{#{% get_menu_json 'TOPBAR_MENU_RIGHT' as TOPBAR_MENU_RIGHT %}#} +{##} +{##} +{##} diff --git a/django_project/igrac/templates/igrac/blog_index_page.html b/django_project/igrac/templates/igrac/blog_index_page.html index 2ffdcd5..c1a4579 100644 --- a/django_project/igrac/templates/igrac/blog_index_page.html +++ b/django_project/igrac/templates/igrac/blog_index_page.html @@ -1,6 +1,6 @@ {% extends "base.html" %} {% load i18n %} -{% load staticfiles %} +{% load static %} {% load wagtailcore_tags %} diff --git a/django_project/igrac/templates/igrac/blog_page.html b/django_project/igrac/templates/igrac/blog_page.html index 35e62f3..ec4b8e4 100644 --- a/django_project/igrac/templates/igrac/blog_page.html +++ b/django_project/igrac/templates/igrac/blog_page.html @@ -1,6 +1,6 @@ {% extends "base.html" %} {% load i18n %} -{% load staticfiles %} +{% load static %} {% load wagtailcore_tags %} diff --git a/django_project/igrac/templates/igrac/disclaimer_license_page.html b/django_project/igrac/templates/igrac/disclaimer_license_page.html index 874edf1..d9688ff 100644 --- a/django_project/igrac/templates/igrac/disclaimer_license_page.html +++ b/django_project/igrac/templates/igrac/disclaimer_license_page.html @@ -1,6 +1,6 @@ {% extends "base.html" %} {% load i18n %} -{% load staticfiles %} +{% load static %} {#{% block body_class %}{% trans "igrac-home" %}{% endblock %}#} diff --git a/django_project/igrac/templates/igrac/manual_page.html b/django_project/igrac/templates/igrac/manual_page.html index 05ad52f..2a63285 100644 --- a/django_project/igrac/templates/igrac/manual_page.html +++ b/django_project/igrac/templates/igrac/manual_page.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% load static from staticfiles %} +{% load static %} {% load manual_menu %} {% load wagtailcore_tags %} @@ -11,7 +11,7 @@ {% endif %} {% endblock %} -{% block additional_head %} +{% block extra_head %} +
    @@ -68,7 +68,7 @@

    {{ page.title }}