Cloned DMOJ
This commit is contained in:
parent
f623974b58
commit
49dc9ff10c
513 changed files with 132349 additions and 39 deletions
57
django_ace/widgets.py
Normal file
57
django_ace/widgets.py
Normal file
|
@ -0,0 +1,57 @@
|
|||
"""
|
||||
Django-ace originally from https://github.com/bradleyayers/django-ace.
|
||||
"""
|
||||
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.forms.utils import flatatt
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
|
||||
class AceWidget(forms.Textarea):
|
||||
def __init__(self, mode=None, theme=None, wordwrap=False, width='100%', height='300px',
|
||||
no_ace_media=False, *args, **kwargs):
|
||||
self.mode = mode
|
||||
self.theme = theme
|
||||
self.wordwrap = wordwrap
|
||||
self.width = width
|
||||
self.height = height
|
||||
self.ace_media = not no_ace_media
|
||||
super(AceWidget, self).__init__(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def media(self):
|
||||
js = [urljoin(settings.ACE_URL, 'ace.js')] if self.ace_media else []
|
||||
js.append('django_ace/widget.js')
|
||||
css = {
|
||||
'screen': ['django_ace/widget.css'],
|
||||
}
|
||||
return forms.Media(js=js, css=css)
|
||||
|
||||
def render(self, name, value, attrs=None, renderer=None):
|
||||
attrs = attrs or {}
|
||||
|
||||
ace_attrs = {
|
||||
'class': 'django-ace-widget loading',
|
||||
'style': 'width:%s; height:%s' % (self.width, self.height),
|
||||
'id': 'ace_%s' % name,
|
||||
}
|
||||
if self.mode:
|
||||
ace_attrs['data-mode'] = self.mode
|
||||
if self.theme:
|
||||
ace_attrs['data-theme'] = self.theme
|
||||
if self.wordwrap:
|
||||
ace_attrs['data-wordwrap'] = 'true'
|
||||
|
||||
attrs.update(style='width: 100%; min-width: 100%; max-width: 100%; resize: none')
|
||||
textarea = super(AceWidget, self).render(name, value, attrs)
|
||||
|
||||
html = '<div%s><div></div></div>%s' % (flatatt(ace_attrs), textarea)
|
||||
|
||||
# add toolbar
|
||||
html = ('<div class="django-ace-editor"><div style="width: 100%%" class="django-ace-toolbar">'
|
||||
'<a href="./" class="django-ace-max_min"></a></div>%s</div>') % html
|
||||
|
||||
return mark_safe(html)
|
Loading…
Add table
Add a link
Reference in a new issue