Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions ckanext/matolabtheme/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -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, "")
Expand Down Expand Up @@ -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,
Expand Down
4 changes: 4 additions & 0 deletions ckanext/matolabtheme/templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
{% endif %}
{% endblock %}

{% block links -%}
<link rel="shortcut icon" href="{{ h.url_for_static_or_external(config.get('ckanext.matolabtheme.favicon')) }}" />
{% endblock -%}

{% block bodytag %}
{{ super() }}
{% endblock %}
Expand Down

This file was deleted.

20 changes: 12 additions & 8 deletions ckanext/matolabtheme/templates/matolabtheme/theme_config.html
Original file line number Diff line number Diff line change
Expand Up @@ -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 %}

Expand All @@ -14,21 +13,26 @@
{{ h.csrf_input() }}
<!-- Dark Mode Toggle Switch -->
<!-- {{ form.checkbox('ckanext.matolabtheme.dark_mode', id='field-matolabthem-darkmode', label= _('Enable Dark Mode'), checked=((true if data['ckanext.matolabtheme.dark_mode'] else false)), error=error, classes=['control-medium']) }} -->

{% 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 %}
<div class="form-actions">
Expand Down
80 changes: 26 additions & 54 deletions ckanext/matolabtheme/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -41,72 +40,45 @@ 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(
logic.parse_params(req, ignore_keys=CACHE_PARAMETERS)
)
)
)
# 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
Expand Down
Loading