diff --git a/ckanext/matolabtheme/plugin.py b/ckanext/matolabtheme/plugin.py
index a98323e..68bfdaf 100644
--- a/ckanext/matolabtheme/plugin.py
+++ b/ckanext/matolabtheme/plugin.py
@@ -48,6 +48,9 @@ def declare_config_options(self, declaration: Declaration, key: Key):
declaration.declare(group.banner_bottom, "/static/banner_bottom.png")
declaration.declare(group.banner_bottom_upload, "")
declaration.declare(group.clear_banner_bottom_upload, "")
+ declaration.declare(group.favicon, "/static/favicon.png")
+ declaration.declare(group.favicon_upload, "")
+ declaration.declare(group.clear_favicon_upload, "")
declaration.declare(group.attribution_logo, "/static/favicon.png")
declaration.declare(group.attribution_logo_upload, "")
declaration.declare(group.clear_attribution_logo_upload, "")
@@ -89,6 +92,18 @@ def update_config_schema(self, schema):
ignore_missing,
unicode_safe,
],
+ "ckanext.matolabtheme.favicon": [
+ ignore_missing,
+ unicode_safe,
+ ],
+ "ckanext.matolabtheme.favicon_upload": [
+ ignore_missing,
+ unicode_safe,
+ ],
+ "ckanext.matolabtheme.clear_favicon_upload": [
+ ignore_missing,
+ unicode_safe,
+ ],
"ckanext.matolabtheme.attribution_logo": [
ignore_missing,
unicode_safe,
diff --git a/ckanext/matolabtheme/templates/base.html b/ckanext/matolabtheme/templates/base.html
index 015ed61..5ff6254 100644
--- a/ckanext/matolabtheme/templates/base.html
+++ b/ckanext/matolabtheme/templates/base.html
@@ -12,6 +12,10 @@
{% endif %}
{% endblock %}
+{% block links -%}
+
+{% endblock -%}
+
{% block bodytag %}
{{ super() }}
{% endblock %}
diff --git a/ckanext/matolabtheme/templates/macros/form/image_upload_prefix.html b/ckanext/matolabtheme/templates/macros/form/image_upload_prefix.html
deleted file mode 100644
index 74ba71a..0000000
--- a/ckanext/matolabtheme/templates/macros/form/image_upload_prefix.html
+++ /dev/null
@@ -1,52 +0,0 @@
-{% from 'macros/form/input.html' import input %}
-{% from 'macros/form/checkbox.html' import checkbox %}
-
-{#
-Builds a file upload for input
-
-Example
-{% import 'macros/form.html' as form %}
-{{ form.image_upload_prefix(data, errors, is_upload_enabled=true) }}
-
-#}
-{% macro image_upload_prefix(data, errors, prefix='', field_url='image_url', field_upload='image_upload', field_clear='clear_upload',
- is_url=false, is_upload=false, is_upload_enabled=false, placeholder=false,
- url_label='', upload_label='', field_name='image_url') %}
-{% set placeholder = placeholder if placeholder else _('http://example.com/my-image.jpg') %}
-{% set url_label = url_label or _('Image URL') %}
-{% set upload_label = upload_label or _('Image') %}
-{% set previous_upload = data['previous_upload'] %}
-
-{% if field_url == 'url' and field_upload == 'upload' %}
- {# backwards compatibility for old resource forms that still call the `forms.image_upload()` macro, eg ckanext-scheming #}
- {% snippet 'package/snippets/resource_upload_field.html',
- data=data,
- errors=errors,
- is_url=is_url,
- is_upload=is_upload,
- is_upload_enabled=is_upload_enabled,
- url_label=url_label,
- upload_label=upload_label,
- placeholder=placeholder %}
-{% else %}
-
-
-
-
- {% if is_upload_enabled %}
- or upload file:
-
-
-
- {% if is_upload %}
-
-
-
-
- {% endif %}
- {% endif %}
-{% endif %}
-
-{% endmacro %}
\ No newline at end of file
diff --git a/ckanext/matolabtheme/templates/matolabtheme/theme_config.html b/ckanext/matolabtheme/templates/matolabtheme/theme_config.html
index 4e3d31f..a152f89 100644
--- a/ckanext/matolabtheme/templates/matolabtheme/theme_config.html
+++ b/ckanext/matolabtheme/templates/matolabtheme/theme_config.html
@@ -3,7 +3,6 @@
{% extends "admin/base.html" %}
{% import 'macros/form.html' as form %}
-{% import 'macros/form/image_upload_prefix.html' as iu %}
{% block primary_content_inner %}
@@ -14,21 +13,26 @@
{{ h.csrf_input() }}
-
{% set field1_url = 'ckanext.matolabtheme.banner_top' %}
{% set is_upload = data[field1_url] and not data[field1_url].startswith('http') %}
{% set is_url = data[field1_url] and data[field1_url].startswith('http') %}
- {{ iu.image_upload_prefix(data, errors, prefix='banner_top', is_upload_enabled=h.uploads_enabled(), field_name='ckanext.matolabtheme.banner_top_url', is_url=is_url, is_upload=is_upload, upload_label = _('Banner Top'), url_label=_('Banner top'), field_url=field1_url, field_upload='ckanext.matolabtheme.banner_top_upload', field_clear='ckanext.matolabtheme.clear_banner_top_upload' )}}
-
+ {{ form.image_upload(data, errors,is_upload_enabled=h.uploads_enabled(), is_url=is_url, is_upload=is_upload, upload_label = _('Banner Top'), url_label=_('Banner top'), field_url=field1_url, field_upload='ckanext.matolabtheme.banner_top_upload', field_clear='ckanext.matolabtheme.clear_banner_top_upload')}}
+
+
{% set field2_url = 'ckanext.matolabtheme.banner_bottom' %}
{% set is_upload = data[field2_url] and not data[field2_url].startswith('http') %}
{% set is_url = data[field2_url] and data[field2_url].startswith('http') %}
- {{ iu.image_upload_prefix(data, errors, prefix='banner_bottom', is_upload_enabled=h.uploads_enabled(), field_name='ckanext.matolabtheme.banner_bottom_url', is_url=is_url, is_upload=is_upload, upload_label = _('Banner Bottom'), url_label=_('Banner bottom'), field_url=field2_url, field_upload='ckanext.matolabtheme.banner_bottom_upload', field_clear='ckanext.matolabtheme.clear_banner_bottom_upload' )}}
+ {{ form.image_upload(data, errors, is_upload_enabled=h.uploads_enabled(), field_name='ckanext.matolabtheme.banner_bottom_url', is_url=is_url, is_upload=is_upload, upload_label = _('Banner Bottom'), url_label=_('Banner bottom'), field_url=field2_url, field_upload='ckanext.matolabtheme.banner_bottom_upload', field_clear='ckanext.matolabtheme.clear_banner_bottom_upload' )}}
- {% set field3_url = 'ckanext.matolabtheme.attribution_logo' %}
- {% set is_upload = data[field3_url] and not data[field2_url].startswith('http') %}
+ {% set field3_url = 'ckanext.matolabtheme.favicon' %}
+ {% set is_upload = data[field3_url] and not data[field3_url].startswith('http') %}
{% set is_url = data[field3_url] and data[field3_url].startswith('http') %}
- {{ iu.image_upload_prefix(data, errors, prefix='attribution_logo', is_upload_enabled=h.uploads_enabled(), field_name='ckanext.matolabtheme.attribution_logo_url', is_url=is_url, is_upload=is_upload, upload_label = _('Attribution Logo'), url_label=_('Attribution logo'), field_url=field3_url, field_upload='ckanext.matolabtheme.attribution_logo_upload', field_clear='ckanext.matolabtheme.clear_attribution_logo_upload' )}}
+ {{ form.image_upload(data, errors, is_upload_enabled=h.uploads_enabled(), field_name='ckanext.matolabtheme.favicon_url', is_url=is_url, is_upload=is_upload, upload_label = _('Favicon'), url_label=_('Favicon'), field_url=field3_url, field_upload='ckanext.matolabtheme.favicon_upload', field_clear='ckanext.matolabtheme.clear_favicon_upload' )}}
+
+ {% set field4_url = 'ckanext.matolabtheme.attribution_logo' %}
+ {% set is_upload = data[field4_url] and not data[field4_url].startswith('http') %}
+ {% set is_url = data[field4_url] and data[field4_url].startswith('http') %}
+ {{ form.image_upload(data, errors, is_upload_enabled=h.uploads_enabled(), field_name='ckanext.matolabtheme.attribution_logo_url', is_url=is_url, is_upload=is_upload, upload_label = _('Attribution Logo'), url_label=_('Attribution logo'), field_url=field4_url, field_upload='ckanext.matolabtheme.attribution_logo_upload', field_clear='ckanext.matolabtheme.clear_attribution_logo_upload' )}}
{% endblock %}
diff --git a/ckanext/matolabtheme/views.py b/ckanext/matolabtheme/views.py
index 34e43eb..9bb301b 100644
--- a/ckanext/matolabtheme/views.py
+++ b/ckanext/matolabtheme/views.py
@@ -9,7 +9,6 @@
import ckan.lib.uploader as uploader
import ckan.logic as logic
import ckan.logic.schema
-import ckan.model as model
from ckan.common import _, config, current_user, request
from ckan.lib.helpers import helper_functions as h
from ckan.views.home import CACHE_PARAMETERS
@@ -41,6 +40,7 @@ def post(self) -> Union[str, Response]:
try:
req = request.form.copy()
req.update(request.files.to_dict())
+ log.debug(req)
data_dict = logic.clean_dict(
dict_fns.unflatten(
logic.tuplize_dict(
@@ -48,65 +48,37 @@ def post(self) -> Union[str, Response]:
)
)
)
- # dark_mode=toolkit.config.get("ckanext.matolabtheme.dark_mode")
+
# Set dark_mode based on whether the checkbox was checked
data_dict["ckanext.matolabtheme.dark_mode"] = (
"ckanext.matolabtheme.dark_mode" in req
)
+ del data_dict["ckanext.matolabtheme.dark_mode"]
del data_dict["save"]
- # data = logic.get_action("config_option_update")(
- # {"user": current_user.name}, data_dict
- # )
- # Handle banner uploads AFTER calling CKAN’s function
+
+ # Handle uploads
upload = uploader.get_uploader("admin")
- for key in list(data_dict.keys()):
- if key == "ckanext.matolabtheme.banner_top":
- upload.update_data_dict(
- data_dict,
- "ckanext.matolabtheme.banner_top",
- "ckanext.matolabtheme.banner_top_upload",
- "ckanext.matolabtheme.clear_banner_top_upload",
- )
- upload.upload(uploader.get_max_image_size())
- value = data_dict[key]
- if upload.filepath:
- static_url = upload.filepath.split("storage", 1)[-1]
- value = h.url_for_static(static_url)
- # Update CKAN's `config` object
- model.set_system_info(key, value)
- config[key] = value
- elif key == "ckanext.matolabtheme.banner_bottom":
- upload.update_data_dict(
- data_dict,
- "ckanext.matolabtheme.banner_bottom",
- "ckanext.matolabtheme.banner_bottom_upload",
- "ckanext.matolabtheme.clear_banner_bottom_upload",
- )
- upload.upload(uploader.get_max_image_size())
- value = data_dict[key]
- if upload.filepath:
- static_url = upload.filepath.split("storage", 1)[-1]
- value = h.url_for_static(static_url)
- model.set_system_info(key, value)
- config[key] = value
- elif key == "ckanext.matolabtheme.attribution_logo":
- upload.update_data_dict(
- data_dict,
- "ckanext.matolabtheme.attribution_logo",
- "ckanext.matolabtheme.attribution_logo_upload",
- "ckanext.matolabtheme.clear_attribution_logo_upload",
- )
- upload.upload(uploader.get_max_image_size())
- value = data_dict[key]
- if upload.filepath:
- static_url = upload.filepath.split("storage", 1)[-1]
- value = h.url_for_static(static_url)
- model.set_system_info(key, value)
- config[key] = value
- elif key == "ckanext.matolabtheme.dark_mode":
- value = data_dict[key]
- model.set_system_info(key, value)
- config[key] = value
+ log.debug(data_dict)
+ upload_fields=["ckanext.matolabtheme.banner_top","ckanext.matolabtheme.banner_bottom", "ckanext.matolabtheme.favicon", "ckanext.matolabtheme.attribution_logo"]
+ for key in upload_fields:
+ if key in data_dict.keys():
+ upload.update_data_dict(
+ data_dict,
+ key,
+ key+"_upload",
+ "ckanext.matolabtheme.clear_banner_top_upload",
+ )
+ upload.upload(uploader.get_max_image_size())
+ value = data_dict[key]
+ # Set full Logo url
+ if value and not value.startswith('http') and not value.startswith('/'):
+ image_path = 'uploads/admin/'
+ value = h.url_for_static('{0}{1}'.format(image_path, value))
+ data_dict[key]=value
+ log.debug(data_dict)
+ data = logic.get_action("config_option_update")(
+ {"user": current_user.name}, data_dict
+ )
except logic.ValidationError as e:
data = request.form