All the dialogs in the wiki are now accessible to screen readers. Also, the "Switch to selected version" button did the odd thing of reloading the page with the new version selected, but inside a dialog. That is now fixed. The merge dialog has a warning that looks kind of funky still, but you can read it, unlike the previous code. LMS-1337
64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
from django import forms
|
|
from django.forms.util import flatatt
|
|
from django.utils.encoding import force_unicode
|
|
from django.utils.html import conditional_escape
|
|
from django.utils.safestring import mark_safe
|
|
|
|
from django.template.loader import render_to_string
|
|
|
|
from wiki.editors.base import BaseEditor
|
|
from wiki.editors.markitup import MarkItUpAdminWidget
|
|
|
|
|
|
class CodeMirrorWidget(forms.Widget):
|
|
def __init__(self, attrs=None):
|
|
# The 'rows' and 'cols' attributes are required for HTML correctness.
|
|
default_attrs = {'class': 'markItUp',
|
|
'rows': '10', 'cols': '40', }
|
|
if attrs:
|
|
default_attrs.update(attrs)
|
|
super(CodeMirrorWidget, self).__init__(default_attrs)
|
|
|
|
def render(self, name, value, attrs=None):
|
|
if value is None: value = ''
|
|
|
|
final_attrs = self.build_attrs(attrs, name=name)
|
|
|
|
# TODO use the help_text field of edit form instead of rendering a template
|
|
|
|
return render_to_string('wiki/includes/editor_widget.html',
|
|
{'attrs': mark_safe(flatatt(final_attrs)),
|
|
'content': conditional_escape(force_unicode(value)),
|
|
})
|
|
|
|
|
|
class CodeMirror(BaseEditor):
|
|
editor_id = 'codemirror'
|
|
|
|
def get_admin_widget(self, instance=None):
|
|
return MarkItUpAdminWidget()
|
|
|
|
def get_widget(self, instance=None):
|
|
return CodeMirrorWidget()
|
|
|
|
class AdminMedia:
|
|
css = {
|
|
'all': ("wiki/markitup/skins/simple/style.css",
|
|
"wiki/markitup/sets/admin/style.css",)
|
|
}
|
|
js = ("wiki/markitup/admin.init.js",
|
|
"wiki/markitup/jquery.markitup.js",
|
|
"wiki/markitup/sets/admin/set.js",
|
|
)
|
|
|
|
class Media:
|
|
css = {
|
|
'all': ("js/vendor/CodeMirror/codemirror.css",)
|
|
}
|
|
js = ("js/vendor/CodeMirror/codemirror.js",
|
|
"js/vendor/CodeMirror/xml.js",
|
|
"js/vendor/CodeMirror/mitx_markdown.js",
|
|
"js/wiki/accessible.js",
|
|
"js/wiki/CodeMirror.init.js",
|
|
)
|