Skip to content

Commit

Permalink
markup selector on the editor
Browse files Browse the repository at this point in the history
  • Loading branch information
mgaitan committed Sep 19, 2014
1 parent 3061ac8 commit 8418669
Show file tree
Hide file tree
Showing 14 changed files with 1,180 additions and 749 deletions.
18 changes: 15 additions & 3 deletions waliki/_markups.py
@@ -1,11 +1,14 @@
import re
import sys
from markups import (MarkdownMarkup as MarkdownMarkupBase,
TextileMarkup, ReStructuredTextMarkup as ReStructuredTextMarkupBase)
TextileMarkup as TextileMarkupBase,
ReStructuredTextMarkup as ReStructuredTextMarkupBase)
from .utils import get_url
from waliki.settings import WALIKI_AVAILABLE_MARKUPS


class MarkdownMarkup(MarkdownMarkupBase):
codemirror_mode_name = codemirror_mode = 'markdown'

def __init__(self, filename=None, extensions=None, extension_configs=None):
super(MarkdownMarkupBase, self).__init__(filename)
Expand Down Expand Up @@ -48,6 +51,11 @@ def _apply_extensions(self):

class ReStructuredTextMarkup(ReStructuredTextMarkupBase):

codemirror_mode = 'rst'
# see bug https://github.com/marijnh/CodeMirror/issues/2740
codemirror_mode_name = 'rst-base'


def __init__(self, filename=None, **kwargs):
settings_overrides = kwargs.pop('settings_overrides', None)
super(ReStructuredTextMarkup, self).__init__(filename, settings_overrides)
Expand Down Expand Up @@ -78,11 +86,15 @@ def get_document_body(self, text):
return html


class TextileMarkup(TextileMarkupBase):
codemirror_mode_name = codemirror_mode = 'textile'


def get_all_markups():
return set([ReStructuredTextMarkup, TextileMarkup, MarkdownMarkup])
return [find_markup_class_by_name(s) for s in WALIKI_AVAILABLE_MARKUPS]


def find_markup_class_by_name(name):
for markup in get_all_markups():
for markup in (ReStructuredTextMarkup, MarkdownMarkup, TextileMarkup):
if markup.name.lower() == name.lower():
return markup
11 changes: 6 additions & 5 deletions waliki/forms.py
@@ -1,17 +1,17 @@
from django import forms
from .models import Page
from ._markups import get_all_markups


class PageForm(forms.ModelForm):
raw = forms.CharField(label="", widget=forms.Textarea)
message = forms.CharField(max_length=200, required=False)

class Media:
js = ('codemirror/lib/codemirror.js',
'codemirror/mode/markdown/markdown.js',
'codemirror/mode/rst/rst.js',
'js/waliki.js'
)
modes = tuple('codemirror/mode/%s/%s.js' % (m.codemirror_mode, m.codemirror_mode)
for m in get_all_markups() if hasattr(m, 'codemirror_mode'))

js = ('codemirror/lib/codemirror.js',) + modes + ('js/waliki.js',)
css = {
'all': ('codemirror/lib/codemirror.css',)
}
Expand All @@ -20,6 +20,7 @@ def __init__(self, *args, **kwargs):
is_hidden = kwargs.pop('is_hidden', None)
super(PageForm, self).__init__(*args, **kwargs)
self.fields['raw'].initial = self.instance.raw
self.fields['markup'].widget = forms.HiddenInput()
self.fields['message'].widget = forms.TextInput(attrs={'placeholder': 'Update %s' % self.instance.path})
if is_hidden:
for field in self.fields.values():
Expand Down
7 changes: 4 additions & 3 deletions waliki/settings.py
Expand Up @@ -48,13 +48,14 @@ def _get_markup_settings(user_settings):
deep_update(defaults, user_settings)
return defaults

WALIKI_AVAILABLE_MARKUPS = getattr(settings, 'WALIKI_AVAILABLE_MARKUPS', ['reStructuredText', 'Markdown'])

# options: reStructuredText, Markdown, Textile
WALIKI_DEFAULT_MARKUP = WALIKI_AVAILABLE_MARKUPS[0]

# your content folder. by default it's <project_root>/waliki_data
WALIKI_DATA_DIR = getattr(settings, 'WALIKI_DATA_DIR', None) or _get_default_data_dir()

# options: reStructuredText, Markdown, Textile
WALIKI_DEFAULT_MARKUP = getattr(settings, 'WALIKI_DEFAULT_MARKUP', "reStructuredText")

# wich page is shown as the wiki index?
WALIKI_INDEX_SLUG = getattr(settings, 'WALIKI_INDEX_SLUG', "home")

Expand Down
51 changes: 33 additions & 18 deletions waliki/static/codemirror/mode/markdown/index.html
@@ -1,20 +1,36 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>CodeMirror: Markdown mode</title>
<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/continuelist.js"></script>
<script src="../xml/xml.js"></script>
<script src="markdown.js"></script>
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
<link rel="stylesheet" href="../../doc/docs.css">
</head>
<body>
<h1>CodeMirror: Markdown mode</h1>

<!-- source: http://daringfireball.net/projects/markdown/basics.text -->

<title>CodeMirror: Markdown mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/continuelist.js"></script>
<script src="../xml/xml.js"></script>
<script src="markdown.js"></script>
<style type="text/css">
.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
.cm-s-default .cm-trailing-space-a:before,
.cm-s-default .cm-trailing-space-b:before {position: absolute; content: "\00B7"; color: #777;}
.cm-s-default .cm-trailing-space-new-line:before {position: absolute; content: "\21B5"; color: #777;}
</style>
<div id=nav>
<a href="http://codemirror.net"><img id=logo src="../../doc/logo.png"></a>

<ul>
<li><a href="../../index.html">Home</a>
<li><a href="../../doc/manual.html">Manual</a>
<li><a href="https://github.com/marijnh/codemirror">Code</a>
</ul>
<ul>
<li><a href="../index.html">Language modes</a>
<li><a class=active href="#">Markdown</a>
</ul>
</div>

<article>
<h2>Markdown mode</h2>
<form><textarea id="code" name="code">
Markdown: Basics
================
Expand Down Expand Up @@ -340,5 +356,4 @@ <h1>CodeMirror: Markdown mode</h1>

<p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#markdown_*">normal</a>, <a href="../../test/index.html#verbose,markdown_*">verbose</a>.</p>

</body>
</html>
</article>

0 comments on commit 8418669

Please sign in to comment.