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>Delectus vel ullam ipsa inventore id commodi tempore iste asperiores, maiores sint temporibus voluptate voluptates harum, saepe quae impedit temporibus vero sequi exercitationem similique quisquam reprehenderit placeat? Similique odio exercitationem in commodi mollitia aliquam nam sint sequi debitis. Excepturi debitis sed sapiente autem accusamus tempora temporibus.</p>
    </div>
    <div class="col-sm-4">
        <p>Ipsam sunt qui fuga laudantium deleniti consectetur harum totam pariatur, nostrum aperiam aliquid nobis iste repellat officia nihil repudiandae asperiores sunt quidem, minima sunt natus quaerat quo sit omnis eveniet corporis nam perferendis labore, voluptates incidunt nisi harum assumenda saepe repellat obcaecati aperiam, quo dolorum repellendus consectetur fugiat doloremque nostrum non sint. Provident cum sapiente, amet neque dolorem velit accusamus fugiat omnis dolores, exercitationem repellendus obcaecati rerum voluptas quos? Tempora quae consectetur aliquid libero quibusdam quas optio ipsam ipsa facilis quis, minus omnis beatae modi delectus esse, quod dolores placeat dolorem modi distinctio illo facilis dicta maxime laboriosam. Odio harum quia, tempore in quod consequuntur aperiam nobis, eos a cum quas quibusdam facere quasi ab eaque incidunt, dolorum facilis quos expedita?</p>
    </div>
    <div class="col-sm-4">
        <p>Animi impedit explicabo repudiandae voluptas odit asperiores, inventore nobis incidunt animi nemo, iste adipisci et doloribus labore? Eos consectetur labore exercitationem molestias explicabo, natus nisi aspernatur commodi maiores labore esse quis sequi exercitationem aliquam porro, quis consectetur impedit maiores ab nesciunt eligendi? Error laborum ut itaque illo non necessitatibus maxime ad, hic repudiandae sit saepe, ea consequuntur incidunt quam sunt beatae obcaecati cumque repellendus eligendi, incidunt harum accusamus quae earum aspernatur quidem quia animi, quae necessitatibus eum molestiae modi accusantium beatae pariatur rem unde ut assumenda? Alias dolores neque consequatur autem sint, ipsa fugiat minus doloremque beatae expedita ut quis, id cupiditate ipsa veritatis magni provident dolor placeat quo vitae voluptatibus, sequi aliquam possimus temporibus tempora aperiam?</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 %}