Add django_horizontal templatetags
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
|
||||||
<div class="form-group{% if field.errors %} has-error{% endif %}">
|
<div class="form-group{% if field.errors %} has-error{% endif %}">
|
||||||
{% if field|is_checkbox %}
|
{% if field|is_checkbox %}
|
||||||
|
<div class="{{ classes.single_value }}">
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label>
|
<label>
|
||||||
{{ field }} <span>{{ field.label }}</span>
|
{{ field }} <span>{{ field.label }}</span>
|
||||||
@@ -16,9 +18,11 @@
|
|||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{% else %}{% if field|is_radio %}
|
{% else %}{% if field|is_radio %}
|
||||||
<label class="control-label">{{ field.label }}</label>
|
<label class="control-label {{ classes.label }}">{{ field.label }}</label>
|
||||||
|
|
||||||
|
<div class="{{ classes.value }}">
|
||||||
<div class="radio">
|
<div class="radio">
|
||||||
{% for choice in field %}
|
{% for choice in field %}
|
||||||
<label class="radio">
|
<label class="radio">
|
||||||
@@ -37,10 +41,12 @@
|
|||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<label class="control-label" for="{{ field.auto_id }}">{{ field.label }}</label>
|
<label class="control-label {{ classes.label }}" for="{{ field.auto_id }}">{{ field.label }}</label>
|
||||||
|
|
||||||
|
<div class="{{ classes.value }}">
|
||||||
{{ field }}
|
{{ field }}
|
||||||
|
|
||||||
{% for error in field.errors %}
|
{% for error in field.errors %}
|
||||||
@@ -52,5 +58,6 @@
|
|||||||
{{ field.help_text|safe }}
|
{{ field.help_text|safe }}
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</div>
|
||||||
{% endif %}{% endif %}
|
{% endif %}{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
@@ -4,41 +4,76 @@ from django import template
|
|||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
def bootstrap(element):
|
def bootstrap(element):
|
||||||
|
markup_classes = {'label': '', 'value': '', 'single_value': ''}
|
||||||
|
|
||||||
|
render(element, markup_classes)
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def bootstrap_horizontal(element, label_cols={}):
|
||||||
|
if not label_cols:
|
||||||
|
label_cols = 'col-sm-2 col-lg-2'
|
||||||
|
|
||||||
|
markup_classes = {'label': label_cols,
|
||||||
|
'value': '',
|
||||||
|
'single_value': ''}
|
||||||
|
|
||||||
|
for cl in label_cols.split(' '):
|
||||||
|
splited_class = cl.split('-')
|
||||||
|
|
||||||
|
try:
|
||||||
|
value_nb_cols = int(splited_class[-1])
|
||||||
|
except ValueError:
|
||||||
|
value_nb_cols = 12
|
||||||
|
|
||||||
|
if value_nb_cols >= 12:
|
||||||
|
splited_class[-1] = 12
|
||||||
|
else:
|
||||||
|
offset_class = cl.split('-')
|
||||||
|
offset_class[-1] = 'offset-' + str(value_nb_cols)
|
||||||
|
splited_class[-1] = str(12 - value_nb_cols)
|
||||||
|
markup_classes['single_value'] += ' ' + '-'.join(offset_class)
|
||||||
|
markup_classes['single_value'] += ' ' + '-'.join(splited_class)
|
||||||
|
|
||||||
|
markup_classes['value'] += ' ' + '-'.join(splited_class)
|
||||||
|
|
||||||
|
return render(element, markup_classes)
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def render(element, markup_classes):
|
||||||
element_type = element.__class__.__name__.lower()
|
element_type = element.__class__.__name__.lower()
|
||||||
|
|
||||||
if element_type == 'boundfield':
|
if element_type == 'boundfield':
|
||||||
classes = element.field.widget.attrs.get('class', '')
|
field_classes = element.field.widget.attrs.get('class', '')
|
||||||
classes += ' form-control'
|
field_classes += ' form-control'
|
||||||
element.field.widget.attrs['class'] = classes
|
element.field.widget.attrs['class'] = field_classes
|
||||||
|
|
||||||
template = get_template("bootstrapform/field.html")
|
template = get_template("bootstrapform/field.html")
|
||||||
context = Context({'field': element})
|
context = Context({'field': element, 'classes': markup_classes})
|
||||||
else:
|
else:
|
||||||
has_management = getattr(element, 'management_form', None)
|
has_management = getattr(element, 'management_form', None)
|
||||||
if has_management:
|
if has_management:
|
||||||
for form in element.forms:
|
for form in element.forms:
|
||||||
for field in form.visible_fields():
|
for field in form.visible_fields():
|
||||||
classes = field.field.widget.attrs.get('class', '')
|
field_classes = field.field.widget.attrs.get('class', '')
|
||||||
classes += ' form-control'
|
field_classes += ' form-control'
|
||||||
field.field.widget.attrs['class'] = classes
|
field.field.widget.attrs['class'] = field_classes
|
||||||
|
|
||||||
template = get_template("bootstrapform/formset.html")
|
template = get_template("bootstrapform/formset.html")
|
||||||
context = Context({'formset': element})
|
context = Context({'formset': element, 'classes': markup_classes})
|
||||||
else:
|
else:
|
||||||
for field in element.visible_fields():
|
for field in element.visible_fields():
|
||||||
classes = field.field.widget.attrs.get('class', '')
|
field_classes = field.field.widget.attrs.get('class', '')
|
||||||
classes += ' form-control'
|
field_classes += ' form-control'
|
||||||
field.field.widget.attrs['class'] = classes
|
field.field.widget.attrs['class'] = field_classes
|
||||||
|
|
||||||
template = get_template("bootstrapform/form.html")
|
template = get_template("bootstrapform/form.html")
|
||||||
context = Context({'form': element})
|
context = Context({'form': element, 'classes': markup_classes})
|
||||||
|
|
||||||
return template.render(context)
|
return template.render(context)
|
||||||
|
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
def is_checkbox(field):
|
def is_checkbox(field):
|
||||||
return field.field.widget.__class__.__name__.lower() == "checkboxinput"
|
return field.field.widget.__class__.__name__.lower() == "checkboxinput"
|
||||||
|
Reference in New Issue
Block a user