Metadata-Version: 2.1
Name: django-stackedit
Version: 0.0.1
Summary: Django Stackedit Markdown Editor
Home-page: https://gitee.com/qtch/django-stackedit
Author: Peter Han (Qitian)
Author-email: peter@qitian.biz
License: GNUGPL-v3
Keywords: stackedit,django markdown,django markdown editor
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.8
Classifier: Framework :: Django :: 1.9
Classifier: Framework :: Django :: 1.10
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.0
Classifier: Framework :: Django :: 2.1
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Requires-Dist: Django
Requires-Dist: Markdown
Requires-Dist: requests
Requires-Dist: wheel
Requires-Dist: twine

martor |pypi version|
------------------------------

.. |pypi version|
   image:: https://img.shields.io/pypi/v/martor.svg
   :target: https://pypi.python.org/pypi/martor

.. image:: https://img.shields.io/badge/license-GNUGPLv3-blue.svg
   :target: https://raw.githubusercontent.com/agusmakmun/django-markdown-editor/master/LICENSE

.. image:: https://img.shields.io/pypi/pyversions/martor.svg
   :target: https://pypi.python.org/pypi/martor

.. image:: https://img.shields.io/badge/Django-1.8,%201.9,%201.10,%201.11,%202.0,%202.1-green.svg
  :target: https://www.djangoproject.com

.. image:: https://travis-ci.org/agusmakmun/django-markdown-editor.svg?branch=master
  :target: https://travis-ci.org/agusmakmun/django-markdown-editor

**Martor** is Markdown Editor plugin for Django and new face of **DracEditor**.


Features
------------------------------

* Live Preview
* Integrated with `Ace Editor`_
* Integrated with `Semantic-UI`_
* Support Multiple Fields (`fixed this issue`_)
* Upload Image to imgur.com `(via API)` and `custom uploader`_.
* Direct Mention users ``@[username]`` - `(require user to logged in)`
* Support embed/iframe video from (Youtube, Vimeo, Dailymotion, Yahoo, Veoh, & Metacafe)
* Emoji ``:emoji_name:`` + Cheat sheets
* Martor Commands Refference
* Support Django Admin
* Toolbar Buttons
* Highlight ``pre``


Preview
------------------------------

.. image:: https://raw.githubusercontent.com/agusmakmun/django-markdown-editor/master/__screenshot/martor-preview-editor.png

.. image:: https://raw.githubusercontent.com/agusmakmun/django-markdown-editor/master/__screenshot/martor-preview-result.png


Requirements
------------------------------

* ``Django>=2.0``
* ``Markdown>=3.0``
* ``requests>=2.12.4``


Installation
------------------------------

Martor is available directly from `PyPI`_:

1. Installing the package.

::

    $ pip install martor


2. Don't forget to add ``'martor'`` to your ``'INSTALLED_APPS'`` setting `(without migrations)`.

::

    # settings.py
    INSTALLED_APPS = [
        ....
        'martor',
    ]


3. Add url pattern to your ``urls.py.``

::

    # urls.py
    # django >= 2.0
    urlpatterns = [
        ...
        path('martor/', include('martor.urls')),
    ]

    # django <= 1.9
    urlpatterns = [
        ...
        url(r'^martor/', include('martor.urls')),
    ]


4. Collect included some martor static files to your ``STATIC_ROOT`` folder.

::

    ./manage.py collectstatic


Setting Configurations ``settings.py``
---------------------------------------

Please register application in https://api.imgur.com/oauth2/addclient
to get ``IMGUR_CLIENT_ID`` and ``IMGUR_API_KEY``.

::

    # Global martor settings
    # Input: string boolean, `true/false`
    MARTOR_ENABLE_CONFIGS = {
        'imgur': 'true',     # to enable/disable imgur/custom uploader.
        'mention': 'false',  # to enable/disable mention
        'jquery': 'true',    # to include/revoke jquery (require for admin default django)
        'living': 'false',   # to enable/disable live updates in preview
    }

    # To setup the martor editor with label or not (default is False)
    MARTOR_ENABLE_LABEL = False

    # Imgur API Keys
    MARTOR_IMGUR_CLIENT_ID = 'your-client-id'
    MARTOR_IMGUR_API_KEY   = 'your-api-key'

    # Safe Mode
    MARTOR_MARKDOWN_SAFE_MODE = True # default

    # Markdownify
    MARTOR_MARKDOWNIFY_FUNCTION = 'martor.utils.markdownify' # default
    MARTOR_MARKDOWNIFY_URL = '/martor/markdownify/' # default

    # Markdown extensions (default)
    MARTOR_MARKDOWN_EXTENSIONS = [
        'markdown.extensions.extra',
        'markdown.extensions.nl2br',
        'markdown.extensions.smarty',
        'markdown.extensions.fenced_code',

        # Custom markdown extensions.
        'martor.extensions.urlize',
        'martor.extensions.del_ins',    # ~~strikethrough~~ and ++underscores++
        'martor.extensions.mention',    # to parse markdown mention
        'martor.extensions.emoji',      # to parse markdown emoji
        'martor.extensions.mdx_video',  # to parse embed/iframe video
    ]

    # Markdown Extensions Configs
    MARTOR_MARKDOWN_EXTENSION_CONFIGS = {}

    # Markdown urls
    MARTOR_UPLOAD_URL = '/martor/uploader/' # default
    MARTOR_SEARCH_USERS_URL = '/martor/search-user/' # default

    # Markdown Extensions
    MARTOR_MARKDOWN_BASE_EMOJI_URL = 'https://assets-cdn.github.com/images/icons/emoji/' # default
    MARTOR_MARKDOWN_BASE_MENTION_URL = 'https://python.web.id/author/' # default (change this)

Check this setting is not set else csrf will not be sent over ajax calls:

::

    CSRF_COOKIE_HTTPONLY = False


Usage
------------------------------

**Model**

::

    from django.db import models
    from martor.models import MartorField

    class Post(models.Model):
        description = MartorField()


**Form**

::

    from django import forms
    from martor.fields import MartorFormField

    class PostForm(forms.Form):
        description = MartorFormField()


**Admin**

::

    from django.db import models
    from django.contrib import admin

    from martor.widgets import AdminMartorWidget

    from yourapp.models import YourModel

    class YourModelAdmin(admin.ModelAdmin):
        formfield_overrides = {
            models.TextField: {'widget': AdminMartorWidget},
        }

    admin.site.register(YourModel, YourModelAdmin)


**Template**

Simply safe the markdown content as html ouput with loading the templatetags from ``martor/templatetags/martortags.py``.

::

    {% load martortags %}
    {{ field_name|safe_markdown }}

    # example
    {{ post.description|safe_markdown }}


Custom Uploader
-----------------

If you want to save the images uploaded to your storage,
**Martor** also provide to handle it. Please checkout this `WIKI`_.

Test the Martor from this Repository
-------------------------------------

I assume you already setup with virtual enviroment (virtualenv).

::

    $ git clone https://github.com/agusmakmun/django-markdown-editor.git
    $ cd django-markdown-editor/ && python setup.py install
    $ cd martor_demo/
    $ python manage.py makemigrations && python manage.py migrate
    $ python manage.py runserver


And let checkout at http://127.0.0.1:8000/simple-form/ to your browser.


Martor Commands Refference
--------------------------------

.. image:: https://raw.githubusercontent.com/agusmakmun/django-markdown-editor/master/__screenshot/martor-guide.png


Notes
--------------------------------

**Martor** was inspired by great `django-markdownx`_, `Python Markdown`_ and `Online reStructuredText editor`_.


.. _Ace Editor: https://ace.c9.io
.. _Semantic-UI: http://semantic-ui.com
.. _PyPI: https://pypi.python.org/pypi/martor
.. _django-markdownx: https://github.com/adi-/django-markdownx
.. _Python Markdown: https://github.com/waylan/Python-Markdown
.. _Online reStructuredText editor: http://rst.ninjs.org
.. _WIKI: https://github.com/agusmakmun/django-markdown-editor/wiki
.. _fixed this issue: https://github.com/agusmakmun/django-markdown-editor/issues/3
.. _custom uploader: https://github.com/agusmakmun/django-markdown-editor/wiki


