PageDown rich text widget for Mezzanine
Project description
Inspired by mezzanine-mdown, django-pagedown, and django-markupmirror.
This package provides rich text widgets and filters for Mezzanine to author content using Markdown syntax instead of the default TinyMCE editor.
Features
- Uses the PageDown markdown editor from Stack Exchange (optional), and Python-Markdown for rendering.
- Supports client-side and server-side live previews in the editor. Client-side previews use PageDown’s JavaScript previewer. Server-side previews use the same rendering filter as the final page.
- Supports bundled and custom Python-Markdown extensions, and provides a few filters that are preconfigured to use some extensions, such as Markdown Extra. If server-side previews are enabled, configured extensions will be enabled in the editor preview.
- HTML sanitizing using Bleach. Bleach is already a dependency of Mezzanine.
- Integrates the editor’s Insert Image button with Mezzanine’s file browser (Media Library). Clicking the Insert Image button pops up an in-window selection dialog of Mezzanine’s Media Library.
How to Use
Get and install the package:
pip install mezzanine-pagedown
Mezzanine 1.3 or higher is required.
Install the app in your Mezzanine project by adding mezzanine_pagedown to the list of INSTALLED_APPS in your project’s settings.py.
Configure Mezzanine to use one of the provided rich text widgets. In your project’s settings.py, set RICHTEXT_WIDGET_CLASS to:
- 'mezzanine_pagedown.widgets.PageDownWidget' to use the PageDown editor with live preview.
- 'mezzanine_pagedown.widgets.PlainWidget' to use a plain textarea without preview.
Configure Mezzanine to use one of the provided rich text filters for rendering markdown content. In settings.py, set RICHTEXT_FILTERS to include one of the following:
- 'mezzanine_pagedown.filters.plain' to use plain Markdown syntax with no extensions.
- 'mezzanine_pagedown.filters.extra' to use Markdown Extra.
- 'mezzanine_pagedown.filters.codehilite' to enable the CodeHilite extension.
- 'mezzanine_pagedown.filters.custom' to enable an explicit list of extensions through the PAGEDOWN_MARKDOWN_EXTENSIONS setting (see below).
Disable Mezzanine’s HTML sanitizing so that it does not interfere with markdown’s blockquote syntax (>):
RICHTEXT_FILTER_LEVEL = 3
mezzanine-pagedown provides its own sanitizing after rendering Markdown to HTML, and respects Mezzanine’s RICHTEXT_ALLOWED_TAGS, RICHTEXT_ALLOWED_ATTRIBUTES, and RICHTEXT_ALLOWED_STYLES settings.
(Optional): Server-side previews:
In settings.py, enable server-side live previews in the editor:
PAGEDOWN_SERVER_SIDE_PREVIEW = True
By default (False), previews are generated client-side using PageDown’s previewer.
In urls.py, enable the preview URL:
import mezzanine_pagedown.urls
Then add the following line to urlpatterns:
("^pagedown/", include(mezzanine_pagedown.urls)),
In this case, the preview URL is /pagedown/preview/. You can replace "^pagedown/" with your own path.
(Optional): Set enabled extensions. Requires the custom filter:
RICHTEXT_FILTERS = ['mezzanine_pagedown.filters.custom'] PAGEDOWN_MARKDOWN_EXTENSIONS = ('extra','codehilite','toc')
To use a custom extension, import it and include an instance in the list of extensions:
from myapp.markdown_extensions.myextension import MyExtension PAGEDOWN_MARKDOWN_EXTENSIONS = ('extra', MyExtension())
(Optional): Generate and use a pygments CSS style for use with the CodeHilite extension (requires installing pygments):
python manage.py pygments_styles <scheme_name>
License
Licence: BSD. See included LICENSE file.
Note that this license applies to this repository only. The PageDown JavaScript library is used as a sub-repository and has its own license.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size mezzanine_pagedown-1.3-py2-none-any.whl (67.0 kB) | File type Wheel | Python version py2 | Upload date | Hashes View |
Filename, size mezzanine-pagedown-1.3.tar.gz (63.2 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for mezzanine_pagedown-1.3-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74b9f298d90f80451d6bdbe284f3d47669f6fdb3cacb3610d2bdffc2705f766a |
|
MD5 | d4b05d45226d764e9e646b37921f191e |
|
BLAKE2-256 | cc9a40fac73ca76f9a62f3f394a042bcf9231a905fffd8bfac41e768c602ed9f |