diff options
author | Adolfo Fitoria <adolfo.fitoria@gmail.com> | 2012-08-14 23:05:10 -0600 |
---|---|---|
committer | Adolfo Fitoria <adolfo.fitoria@gmail.com> | 2012-08-14 23:05:10 -0600 |
commit | 267587ef672703d90cfb8cc22a147c1e572de483 (patch) | |
tree | e7dc0cc151c4669bb3a4e6294c794d58ec375d97 | |
parent | 1cfdfa2dc4c882232926d385eeefd86c1a1ff9dc (diff) | |
download | askbot-267587ef672703d90cfb8cc22a147c1e572de483.tar.gz askbot-267587ef672703d90cfb8cc22a147c1e572de483.tar.bz2 askbot-267587ef672703d90cfb8cc22a147c1e572de483.zip |
Fixed some styles
Added text field into the widget
created edit view for the widget
-rw-r--r-- | askbot/forms.py | 8 | ||||
-rw-r--r-- | askbot/migrations/0135_auto__add_askwidget.py | 1 | ||||
-rw-r--r-- | askbot/models/widgets.py | 6 | ||||
-rwxr-xr-x | askbot/skins/default/media/style/askbot-modal.css | 3 | ||||
-rw-r--r-- | askbot/skins/default/templates/ask_by_widget.html | 32 | ||||
-rw-r--r-- | askbot/skins/default/templates/ask_widget_form.html (renamed from askbot/skins/default/templates/create_ask_widget.html) | 6 | ||||
-rwxr-xr-x | askbot/skins/default/templates/widgets/askbot_widget.js | 2 | ||||
-rw-r--r-- | askbot/tests/form_tests.py | 7 | ||||
-rw-r--r-- | askbot/tests/widget_tests.py | 15 | ||||
-rw-r--r-- | askbot/urls.py | 5 | ||||
-rw-r--r-- | askbot/views/widgets.py | 31 |
11 files changed, 95 insertions, 21 deletions
diff --git a/askbot/forms.py b/askbot/forms.py index 4a36b8ac..5662661a 100644 --- a/askbot/forms.py +++ b/askbot/forms.py @@ -892,6 +892,7 @@ class AskWidgetForm(forms.Form, FormWithHideableFields): '''Simple form with just the title to ask a question''' title = TitleField() + text = EditorField(required=False) ask_anonymously = forms.BooleanField( label=_('ask anonymously'), help_text=_( @@ -901,12 +902,15 @@ class AskWidgetForm(forms.Form, FormWithHideableFields): required=False, ) - def __init__(self, *args, **kwargs): + def __init__(self, include_text=True, *args, **kwargs): super(AskWidgetForm, self).__init__(*args, **kwargs) #hide ask_anonymously field - if askbot_settings.ALLOW_ASK_ANONYMOUSLY is False: + if not askbot_settings.ALLOW_ASK_ANONYMOUSLY: self.hide_field('ask_anonymously') + if not include_text: + self.hide_field('text') + class AskByEmailForm(forms.Form): """:class:`~askbot.forms.AskByEmailForm` validates question data, where question was posted diff --git a/askbot/migrations/0135_auto__add_askwidget.py b/askbot/migrations/0135_auto__add_askwidget.py index ce95d5e6..11b287e8 100644 --- a/askbot/migrations/0135_auto__add_askwidget.py +++ b/askbot/migrations/0135_auto__add_askwidget.py @@ -14,6 +14,7 @@ class Migration(SchemaMigration): ('title', self.gf('django.db.models.fields.CharField')(max_length=100)), ('group', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='groups', null=True, to=orm['askbot.Tag'])), ('default_group', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['askbot.Tag'], null=True, blank=True)), + ('include_text_field', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)), ('inner_style', self.gf('django.db.models.fields.TextField')(default='')), ('outer_style', self.gf('django.db.models.fields.TextField')(default='')), )) diff --git a/askbot/models/widgets.py b/askbot/models/widgets.py index ca21f7a4..ecd9818d 100644 --- a/askbot/models/widgets.py +++ b/askbot/models/widgets.py @@ -16,16 +16,14 @@ class AskWidget(models.Model): related_name='groups') default_group = models.ForeignKey(Tag, null=True, blank=True) + include_text_field = models.BooleanField(default=False, blank=True) + inner_style = models.TextField(default=DEFAULT_INNER_STYLE, blank=True) outer_style= models.TextField(default=DEFAULT_OUTER_STYLE, blank=True) class Meta: app_label = 'askbot' - - def embed_code(self): - pass - def __unicode__(self): return "Widget: %s" % self.title diff --git a/askbot/skins/default/media/style/askbot-modal.css b/askbot/skins/default/media/style/askbot-modal.css index 6f16dc5d..cec8bc6a 100755 --- a/askbot/skins/default/media/style/askbot-modal.css +++ b/askbot/skins/default/media/style/askbot-modal.css @@ -11,7 +11,7 @@ #AskbotAskWidget div{ width:600px; - height:200px; + height:400px; margin: 100px auto; background-color: #fff; border:1px solid #000; @@ -21,4 +21,5 @@ #AskbotAskWidget iframe{ width:600px; + height:400px; } diff --git a/askbot/skins/default/templates/ask_by_widget.html b/askbot/skins/default/templates/ask_by_widget.html index f700f83a..f5c2a0a2 100644 --- a/askbot/skins/default/templates/ask_by_widget.html +++ b/askbot/skins/default/templates/ask_by_widget.html @@ -1,16 +1,40 @@ {% extends "widget_base.html" %} +{% import "macros.html" as macros %} {% block forestyle %} + <style type="text/css" media="screen"> + #editor { + display: block; + min-height: 200px; + width: 100%; + margin: 0; + border: #CCE6EC 2px solid; + } + + #id_title{ + width: 100%; + font-size: 130%; + border: #CCE6EC 3px solid; + } + + #submit{ + float: right; + font-size: 130%; + } + </style> {%endblock%} {%block body%} -Enter your question <form action="." method="POST" accept-charset="utf-8"> {% csrf_token %} - {{form.title}} + <p>{{form.title}}</p> + {{form.text}} {% if form.ask_anonymously %} - {{form.ask_anonymously}} + <p>{{form.ask_anonymously.label_tag()}}: {{form.ask_anonymously}}</p> {%endif%} - <input type="submit" value="Ask your question" /> + <input type="submit" value="Ask your question" id="submit" /> </form> {{form.errors}} {%endblock%} +{% block endjs %} +{% endblock %} + diff --git a/askbot/skins/default/templates/create_ask_widget.html b/askbot/skins/default/templates/ask_widget_form.html index 3c831229..8b4c52fe 100644 --- a/askbot/skins/default/templates/create_ask_widget.html +++ b/askbot/skins/default/templates/ask_widget_form.html @@ -4,6 +4,10 @@ {% block content %} <h1> Create a askbot ask widget.</h1> +{%if form.non_field_errors()%} + {{form.non_field_errors()}} +{%endif%} + <form action="." method="POST"> {%for field in form%} <div class='field'> @@ -11,7 +15,7 @@ {{field.label_tag()}}: {{field}} </div> {%endfor%} - <p><input type='submit' value='Create Widget' /></p> + <p><input type='submit' value='Save Widget' /></p> </form> {% endblock %} diff --git a/askbot/skins/default/templates/widgets/askbot_widget.js b/askbot/skins/default/templates/widgets/askbot_widget.js index f7b0c356..646d3dd5 100755 --- a/askbot/skins/default/templates/widgets/askbot_widget.js +++ b/askbot/skins/default/templates/widgets/askbot_widget.js @@ -8,7 +8,7 @@ var AskbotAskWidget = { var html = AskbotAskWidget.createButton(); var link = document.createElement('link'); link.setAttribute("rel", "stylesheet"); - link.setAttribute("href", 'http://{{host}}/static/default/media/style/askbot-modal.css'); + link.setAttribute("href", 'http://{{host}}{{"/style/askbot-modal.css"|media}}'); //creating the div var motherDiv = document.createElement('div'); diff --git a/askbot/tests/form_tests.py b/askbot/tests/form_tests.py index be88cf39..90f4f4f2 100644 --- a/askbot/tests/form_tests.py +++ b/askbot/tests/form_tests.py @@ -374,11 +374,12 @@ class AskWidgetFormTests(AskbotTestCase): self.bad_data = {'title': ''} def test_valid_input(self): - form_object = self.form(self.good_data) + form_object = self.form(include_text=False, data=self.good_data) + print form_object.errors self.assertTrue(form_object.is_valid()) - form_object = self.form(self.good_data_anon) + form_object = self.form(include_text=False, data=self.good_data_anon) self.assertTrue(form_object.is_valid()) def test_invalid_input(self): - form_object = self.form(self.bad_data) + form_object = self.form(False, data=self.bad_data) self.assertFalse(form_object.is_valid()) diff --git a/askbot/tests/widget_tests.py b/askbot/tests/widget_tests.py index 7c602804..673b17f4 100644 --- a/askbot/tests/widget_tests.py +++ b/askbot/tests/widget_tests.py @@ -77,6 +77,7 @@ class WidgetCreatorViewsTests(AskbotTestCase): self.user.set_password('testpass') self.user.set_admin_status() self.user.save() + self.widget = models.AskWidget.objects.create(title='foo widget') def test_list_ask_widget_view(self): self.client.login(username='user1', password='testpass') @@ -95,3 +96,17 @@ class WidgetCreatorViewsTests(AskbotTestCase): post_data = {'title': 'Test widget'} response = self.client.post(reverse('create_ask_widget'), post_data) self.assertEquals(response.status_code, 302) + + def test_edit_ask_widget_get(self): + self.client.login(username='user1', password='testpass') + response = self.client.get(reverse('edit_ask_widget', + args=(self.widget.id, ))) + self.assertEquals(response.status_code, 200) + self.assertTrue('form' in response.context) + + def test_edit_ask_widget_post(self): + self.client.login(username='user1', password='testpass') + post_data = {'title': 'Test lalalla'} + response = self.client.post(reverse('edit_ask_widget', + args=(self.widget.id, )), post_data) + self.assertEquals(response.status_code, 302) diff --git a/askbot/urls.py b/askbot/urls.py index afcada05..b91c2ed8 100644 --- a/askbot/urls.py +++ b/askbot/urls.py @@ -402,6 +402,11 @@ urlpatterns = patterns('', name = 'create_ask_widget' ), url( + r'^widgets/ask/edit/(?P<widget_id>\d+)/$', + views.widgets.edit_ask_widget, + name = 'edit_ask_widget' + ), + url( r'^widgets/ask/$', views.widgets.list_ask_widget, name = 'list_ask_widgets' diff --git a/askbot/views/widgets.py b/askbot/views/widgets.py index c40a9001..46a78037 100644 --- a/askbot/views/widgets.py +++ b/askbot/views/widgets.py @@ -20,7 +20,7 @@ from askbot import forms def ask_widget(request, widget_id): def post_question(data, request): - thread = models.Thread.objects.create_new(**data_dict) + thread = models.Thread.objects.create_new(**data) question = thread._question_post() request.session['widget_question_url'] = question.get_absolute_url() return question @@ -28,15 +28,20 @@ def ask_widget(request, widget_id): widget = get_object_or_404(models.AskWidget, id=widget_id) if request.method == "POST": - form = forms.AskWidgetForm(request.POST) + form = forms.AskWidgetForm(include_text=widget.include_text_field, + data=request.POST) if form.is_valid(): ask_anonymously = form.cleaned_data['ask_anonymously'] title = form.cleaned_data['title'] + if widget.include_text_field: + text = form.cleaned_data['text'] + else: + text = ' ' data_dict = { 'title': title, 'added_at': datetime.now(), 'wiki': False, - 'text': ' ', + 'text': text, 'tagnames': '', 'is_anonymous': ask_anonymously } @@ -63,7 +68,7 @@ def ask_widget(request, widget_id): next_url = '%s?next=%s' % (reverse('widget_signin'), reverse('ask_by_widget')) return redirect(next_url) - form = forms.AskWidgetForm() + form = forms.AskWidgetForm(include_text=widget.include_text_field) data = {'form': form, 'widget': widget} return render_into_skin('ask_by_widget.html', data, request) @@ -100,7 +105,23 @@ def create_ask_widget(request): form = models.widgets.CreateAskWidgetForm() data = {'form': form} - return render_into_skin('create_ask_widget.html', data, request) + return render_into_skin('ask_widget_form.html', data, request) + +@decorators.admins_only +def edit_ask_widget(request, widget_id): + widget = get_object_or_404(models.AskWidget, pk=widget_id) + if request.method=='POST': + form = models.widgets.CreateAskWidgetForm(request.POST, + instance=widget) + if form.is_valid(): + form.save() + return redirect('list_ask_widgets') + else: + form = models.widgets.CreateAskWidgetForm(instance=widget) + + data = {'form': form} + return render_into_skin('ask_widget_form.html', data, request) + #TODO: Add cache def render_ask_widget_js(request, widget_id): |