mirror of
https://github.com/Hopiu/django-fobi.git
synced 2026-05-23 19:55:49 +00:00
prepare 0.1.6; minor theming API improvements; major FeinCMS integration app (widget) improvements; fixes in help_text of radio select
This commit is contained in:
parent
8919dc2cfd
commit
7d20b6e785
40 changed files with 557 additions and 47 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#Django>=1.5,<1.7
|
||||
Django>=1.5,<1.8
|
||||
FeinCMS>=1.9,<1.10
|
||||
Jinja2
|
||||
MarkupSafe
|
||||
South
|
||||
|
|
|
|||
|
|
@ -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']
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
2
examples/simple/runserver-bootstrap3-theme-feincms-integration.sh
Executable file
2
examples/simple/runserver-bootstrap3-theme-feincms-integration.sh
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
#workon fobi
|
||||
./manage.py runserver 0.0.0.0:8000 --settings=settings_bootstrap3_theme_feincms --traceback -v 3
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
#workon fobi
|
||||
./manage.py runserver 0.0.0.0:8005 --settings=settings_feincms --traceback -v 3
|
||||
3
examples/simple/runserver-foundation5-theme-feincms-integration.sh
Executable file
3
examples/simple/runserver-foundation5-theme-feincms-integration.sh
Executable file
|
|
@ -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
|
||||
|
|
@ -160,7 +160,7 @@ INSTALLED_APPS = (
|
|||
|
||||
# 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 @@ FOBI_CUSTOM_THEME_DATA = {
|
|||
'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 @@ FOBI_CUSTOM_THEME_DATA = {
|
|||
'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 @@ FOBI_CUSTOM_THEME_DATA = {
|
|||
'form_button_wrapper_html_class': 'submit-row',
|
||||
'form_button_html_class': 'btn',
|
||||
'form_primary_button_html_class': 'btn-primary',
|
||||
'feincms_integration': {
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from settings import *
|
|||
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
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@ from settings import *
|
|||
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:
|
||||
|
|
|
|||
16
examples/simple/settings_foundation5_theme_feincms.py
Normal file
16
examples/simple/settings_foundation5_theme_feincms.py
Normal file
|
|
@ -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'
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{% extends fobi_theme.embed_form_entry_submitted_ajax_template %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block form_page_header_wrapper %}
|
||||
<div class="alert alert-info" role="alert">
|
||||
{% blocktrans with fobi_theme.uid as fobi_theme_uid %}This is just an example of how can we use a custom
|
||||
template for rendering the form for the theme {{ fobi_theme_uid }} given.{% endblocktrans %}
|
||||
</div>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{% extends fobi_theme.view_embed_form_entry_ajax_template %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block form_page_header_wrapper %}
|
||||
<div class="alert alert-info" role="alert">
|
||||
{% blocktrans with fobi_theme.uid as fobi_theme_uid %}This is just an example of how can we use a custom
|
||||
template for rendering the form for the theme {{ fobi_theme_uid }} given.{% endblocktrans %}
|
||||
</div>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{% extends fobi_theme.embed_form_entry_submitted_ajax_template %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block form_page_header_wrapper %}
|
||||
<div class="alert alert-info" role="alert">
|
||||
{% blocktrans with fobi_theme.uid as fobi_theme_uid %}This is just an example of how can we use a custom
|
||||
template for rendering the form for the theme {{ fobi_theme_uid }} given.{% endblocktrans %}
|
||||
</div>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{% extends fobi_theme.view_embed_form_entry_ajax_template %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block form_page_header_wrapper %}
|
||||
<div class="alert alert-info" role="alert">
|
||||
{% blocktrans with fobi_theme.uid as fobi_theme_uid %}This is just an example of how can we use a custom
|
||||
template for rendering the form for the theme {{ fobi_theme_uid }} given.{% endblocktrans %}
|
||||
</div>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
|
|
@ -63,7 +63,7 @@ if 'feincms' in settings.INSTALLED_APPS:
|
|||
from page.models import Page
|
||||
Page
|
||||
urlpatterns += patterns('',
|
||||
url(r'', include('feincms.urls')),
|
||||
url(r'^pages/', include('feincms.urls')),
|
||||
)
|
||||
|
||||
# Conditionally including Captcha URls in case if
|
||||
|
|
|
|||
9
install_feincms.sh
Executable file
9
install_feincms.sh
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#pip install -r examples/requirements.txt --allow-all-external --allow-unverified django-admin-tools
|
||||
pip install -r examples/requirements.txt
|
||||
python setup.py install
|
||||
mkdir -p examples/logs examples/db examples/media examples/media/static examples/media/fobi_plugins/content_image
|
||||
mkdir -p examples/media/fobi_plugins/file
|
||||
python examples/simple/manage.py collectstatic --noinput --settings=settings_foundation5_theme_feincms --traceback -v 3
|
||||
python examples/simple/manage.py syncdb --noinput --settings=settings_foundation5_theme_feincms --traceback -v 3
|
||||
python examples/simple/manage.py migrate --noinput --settings=settings_foundation5_theme_feincms --traceback -v 3
|
||||
python examples/simple/manage.py fobi_create_test_data --settings=settings_foundation5_theme_feincms --traceback -v 3
|
||||
3
reinstall_feincms.sh
Executable file
3
reinstall_feincms.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
reset
|
||||
./uninstall.sh
|
||||
./install_feincms.sh
|
||||
2
setup.py
2
setup.py
|
|
@ -56,7 +56,7 @@ for static_dir in static_dirs:
|
|||
for locale_dir in locale_dirs:
|
||||
locale_files += [os.path.join(locale_dir, f) for f in os.listdir(locale_dir)]
|
||||
|
||||
version = '0.1.5'
|
||||
version = '0.1.6'
|
||||
|
||||
install_requires = [
|
||||
'Pillow>=2.0.0',
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
__title__ = 'django-fobi'
|
||||
__version__ = '0.1.5'
|
||||
__build__ = 0x000006
|
||||
__version__ = '0.1.6'
|
||||
__build__ = 0x000007
|
||||
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
|
||||
__copyright__ = 'Copyright (c) 2014 Artur Barseghyan'
|
||||
__license__ = 'GPL 2.0/LGPL 2.1'
|
||||
|
|
|
|||
|
|
@ -76,6 +76,15 @@ _ = lambda s: s
|
|||
class BaseTheme(object):
|
||||
"""
|
||||
Base theme.
|
||||
|
||||
:property str view_embed_form_entry_ajax_template: A template to 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.
|
||||
:property str embed_form_entry_submitted_ajax_template: A template to be
|
||||
used when integrating into other products (CMS page). Serves the
|
||||
thank you.
|
||||
"""
|
||||
uid = None
|
||||
name = None
|
||||
|
|
@ -144,8 +153,10 @@ class BaseTheme(object):
|
|||
edit_form_handler_entry_ajax_template = 'fobi/generic/edit_form_handler_entry_ajax.html'
|
||||
form_entry_submitted_template = 'fobi/generic/form_entry_submitted.html'
|
||||
form_entry_submitted_ajax_template = 'fobi/generic/form_entry_submitted_ajax.html'
|
||||
embed_form_entry_submitted_ajax_template = None
|
||||
view_form_entry_template = 'fobi/generic/view_form_entry.html'
|
||||
view_form_entry_ajax_template = 'fobi/generic/view_form_entry_ajax.html'
|
||||
view_embed_form_entry_ajax_template = None
|
||||
|
||||
# *************************************************************************
|
||||
# ******************** Extras that make things easy ***********************
|
||||
|
|
@ -214,6 +225,15 @@ class BaseTheme(object):
|
|||
if not self.form_edit_ajax:
|
||||
self.form_edit_ajax = self.form_ajax
|
||||
|
||||
# If no specific ``view_embed_form_entry_ajax_template`` specified, fall
|
||||
# back to the ``view_form_entry_ajax_template``.
|
||||
if not self.view_embed_form_entry_ajax_template:
|
||||
self.view_embed_form_entry_ajax_template = self.view_form_entry_ajax_template
|
||||
|
||||
# Some sort of a embed thank you.
|
||||
if not self.embed_form_entry_submitted_ajax_template:
|
||||
self.embed_form_entry_submitted_ajax_template = self.form_entry_submitted_ajax_template
|
||||
|
||||
# Set theme specific data from settings for to be
|
||||
# refered like `fobi_theme.custom_data`.
|
||||
self.custom_data = self.get_custom_data()
|
||||
|
|
|
|||
|
|
@ -67,3 +67,8 @@ your_project/admin.py
|
|||
from page.models import Page
|
||||
|
||||
admin.site.register(Page, PageAdmin)
|
||||
|
||||
Usage
|
||||
===============================================
|
||||
Note, that rendering of the FeinCMS widget happens with help
|
||||
theme template ``view_form_entry_ajax_template``.
|
||||
|
|
|
|||
|
|
@ -2,6 +2,13 @@ __title__ = 'fobi.contrib.apps.feincms_integration.defaults'
|
|||
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
|
||||
__copyright__ = 'Copyright (c) 2014 Artur Barseghyan'
|
||||
__license__ = 'GPL 2.0/LGPL 2.1'
|
||||
__all__ = ('WIDGET_FORM_SENT_GET_PARAM',)
|
||||
__all__ = (
|
||||
'WIDGET_FORM_SENT_GET_PARAM', 'FORM_TEMPLATE_CHOICES',
|
||||
'SUCCESS_PAGE_TEMPLATE_CHOICES',
|
||||
)
|
||||
|
||||
WIDGET_FORM_SENT_GET_PARAM = 'sent'
|
||||
|
||||
FORM_TEMPLATE_CHOICES = []
|
||||
|
||||
SUCCESS_PAGE_TEMPLATE_CHOICES = []
|
||||
|
|
|
|||
56
src/fobi/contrib/apps/feincms_integration/helpers.py
Normal file
56
src/fobi/contrib/apps/feincms_integration/helpers.py
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
__title__ = 'fobi.contrib.apps.feincms_integration.helpers'
|
||||
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
|
||||
__copyright__ = 'Copyright (c) 2014 Artur Barseghyan'
|
||||
__license__ = 'GPL 2.0/LGPL 2.1'
|
||||
__all__ = ('get_form_template_choices', 'get_success_page_template_choices',)
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from fobi.base import get_theme
|
||||
from fobi.contrib.apps.feincms_integration.settings import (
|
||||
FORM_TEMPLATE_CHOICES, SUCCESS_PAGE_TEMPLATE_CHOICES
|
||||
)
|
||||
|
||||
def get_template_choices(choices, theme_specific_choices_key):
|
||||
"""
|
||||
Gets the template choices. It's possible to provide theme templates
|
||||
per theme or just per project.
|
||||
|
||||
:param tuple or list choices:
|
||||
:param str theme_specific_choices_key:
|
||||
:return list:
|
||||
"""
|
||||
template_choices = []
|
||||
if choices:
|
||||
#template_choices += [(None, _("--- General templates ---"))]
|
||||
#template_choices += (_("General templates"), list(FORM_TEMPLATE_CHOICES))
|
||||
template_choices += list(choices)
|
||||
|
||||
theme = get_theme(as_instance=True)
|
||||
theme_template_choices = []
|
||||
try:
|
||||
theme_template_choices = list(
|
||||
theme.custom_data['feincms_integration'][theme_specific_choices_key]
|
||||
)
|
||||
#template_choices += [(None, _("--- Theme templates ---"))]
|
||||
#template_choices += (_("Theme templates"), theme_template_choices)
|
||||
template_choices += theme_template_choices
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
return template_choices
|
||||
|
||||
def get_form_template_choices():
|
||||
"""
|
||||
Gets the form template choices. It's possible to provide theme templates
|
||||
per theme or just per project.
|
||||
|
||||
:return list:
|
||||
"""
|
||||
return get_template_choices(FORM_TEMPLATE_CHOICES, 'form_template_choices')
|
||||
|
||||
def get_success_page_template_choices():
|
||||
"""
|
||||
:return list:
|
||||
"""
|
||||
return get_template_choices(SUCCESS_PAGE_TEMPLATE_CHOICES, 'success_page_template_choices')
|
||||
|
|
@ -1,13 +1,14 @@
|
|||
"""
|
||||
- `WIDGET_FORM_SENT` (str): Name of the GET param indicating that form has
|
||||
been successfully sent.
|
||||
- `WIDGET_FORM_SENT_GET_PARAM` (str): Name of the GET param indicating that
|
||||
form has been successfully sent.
|
||||
"""
|
||||
__title__ = 'fobi.contrib.apps.feincms_integration.settings'
|
||||
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
|
||||
__copyright__ = 'Copyright (c) 2014 Artur Barseghyan'
|
||||
__license__ = 'GPL 2.0/LGPL 2.1'
|
||||
__all__ = (
|
||||
'WIDGET_FORM_SENT_GET_PARAM',
|
||||
'WIDGET_FORM_SENT_GET_PARAM', 'FORM_TEMPLATE_CHOICES',
|
||||
'SUCCESS_PAGE_TEMPLATE_CHOICES',
|
||||
)
|
||||
|
||||
from fobi.contrib.apps.feincms_integration.conf import get_setting
|
||||
|
|
@ -19,3 +20,5 @@ from fobi.contrib.apps.feincms_integration.conf import get_setting
|
|||
# **************************************************************
|
||||
|
||||
WIDGET_FORM_SENT_GET_PARAM = get_setting('WIDGET_FORM_SENT_GET_PARAM')
|
||||
FORM_TEMPLATE_CHOICES = get_setting('FORM_TEMPLATE_CHOICES')
|
||||
SUCCESS_PAGE_TEMPLATE_CHOICES = get_setting('SUCCESS_PAGE_TEMPLATE_CHOICES')
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ from django.template.loader import render_to_string
|
|||
from django.template import RequestContext
|
||||
from django.contrib import messages
|
||||
from django.shortcuts import redirect
|
||||
from django.core.urlresolvers import reverse
|
||||
#from django.core.urlresolvers import reverse
|
||||
from django.conf import settings
|
||||
|
||||
from fobi.dynamic import assemble_form_class
|
||||
|
|
@ -26,13 +26,61 @@ from fobi.constants import (
|
|||
from fobi.contrib.apps.feincms_integration.settings import (
|
||||
WIDGET_FORM_SENT_GET_PARAM
|
||||
)
|
||||
from fobi.contrib.apps.feincms_integration.helpers import (
|
||||
get_form_template_choices, get_success_page_template_choices
|
||||
)
|
||||
|
||||
class FobiFormWidget(models.Model):
|
||||
"""
|
||||
Widget for to FeinCMS.
|
||||
|
||||
:property fobi.models.FormEntry form_entry: Form entry to be rendered.
|
||||
:property str template: If given used for rendering the form.
|
||||
"""
|
||||
form_entry = models.ForeignKey('fobi.FormEntry', verbose_name=_("Form"))
|
||||
|
||||
form_template_name = models.CharField(
|
||||
_("Form template name"), max_length=255, null=True, blank=True,
|
||||
choices=get_form_template_choices(),
|
||||
help_text=_("Template to render the form with.")
|
||||
)
|
||||
|
||||
hide_form_title = models.BooleanField(
|
||||
_("Hide form title"), default=False,
|
||||
help_text=_("If checked, no form title is shown.")
|
||||
)
|
||||
|
||||
form_title = models.CharField(
|
||||
_("Form title"), max_length=255, null=True, blank=True,
|
||||
help_text=_("Overrides the default form title.")
|
||||
)
|
||||
|
||||
form_submit_button_text = models.CharField(
|
||||
_("Submit button text"), max_length=255, null=True, blank=True,
|
||||
help_text=_("Overrides the default form submit button text.")
|
||||
)
|
||||
|
||||
success_page_template_name = models.CharField(
|
||||
_("Success page template name"), max_length=255, null=True, blank=True,
|
||||
choices=get_success_page_template_choices(),
|
||||
help_text=_("Template to render the success page with.")
|
||||
)
|
||||
|
||||
hide_success_page_title = models.BooleanField(
|
||||
_("Hide success page title"), default=False,
|
||||
help_text=_("If checked, no success page title is shown.")
|
||||
)
|
||||
|
||||
success_page_title = models.CharField(
|
||||
_("Succes page title"), max_length=255, null=True, blank=True,
|
||||
help_text=_("Overrides the default success page title.")
|
||||
)
|
||||
|
||||
success_page_text = models.TextField(
|
||||
_("Succes page text"), null=True, blank=True,
|
||||
help_text=_("Overrides the default success page text.")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
app_label = 'fobi'
|
||||
|
|
@ -60,7 +108,7 @@ class FobiFormWidget(models.Model):
|
|||
:param django.http.HttpRequest request:
|
||||
:return django.http.HttpResponse | str:
|
||||
"""
|
||||
template_name = None # TODO: fix
|
||||
template_name = self.form_template_name or None
|
||||
|
||||
# Handle public/non-public forms. If form requires user authentication
|
||||
# redirect to login form with next parameter set to current request
|
||||
|
|
@ -131,7 +179,7 @@ class FobiFormWidget(models.Model):
|
|||
request,
|
||||
_('Form {0} was submitted successfully.').format(self.form_entry.name)
|
||||
)
|
||||
#return redirect(reverse('fobi.form_entry_submitted', args=[self.form_entry.slug]))
|
||||
|
||||
return redirect(
|
||||
"{0}?{1}={2}".format(request.path, WIDGET_FORM_SENT_GET_PARAM, \
|
||||
self.form_entry.slug)
|
||||
|
|
@ -156,10 +204,13 @@ class FobiFormWidget(models.Model):
|
|||
'form': form,
|
||||
'form_entry': self.form_entry,
|
||||
'fobi_theme': theme,
|
||||
'fobi_form_title': self.form_title,
|
||||
'fobi_hide_form_title': self.hide_form_title,
|
||||
'fobi_form_submit_button_text': self.form_submit_button_text
|
||||
}
|
||||
|
||||
if not template_name:
|
||||
template_name = theme.view_form_entry_ajax_template
|
||||
template_name = theme.view_embed_form_entry_ajax_template
|
||||
|
||||
self.rendered_output = render_to_string(
|
||||
template_name, context, context_instance=RequestContext(request)
|
||||
|
|
@ -172,17 +223,20 @@ class FobiFormWidget(models.Model):
|
|||
:param django.http.HttpRequest request:
|
||||
:return str:
|
||||
"""
|
||||
template_name = None # TODO
|
||||
template_name = self.success_page_template_name or None
|
||||
|
||||
theme = get_theme(request=request, as_instance=True)
|
||||
|
||||
context = {
|
||||
'form_entry': self.form_entry,
|
||||
'fobi_theme': theme,
|
||||
'fobi_hide_success_page_title': self.hide_success_page_title,
|
||||
'fobi_success_page_title': self.success_page_title,
|
||||
'fobi_success_page_text': self.success_page_text,
|
||||
}
|
||||
|
||||
if not template_name:
|
||||
template_name = theme.form_entry_submitted_template
|
||||
template_name = theme.embed_form_entry_submitted_ajax_template
|
||||
|
||||
self.rendered_output = render_to_string(
|
||||
template_name, context, context_instance=RequestContext(request)
|
||||
|
|
|
|||
|
|
@ -37,21 +37,21 @@ class RadioInputForm(forms.Form, BaseFormFieldPluginForm):
|
|||
choices = forms.CharField(
|
||||
label = _("Choices"),
|
||||
required = False,
|
||||
help_text = _("Enter either single values or pairs - one per line. Example:<code><br/>"
|
||||
help_text = _("Enter single values/pairs per line. Example:<code><br/>"
|
||||
" 1<br/>"
|
||||
" 2<br/>"
|
||||
" alpha, Alpha<br/>"
|
||||
" beta, Beta<br/>"
|
||||
" omega"
|
||||
"</code><br/>"
|
||||
"It finally transforms into the following Python code:<code><br/>"
|
||||
' (<br />'
|
||||
' (1, 1),<br/>'
|
||||
' (2, 2),<br/>'
|
||||
' ("alpha", "Alpha"),<br/>'
|
||||
' ("beta", "Beta"),<br/>'
|
||||
' ("omega", "omega"))<br/>'
|
||||
' )'
|
||||
"It finally transforms into the following HTML code:<code><br/>"
|
||||
' <select id="id_NAME_OF_THE_ELEMENT" name="NAME_OF_THE_ELEMENT"><br/>'
|
||||
' <option value="1">1</option><br/>'
|
||||
' <option value="2">2</option><br/>'
|
||||
' <option value="alpha">Alpha</option><br/>'
|
||||
' <option value="beta">Beta</option><br/>'
|
||||
' <option value="omega">omega</option><br/>'
|
||||
' </select>'
|
||||
"</code>"),
|
||||
widget = forms.widgets.Textarea(attrs={'class': theme.form_element_html_class})
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
{% extends "fobi/generic/embed_form_entry_submitted_ajax.html" %}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{% extends "fobi/generic/view_embed_form_entry_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 %}
|
||||
|
|
@ -1,12 +1,18 @@
|
|||
{% load i18n %}
|
||||
{% block form_page_header_wrapper %}
|
||||
<div class="page-header">
|
||||
<h1>{% if form_entry.success_page_title %}{{ form_entry.success_page_title }}{% else %}{% trans "Thank you!" %}{% endif %}</h1>
|
||||
<h1>{% 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 %}</h1>
|
||||
</div>
|
||||
{% endblock form_page_header_wrapper %}
|
||||
|
||||
<p>
|
||||
{% 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 %}
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
{% block form_page_header_wrapper %}
|
||||
<div class="{% block form_page_header_html_class %}{% endblock %}">
|
||||
<h1>{% block form_page_title %}{% endblock %}</h1>
|
||||
{% block form_page_title_wrapper %}<h1>{% block form_page_title %}{% endblock %}</h1>{% endblock form_page_title_wrapper %}
|
||||
</div>
|
||||
{% endblock form_page_header_wrapper %}
|
||||
|
||||
<form method="{% block form_method %}post{% endblock %}" action="{% block form_action %}{% if form_entry.action %}{{ form_entry.action }}{% else %}{{ request.path }}{% endif %}{% endblock %}" {% block form_enctype %}enctype="multipart/form-data"{% endblock %} class="{% block form_html_class %}{% endblock %}" {% block form_extra_attrs %}{% endblock %}>
|
||||
{% csrf_token %}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,17 @@
|
|||
{% block form_page_header_wrapper %}
|
||||
<div class="{% block form_page_header_html_class %}{% endblock %}">
|
||||
<h1>{% block form_page_title %}{% endblock %}</h1>
|
||||
{% block form_page_title_wrapper %}<h1>{% block form_page_title %}{% endblock form_page_title %}</h1>{% endblock form_page_title_wrapper %}
|
||||
</div>
|
||||
{% endblock form_page_header_wrapper %}
|
||||
|
||||
<form method="{% block form_method %}post{% endblock %}" action="{% block form_action %}{% if form_entry.action %}{{ form_entry.action }}{% else %}{{ request.path }}{% endif %}{% endblock %}" {% block form_enctype %}enctype="multipart/form-data"{% endblock %} class="{% block form_html_class %}{% endblock %}" {% block form_extra_attrs %}{% endblock %}>
|
||||
{% csrf_token %}
|
||||
{% include fobi_theme.form_view_snippet_template_name %}
|
||||
<div class="{% block form_button_outer_wrapper_html_class %}{% endblock %}">
|
||||
<div class="{% block form_button_wrapper_html_class %}{% endblock %}">
|
||||
{% block form_buttons %}
|
||||
<button type="submit" class="{% block form_primary_button_html_class %}{% endblock %}">{% block form_primary_button_text %}{% endblock %}</button>
|
||||
{% endblock form_buttons %}
|
||||
</div>
|
||||
{% csrf_token %}
|
||||
{% include fobi_theme.form_view_snippet_template_name %}
|
||||
<div class="{% block form_button_outer_wrapper_html_class %}{% endblock %}">
|
||||
<div class="{% block form_button_wrapper_html_class %}{% endblock %}">
|
||||
{% block form_buttons %}
|
||||
<button type="submit" class="{% block form_primary_button_html_class %}{% endblock %}">{% block form_primary_button_text %}{% endblock %}</button>
|
||||
{% endblock form_buttons %}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
{% extends fobi_theme.view_form_entry_ajax_template %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block form_page_header_wrapper %}
|
||||
{% if fobi_hide_form_title %}{% else %}
|
||||
{{ block.super }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
{% load i18n %}
|
||||
|
||||
{% block form_page_title %}
|
||||
{% trans "View form" %}
|
||||
{% if fobi_form_title %}{{ fobi_form_title }}{% else %}{% trans "View form" %}{% endif %}
|
||||
{% endblock form_page_title %}
|
||||
|
||||
{% block form_primary_button_text %}{% trans "Submit" %}{% endblock %}
|
||||
{% block form_primary_button_text %}{% if fobi_form_submit_button_text %}{{ fobi_form_submit_button_text }}{% else %}{% trans "Submit" %}{% endif %}{% endblock %}
|
||||
|
|
|
|||
Loading…
Reference in a new issue