diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c47e741f3..454d20f37 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,5 +1,23 @@ Release history ===================================== +0.1.6 +------------------------------------- +2014-10-25 + +- Minor improvements in the theming API. From now on the + ``view_embed_form_entry_ajax_template`` template would be used + when integrating the form rendering from other products (for example, + a CMS page, which has a widget which references the form object. If + that property is left empty, the ``view_form_entry_ajax_template`` + is used. For a success page the ``embed_form_entry_submitted_ajax_template`` + template would be used. +- Functional improvements of the FeinCMS integration (the widget). If you + have used the FeinCMS widget of earlier versions, you likely want to update + to this one. From now on you can select a custom form title and the button + text, as well as provide custom success page title and the success message; + additionally, it has been made possible to hide the form- or success-page- + titles. + 0.1.5 ------------------------------------- 2014-10-23 diff --git a/examples/README.rst b/examples/README.rst index 17ac5901f..847507dae 100644 --- a/examples/README.rst +++ b/examples/README.rst @@ -63,3 +63,20 @@ Django admin interface: - URL: http://127.0.0.1:8001/admin/ - Admin username: test_admin - Admin password: test + +Various setups +============================================ +There are number of setups included (names are self-explanatory): + +- Bootstrap3 theme + Captcha (runserver-bootstrap3-theme-captcha) :8000 +- Bootstrap3 theme + Django 1.7 + Captcha (runserver-bootstrap3-theme-django17-captcha) :8000 +- Bootstrap3 theme + Django 1.7 (runserver-bootstrap3-theme-django17) :8000 +- Bootstrap3 theme + FeinCMS integration (runserver-bootstrap3-theme-feincms-integration) :8000 +- Bootstrap3 theme (runserver-bootstrap3-theme) :8000 + +- Foundation 5 theme + FeinCMS integration (runserver-foundation5-theme-feincms-integration) :8001 +- Foundation 5 theme :8001 + +- Override of the simple theme (runserver-override-simple-theme) :8003 + +- Simple theme (runserver-simple-theme) :8002 diff --git a/examples/requirements.txt b/examples/requirements.txt index ac12ce2a9..7a03b6150 100644 --- a/examples/requirements.txt +++ b/examples/requirements.txt @@ -1,5 +1,5 @@ -#Django>=1.5,<1.7 Django>=1.5,<1.8 +FeinCMS>=1.9,<1.10 Jinja2 MarkupSafe South diff --git a/examples/simple/page/migrations/0004_auto__add_field_fobiformwidget_form_template_name__add_field_fobiformw.py b/examples/simple/page/migrations/0004_auto__add_field_fobiformwidget_form_template_name__add_field_fobiformw.py new file mode 100644 index 000000000..55d808f4f --- /dev/null +++ b/examples/simple/page/migrations/0004_auto__add_field_fobiformwidget_form_template_name__add_field_fobiformw.py @@ -0,0 +1,191 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'FobiFormWidget.form_template_name' + db.add_column(u'page_page_fobiformwidget', 'form_template_name', + self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), + keep_default=False) + + # Adding field 'FobiFormWidget.hide_form_title' + db.add_column(u'page_page_fobiformwidget', 'hide_form_title', + self.gf('django.db.models.fields.BooleanField')(default=False), + keep_default=False) + + # Adding field 'FobiFormWidget.form_title' + db.add_column(u'page_page_fobiformwidget', 'form_title', + self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), + keep_default=False) + + # Adding field 'FobiFormWidget.form_submit_button_text' + db.add_column(u'page_page_fobiformwidget', 'form_submit_button_text', + self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), + keep_default=False) + + # Adding field 'FobiFormWidget.success_page_template_name' + db.add_column(u'page_page_fobiformwidget', 'success_page_template_name', + self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), + keep_default=False) + + # Adding field 'FobiFormWidget.hide_success_page_title' + db.add_column(u'page_page_fobiformwidget', 'hide_success_page_title', + self.gf('django.db.models.fields.BooleanField')(default=False), + keep_default=False) + + # Adding field 'FobiFormWidget.success_page_title' + db.add_column(u'page_page_fobiformwidget', 'success_page_title', + self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), + keep_default=False) + + # Adding field 'FobiFormWidget.success_page_text' + db.add_column(u'page_page_fobiformwidget', 'success_page_text', + self.gf('django.db.models.fields.TextField')(null=True, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'FobiFormWidget.form_template_name' + db.delete_column(u'page_page_fobiformwidget', 'form_template_name') + + # Deleting field 'FobiFormWidget.hide_form_title' + db.delete_column(u'page_page_fobiformwidget', 'hide_form_title') + + # Deleting field 'FobiFormWidget.form_title' + db.delete_column(u'page_page_fobiformwidget', 'form_title') + + # Deleting field 'FobiFormWidget.form_submit_button_text' + db.delete_column(u'page_page_fobiformwidget', 'form_submit_button_text') + + # Deleting field 'FobiFormWidget.success_page_template_name' + db.delete_column(u'page_page_fobiformwidget', 'success_page_template_name') + + # Deleting field 'FobiFormWidget.hide_success_page_title' + db.delete_column(u'page_page_fobiformwidget', 'hide_success_page_title') + + # Deleting field 'FobiFormWidget.success_page_title' + db.delete_column(u'page_page_fobiformwidget', 'success_page_title') + + # Deleting field 'FobiFormWidget.success_page_text' + db.delete_column(u'page_page_fobiformwidget', 'success_page_text') + + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'fobi.formentry': { + 'Meta': {'unique_together': "(('user', 'slug'), ('user', 'name'))", 'object_name': 'FormEntry'}, + 'action': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'form_wizard_entry': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['fobi.FormWizardEntry']", 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_cloneable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'position': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}), + 'slug': ('autoslug.fields.AutoSlugField', [], {'unique': 'True', 'max_length': '50', 'populate_from': "'name'", 'unique_with': '()'}), + 'success_page_message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'success_page_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"}) + }, + u'fobi.formwizardentry': { + 'Meta': {'unique_together': "(('user', 'slug'), ('user', 'name'))", 'object_name': 'FormWizardEntry'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_cloneable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'slug': ('autoslug.fields.AutoSlugField', [], {'unique': 'True', 'max_length': '50', 'populate_from': "'name'", 'unique_with': '()'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"}) + }, + u'page.fobiformwidget': { + 'Meta': {'ordering': "['ordering']", 'object_name': 'FobiFormWidget', 'db_table': "u'page_page_fobiformwidget'"}, + 'form_entry': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['fobi.FormEntry']"}), + 'form_submit_button_text': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'form_template_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'form_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'hide_form_title': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'hide_success_page_title': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'fobiformwidget_set'", 'to': u"orm['page.Page']"}), + 'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'success_page_template_name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'success_page_text': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'success_page_title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}) + }, + u'page.page': { + 'Meta': {'ordering': "['tree_id', 'lft']", 'object_name': 'Page'}, + '_cached_url': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'db_index': 'True', 'blank': 'True'}), + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'in_navigation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'language': ('django.db.models.fields.CharField', [], {'default': "'en'", 'max_length': '10'}), + u'level': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + u'lft': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'override_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': u"orm['page.Page']"}), + 'redirect_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), + u'rght': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '150'}), + 'template_key': ('django.db.models.fields.CharField', [], {'default': "'page_base'", 'max_length': '255'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'translation_of': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'translations'", 'null': 'True', 'to': u"orm['page.Page']"}), + u'tree_id': ('django.db.models.fields.PositiveIntegerField', [], {'db_index': 'True'}) + }, + u'page.rawcontent': { + 'Meta': {'ordering': "['ordering']", 'object_name': 'RawContent', 'db_table': "u'page_page_rawcontent'"}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'rawcontent_set'", 'to': u"orm['page.Page']"}), + 'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'text': ('django.db.models.fields.TextField', [], {'blank': 'True'}) + }, + u'page.richtextcontent': { + 'Meta': {'ordering': "['ordering']", 'object_name': 'RichTextContent', 'db_table': "u'page_page_richtextcontent'"}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ordering': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'richtextcontent_set'", 'to': u"orm['page.Page']"}), + 'region': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'text': ('feincms.contrib.richtext.RichTextField', [], {'blank': 'True'}) + } + } + + complete_apps = ['page'] \ No newline at end of file diff --git a/examples/simple/runserver-bootstrap3-theme-captcha.sh b/examples/simple/runserver-bootstrap3-theme-captcha.sh index 90daecf02..b46e0630b 100755 --- a/examples/simple/runserver-bootstrap3-theme-captcha.sh +++ b/examples/simple/runserver-bootstrap3-theme-captcha.sh @@ -1,2 +1,2 @@ #workon fobi -./manage.py runserver 0.0.0.0:8004 --settings=settings_bootstrap3_theme_captcha --traceback -v 3 +./manage.py runserver 0.0.0.0:8000 --settings=settings_bootstrap3_theme_captcha --traceback -v 3 diff --git a/examples/simple/runserver-bootstrap3-theme-django17-captcha.sh b/examples/simple/runserver-bootstrap3-theme-django17-captcha.sh index 48df27388..8f398f696 100755 --- a/examples/simple/runserver-bootstrap3-theme-django17-captcha.sh +++ b/examples/simple/runserver-bootstrap3-theme-django17-captcha.sh @@ -1,2 +1,2 @@ #workon fobi -./manage.py runserver 0.0.0.0:8006 --traceback -v 3 --settings=settings_bootstrap3_theme_django17_captcha --traceback -v 3 +./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django17_captcha --traceback -v 3 diff --git a/examples/simple/runserver-bootstrap3-theme-django17.sh b/examples/simple/runserver-bootstrap3-theme-django17.sh index 4fc0ad1df..fcf348caf 100755 --- a/examples/simple/runserver-bootstrap3-theme-django17.sh +++ b/examples/simple/runserver-bootstrap3-theme-django17.sh @@ -1,2 +1,2 @@ #workon fobi -./manage.py runserver 0.0.0.0:8006 --traceback -v 3 --settings=settings_bootstrap3_theme_django17 --traceback -v 3 +./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django17 --traceback -v 3 diff --git a/examples/simple/runserver-bootstrap3-theme-feincms-integration.sh b/examples/simple/runserver-bootstrap3-theme-feincms-integration.sh new file mode 100755 index 000000000..20a918867 --- /dev/null +++ b/examples/simple/runserver-bootstrap3-theme-feincms-integration.sh @@ -0,0 +1,2 @@ +#workon fobi +./manage.py runserver 0.0.0.0:8000 --settings=settings_bootstrap3_theme_feincms --traceback -v 3 diff --git a/examples/simple/runserver-feincms-integration.sh b/examples/simple/runserver-feincms-integration.sh deleted file mode 100755 index 72e757694..000000000 --- a/examples/simple/runserver-feincms-integration.sh +++ /dev/null @@ -1,2 +0,0 @@ -#workon fobi -./manage.py runserver 0.0.0.0:8005 --settings=settings_feincms --traceback -v 3 diff --git a/examples/simple/runserver-foundation5-theme-feincms-integration.sh b/examples/simple/runserver-foundation5-theme-feincms-integration.sh new file mode 100755 index 000000000..dacc452bd --- /dev/null +++ b/examples/simple/runserver-foundation5-theme-feincms-integration.sh @@ -0,0 +1,3 @@ +#workon fobi +#./manage.py collectstatic --noinput --settings=settings_foundation5_theme_feincms --traceback -v 3 +./manage.py runserver 0.0.0.0:8001 --settings=settings_foundation5_theme_feincms --traceback -v 3 diff --git a/examples/simple/settings.py b/examples/simple/settings.py index 8e520ffca..7882f5ba7 100644 --- a/examples/simple/settings.py +++ b/examples/simple/settings.py @@ -160,7 +160,7 @@ # Third party apps used in the project 'south', # Database migration app - #'tinymce', # TinyMCE + 'tinymce', # TinyMCE 'easy_thumbnails', # Thumbnailer 'registration', # Auth views and registration app #'localeurl', # Locale URL @@ -237,6 +237,20 @@ 'form_button_wrapper_html_class': 'controls', 'form_button_html_class': 'btn', 'form_primary_button_html_class': 'btn-primary pull-right', + 'feincms_integration': { + 'form_template_choices': [ + ( + 'fobi/bootstrap3_extras/view_embed_form_entry_ajax.html', + gettext("Custom bootstrap3 embed form view template") + ), + ], + 'success_page_template_choices': [ + ( + 'fobi/bootstrap3_extras/embed_form_entry_submitted_ajax.html', + gettext("Custom bootstrap3 embed form entry submitted template") + ), + ], + }, }, 'foundation5': { 'page_header_html_class': '', @@ -245,6 +259,20 @@ 'form_button_wrapper_html_class': 'controls', 'form_button_html_class': 'radius button', 'form_primary_button_html_class': 'btn-primary', + 'feincms_integration': { + 'form_template_choices': [ + ( + 'fobi/foundation5_extras/view_embed_form_entry_ajax.html', + gettext("Custom foundation5 embed form view template") + ), + ], + 'success_page_template_choices': [ + ( + 'fobi/foundation5_extras/embed_form_entry_submitted_ajax.html', + gettext("Custom foundation5 embed form entry submitted template") + ), + ], + }, }, 'simple': { 'page_header_html_class': '', @@ -253,6 +281,8 @@ 'form_button_wrapper_html_class': 'submit-row', 'form_button_html_class': 'btn', 'form_primary_button_html_class': 'btn-primary', + 'feincms_integration': { + }, } } diff --git a/examples/simple/settings_bootstrap3_theme_django17.py b/examples/simple/settings_bootstrap3_theme_django17.py index 815988a8d..1f12e58f6 100644 --- a/examples/simple/settings_bootstrap3_theme_django17.py +++ b/examples/simple/settings_bootstrap3_theme_django17.py @@ -3,6 +3,7 @@ INSTALLED_APPS = list(INSTALLED_APPS) try: - INSTALLED_APPS.remove('south') + INSTALLED_APPS.remove('south') if 'south' in INSTALLED_APPS else None + INSTALLED_APPS.remove('tinymce') if 'tinymce' in INSTALLED_APPS else None except Exception as e: pass diff --git a/examples/simple/settings_bootstrap3_theme_django17_captcha.py b/examples/simple/settings_bootstrap3_theme_django17_captcha.py index 1bd78d1b4..d0a1e3bf2 100755 --- a/examples/simple/settings_bootstrap3_theme_django17_captcha.py +++ b/examples/simple/settings_bootstrap3_theme_django17_captcha.py @@ -3,7 +3,8 @@ INSTALLED_APPS = list(INSTALLED_APPS) try: - INSTALLED_APPS.remove('south') + INSTALLED_APPS.remove('south') if 'south' in INSTALLED_APPS else None + INSTALLED_APPS.remove('tinymce') if 'tinymce' in INSTALLED_APPS else None INSTALLED_APPS.append('captcha') INSTALLED_APPS.append('fobi.contrib.plugins.form_elements.fields.captcha') except Exception as e: diff --git a/examples/simple/settings_feincms.py b/examples/simple/settings_bootstrap3_theme_feincms.py similarity index 100% rename from examples/simple/settings_feincms.py rename to examples/simple/settings_bootstrap3_theme_feincms.py diff --git a/examples/simple/settings_foundation5_theme_feincms.py b/examples/simple/settings_foundation5_theme_feincms.py new file mode 100644 index 000000000..98b26f173 --- /dev/null +++ b/examples/simple/settings_foundation5_theme_feincms.py @@ -0,0 +1,16 @@ +from settings import * + +INSTALLED_APPS = list(INSTALLED_APPS) +INSTALLED_APPS += [ + 'feincms', # FeinCMS + + 'fobi.contrib.apps.feincms_integration', # Fobi FeinCMS app + + 'page', # Example +] + +FEINCMS_RICHTEXT_INIT_CONTEXT = { + 'TINYMCE_JS_URL': STATIC_URL + 'tiny_mce/tiny_mce.js', +} + +FOBI_DEFAULT_THEME = 'foundation5' diff --git a/examples/simple/templates/fobi/bootstrap3_extras/embed_form_entry_submitted_ajax.html b/examples/simple/templates/fobi/bootstrap3_extras/embed_form_entry_submitted_ajax.html new file mode 100644 index 000000000..846678efb --- /dev/null +++ b/examples/simple/templates/fobi/bootstrap3_extras/embed_form_entry_submitted_ajax.html @@ -0,0 +1,11 @@ +{% extends fobi_theme.embed_form_entry_submitted_ajax_template %} + +{% load i18n %} + +{% block form_page_header_wrapper %} +
"
+ help_text = _("Enter single values/pairs per line. Example:
"
" 1
"
" 2
"
" alpha, Alpha
"
" beta, Beta
"
" omega"
"
"
- "It finally transforms into the following Python code:
"
- ' (
'
- ' (1, 1),
'
- ' (2, 2),
'
- ' ("alpha", "Alpha"),
'
- ' ("beta", "Beta"),
'
- ' ("omega", "omega"))
'
- ' )'
+ "It finally transforms into the following HTML code:
"
+ ' <select id="id_NAME_OF_THE_ELEMENT" name="NAME_OF_THE_ELEMENT">
'
+ ' <option value="1">1</option>
'
+ ' <option value="2">2</option>
'
+ ' <option value="alpha">Alpha</option>
'
+ ' <option value="beta">Beta</option>
'
+ ' <option value="omega">omega</option>
'
+ ' </select>'
"
"),
widget = forms.widgets.Textarea(attrs={'class': theme.form_element_html_class})
)
diff --git a/src/fobi/contrib/themes/bootstrap3/fobi_themes.py b/src/fobi/contrib/themes/bootstrap3/fobi_themes.py
index 1ffe7f983..debca9451 100644
--- a/src/fobi/contrib/themes/bootstrap3/fobi_themes.py
+++ b/src/fobi/contrib/themes/bootstrap3/fobi_themes.py
@@ -81,9 +81,11 @@ class Bootstrap3Theme(BaseTheme):
form_entry_submitted_template = 'bootstrap3/form_entry_submitted.html'
form_entry_submitted_ajax_template = 'bootstrap3/form_entry_submitted_ajax.html'
+ embed_form_entry_submitted_ajax_template = 'bootstrap3/embed_form_entry_submitted_ajax.html'
view_form_entry_template = 'bootstrap3/view_form_entry.html'
view_form_entry_ajax_template = 'bootstrap3/view_form_entry_ajax.html'
+ view_embed_form_entry_ajax_template = 'bootstrap3/view_embed_form_entry_ajax.html'
theme_registry.register(Bootstrap3Theme)
diff --git a/src/fobi/contrib/themes/bootstrap3/templates/bootstrap3/embed_form_entry_submitted_ajax.html b/src/fobi/contrib/themes/bootstrap3/templates/bootstrap3/embed_form_entry_submitted_ajax.html
new file mode 100644
index 000000000..c96bfec80
--- /dev/null
+++ b/src/fobi/contrib/themes/bootstrap3/templates/bootstrap3/embed_form_entry_submitted_ajax.html
@@ -0,0 +1 @@
+{% extends "fobi/generic/embed_form_entry_submitted_ajax.html" %}
\ No newline at end of file
diff --git a/src/fobi/contrib/themes/bootstrap3/templates/bootstrap3/view_embed_form_entry_ajax.html b/src/fobi/contrib/themes/bootstrap3/templates/bootstrap3/view_embed_form_entry_ajax.html
new file mode 100644
index 000000000..1deaf8450
--- /dev/null
+++ b/src/fobi/contrib/themes/bootstrap3/templates/bootstrap3/view_embed_form_entry_ajax.html
@@ -0,0 +1 @@
+{% extends "fobi/generic/view_embed_form_entry_ajax.html" %}
\ No newline at end of file
diff --git a/src/fobi/templates/fobi/generic/embed_form_entry_submitted_ajax.html b/src/fobi/templates/fobi/generic/embed_form_entry_submitted_ajax.html
new file mode 100644
index 000000000..a80a93257
--- /dev/null
+++ b/src/fobi/templates/fobi/generic/embed_form_entry_submitted_ajax.html
@@ -0,0 +1,9 @@
+{% extends fobi_theme.form_entry_submitted_ajax_template %}
+
+{% load i18n %}
+
+{% block form_page_header_wrapper %}
+ {% if fobi_hide_success_page_title %}{% else %}
+ {{ block.super }}
+ {% endif %}
+{% endblock %}
diff --git a/src/fobi/templates/fobi/generic/form_entry_submitted_ajax.html b/src/fobi/templates/fobi/generic/form_entry_submitted_ajax.html
index c81d1b5c2..78c7ed7a1 100644
--- a/src/fobi/templates/fobi/generic/form_entry_submitted_ajax.html
+++ b/src/fobi/templates/fobi/generic/form_entry_submitted_ajax.html
@@ -1,12 +1,18 @@
{% load i18n %}
+ {% block form_page_header_wrapper %}
- {% if form_entry.success_page_title %}{{ form_entry.success_page_title }}{% else %}{% trans "Thank you!" %}{% endif %}
+ {% if fobi_success_page_title %}{{ fobi_success_page_title }}{% else %}{% if form_entry.success_page_title %}{{ form_entry.success_page_title }}{% else %}{% trans "Thank you!" %}{% endif %}{% endif %}
+ {% endblock form_page_header_wrapper %}
+ {% if fobi_success_page_text %}
+ {{ fobi_success_page_text }}
+ {% else %}
{% if form_entry.success_page_message %}
- {{ form_entry.success_page_message|safe }}
+ {{ form_entry.success_page_message|safe }}
{% else %}
- {% blocktrans %}Form submitted successfully.{% endblocktrans %}
+ {% blocktrans %}Form submitted successfully.{% endblocktrans %}
{% endif %}
+ {% endif %}
diff --git a/src/fobi/templates/fobi/generic/snippets/form_ajax.html b/src/fobi/templates/fobi/generic/snippets/form_ajax.html
index eec7ef3ce..b69b2b7d2 100644
--- a/src/fobi/templates/fobi/generic/snippets/form_ajax.html
+++ b/src/fobi/templates/fobi/generic/snippets/form_ajax.html
@@ -1,6 +1,8 @@
+ {% block form_page_header_wrapper %}
- {% block form_page_title %}{% endblock %}
+ {% block form_page_title_wrapper %}{% block form_page_title %}{% endblock %}
{% endblock form_page_title_wrapper %}
+ {% endblock form_page_header_wrapper %}