Fork me on GitHub

Opening a Dialog

view code

Opening a static Dialog

The layout of the Dialog is fully described by the referenced HTML template: either the default "#dialog_generic" of a specific one.

You can fully customize the rendering with CSS; the default styles are provided by static/frontend_forms/css/frontend_forms.css

dialog1 = new Dialog({
    dialog_selector: '#dialog_generic',
    html: '<h1>Static content goes here ...</h1>',
    width: '600px',
    min_height: '200px',
    title: '<i class="fa fa-calculator"></i> Select an object ...',
    footer_text: 'testing dialog ...',
    enable_trace: true
});

dialog1.open()
/static/images/static_dialog.png

A simple static Dialog

Opening a dynamic Dialog

In most cases, you will rather produce the dialog content dynamically.

To obtain that, just add an "url" option to the Djalog constructor, and it will be automatically used to obtain the Dialog content from the server via an Ajax call.

dialog1 = new Dialog({
    ...
    url: "/samples/simple-content",
    ...

Sometimes it is convenient to reuse the very same single view to render either a modal dialog, or a standalone HTML page.

This can be easily accomplished providing:

  • an "inner" template which renders the content
  • an "outer" container template which renders the full page, then includes the "inner" template
  • in the view, detect the call context and render one or another
def simple_content2(request):

    # Either render only the modal content, or a full standalone page
    if request.is_ajax():
        template_name = 'frontend/includes/simple_content2_inner.html'
    else:
        template_name = 'frontend/includes/simple_content2.html'

    return render(request, template_name, {
    })

here, the "inner" template provides the content:

<div class="row">
    <div class="col-sm-4">
        <p>Repellat officiis numquam architecto optio dignissimos enim dicta, possimus eum repellat deleniti ipsam, neque eligendi minima explicabo qui laborum perspiciatis provident asperiores fugit, dolor in molestias dolorem exercitationem quae at labore ducimus voluptatem vero? Porro omnis ipsum veritatis quod deserunt, a iusto similique, minima voluptates consequatur neque praesentium rem ipsa dolor debitis sit nobis, omnis ipsam ullam veritatis impedit tenetur sunt, aspernatur doloremque ratione.</p>
    </div>
    <div class="col-sm-4">
        <p>Repellat veniam quos vitae exercitationem molestias accusantium minima, unde vitae optio quisquam saepe non inventore. Odit molestiae velit? Consequatur eum dolores sit sunt voluptatibus ipsa minima non, facilis totam eaque nostrum sapiente mollitia omnis dicta quibusdam aut. Sapiente voluptate ullam facilis, dolore repellendus natus cupiditate inventore vero sunt eum, est laborum temporibus explicabo at, quaerat ullam tempore temporibus, consequuntur laboriosam officia dolorum reiciendis veritatis itaque veniam eum?</p>
    </div>
    <div class="col-sm-4">
        <p>Quidem error voluptatem officiis harum vitae itaque ut a, at minus deleniti saepe ad placeat, nisi aut quis voluptas eum facere corporis.</p>
    </div>
</div>

while the "outer" one renders the full page:

{% extends "base.html" %}
{% load static staticfiles i18n %}

{% block content %}
{% include 'frontend/includes/simple_content2_inner.html' %}
{% endblock content %}