Skip to content
This repository has been archived by the owner on Feb 16, 2023. It is now read-only.

Commit

Permalink
Support css & js overrides
Browse files Browse the repository at this point in the history
  • Loading branch information
danielquinn committed Jul 8, 2018
1 parent ba1f437 commit e7daf7d
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 2 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ target/
media/documents/*.gpg
media/documents/thumbnails/*
media/documents/originals/*
media/overrides.css
media/overrides.js

# Sqlite database
db.sqlite3
Expand Down
7 changes: 7 additions & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ Changelog
doing active development on Paperless using the Docker environment:
`#376`_.

* You now also have the ability to customise the interface to your heart's
content by creating a file called ``overrides.css`` and/or ``overrides.js``
in the root of your media directory. Thanks to `Mark McFate`_ for this
idea: `#371`_


2.0.0
=====
Expand Down Expand Up @@ -445,6 +450,7 @@ bulk of the work on this big change.
.. _thinkjk: https://github.com/thinkjk
.. _mcronce: https://github.com/mcronce
.. _Enno Lohmeier: https://github.com/elohmeier
.. _Mark McFate: https://github.com/SummittDweller

.. _#20: https://github.com/danielquinn/paperless/issues/20
.. _#44: https://github.com/danielquinn/paperless/issues/44
Expand Down Expand Up @@ -515,6 +521,7 @@ bulk of the work on this big change.
.. _#351: https://github.com/danielquinn/paperless/pull/351
.. _#352: https://github.com/danielquinn/paperless/pull/352
.. _#354: https://github.com/danielquinn/paperless/issues/354
.. _#371: https://github.com/danielquinn/paperless/issues/371
.. _#374: https://github.com/danielquinn/paperless/pull/374
.. _#375: https://github.com/danielquinn/paperless/pull/375
.. _#376: https://github.com/danielquinn/paperless/pull/376
Expand Down
27 changes: 27 additions & 0 deletions docs/customising.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
.. _customising:

Customising Paperless
#####################

Currently, the Paperless' interface is just the default Django admin, which
while powerful, is rather boring. If you'd like to give the site a bit of a
face-lift, or if you simply want to adjust the colours, contrast, or font size
to make things easier to read, you can do that by adding your own CSS or
Javascript quite easily.


.. _customising-overrides:

Overrides
=========

On every page load, Paperless looks for two files in your media root directory
(the directory defined by your ``PAPERLESS_MEDIADIR`` configuration variable or
the default, ``<project root>/media/``) for two files:

* ``overrides.css``
* ``overrides.js``

If it finds either or both of those files, they'll be loaded into the page: the
CSS in the ``<head>``, and the Javascript stuffed into the last line of the
``<body>``.
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Contents
utilities
guesswork
migrating
customising
extending
troubleshooting
scanners
Expand Down
40 changes: 40 additions & 0 deletions src/documents/templates/admin/base_site.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{% extends 'admin/base_site.html' %}

{# NOTE: This should probably be extending base.html. See CSS comment below details. #}


{% load custom_css from customisation %}
{% load custom_js from customisation %}


{% block blockbots %}

{% comment %}
This really should be extending `extrastyle`, but the the
django-flat-responsive package decided that it wanted to put its CSS in
this block, so to make sure that overrides are in fact overriding
everything else, we have to do the Wrong Thing here.

Once we switch to Django 2.x and drop django-flat-responsive, we should
switch this to `extrastyle` where it should be.
{% endcomment %}

{{ block.super }}

{% custom_css %}

{% endblock blockbots %}


{% block footer %}

{% comment %}
The Django admin doesn't have a block for Javascript you'd want placed in
the footer, so we have to use this one instead.
{% endcomment %}

{{ block.super }}

{% custom_js %}

{% endblock footer %}
37 changes: 37 additions & 0 deletions src/documents/templatetags/customisation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import os

from django import template
from django.conf import settings
from django.utils.safestring import mark_safe

register = template.Library()


@register.simple_tag()
def custom_css():
theme_path = os.path.join(
settings.MEDIA_ROOT,
"overrides.css"
)
if os.path.exists(theme_path):
return mark_safe(
'<link rel="stylesheet" type="text/css" href="{}" />'.format(
os.path.join(settings.MEDIA_URL, "overrides.css")
)
)
return ""


@register.simple_tag()
def custom_js():
theme_path = os.path.join(
settings.MEDIA_ROOT,
"overrides.js"
)
if os.path.exists(theme_path):
return mark_safe(
'<script src="{}"></script>'.format(
os.path.join(settings.MEDIA_URL, "overrides.js")
)
)
return ""
4 changes: 2 additions & 2 deletions src/paperless/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,12 @@
"reminders.apps.RemindersConfig",
"paperless_tesseract.apps.PaperlessTesseractConfig",

"flat_responsive",
"flat_responsive", # TODO: Remove as of Django 2.x
"django.contrib.admin",

"rest_framework",
"crispy_forms",
"django_filters"
"django_filters",

]

Expand Down

0 comments on commit e7daf7d

Please sign in to comment.