Replace panels with cards, add checkbox and radio styles.

This commit is contained in:
Benedikt Willi 2023-10-19 15:53:08 +02:00
parent f9d6041417
commit 4cf9e214e5
6 changed files with 364 additions and 397 deletions

View file

@ -6,41 +6,80 @@
<li class="nav-item"><a class="nav-link" href="{% url 'fobi.form_wizards_dashboard' %}">{% trans "Wizards" %}</a></li>
{% endblock navbar-menu-right-content %}
{% block form_entry_table_row %}
{% for form_entry in form_entries %}
<tr>
<td><a href="{% url 'fobi.view_form_entry' form_entry.slug %}">{{ form_entry.name }}</a></td>
<td>{{ form_entry.is_public }}</td>
<td>{{ form_entry.is_active }}</td>
{#<td>{{ form_entry.is_cloneable }}</td>#}
<td>
<div class="btn-group" role="group">
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.edit_form_entry' form_entry.pk %}">
<i class="bi bi-pencil fs-6"></i> {% trans "Edit" %}
</a>
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.delete_form_entry' form_entry.pk %}">
<i class="bi bi-trash fs-6"></i> {% trans "Delete" %}
</a>
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.export_form_entry' form_entry.pk %}">
<i class="bi bi-file-earmark-arrow-up fs-6"></i> {% trans "Export" %}
</a>
{% block content-wrapper %}
<div class="page-header">
<h1>{% trans "Dashboard" %}</h1>
</div>
<div class="row">
<div class="col-8 col-sm-8 col-lg-8">
<!-- Forms -->
<div>
<h2 id="form_handlers">{% trans "Your forms" %}</h2>
</div>
</td>
</tr>
{% endfor %}
{% endblock form_entry_table_row %}
<div class="card">
<div class="card-body">
<table class="table table-striped">
<thead>
<tr>
<th class="col-sm-3">{% trans "Form" %}</th>
<th class="col-sm-1">{% trans "Is public" %}</th>
<th class="col-sm-1">{% trans "Is active" %}</th>
{#<th class="col-sm-1">{% trans "Is cloneable" %}</th>#}
<th class="col-sm-3">{% trans "Actions" %}</th>
</tr>
</thead>
<tbody>
{% block form_entry_table_row %}
{% for form_entry in form_entries %}
<tr>
<td><a href="{% url 'fobi.view_form_entry' form_entry.slug %}">{{ form_entry.name }}</a></td>
<td>{{ form_entry.is_public }}</td>
<td>{{ form_entry.is_active }}</td>
{#<td>{{ form_entry.is_cloneable }}</td>#}
<td>
<div class="btn-group" role="group">
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.edit_form_entry' form_entry.pk %}">
<i class="bi bi-pencil fs-6"></i> {% trans "Edit" %}
</a>
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.delete_form_entry' form_entry.pk %}">
<i class="bi bi-trash fs-6"></i> {% trans "Delete" %}
</a>
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.export_form_entry' form_entry.pk %}">
<i class="bi bi-file-earmark-arrow-up fs-6"></i> {% trans "Export" %}
</a>
</div>
</td>
</tr>
{% endfor %}
{% endblock form_entry_table_row %}
</tbody>
</table>
</div>
</div>
</div>
{% block form_entry_actions %}
<a href="{% url 'fobi.create_form_entry' %}" class="list-group-item">
<span class="bi bi-plus"></span> {% trans "Create form" %}
</a>
<a href="{% url 'fobi.import_form_entry' %}" class="list-group-item">
<span class="bi bi-upload"></span> {% trans "Import form" %}
</a>
{% for form_importer_uid,form_importer_name,form_importer_url in form_importers %}
<a href="{{ form_importer_url }}" class="list-group-item">
<span class="bi bi-upload glyphicon-import-{{ form_importer_uid }}"></span> {{ form_importer_name }}
</a>
{% endfor %}
{% endblock form_entry_actions %}
<div class="col-4 col-sm-4 col-lg-4">
<div>
<h2>{% trans "Actions" %}</h2>
</div>
<div class="list-group">
{% block form_entry_actions %}
<a href="{% url 'fobi.create_form_entry' %}" class="list-group-item">
<span class="bi bi-plus"></span> {% trans "Create form" %}
</a>
<a href="{% url 'fobi.import_form_entry' %}" class="list-group-item">
<span class="bi bi-upload"></span> {% trans "Import form" %}
</a>
{% for form_importer_uid,form_importer_name,form_importer_url in form_importers %}
<a href="{{ form_importer_url }}" class="list-group-item">
<span class="bi bi-upload glyphicon-import-{{ form_importer_uid }}"></span> {{ form_importer_name }}
</a>
{% endfor %}
{% endblock form_entry_actions %}
</div>
</div>
</div>
{% endblock content-wrapper %}

View file

@ -4,198 +4,157 @@
</div>
<div class="row">
<div class="col-9 col-sm-12 col-lg-9">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item"><button class="nav-link active" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-elements" aria-controls="tab-form-elements" aria-selected="true">{% trans "Elements" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-handlers" aria-controls="tab-form-handlers" aria-selected="false">{% trans "Handlers" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-properties" aria-controls="tab-form-properties" aria-selected="false">{% trans "Properties" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-service" aria-controls="tab-form-service" aria-selected="false">{% trans "Service" %}</button></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<!-- Form element plugins -->
<div class="tab-pane active" id="tab-form-elements">
<div>
<h2 id="form_elements">{% trans "Add elements to your form" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<ul class="nav pull-right">
<div class="dropdown">
<button type="button" class="btn btn-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{% trans "Choose form element to add" %}
</button>
<ul class="dropdown-menu">
{% for group, plugins in user_form_element_plugins.items %}
{% if not forloop.first %}
<li><hr class="dropdown-divider"></li>
{% endif %}
<li><h6 class="dropdown-header">{{ group }}</h6></li>
{% for form_element_uid, form_element_name in plugins %}
<li><a class="dropdown-item" href="{% url 'fobi.add_form_element_entry' form_entry.pk form_element_uid %}">{{ form_element_name }}</a></li>
{% endfor %}
{% endfor %}
</ul>
</div>
</ul>
<form id="fobi-form" method="post" action="{{ request.path }}?active_tab=tab-form-elements" novalidate="novalidate" class="{% block form_elements_html_class %}form-horizontal{% endblock %}" {% block form_elements_extra_attrs %}{% endblock %}>
{% csrf_token %}
{% with assembled_form as form %}
{% include fobi_theme.form_edit_snippet_template_name %}
{% endwith %}
{{ form_element_entry_formset.management_form }}
{% comment %}
{% with form_element_entry_formset as form %}
{% include fobi_theme.form_edit_snippet_template_name %}
{% endwith %}
{% endcomment %}
<div class="{% block form_elements_button_outer_wrapper_html_class %}control-group{% endblock %}">
<div class="{% block form_elements_button_wrapper_html_class %}controls{% endblock %}">
<input type="submit" name="ordering" class="{% block form_elements_button_html_class %}btn btn-primary pull-right{% endblock %}" value="{% trans 'Save ordering' %}"/>
</div>
</div>
</form>
</div>
</div>
<div class="col-12">
<div class="card">
<div class="card-header">
<!-- Nav tabs -->
<ul class="nav nav-tabs card-header-tabs" role="tablist">
<li class="nav-item"><button class="nav-link active" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-elements" aria-controls="tab-form-elements" aria-selected="true">{% trans "Elements" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-handlers" aria-controls="tab-form-handlers" aria-selected="false">{% trans "Handlers" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-properties" aria-controls="tab-form-properties" aria-selected="false">{% trans "Properties" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-service" aria-controls="tab-form-service" aria-selected="false">{% trans "Service" %}</button></li>
</ul>
</div>
<!-- Form handler plugins -->
<div class="tab-pane" id="tab-form-handlers">
<!-- Tab panes -->
<div class="tab-content">
<div>
<h2 id="form_handlers">{% trans "Add handlers to your form" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<ul class="nav pull-right">
<div class="dropdown">
<button class="btn btn-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{% trans "Choose form handler to add" %}
</button>
<ul class="dropdown-menu">
{% for form_handler_uid, form_handler_name in user_form_handler_plugins %}
<li><a class="dropdown-item" href="{% url 'fobi.add_form_handler_entry' form_entry.pk form_handler_uid %}">{{ form_handler_name }}</a></li>
<!-- Form element plugins -->
<div class="tab-pane card-body active" id="tab-form-elements">
<ul class="nav float-end">
<div class="dropdown">
<button type="button" class="btn btn-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{% trans "Choose form element to add" %}
</button>
<ul class="dropdown-menu">
{% for group, plugins in user_form_element_plugins.items %}
{% if not forloop.first %}
<li><hr class="dropdown-divider"></li>
{% endif %}
<li><h6 class="dropdown-header">{{ group }}</h6></li>
{% for form_element_uid, form_element_name in plugins %}
<li><a class="dropdown-item" href="{% url 'fobi.add_form_element_entry' form_entry.pk form_element_uid %}">{{ form_element_name }}</a></li>
{% endfor %}
</ul>
</div>
</ul>
<div class="clearfix"></div>
{% if form_handlers %}
<table class="table table-striped">
<thead>
<tr>
<th>{% trans "Handler" %}</th>
{#<th>{% trans "Settings" %}</th>#}
<th>{% trans "Actions" %}</th>
</tr>
</thead>
<tbody>
{% for form_handler in form_handlers %}
{% with form_handler.get_plugin as plugin %}
{% if plugin %}
<tr>
<td>{{ form_handler.plugin_name }}
{% if form_handler.plugin_data or plugin.plugin_data_repr %}
<a class="popover-link" href="javascript:;" data-toggle="popover" data-content="{% spaceless %}{{ plugin.plugin_data_repr|safe }}{% endspaceless %}" role="button">
<span class="badge" title="{% trans 'Info' %}">?</span>
</a>
{% endif %}
</td>
<td>
<ul class="list-inline">
{% if form_handler.plugin_data %}
<li><a href="{% url 'fobi.edit_form_handler_entry' form_handler.pk %}"><span class="glyphicon glyphicon-edit"></span> {% trans "Edit" %}</a></li>
{% endif %}
<li><a href="{% url 'fobi.delete_form_handler_entry' form_handler.pk %}"><span class="glyphicon glyphicon-remove"></span> {% trans "Delete" %}</a></li>
{% get_fobi_form_handler_plugin_custom_actions plugin form_entry as form_handler_plugin_custom_actions %}
{#% for action in plugin.get_custom_actions %#}
{% for action in form_handler_plugin_custom_actions %}
<li><a href="{{ action.0 }}"><span class="{{ action.2 }}"></span> {{ action.1 }}</a></li>
{% endfor %}
</ul>
</td>
</tr>
{% endif %}
{% endwith %}
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
</ul>
</div>
</ul>
<h2 id="form_elements">{% trans "Add elements to your form" %}</h2>
</div>
<form id="fobi-form" method="post" action="{{ request.path }}?active_tab=tab-form-elements" novalidate="novalidate" class="{% block form_elements_html_class %}form-horizontal{% endblock %}" {% block form_elements_extra_attrs %}{% endblock %}>
{% csrf_token %}
{% with assembled_form as form %}
{% include fobi_theme.form_edit_snippet_template_name %}
{% endwith %}
<!-- Form properties -->
<div class="tab-pane" id="tab-form-properties">
<div>
<h2 id="form_properties">{% trans "Form properties" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<form method="post" action="{{ request.path }}?active_tab=tab-form-properties" enctype="multipart/form-data" class="{% block form_properties_html_class %}form-horizontal{% endblock %}">
{% csrf_token %}
{% include fobi_theme.form_properties_snippet_template_name %}
<div class="{% block form_properties_button_outer_wrapper_html_class %}control-group{% endblock %}">
<div class="{% block form_properties_button_wrapper_html_class %}controls{% endblock %}">
<input type="submit" class="{% block form_properties_button_html_class %}btn btn-primary pull-right{% endblock %}" value="{% trans 'Submit changes' %}"/>
</div>
{{ form_element_entry_formset.management_form }}
<div class="{% block form_elements_button_outer_wrapper_html_class %}control-group d-flex justify-content-end{% endblock %}">
<div class="{% block form_elements_button_wrapper_html_class %}controls{% endblock %}">
<input type="submit" name="ordering" class="{% block form_elements_button_html_class %}btn btn-primary float-end{% endblock %}" value="{% trans 'Save ordering' %}"/>
</div>
</form>
</div>
</div>
</form>
</div>
</div>
<!-- Form handler plugins -->
<div class="tab-pane card-body" id="tab-form-handlers">
<ul class="nav float-end">
<div class="dropdown">
<button class="btn btn-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{% trans "Choose form handler to add" %}
</button>
<ul class="dropdown-menu">
{% for form_handler_uid, form_handler_name in user_form_handler_plugins %}
<li><a class="dropdown-item" href="{% url 'fobi.add_form_handler_entry' form_entry.pk form_handler_uid %}">{{ form_handler_name }}</a></li>
{% endfor %}
</ul>
</div>
</ul>
<h2 id="form_handlers">{% trans "Add handlers to your form" %}</h2>
<div class="clearfix"></div>
<!-- Form service -->
<div class="tab-pane" id="tab-form-service">
{% if form_handlers %}
<table class="table table-striped">
<thead>
<tr>
<th>{% trans "Handler" %}</th>
{#<th>{% trans "Settings" %}</th>#}
<th>{% trans "Actions" %}</th>
</tr>
</thead>
<tbody>
{% for form_handler in form_handlers %}
{% with form_handler.get_plugin as plugin %}
{% if plugin %}
<tr>
<td>{{ form_handler.plugin_name }}
{% if form_handler.plugin_data or plugin.plugin_data_repr %}
<a class="popover-link" data-bs-toggle="popover" data-bs-content="{% spaceless %}{{ plugin.plugin_data_repr|safe }}{% endspaceless %}" role="button">
<span class="badge rounded-pill text-bg-secondary" title="{% trans 'Info' %}">?</span>
</a>
{% endif %}
</td>
<td>
<ul class="list-inline">
{% if form_handler.plugin_data %}
<li><a href="{% url 'fobi.edit_form_handler_entry' form_handler.pk %}"><i class="bi bi-pencil"></i> {% trans "Edit" %}</a></li>
{% endif %}
<li><a href="{% url 'fobi.delete_form_handler_entry' form_handler.pk %}"><i class="bi bi-trash"></i> {% trans "Delete" %}</a></li>
{% get_fobi_form_handler_plugin_custom_actions plugin form_entry as form_handler_plugin_custom_actions %}
{#% for action in plugin.get_custom_actions %#}
{% for action in form_handler_plugin_custom_actions %}
<li><a href="{{ action.0 }}"><span class="{{ action.2 }}"></span> {{ action.1 }}</a></li>
{% endfor %}
</ul>
</td>
</tr>
{% endif %}
{% endwith %}
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
<div>
<!-- Form properties -->
<div class="tab-pane card-body" id="tab-form-properties">
<h2 id="form_properties">{% trans "Form properties" %}</h2>
<form method="post" action="{{ request.path }}?active_tab=tab-form-properties" enctype="multipart/form-data" class="{% block form_properties_html_class %}form-horizontal{% endblock %}">
{% csrf_token %}
{% include fobi_theme.form_properties_snippet_template_name %}
<div class="{% block form_properties_button_outer_wrapper_html_class %}control-group d-flex justify-content-end{% endblock %}">
<div class="{% block form_properties_button_wrapper_html_class %}controls{% endblock %}">
<input type="submit" class="{% block form_properties_button_html_class %}btn btn-primary float-end{% endblock %}" value="{% trans 'Submit changes' %}"/>
</div>
</div>
</form>
</div>
<!-- Form service -->
<div class="tab-pane card-body" id="tab-form-service">
<h2 id="form_service">{% trans "Service" %}</h2>
</div>
<div>
<h3>{% trans "Export your form as JSON" %}</h3>
<p>{% trans "Export your form into JSON format and import it again any time!" %}</p>
<p>
<a class="{% block form_service_export_button_html_class %}btn btn-primary{% endblock %}" href="{% url 'fobi.export_form_entry' form_entry.pk %}" role="button">
<span class="glyphicon glyphicon-export"></span> {% trans "Export form" %}
</a>
</p>
</div>
<div class="panel panel-default">
<div class="panel-body">
<div>
<h3>{% trans "Export your form as JSON" %}</h3>
<p>{% trans "Export your form into JSON format and import it again any time!" %}</p>
<p>
<a class="{% block form_service_export_button_html_class %}btn btn-primary{% endblock %}" href="{% url 'fobi.export_form_entry' form_entry.pk %}" role="button">
<span class="glyphicon glyphicon-export"></span> {% trans "Export form" %}
</a>
</p>
</div>
<div>
<h3>{% trans "Delete your form" %}</h3>
<p>{% trans "Once deleted, can't be undone!" %}</p>
<p>
<a class="{% block form_service_delete_button_html_class %}btn btn-primary{% endblock %}" href="{% url 'fobi.delete_form_entry' form_entry.pk %}" role="button">
<span class="glyphicon glyphicon-remove"></span> {% trans "Delete form" %}
</a>
</p>
</div>
<div>
<h3>{% trans "Delete your form" %}</h3>
<p>{% trans "Once deleted, can't be undone!" %}</p>
<p>
<a class="{% block form_service_delete_button_html_class %}btn btn-primary{% endblock %}" href="{% url 'fobi.delete_form_entry' form_entry.pk %}" role="button">
<span class="bi bi-trash"></span> {% trans "Delete form" %}
</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>

View file

@ -5,214 +5,179 @@
<div class="row">
<div class="col-12 col-sm-12 col-lg-12">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item"><button class="nav-link active" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-elements" aria-controls="tab-form-elements" aria-selected="true">{% trans "Elements" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-handlers" aria-controls="tab-form-handlers" aria-selected="false">{% trans "Handlers" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-properties" aria-controls="tab-form-properties" aria-selected="false">{% trans "Properties" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-service" aria-controls="tab-form-service" aria-selected="false">{% trans "Service" %}</button></li>
</ul>
<div class="card">
<div class="card-header">
<!-- Nav tabs -->
<ul class="nav nav-tabs card-header-tabs" role="tablist">
<li class="nav-item"><button class="nav-link active" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-elements" aria-controls="tab-form-elements" aria-selected="true">{% trans "Elements" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-handlers" aria-controls="tab-form-handlers" aria-selected="false">{% trans "Handlers" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-properties" aria-controls="tab-form-properties" aria-selected="false">{% trans "Properties" %}</button></li>
<li class="nav-item"><button class="nav-link" role="tab" data-bs-toggle="tab" type="button" data-bs-target="#tab-form-service" aria-controls="tab-form-service" aria-selected="false">{% trans "Service" %}</button></li>
</ul>
</div>
<!-- Tab panes -->
<div class="tab-content">
<!-- Tab panes -->
<div class="tab-content">
<!-- Form element plugins -->
<div class="tab-pane active" id="tab-form-elements">
<div>
<h2 id="form_elements">{% trans "Add forms to your form wizard" %}</h2>
<div class="tab-pane card-body active" id="tab-form-elements">
<ul class="nav float-end">
<li class="dropdown">
<button type="button" class="btn btn-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{% trans "Choose form to add" %}
</button>
<ul class="dropdown-menu">
{% for form_entry in all_form_entries %}
<li><a class="dropdown-item" href="{% url 'fobi.add_form_wizard_form_entry' form_wizard_entry.pk form_entry.pk %}">{{ form_entry.name }}</a></li>
{% endfor %}
</ul>
</li>
</ul>
<h2 id="form_elements">{% trans "Add forms to your form wizard" %}</h2>
<form id="fobi-form" method="post" action="{{ request.path }}?active_tab=tab-form-elements" novalidate="novalidate" class="{% block form_elements_html_class %}form-horizontal ui-sortable{% endblock %}">
{% csrf_token %}
<div class="well well-sm">
{% blocktrans %}Fields marked with <span class="required-field">*</span> are required{% endblocktrans %}
</div>
{% for form_wizard_form_entry in form_wizard_entry_forms %}
<div class="form-group">
<label class="col-sm-3 control-label" for="id_form-{{ forloop.counter0 }}-position">{#{ forloop.counter }#}</label>
<div class="panel panel-default">
<div class="panel-body">
<ul class="nav pull-right">
<li class="dropdown">
<button type="button" class="btn btn-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{% trans "Choose form to add" %}
</button>
<ul class="dropdown-menu">
{% for form_entry in all_form_entries %}
<li><a class="dropdown-item" href="{% url 'fobi.add_form_wizard_form_entry' form_wizard_entry.pk form_entry.pk %}">{{ form_entry.name }}</a></li>
{% endfor %}
</ul>
</li>
</ul>
<form id="fobi-form" method="post" action="{{ request.path }}?active_tab=tab-form-elements" novalidate="novalidate" class="{% block form_elements_html_class %}form-horizontal ui-sortable{% endblock %}">
{% csrf_token %}
<div class="well well-sm">
{% blocktrans %}Fields marked with <span class="required-field">*</span> are required{% endblocktrans %}
</div>
{% for form_wizard_form_entry in form_wizard_entry_forms %}
<div class="form-group">
<label class="col-sm-3 control-label" for="id_form-{{ forloop.counter0 }}-position">{#{ forloop.counter }#}</label>
<div class="col-sm-9">
{{ form_wizard_form_entry.form_entry.name }}
<span class="help-block">
<input id="id_form-{{ forloop.counter0 }}-position" min="0" name="form-{{ forloop.counter0 }}-position" type="hidden" value="{{ form_wizard_form_entry.position }}" class="form-element-position" />
<input id="id_form-{{ forloop.counter0 }}-id" name="form-{{ forloop.counter0 }}-id" type="hidden" value="{{ form_wizard_form_entry.pk }}" />
<div class="{{ fobi_theme.form_list_container_class }}">
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.view_form_entry' form_wizard_form_entry.form_entry.slug %}">
<i class="{{ fobi_theme.form_view_form_entry_option_class }}"></i> {% trans "View" %}
</a>
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.edit_form_entry' form_wizard_form_entry.form_entry.pk %}">
<i class="{{ fobi_theme.form_edit_form_entry_option_class }}"></i> {% trans "Edit" %}
</a>
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.delete_form_wizard_form_entry' form_wizard_form_entry.pk %}">
<i class="{{ fobi_theme.form_delete_form_entry_option_class }}"></i> {% trans "Delete" %}
</a>
</div>
</span>
</div>
<div class="col-sm-9">
{{ form_wizard_form_entry.form_entry.name }}
<span class="help-block">
<input id="id_form-{{ forloop.counter0 }}-position" min="0" name="form-{{ forloop.counter0 }}-position" type="hidden" value="{{ form_wizard_form_entry.position }}" class="form-element-position" />
<input id="id_form-{{ forloop.counter0 }}-id" name="form-{{ forloop.counter0 }}-id" type="hidden" value="{{ form_wizard_form_entry.pk }}" />
<div class="{{ fobi_theme.form_list_container_class }}">
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.view_form_entry' form_wizard_form_entry.form_entry.slug %}">
<i class="{{ fobi_theme.form_view_form_entry_option_class }}"></i> {% trans "View" %}
</a>
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.edit_form_entry' form_wizard_form_entry.form_entry.pk %}">
<i class="{{ fobi_theme.form_edit_form_entry_option_class }}"></i> {% trans "Edit" %}
</a>
<a class="btn btn-outline-secondary btn-sm" href="{% url 'fobi.delete_form_wizard_form_entry' form_wizard_form_entry.pk %}">
<i class="{{ fobi_theme.form_delete_form_entry_option_class }}"></i> {% trans "Delete" %}
</a>
</div>
{#% include fobi_theme.form_edit_snippet_template_name %#}
{% endfor %}
{#{ form_wizard_form_entry_formset.as_p }#}
</span>
{{ form_wizard_form_entry_formset.management_form }}
<div class="{% block form_elements_button_outer_wrapper_html_class %}control-group{% endblock %}">
<div class="{% block form_elements_button_wrapper_html_class %}controls{% endblock %}">
<input type="submit" name="ordering" class="{% block form_elements_button_html_class %}btn btn-primary pull-right{% endblock %}" value="{% trans 'Save ordering' %}"/>
</div>
</div>
</form>
</div>
{#% include fobi_theme.form_edit_snippet_template_name %#}
{% endfor %}
{#{ form_wizard_form_entry_formset.as_p }#}
{{ form_wizard_form_entry_formset.management_form }}
<div class="{% block form_elements_button_outer_wrapper_html_class %}control-group d-flex justify-content-end{% endblock %}">
<div class="{% block form_elements_button_wrapper_html_class %}controls{% endblock %}">
<input type="submit" name="ordering" class="{% block form_elements_button_html_class %}btn btn-primary{% endblock %}" value="{% trans 'Save ordering' %}"/>
</div>
</div>
</form>
</div>
<!-- Form handler plugins -->
<div class="tab-pane" id="tab-form-handlers">
<div class="tab-pane card-body" id="tab-form-handlers">
<ul class="nav float-end">
<li class="dropdown">
<button class="btn btn-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{% trans "Choose form wizard handler to add" %}
</button>
<ul class="dropdown-menu">
{% for form_wizard_handler_uid, form_wizard_handler_name in user_form_wizard_handler_plugins %}
<li><a class="dropdown-item" href="{% url 'fobi.add_form_wizard_handler_entry' form_wizard_entry.pk form_wizard_handler_uid %}">{{ form_wizard_handler_name }}</a></li>
{% endfor %}
</ul>
</li>
</ul>
<h2 id="form_handlers">{% trans "Add handlers to your form wizard" %}</h2>
<div class="clearfix"></div>
<div>
<h2 id="form_handlers">{% trans "Add handlers to your form wizard" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<ul class="nav pull-right">
<li class="dropdown">
<button class="btn btn-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{% trans "Choose form wizard handler to add" %}
</button>
<ul class="dropdown-menu">
{% for form_wizard_handler_uid, form_wizard_handler_name in user_form_wizard_handler_plugins %}
<li><a class="dropdown-item" href="{% url 'fobi.add_form_wizard_handler_entry' form_wizard_entry.pk form_wizard_handler_uid %}">{{ form_wizard_handler_name }}</a></li>
{% endfor %}
</ul>
</li>
</ul>
<div class="clearfix"></div>
{% if form_wizard_handlers %}
<table class="table table-striped">
<thead>
<tr>
<th>{% trans "Handler" %}</th>
{#<th>{% trans "Settings" %}</th>#}
<th>{% trans "Actions" %}</th>
</tr>
</thead>
<tbody>
{% for form_wizard_handler in form_wizard_handlers %}
{% with form_wizard_handler.get_plugin as plugin %}
{% if plugin %}
<tr>
<td>{{ form_wizard_handler.plugin_name }}
{% if form_wizard_handler.plugin_data or plugin.plugin_data_repr %}
<a class="popover-link" href="javascript:;" data-toggle="popover" data-content="{% spaceless %}{{ plugin.plugin_data_repr|safe }}{% endspaceless %}" role="button">
<span class="badge" title="{% trans 'Info' %}">?</span>
</a>
{% endif %}
</td>
<td>
<ul class="list-inline">
{% if form_wizard_handler.plugin_data %}
<li><a href="{% url 'fobi.edit_form_wizard_handler_entry' form_wizard_handler.pk %}"><span class="glyphicon glyphicon-edit"></span> {% trans "Edit" %}</a></li>
{% endif %}
<li><a href="{% url 'fobi.delete_form_wizard_handler_entry' form_wizard_handler.pk %}"><span class="glyphicon glyphicon-remove"></span> {% trans "Delete" %}</a></li>
{% get_fobi_form_wizard_handler_plugin_custom_actions plugin form_wizard_entry as form_wizard_handler_plugin_custom_actions %}
{#% for action in plugin.get_custom_actions %#}
{% for action in form_wizard_handler_plugin_custom_actions %}
<li><a href="{{ action.0 }}"><span class="{{ action.2 }}"></span> {{ action.1 }}</a></li>
{% endfor %}
</ul>
</td>
</tr>
{% endif %}
{% endwith %}
{% endfor %}
</tbody>
</table>
{% if form_wizard_handlers %}
<table class="table table-striped">
<thead>
<tr>
<th>{% trans "Handler" %}</th>
{#<th>{% trans "Settings" %}</th>#}
<th>{% trans "Actions" %}</th>
</tr>
</thead>
<tbody>
{% for form_wizard_handler in form_wizard_handlers %}
{% with form_wizard_handler.get_plugin as plugin %}
{% if plugin %}
<tr>
<td>{{ form_wizard_handler.plugin_name }}
{% if form_wizard_handler.plugin_data or plugin.plugin_data_repr %}
<a class="popover-link" data-bs-toggle="popover" data-bs-content="{% spaceless %}{{ plugin.plugin_data_repr|safe }}{% endspaceless %}" role="button">
<span class="badge rounded-pill text-bg-secondary" title="{% trans 'Info' %}">?</span>
</a>
{% endif %}
</td>
<td>
<ul class="list-inline">
{% if form_wizard_handler.plugin_data %}
<li><a href="{% url 'fobi.edit_form_wizard_handler_entry' form_wizard_handler.pk %}"><span class="bi bi-pencil"></span> {% trans "Edit" %}</a></li>
{% endif %}
<li><a href="{% url 'fobi.delete_form_wizard_handler_entry' form_wizard_handler.pk %}"><span class="bi bi-trash"></span> {% trans "Delete" %}</a></li>
{% get_fobi_form_wizard_handler_plugin_custom_actions plugin form_wizard_entry as form_wizard_handler_plugin_custom_actions %}
{#% for action in plugin.get_custom_actions %#}
{% for action in form_wizard_handler_plugin_custom_actions %}
<li><a href="{{ action.0 }}"><span class="{{ action.2 }}"></span> {{ action.1 }}</a></li>
{% endfor %}
</ul>
</td>
</tr>
{% endif %}
</div>
</div>
{% endwith %}
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
<!-- Form properties -->
<div class="tab-pane" id="tab-form-properties">
<div class="tab-pane card-body" id="tab-form-properties">
<h2 id="form_properties">{% trans "Form wizard properties" %}</h2>
<div>
<h2 id="form_properties">{% trans "Form wizard properties" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<form method="post" action="{{ request.path }}?active_tab=tab-form-properties" enctype="multipart/form-data" class="{% block form_properties_html_class %}form-horizontal{% endblock %}">
{% csrf_token %}
{% include fobi_theme.form_wizard_properties_snippet_template_name %}
<div class="{% block form_properties_button_outer_wrapper_html_class %}control-group{% endblock %}">
<div class="{% block form_properties_button_wrapper_html_class %}controls{% endblock %}">
<input type="submit" class="{% block form_properties_button_html_class %}btn btn-primary pull-right{% endblock %}" value="{% trans 'Submit changes' %}"/>
</div>
</div>
</form>
<form method="post" action="{{ request.path }}?active_tab=tab-form-properties" enctype="multipart/form-data" class="{% block form_properties_html_class %}form-horizontal{% endblock %}">
{% csrf_token %}
{% include fobi_theme.form_wizard_properties_snippet_template_name %}
<div class="{% block form_properties_button_outer_wrapper_html_class %}control-group d-flex justify-content-end{% endblock %}">
<div class="{% block form_properties_button_wrapper_html_class %}controls{% endblock %}">
<input type="submit" class="{% block form_properties_button_html_class %}btn btn-primary{% endblock %}" value="{% trans 'Submit changes' %}"/>
</div>
</div>
</form>
</div>
<!-- Form service -->
<div class="tab-pane" id="tab-form-service">
<div>
<h2 id="form_delete">{% trans "Service" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<div>
<h3>{% trans "Export your form wizard as JSON" %}</h3>
<p>{% trans "Export your form into JSON format and import it again any time!" %}</p>
<p>
<a class="btn btn-primary" href="{% url 'fobi.export_form_wizard_entry' form_wizard_entry.pk %}" role="button">
<span class="glyphicon glyphicon-export"></span> {% trans "Export form wizard" %}
</a>
</p>
</div>
<div>
<h3>{% trans "Delete your form wizard" %}</h3>
<p>{% trans "Once deleted, can't be undone!" %}</p>
<p>
<a class="btn btn-primary" href="{% url 'fobi.delete_form_wizard_entry' form_wizard_entry.pk %}" role="button">
<span class="glyphicon glyphicon-remove"></span> {% trans "Delete form wizard" %}
</a>
</p>
</div>
</div>
</div>
<div class="tab-pane card-body" id="tab-form-service">
<h2 id="form_delete">{% trans "Service" %}</h2>
<div>
<h3>{% trans "Export your form wizard as JSON" %}</h3>
<p>{% trans "Export your form into JSON format and import it again any time!" %}</p>
<p>
<a class="btn btn-primary" href="{% url 'fobi.export_form_wizard_entry' form_wizard_entry.pk %}" role="button">
<span class="glyphicon glyphicon-export"></span> {% trans "Export form wizard" %}
</a>
</p>
</div>
<div>
<h3>{% trans "Delete your form wizard" %}</h3>
<p>{% trans "Once deleted, can't be undone!" %}</p>
<p>
<a class="btn btn-primary" href="{% url 'fobi.delete_form_wizard_entry' form_wizard_entry.pk %}" role="button">
<span class="bi bi-trash"></span> {% trans "Delete form wizard" %}
</a>
</p>
</div>
</div>
</div>
</div>
</div>

View file

@ -1,12 +1,12 @@
{% extends "fobi/generic/snippets/form_properties_snippet.html" %}
{% block form_required_fields_message_wrapper_class %}well well-sm{% endblock %}
{% block form_required_fields_message_wrapper_class %}bg-light border rounded p-1 ps-3 pe-3 mb-3{% endblock %}
{% block non_field_errors_form_element_wrapper_html_class %}form-group{% endblock %}
{% block form_element_wrapper_hidden_html_class %}hidden{% endblock %}
{% block form_element_wrapper_html_class %}form-group{% endblock %}
{% block form_element_wrapper_html_class %}form-group row mb-1{% endblock %}
{% block form_element_wrapper_error_html_class %}has-error{% endblock %}
@ -20,4 +20,4 @@
{% block form_element_error_html_class %}help-block has-error{% endblock %}
{% block form_element_help_text_html_class %}help-block{% endblock %}
{% block form_element_help_text_html_class %}help-block form-text{% endblock %}

View file

@ -18,7 +18,7 @@
{% block form_element_error_html_class %}help-block invalid-feedback{% endblock %}
{% block form_element_help_text_html_class %}form-text{% endblock %}
{% block form_element_help_text_html_class %}help-block form-text{% endblock %}
{% block form_element_field %}
{% get_form_field_type field as form_field_type %}
@ -26,6 +26,10 @@
{{ field|add_class:"form-control" }}
{% elif form_field_type.is_textarea %}
{{ field|add_class:"form-control" }}
{% elif form_field_type.is_checkbox %}
{{ field|add_class:"form-check-input" }}
{% elif form_field_type.is_radio %}
{{ field|add_class:"form-check-input" }}
{% else %}
{{ field }}
{% endif %}

View file

@ -1,12 +1,12 @@
{% extends "fobi/generic/snippets/form_wizard_properties_snippet.html" %}
{% block form_required_fields_message_wrapper_class %}well well-sm{% endblock %}
{% block form_required_fields_message_wrapper_class %}bg-light border rounded p-1 ps-3 pe-3 mb-3{% endblock %}
{% block non_field_errors_form_element_wrapper_html_class %}form-group{% endblock %}
{% block form_element_wrapper_hidden_html_class %}hidden{% endblock %}
{% block form_element_wrapper_html_class %}form-group{% endblock %}
{% block form_element_wrapper_html_class %}form-group row mb-1{% endblock %}
{% block form_checkbox_element_field_wrapper_html_class %}col-sm-offset-2 col-sm-9{% endblock %}
@ -18,4 +18,4 @@
{% block form_element_error_html_class %}help-block has-error{% endblock %}
{% block form_element_help_text_html_class %}help-block{% endblock %}
{% block form_element_help_text_html_class %}help-block form-text{% endblock %}