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>Accusantium vel iure tenetur autem quod officiis nemo fugit aliquam eligendi soluta, non tenetur earum esse libero corporis vero, ut modi tenetur vitae impedit iure ea. Nobis rem voluptates, neque delectus tenetur, similique exercitationem repudiandae repellendus quibusdam vel voluptates, fugiat voluptatum distinctio earum ipsum iusto quibusdam non quisquam sapiente sunt. Nostrum quae sunt minima repudiandae debitis voluptatum assumenda delectus velit fugiat, necessitatibus praesentium asperiores at aut maiores?</p>
    </div>
    <div class="col-sm-4">
        <p>Modi similique assumenda nihil distinctio explicabo delectus veritatis velit commodi veniam, numquam laborum tenetur nostrum cupiditate, nam omnis porro explicabo quos repellendus, nam blanditiis animi accusamus unde, voluptates labore distinctio in quaerat eius consectetur delectus vitae.</p>
    </div>
    <div class="col-sm-4">
        <p>Nulla dolores necessitatibus tempore adipisci voluptatibus, exercitationem necessitatibus quas, tempora tenetur quae magnam molestias ut maiores pariatur officia tempore, hic ad ex aut neque nostrum minima voluptatum voluptate numquam harum, asperiores est dolorem reiciendis corporis explicabo? Magnam eius veniam vero culpa dolor recusandae, laudantium repellat aut saepe quasi placeat cum eligendi quisquam a, consectetur unde eligendi fugit qui recusandae eum iste voluptate, magnam obcaecati mollitia labore ipsam asperiores aperiam velit nesciunt ut.</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 %}