Просмотр исходного кода

Sign-in form uses floppyforms now. #114

Ralfp 12 лет назад
Родитель
Сommit
65665be233

+ 1 - 15
misago/apps/signin/forms.py

@@ -1,4 +1,4 @@
-from django import forms
+import floppyforms as forms
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from misago.forms import Form
 from misago.forms import Form
 
 
@@ -7,20 +7,6 @@ class SignInForm(Form):
     user_password = forms.CharField(widget=forms.PasswordInput, max_length=255, label=_("Your password"))
     user_password = forms.CharField(widget=forms.PasswordInput, max_length=255, label=_("Your password"))
     user_remember_me = forms.BooleanField(label=_("Stay Signed In"), help_text=_("Sign me In automatically next time"), required=False)
     user_remember_me = forms.BooleanField(label=_("Stay Signed In"), help_text=_("Sign me In automatically next time"), required=False)
 
 
-    layout = [
-              (
-               None,
-               (
-                ('user_email', {'attrs': {'placeholder': _("Enter your e-mail")}}),
-                ('user_password', {'has_value': False, 'attrs': {'placeholder': _("Enter your password")}}),
-                )
-               ),
-              (
-               None,
-               ['user_remember_me'],
-               ),
-              ]
-
     def __init__(self, *args, **kwargs):
     def __init__(self, *args, **kwargs):
         show_remember_me = kwargs.pop('show_remember_me')
         show_remember_me = kwargs.pop('show_remember_me')
 
 

+ 1 - 2
misago/apps/signin/views.py

@@ -5,7 +5,6 @@ from django.template import RequestContext
 from django.utils import timezone
 from django.utils import timezone
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
 from misago.admin import site
 from misago.admin import site
-from misago.forms import FormLayout
 from misago.messages import Message
 from misago.messages import Message
 import misago.auth as auth
 import misago.auth as auth
 from misago.auth import AuthException, auth_admin, auth_forum, sign_user_in
 from misago.auth import AuthException, auth_admin, auth_forum, sign_user_in
@@ -94,7 +93,7 @@ def signin(request):
                               'bad_password': bad_password,
                               'bad_password': bad_password,
                               'banned_account': banned_account,
                               'banned_account': banned_account,
                               'not_active': not_active,
                               'not_active': not_active,
-                              'form': FormLayout(form),
+                              'form': form,
                               'hide_signin': True,
                               'hide_signin': True,
                               },
                               },
                               context_instance=RequestContext(request));
                               context_instance=RequestContext(request));

+ 1 - 1
misago/forms/forms.py

@@ -1,5 +1,5 @@
 from recaptcha.client.captcha import submit as recaptcha_submit
 from recaptcha.client.captcha import submit as recaptcha_submit
-from django import forms
+import floppyforms as forms
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from misago.conf import settings
 from misago.conf import settings
 
 

+ 0 - 1
misago/forms/newforms.py

@@ -1 +0,0 @@
-from floppyforms import Form

+ 61 - 0
templates/cranefly/forms.html

@@ -0,0 +1,61 @@
+{# Forms macros for rendering forms and fields and stuff in templates. #}
+
+{% macro hiddens(form) -%}
+  <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
+  {% for field in form.hidden_fields() %}
+  <input type="hidden" name="{{ field.html_name }}" value="{{ field.value() }}">
+  {% endfor %}
+{%- endmacro %}
+
+{% macro row(_field, label=None, help_text=None, width=12, attrs=None) -%}
+  <div id="{{ field.html_name }}-control-group" class="control-group{% if _field.errors %} error{% endif %}">
+    <label class="control-label" for="id_{{ field.html_name }}">{% if label %}{{ label }}{% elif _field.label %}{{ _field.label }}{% else %}{{ _field.html_name }}{% endif %}</label>
+    <div class="controls">
+      {% if _field.field.widget.__class__.__name__ == 'CheckboxInput' %}
+        <label class="checkbox">
+          {{ field(_field, width=width, attrs=attrs)|trim }}
+          {% if help_text %}
+          {{ help_text }}
+          {% elif _field.help_text %}
+          {{ _field.help_text }}
+          {% endif %}
+        </label>
+      {% else %}
+        {{ field(_field, width=width, attrs=attrs)|trim }}
+        {% endif %}
+        {% for error in _field.errors %}
+        <p class="help-block" style="font-weight: bold;">{{ error }}</p>
+        {% endfor %}
+        {% if _field.field.widget.__class__.__name__ != 'CheckboxInput' %}
+        {% if help_text %}
+        <p class="help-block">{{ help_text }}</p>
+        {% elif _field.help_text %}
+        <p class="help-block">{{ _field.help_text }}</p>
+        {% endif %}
+      {% endif %}
+    </div>
+  </div>
+{%- endmacro %}
+
+{% macro field(_field, attrs=None, width=8) -%}
+{% set widget = _field.field.widget.__class__.__name__ %}
+{% set context = _field.field.widget.get_context(_field.html_name, _field.value(), attrs=attrs) %}
+{% if not 'class' in context['attrs'] and not widget == 'CheckboxInput' %}
+{% do context['attrs'].update({'class': ('span' ~ width)}) %}
+{% endif %}
+{{ _input(_field, context) }}
+{%- endmacro %}
+
+{% macro attributes(attrs) -%}
+{% for name, value in attrs.items() %} {{ name }}{% if value != True %}="{{ value }}"{% endif %}{% endfor %}
+{%- endmacro %}
+
+{% macro _input(_field, context) -%}
+<input type="{{ context.type }}" id="id_{{ context.name }}" name="{{ context.name }}" {{ attributes(context.attrs)|trim }}{% if 'value' in context and context.value|length > 0 %} value="{{ context.value }}"{% endif %}>
+{%- endmacro %}
+
+{% macro _textarea(_field, context) -%}
+{%- endmacro %}
+
+{% macro _select(_field, context) -%}
+{%- endmacro %}

+ 8 - 2
templates/cranefly/signin.html

@@ -1,5 +1,5 @@
 {% extends "cranefly/layout.html" %}
 {% extends "cranefly/layout.html" %}
-{% import "_forms.html" as form_theme with context %}
+{% import "cranefly/forms.html" as form_theme with context %}
 {% import "cranefly/macros.html" as macros with context %}
 {% import "cranefly/macros.html" as macros with context %}
 
 
 {% block title %}{{ macros.page_title(title=_('Sign In')) }}{% endblock %}
 {% block title %}{{ macros.page_title(title=_('Sign In')) }}{% endblock %}
@@ -36,7 +36,13 @@
 
 
       <form class="form-horizontal" action="{{ url('sign_in') }}" method="post">
       <form class="form-horizontal" action="{{ url('sign_in') }}" method="post">
         <div class="form-fields">
         <div class="form-fields">
-          {{ form_theme.form_widget(form, horizontal=true, width=6) }}
+          {{ form_theme.hiddens(form) }}
+          {# form_theme.form_widget(form, horizontal=true, width=6) #}
+          {{ form_theme.row(form.user_email, attrs={'class': 'span4', 'placeholder': _("Enter your e-mail")}) }}
+          {{ form_theme.row(form.user_password, attrs={'class': 'span4', 'placeholder': _("Enter your password")}) }}
+          {% if 'user_remember_me' in form.fields %}
+          {{ form_theme.row(form.user_remember_me) }}
+          {% endif %}
         </div>
         </div>
         <div class="form-actions">
         <div class="form-actions">
           <button type="submit" class="btn btn-primary">{% trans %}Sign In{% endtrans %}</button>
           <button type="submit" class="btn btn-primary">{% trans %}Sign In{% endtrans %}</button>