diff options
Diffstat (limited to 'ishtar_common/templates')
28 files changed, 978 insertions, 473 deletions
diff --git a/ishtar_common/templates/actions.html b/ishtar_common/templates/actions.html new file mode 100644 index 000000000..bd70ddf15 --- /dev/null +++ b/ishtar_common/templates/actions.html @@ -0,0 +1,26 @@ +<ul class="navbar-nav action-menu justify-content-start"> + {% with MENU.current_section as section_label %} + {% with MENU.current_sections as sections %} + {% include "blocks/action_list.html" %} + {% endwith %}{% endwith %} + + {% if MENU.current_subsections %} + <li class="nav-item d-none d-lg-block"> + <span class="nav-link">></span> + </li> + {% with MENU.current_subsection as section_label %} + {% with MENU.current_subsections as sections %} + {% include "blocks/action_list.html" %} + {% endwith %}{% endwith %} + {% endif %} + + {% if MENU.current_subsubsections %} + <li class="nav-item d-none d-lg-block"> + <span class="nav-link">></span> + </li> + {% with MENU.current_subsubsection as section_label %} + {% with MENU.current_subsubsections as sections %} + {% include "blocks/action_list.html" %} + {% endwith %}{% endwith %} + {% endif %} +</ul> diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html index 75e0e3740..783b1c599 100644 --- a/ishtar_common/templates/base.html +++ b/ishtar_common/templates/base.html @@ -1,35 +1,27 @@ -{% load i18n %}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{LANGUAGE_CODE}}" lang="{{LANGUAGE_CODE}}"> - +{% load i18n compress %}<!doctype html> +<html lang="{{LANGUAGE_CODE}}"> <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="shortcut icon" href="{{STATIC_URL}}/media/images/favicon.png"/> - <title>{% block title %}Ishtar{% if APP_NAME %} - {{APP_NAME}}{%endif%}{% endblock %} - </title> + <title>{% block title %}Ishtar{% if APP_NAME %} - {{APP_NAME}}{%endif%}{% endblock %}</title> + {% compress js %} <script language="javascript" type="text/javascript"> var url_path = "{{URL_PATH}}"; </script> <script language="javascript" type="text/javascript" src="{{JQUERY_URL}}?ver={{VERSION}}"></script> + <script language="javascript" type="text/javascript" src="{{STATIC_URL}}popper.min.js?ver={{VERSION}}"></script> + <script language="javascript" type="text/javascript" src="{{STATIC_URL}}bootstrap/bootstrap.js?ver={{VERSION}}"></script> <script language="javascript" type="text/javascript" src="{{JQUERY_UI_URL}}jquery-ui.js?ver={{VERSION}}"></script> <script language="javascript" type="text/javascript" src="{{JQUERY_UI_URL}}ui/i18n/jquery.ui.datepicker-{{COUNTRY}}.js?ver={{VERSION}}"></script> <script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/chosen/chosen.jquery.min.js?ver={{VERSION}}"></script> - <script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/prettyPhoto/js/jquery.prettyPhoto.js?ver={{VERSION}}"></script> - <script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/i18n/grid.locale-{{COUNTRY}}.js?ver={{VERSION}}"></script> - <script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/jquery.jqGrid.min.js?ver={{VERSION}}"></script> - <script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/grid.tbltogrid.js?ver={{VERSION}}"></script> + {# <script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/prettyPhoto/js/jquery.prettyPhoto.js?ver={{VERSION}}"></script> #} + <script language="javascript" type="text/javascript" + src="{{STATIC_URL}}datatables/datatables.min.js?ver={{VERSION}}"></script> + <script language="javascript" type="text/javascript" src="{{STATIC_URL}}datatables/dataTables.bootstrap4.min.js?ver={{VERSION}}"></script> <script language="javascript" type="text/javascript" src="{{STATIC_URL}}js/ishtar.js?ver={{VERSION}}"></script> - <link type="text/css" href="{{JQUERY_UI_URL}}jquery-ui.css?ver={{VERSION}}" rel="stylesheet" /> - <link type="text/css" href="{{STATIC_URL}}js/chosen/chosen.min.css?ver={{VERSION}}" rel="stylesheet" /> - <link rel="stylesheet" href="{{STATIC_URL}}font-awesome/css/font-awesome.min.css?ver={{VERSION}}" /> - <link rel="stylesheet" href="{{STATIC_URL}}js/prettyPhoto/css/prettyPhoto.css?ver={{VERSION}}" /> - <link rel="stylesheet" href="{{STATIC_URL}}media/ui.jqgrid.css?ver={{VERSION}}" /> - <link rel="stylesheet" href="{{STATIC_URL}}media/style.css?ver={{VERSION}}" /> - {% for url_css in JQGRID_CSS %}<link rel="stylesheet" href="{{url_css}}?ver={{VERSION}}" />{% endfor %} - {% include "blocks/extra_head.html" %} - {% block extra_head %} - {% endblock %} - {% if raw_css %}<style media="screen" type="text/css">{{raw_css|safe}} - </style>{% endif %} + <script language="javascript" type="text/javascript" + src="{{STATIC_URL}}datatables/i18n/{{LANGUAGE_CODE}}.js?ver={{VERSION}}"></script> <script type='text/javascript'> var shortcut_url = '{% url "shortcut-menu" %}'; var get_file_url = '{% url "get-file-shortcut" %}'; @@ -41,79 +33,50 @@ var activate_all_search_msg = "{% trans 'Searches in the shortcut menu deal with all items.' %}"; var activate_own_search_msg = "{% trans 'Searches in the shortcut menu deal with only your items.' %}"; </script> + {% endcompress %} + {% compress css %} + <link rel="stylesheet" href="{{STATIC_URL}}bootstrap/bootstrap.css?ver={{VERSION}}"> + <link rel="stylesheet" href="{{STATIC_URL}}js/chosen/chosen.min.css?ver={{VERSION}}"> + <link rel="stylesheet" href="{{STATIC_URL}}font-awesome/css/font-awesome.min.css?ver={{VERSION}}"> + <link rel="stylesheet" href="{{STATIC_URL}}js/prettyPhoto/css/prettyPhoto.css?ver={{VERSION}}"> + <link rel="stylesheet" + href="{{STATIC_URL}}datatables/datatables.min.css?ver={{VERSION}}"> + <link rel="stylesheet" href="{{STATIC_URL}}datatables/dataTables.bootstrap4.min.css?ver={{VERSION}}"> + <link rel="stylesheet" href="{{STATIC_URL}}media/styles.css?ver={{VERSION}}"> + {% for url_css in JQGRID_CSS %}<link rel="stylesheet" href="{{url_css}}?ver={{VERSION}}">{% endfor %} + {% endcompress %} + {% block extra_head %} + {% endblock %} + {% comment %}{% if raw_css %}<style media="screen" type="text/css"> + {{raw_css |safe}}</style>{% endif %}{% endcomment %} </head> <body{% if current_theme%} id='{{current_theme}}'{%endif%}> - <div id="header"> - {% block header %} - {% if user.is_authenticated %} - {% trans "Logged in" %}: {{ user.username }} - (<a href="{% url 'auth_logout' %}">{% trans "Log out" %}</a> | - <a href="{% url 'auth_password_change' %}">{% trans "Change password" %}</a>) - {% else %} - <strong><a href="{% url 'auth_login' %}">{% trans "Log in" %}</a></strong> - {% endif %} - {% if LANGUAGES|length > 1 %} - <div id="language_form_div"> - <form action="/i18n/setlang/" method="post" id='language_form'> - {% csrf_token %} - {% comment %}<label for='language_selector'>{% trans "Lang" %}{% trans ":"%} </label>{% endcomment %} - <select name="language" id='language_selector'> - <option value="">----------</option> - {% for lang in LANGUAGES %} - <option value="{{ lang.0 }}"{% ifequal LANGUAGE_CODE lang.0 %} selected='selected'{% endifequal %}>{{ lang.1 }}</option> - {% endfor %} - </select> - </form> - </div>{% endif %} - {% endblock %} - </div> - <div class="nav-button ui-state-default ui-corner-all" id="to_bottom_arrow"> - <i class="fa fa-arrow-circle-down" aria-hidden="true"></i> - </div> - <div class="nav-button ui-state-default ui-corner-all" id="to_top_arrow"> - <i class="fa fa-arrow-circle-up" aria-hidden="true"></i> - </div> - <div id="window"></div> - <a href='{% url "start" %}' id="logo"> -{% if APP_NAME %}<p id="app_name">{{APP_NAME}}</p>{%endif%} - </a> - {% if not reminders %}<div id="context_menu"></div> + {% include "navbar.html" %} + {% if not reminders %}<div id="context-menu" class="navbar navbar-expand-lg"></div> {% else %}<fieldset id='reminder'><legend>{% trans "Current items" %}</legend> {% for lbl, value in reminders %} <p><strong class='lbl'>{{lbl}}{% trans ":"%}</strong> <span class='value'>{{value}}</span></p> {% endfor %} </fieldset>{%endif%} - <div id="main_menu"> - <ul> - {% for section in MENU.childs %} - {% if section.available %} - <li id='section-{{section.idx}}'{% if section.css %} class="{{section.css}}"{% endif %}> - {{section.label}} - <ul> - {% for menu_item in section.childs %}{%if menu_item.available%} - {% if menu_item.childs %}<li id='subsection-{{menu_item.idx}}'{% if menu_item.css %} class="{{menu_item.css}}"{% endif %}>{{menu_item.label}} - <ul> - {% for menu_subitem in menu_item.childs %}{% if menu_subitem.available %} - {% url 'action' menu_subitem.idx as item_url %} - <li id='{{menu_subitem.idx}}'{% if item_url in CURRENT_PATH %} class='selected'{% endif %}><a - href='{{item_url}}'>{{menu_subitem.label}}</a></li> - {%endif%}{% endfor %}</ul></li> - {% else %} - {% url 'action' menu_item.idx as item_url %} - <li id='{{menu_item.idx}}' - class="{% if item_url in CURRENT_PATH %}selected{% endif %} {% if menu_item.css %}{{menu_item.css}}{% endif %}"><a href="{{item_url}}">{{menu_item.label}}</a></li> - {%endif%}{% endif %}{% endfor %} - </ul> - </li>{%endif%} - {% endfor %} - </ul> - </div> - <div id="content"> - {% if warnings %} - <ul class="alert">{% for warning in warnings %} - <li>{{warning}}</li>{% endfor %} - </ul> - {% endif %} + <button class="nav-button btn btn-sm btn-secondary" id="to_bottom_arrow"> + <i class="fa fa-arrow-down" aria-hidden="true"></i> + </button> + <button class="nav-button btn btn-sm btn-secondary" id="to_top_arrow"> + <i class="fa fa-arrow-up" aria-hidden="true"></i> + </button> + <div class="container"> + <div id="window_wrapper"> + <div id="window" role="tablist"></div> + </div> + + {% if warnings %}{% for warning in warnings %} + <div class="alert alert-warning alert-dismissible fade show" role="alert"> + {{warning}} + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + {% endfor %}{% endif %} {% block content %}{% endblock %} </div> diff --git a/ishtar_common/templates/blocks/DataTables.html b/ishtar_common/templates/blocks/DataTables.html new file mode 100644 index 000000000..38cd4f298 --- /dev/null +++ b/ishtar_common/templates/blocks/DataTables.html @@ -0,0 +1,287 @@ +{% load i18n %} + +<p class="text-center"> + +<button id='search_{{name}}' class='btn btn-primary btn-block'> + {% trans "Search" %}</button> + +{% if url_new %} +<p><a href="#" onclick="open_window('{{url_new}}');">{{new_message}}</a></p> +{% endif %} + +<h4 class="text-center">{% trans "Search and select an item" %}</h4> + +<div class="alert alert-info" role="alert" id="pinned_search_{{name}}"> + <i class="fa fa-thumb-tack"></i> + <strong>{% trans "Pinned search:" %}</strong> + <em><span id="pinned_search_content_{{name}}"></span></em> +</div> + +<div class="modal fade table-modal-lg" tabindex="-1" role="dialog" + aria-hidden="true" id="modal_grid_{{name}}"> + <div class="modal-dialog full modal-lg"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + <div class="modal-body"> + <div class="current-sheets"></div> + <div class="current-grid"></div> + </div> + </div> + </div> +</div> + +<div id="grid_{{name}}_meta_wrapper"> + <table id='grid_{{name}}' class="display"> + <thead> + <tr> + <th></th> + <th></th>{% for col in col_names %} + <th>{{col}}</th> + {% endfor %}</tr> + </thead> + </table> +</div> + +<div id='foot_{{name}}' class="gridfooter row toolbar"> + <div class='col-md-2'> + <div class="btn-group btn-group-sm" role="group"> + <button type='button' class="btn btn-secondary" data-toggle="modal" + data-target=".table-modal-lg"> + {% trans "Expand table" %} <i class="fa fa-expand" aria-hidden="true"></i> + </button> + </div> + </div> + <div class='col-md-2'> + <div class="btn-group btn-group-sm" role="group" + aria-label="{% trans 'Export'%}"> + {% if source_full or extra_sources %} + <a class="btn btn-secondary" href='{{source}}csv' target='_blank' + title="{% trans 'Export as CSV - ' %}{% trans 'simple'%}">{% trans "Simple CSV" %}</a> + {% if source_full %}<a class='btn btn-secondary' href='{{source_full}}csv' target='_blank' title="{% trans 'Export as CSV - full' %}">{% trans "CSV full" %}</a>{% endif %} + {% for slug, name, extra_source in extra_sources %} + <a class="btn btn-secondary" href='{{extra_source}}csv' target='_blank' title="{% trans 'Export as CSV - ' %}{{name}}">{{name}}</a> + {% endfor %} + {% else %} + <a class="btn btn-secondary" href="{{source}}csv" target="_blank" title="{% trans 'Export as CSV' %}">{% trans "CSV" %}</a> + {% endif %} + </div> + </div> +</div> + +{% if multiple %} +<input type="button" id="add_button_{{name}}" value="{% trans 'Add' %}"/> +<ul id="selectmulti_{{name}}" class="selectmulti"></ul> +{% endif %} + +<input type="hidden" id="hidden_{{name}}" name="{{name}}"/> + +<script type="text/javascript" language='javascript'> +$('#modal_grid_{{name}}').on('show.bs.modal', function (e) { + $('#grid_{{name}}_wrapper').appendTo( + '#modal_grid_{{name}} .modal-body .current-grid'); + $('#window').appendTo( + '#modal_grid_{{name}} .modal-body .current-sheets'); + $('#grid_{{name}}').DataTable().clear().draw() +}); + +$('#modal_grid_{{name}}').on('hide.bs.modal', function (e) { + $('#grid_{{name}}_wrapper').appendTo( + '#grid_{{name}}_meta_wrapper'); + $('#window').appendTo('#window_wrapper'); + $('#grid_{{name}}').DataTable().clear().draw() +}); + + +var query_vars = new Array({{col_idx|safe}}); +var selItems_{{sname}} = new Array(); +jQuery(document).ready(function(){ + jQuery("#search_{{name}}").click(function (){ + if ($("#progress").length > 0){ + $("#progress").show(); + } + var data = ""; + for (idx in query_vars) + { + var key = query_vars[idx]; + var item = jQuery("#id_"+key); + var val = null; + if (item.prop('type') == 'checkbox'){ + if (item.prop('checked')){ + var val = item.val(); + } + } else { + var val = item.val(); + } + if (val){ + if (data) data += "&"; + data += key + "=" + val; + } + } + var mygrid = jQuery("#grid_{{name}}"); + var url = "{{source}}?submited=1&" + data; + var csv_url = "{{source}}csv?submited=1&" + data; + $(".{{sname}}-csv").attr("href", csv_url); + var csv_full_url = "{{source_full}}csv?submited=1&" + data; + $(".{{sname}}-csv-full").attr("href", csv_full_url); + {% for slug, name, extra_source in extra_sources %} + $(".{{slug}}-csv-full").attr("href", '{{extra_source}}csv?submited=1&' + data); + {% endfor %} + + {% comment %} + mygrid.setGridParam({url:url, page:1}); + mygrid.trigger("reloadGrid"); + {% endcomment %} + if ($("#progress").length > 0){ + $("#progress").hide(); + } + return false; + }); + + datatable_options = { + "ajax": { + "url": "{{source}}", + "dataSrc": "rows" + }, + "select": {% if multiple_select %}true{% else %}'single'{% endif %}, + "columns": [ + { "data": "id", "visible": false }, + { "data": "link", "orderable": false },{% for col in extra_cols %} + { "data": "{{col}}", "defaultContent": "-"}{% if not forloop.last %},{% endif %}{% endfor %} + ] + }; + + $.extend(datatable_options, datatables_default); + if (datatables_i18n) datatable_options['language'] = datatables_i18n; + datatable_{{sname}} = jQuery("#grid_{{name}}").DataTable(datatable_options); + +{% comment %} + + jQuery("#grid_{{name}}").jqGrid({ + url:'{{source}}', + datatype: "json", + mtype: 'GET', + colNames:['id', '', {{col_names|safe}}], + colModel:[ + {name:'id', index:'id', hidden:true}, + {name:'link', index:'link', width:30}, + {{extra_cols|safe}} + ], + height: 300, + sortname: '__default__', + viewrecords: true, + sortorder: "asc", + emptyrecords: "{{no_result}}", + loadtext: "{{loading}}", + pager: '#pager_{{name}}', + width: null, + shrinkToFit: false, + rowNum:20, + {% if multiple_select %}multiselect: true,{% endif %} + jsonReader : {repeatitems: false}, + loadError: function (jqXHR, textStatus, errorThrown) { + alert("{% trans "An error as occured during search. Check your query fields." %}"); + }, + beforeProcessing: function(data, status, xhr){ + $('#pinned_search_content_{{name}}').html(''); + for (idx in data){ + if (idx == 'pinned-search' && data[idx] != ''){ + $('#pinned_search_content_{{name}}').html(data[idx]); + } + } + if ($('#pinned_search_content_{{name}}').html()){ + $('#pinned_search_{{name}}').show(); + } else { + $('#pinned_search_{{name}}').hide(); + } + } + }); +{% endcomment %} + +{% if multiple %} + jQuery("#add_button_{{name}}").click(function (){ + var mygrid = jQuery("#grid_{{name}}"); + var idx = mygrid.getGridParam('selrow'); + var lbl_cols = new Array({{multi_cols|safe}}); + var label = ""; + for (var id in lbl_cols){ + if(id == 1){ + label += " ("; + }else if (id > 1){ + label += " ; "; + } + label += mygrid.getCell(idx, lbl_cols[id]); + } + if (id > 0){ + label += ")"; + } + for (id in selItems_{{sname}}){ + if(selItems_{{sname}}[id] == idx){ + return false; + } + } + selItems_{{sname}}.push(idx); + jQuery("#selectmulti_{{name}}").append( + "<li id='selected_{{name}}_"+idx+"'>\ +<a href='#' class='remove' \ + onclick=\"multiRemoveItem(selItems_{{sname}}, '{{name}}', "+ idx +");\ + return false;\" title=\"{{remove}}\">X</a>" + label + "</li>"); + return true; + }); + jQuery("#submit_form").click(function (){ + jQuery("#hidden_{{name}}").val(selItems_{{sname}}); + return true; + }); +{% else %} + jQuery("#submit_form").click(function (){ + var mygrid = jQuery("#grid_{{name}}"); + + var data = datatable_{{sname}}.rows( { selected: true } ).data(); + {% if multiple_select %} + var value = ""; + for (k in data){ + if (k > 0) value += ","; + value += data[k]['id']; + } + {% else %} + var value = data[0]['id']; + {% endif %} + jQuery("#hidden_{{name}}").val(value); + return true; + }); +{% endif %} + +}); + + function get_next_table_id(c_id){ + // var mygrid = jQuery("#grid_{{name}}"); + var has_current_id = false; + + ids = datatable_{{sname}}.column(0).data(); + // ids = mygrid.getDataIDs(); + for (idx in ids){ + if (has_current_id) return ids[idx]; + if (ids[idx] == c_id) has_current_id = true; + } + return false; + } + function get_previous_table_id(c_id){ + // var mygrid = jQuery("#grid_{{name}}"); + var previous_id = 0; + + ids = datatable_{{sname}}.column(0).data(); + //ids = mygrid.getDataIDs(); + for (idx in ids){ + if (ids[idx] == c_id){ + if (previous_id) return previous_id; + return false; + } + previous_id = ids[idx]; + } + return false; + } +</script> + diff --git a/ishtar_common/templates/blocks/JQueryJqGrid.html b/ishtar_common/templates/blocks/JQueryJqGrid.html index 1768ab427..9160ef9b5 100644 --- a/ishtar_common/templates/blocks/JQueryJqGrid.html +++ b/ishtar_common/templates/blocks/JQueryJqGrid.html @@ -1,33 +1,41 @@ {% load i18n %} -<button id='search_{{name}}' class='submit ui-widget-header'>{% trans "Search" %}</button> +<p class="text-center"> + +<button id='search_{{name}}' class='btn btn-primary btn-block'> + {% trans "Search" %}</button> {% if url_new %} <p><a href="#" onclick="open_window('{{url_new}}');">{{new_message}}</a></p> {% endif %} -<h4>{% trans "Search and select an item" %}</h4> +<h4 class="text-center">{% trans "Search and select an item" %}</h4> -<h5 id="pinned_search_{{name}}"> +<div class="alert alert-info" role="alert" id="pinned_search_{{name}}"> <i class="fa fa-thumb-tack"></i> <strong>{% trans "Pinned search:" %}</strong> <em><span id="pinned_search_content_{{name}}"></span></em> -</h5> +</div> <table id='grid_{{name}}' class='jqgrid'></table> <div id='pager_{{name}}'></div> -<div id='foot_{{name}}' class='gridfooter'> - -{% if source_full or extra_sources %} -<a class='badge {{sname}}-csv' href='{{source}}csv' target='_blank' title="{% trans 'Export as CSV' %}">{% trans "CSV" %}</a> -{% if source_full %}<a class='badge {{sname}}-csv-full' href='{{source_full}}csv' target='_blank' title="{% trans 'Export as CSV - full' %}">{% trans "CSV full" %}</a>{% endif %} -{% for slug, name, extra_source in extra_sources %} -<a class='badge {{slug}}-csv-full' href='{{extra_source}}csv' target='_blank' title="{% trans 'Export as CSV - ' %}{{name}}">{{name}}</a> -{% endfor %} -{% else %} -<a class='{{sname}}-csv' href="{{source}}csv" target="_blank" title="{% trans 'Export as CSV' %}">{% trans "CSV" %}</a> -{% endif %} {{encoding}} +<div id='foot_{{name}}' class="gridfooter row toolbar"> + <div class='col-md-2'> + <div class="btn-group btn-group-sm" role="group" + aria-label="{% trans 'Export'%}"> + {% if source_full or extra_sources %} + <a class="btn btn-secondary" href='{{source}}csv' target='_blank' + title="{% trans 'Export as CSV - ' %}{% trans 'simple'%}">{% trans "CSV" %}</a> + {% if source_full %}<a class='btn btn-secondary' href='{{source_full}}csv' target='_blank' title="{% trans 'Export as CSV - full' %}">{% trans "CSV full" %}</a>{% endif %} + {% for slug, name, extra_source in extra_sources %} + <a class="btn btn-secondary" href='{{extra_source}}csv' target='_blank' title="{% trans 'Export as CSV - ' %}{{name}}">{{name}}</a> + {% endfor %} + {% else %} + <a class="btn btn-secondary" href="{{source}}csv" target="_blank" title="{% trans 'Export as CSV' %}">{% trans "CSV" %}</a> + {% endif %} + </div> + </div> </div> {% if multiple %} diff --git a/ishtar_common/templates/blocks/action_list.html b/ishtar_common/templates/blocks/action_list.html new file mode 100644 index 000000000..50a6554c4 --- /dev/null +++ b/ishtar_common/templates/blocks/action_list.html @@ -0,0 +1,12 @@ +<li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" + data-toggle="dropdown" href="#" role="button" aria-haspopup="true" + aria-expanded="false">{{section_label}}</a> + + <div class="dropdown-menu"> + {% for label, url, has_children in sections %} + <a class="dropdown-item{% if has_children%} font-weight-bold{%endif%}" href="{{url}}"> + {{ label }} + </a>{% endfor %} + </div> +</li> diff --git a/ishtar_common/templates/blocks/bs_form_snippet.html b/ishtar_common/templates/blocks/bs_form_snippet.html new file mode 100644 index 000000000..a6997507c --- /dev/null +++ b/ishtar_common/templates/blocks/bs_form_snippet.html @@ -0,0 +1,90 @@ +{% load i18n %} +{% if form.non_field_errors %} +<div class="alert alert-danger" role="alert"> + {{form.non_field_errors}} +</div> +{% endif %} + +{% for hidden in form.hidden_fields %} +{{hidden}} +{% if field.errors %}<div class="invalid-feedback"> + {{ field.errors }} +</div>{% endif %} +{% endfor %} + +{% for field in form.visible_fields %} +{% if field.name == 'pk' %} +{{field}} +{% elif field.name == 'search_vector' and forloop.counter0 == 0 %} + +<div class="form-row"> + <div class="form-group col-lg-10"> + <div class="input-group"> + <span class="input-group-addon"> + <i class="fa fa-search" aria-hidden="true"></i></span> + {{field|safe}} + </div> + {% if field.help_text %} + <small><a data-toggle="collapse" href="#{{field.auto_id}}_help" + aria-expanded="false" aria-controls="{{field.auto_id}}_help"> + {% trans 'help'%}</a></small>{% endif %} + {% if field.errors %} + <div class="invalid-feedback"> + {{ field.errors }} + </div>{% endif %} + </div> + <div class="form-group col-lg"> + <p class="text-right"> + <a class="btn btn-secondary btn-sm" data-toggle="collapse" href="#tail-form" + aria-expanded="false" aria-controls="tail-form"> + {% trans "Advanced search" %}</a> + </p> + </div> + + {% if field.help_text %} + <div class="collapse" id="{{field.auto_id}}_help"> + <div class="card card-body"> + {{field.help_text}} + </div> + </div> + {% endif %} +</div> +{% else %} +{% if search and forloop.counter0 == 1 %} +<div class="collapse" id="tail-form"> + <div class="card card-body"> + <div class="form-row"> +{% endif %} + +{% if not search and forloop.counter0|divisibleby:2 or search and forloop.counter1|divisibleby:2 %} +{% if forloop.counter0 %} + </div>{% endif %} + <div class="form-row"> +{% endif %} + + <div class="form-group col-lg-6"> + {{ field.label_tag }} + {{field|safe}} + {% if field.errors %}<div class="invalid-feedback"> + {{ field.errors }} + </div>{% endif %} + {% if field.help_text %} + <small><a data-toggle="collapse" href="#{{field.auto_id}}_help" + aria-expanded="false" aria-controls="{{field.auto_id}}_help"> + {% trans 'help'%}</a></small> + <div class="collapse" id="{{field.auto_id}}_help"> + <div class="card card-body"> + {{field.help_text}} + </div> + </div> + {% endif %} + </div> +{% if forloop.last %} +{% if search and forloop.counter0 >= 1 %} + </div> + </div> +{% endif %} +</div> +{% endif %} +{% endif %} +{% endfor %} diff --git a/ishtar_common/templates/blocks/form_snippet.html b/ishtar_common/templates/blocks/table_form_snippet.html index 5ee88e25f..5ee88e25f 100644 --- a/ishtar_common/templates/blocks/form_snippet.html +++ b/ishtar_common/templates/blocks/table_form_snippet.html diff --git a/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html b/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html index e6ce31c25..78126a240 100644 --- a/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html +++ b/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html @@ -1,19 +1,21 @@ {% load i18n link_to_window %} {% if item.history_creator.ishtaruser.person %} -<li><label>{% trans "Creation" context "Sheet" %}</label> - <span class='value'> +<div class="col-12 col-md-6 col-lg-4 d-flex flex-wrap row"> + <dt class="col-5">{% trans "Creation" context "Sheet" %}</dt> + <dd class="col-7"> {{item.history_creator.ishtaruser.person}} {{item.history_creator.ishtaruser.person|link_to_window}} <br/> - <small><em>{{item.history_creation_date|date:"DATETIME_FORMAT"}}</em></small> - </span> -</li> + <small class="text-muted">{{item.history_creation_date|date:"DATETIME_FORMAT"}}</small> + </dd> +</div> {% endif %} {% if item.history_creation_date != item.last_edition_date %} -<li><label>{% trans "Modification" context "Sheet" %}</label> - <span class='value'> +<div class="col-12 col-md-6 col-lg-4 d-flex flex-wrap row"> + <dt class="col-5">{% trans "Modification" context "Sheet" %}</dt> + <dd class='col-7'> {{item.history_modifier.ishtaruser.person}} {{item.history_modifier.ishtaruser.person|link_to_window}} <br/> - <small><em>{% firstof item.history_date|date:"DATETIME_FORMAT" item.history.all.0.history_date|date:"DATETIME_FORMAT" %}</em></small> - </span> -</li> + <small class="text-muted">{% firstof item.history_date|date:"DATETIME_FORMAT" item.history.all.0.history_date|date:"DATETIME_FORMAT" %}</small> + </dd> +</div> {% endif %} diff --git a/ishtar_common/templates/ishtar/blocks/sheet_json.html b/ishtar_common/templates/ishtar/blocks/sheet_json.html index 31e6acb84..6aaf4bae7 100644 --- a/ishtar_common/templates/ishtar/blocks/sheet_json.html +++ b/ishtar_common/templates/ishtar/blocks/sheet_json.html @@ -4,8 +4,8 @@ <h3>{{json_section}}</h3> {% endif %} {% for label, value in json_fields %} -{% if forloop.first %}<ul class='form-flex'>{% endif %} - {% field_li label value %} -{% if forloop.last %}</ul>{% endif %} +{% if forloop.first %}<div class='row'>{% endif %} + {% field_flex label value %} +{% if forloop.last %}</div>{% endif %} {% endfor %} {% endfor %} diff --git a/ishtar_common/templates/ishtar/blocks/shortcut_menu.html b/ishtar_common/templates/ishtar/blocks/shortcut_menu.html index 67f91dfea..5a811ddf0 100644 --- a/ishtar_common/templates/ishtar/blocks/shortcut_menu.html +++ b/ishtar_common/templates/ishtar/blocks/shortcut_menu.html @@ -1,42 +1,45 @@ {% load i18n %} {% if current_menu %} -<form method="post" action="{% url 'update-current-item' %}"> -<fieldset id="shortcut-menu"> -<span class="fa-stack short-menu-close"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-times fa-stack-1x fa-inverse"></i> -</span> -<span class="fa-stack short-menu-open"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-plus fa-stack-1x fa-inverse"></i> -</span> -<div class="short-menu-buttons btn-group" role="group"> - <button type="button" class="btn btn-selected" id='short-menu-simple' title="{% trans 'Simple menu limited to your own items. Be careful only the last 100 items are displayed.' %}">{% trans "simple" %}</button> - <button type="button" class="btn" id='short-menu-advanced' title="{% trans 'Advanced menu' %}">{% trans "advanced" %}</button> +<div class="nav-item dropdown navbar-expand-lg navbar-collapse justify-content-end"> + <ul class="navbar-nav"> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" data-toggle="dropdown" + href="#" role="button" aria-haspopup="true"> + {% trans "Default selection" %} + <i class="icon fa fa-thumb-tack fa-2x" aria-hidden="true" title="{% trans 'Pin an item in order to constrain default searches with this item. By default only your items are displayed. New created and modified items are auto-pin.' %}"></i> + </a> + <div id="shortcut-menu" class="dropdown-menu dropdown-menu-right"> + <form method="post" action="{% url 'update-current-item' %}"> + + <div class="short-menu-buttons btn-group" role="group"> + <button type="button" class="btn btn-selected" id='short-menu-simple' title="{% trans 'Simple menu limited to your own items. Be careful only the last 100 items are displayed.' %}">{% trans "simple" %}</button> + <button type="button" class="btn" id='short-menu-advanced' title="{% trans 'Advanced menu' %}">{% trans "advanced" %}</button> + </div> + <div> + <table id='current_items'> + {% for lbl, model_name, main_cls, items in current_menu %} + <tr> + <td><label for="current_{{model_name}}">{{lbl}}</label></td> + <td> + <select class='{{main_cls}} chosen-select' id='current_{{model_name}}'> + <option class='normal' value=''>--</option> + {% for val, label, selected, cls in items %}<option{% if cls %} class='{{cls}}'{% endif %} value='{{val}}'{% if selected %} selected="selected"{% endif %}>{% ifequal cls 'basket' %} {% endifequal %}{% ifequal cls 'green' %} {% endifequal %}{% ifequal cls 'orange' %} {% endifequal %}{% ifequal cls 'red' %} {% endifequal %}{{label}}</option> + {% endfor %}</select> + </td>{% with 'show-'|add:model_name as model_url%} + <td><a href='#' onclick='load_current_window("{% url model_url 0 %}", "{{model_name}}");' class='display_details'><i class="fa fa-info-circle" aria-hidden="true"></i></a></td> + <td><span class='pin-action' onclick='$.get("{% url 'unpin' model_name %}", function(){load_shortcut_menu();});' title="{% trans 'Unpin' %}"> + <i class="fa fa-times"></i> + </span></td> + {% endwith %} + </tr> + {% endfor %} + </table> + </div> + </form> + </div> + </li> + </ul> </div> -<div> -<i class="icon fa fa-thumb-tack fa-2x" aria-hidden="true" title="{% trans 'Pin an item in order to constrain default searches with this item. By default only your items are displayed. New created and modified items are auto-pin.' %}"></i> -<table id='current_items'> -{% for lbl, model_name, main_cls, items in current_menu %} -<tr> - <td><label for="current_{{model_name}}">{{lbl}}</label></td> - <td> - <select class='{{main_cls}} chosen-select' id='current_{{model_name}}'> - <option class='normal' value=''>--</option> - {% for val, label, selected, cls in items %}<option{% if cls %} class='{{cls}}'{% endif %} value='{{val}}'{% if selected %} selected="selected"{% endif %}>{% ifequal cls 'basket' %} {% endifequal %}{% ifequal cls 'green' %} {% endifequal %}{% ifequal cls 'orange' %} {% endifequal %}{% ifequal cls 'red' %} {% endifequal %}{{label}}</option> - {% endfor %}</select> - </td>{% with 'show-'|add:model_name as model_url%} - <td><a href='#' onclick='load_current_window("{% url model_url 0 %}", "{{model_name}}");' class='display_details'><i class="fa fa-info-circle" aria-hidden="true"></i></a></td> - <td><span class='pin-action' onclick='$.get("{% url 'unpin' model_name %}", function(){load_shortcut_menu();});' title="{% trans 'Unpin' %}"> - <i class="fa fa-times"></i> - </span></td> - {% endwith %} -</tr> -{% endfor %} -</table> -</div> -</fieldset> -</form> <script type='text/javascript'>var advanced_menu = false; {% if SHORTCUT_SHOW == 'off' %}var shortcut_menu_hide = true; {% else %}var shortcut_menu_hide = false;{% endif %} diff --git a/ishtar_common/templates/ishtar/blocks/window_field.html b/ishtar_common/templates/ishtar/blocks/window_field.html index b52ed78ee..097ae3fd2 100644 --- a/ishtar_common/templates/ishtar/blocks/window_field.html +++ b/ishtar_common/templates/ishtar/blocks/window_field.html @@ -1,3 +1,6 @@ -{% load i18n %}{% if data %}{% if li %}<li>{% else %}<p>{% endif %}<label>{% trans caption %}</label> -<span class='value'>{{pre_data|safe}}{{data|linebreaksbr}}{{post_data|safe}}</span>{% if li %}</li>{% else %}</p>{% endif %} +{% load i18n %}{% if data %}{% if li %}<li>{% elif flex %} + <div class="col-12 col-md-6 col-lg-4 d-flex flex-wrap">{% else %}<p>{% endif %} + <label>{% trans caption %}</label> + <span class='value'>{{pre_data|safe}}{{data|linebreaksbr}}{{post_data|safe }}</span> + {% if li %}</li>{% elif flex %}</div>{% else %}</p>{% endif %} {% endif %} diff --git a/ishtar_common/templates/ishtar/blocks/window_field_flex.html b/ishtar_common/templates/ishtar/blocks/window_field_flex.html new file mode 100644 index 000000000..add2a5520 --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/window_field_flex.html @@ -0,0 +1,6 @@ +{% load i18n %}{% if data %} + <dl class="col-12 {% if size == 2 %}col-lg-6{% else %}col-md-6 col-lg-4{% endif %} d-flex flex-wrap row"> + <dt class="col-5">{% trans caption %}</dt> + <dd class="col-7">{{pre_data|safe}}{{data|linebreaksbr}}{{post_data|safe }}</dd> + </dl> +{% endif %} diff --git a/ishtar_common/templates/ishtar/blocks/window_field_flex_detail.html b/ishtar_common/templates/ishtar/blocks/window_field_flex_detail.html new file mode 100644 index 000000000..5968f9afa --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/window_field_flex_detail.html @@ -0,0 +1,6 @@ +{% load i18n %}{% if item %} +<dl class="col-12 col-md-6 col-lg-4 d-flex flex-wrap row"> + <dt class="col-5">{% trans caption %}</dt> + <dd class="col-7">{{item}}{{link}}</dd> +</dl> +{% endif %} diff --git a/ishtar_common/templates/ishtar/blocks/window_field_flex_full.html b/ishtar_common/templates/ishtar/blocks/window_field_flex_full.html new file mode 100644 index 000000000..f44cdc6fd --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/window_field_flex_full.html @@ -0,0 +1,6 @@ +{% load i18n %}{% if data %} + <dl class="col-12 row"> + <dt class="col-12">{% trans caption %}</dt> + <dd class="col-12">{{pre_data|safe}}{{data|linebreaksbr}}{{post_data|safe }}</dd> + </dl> +{% endif %} diff --git a/ishtar_common/templates/ishtar/blocks/window_field_flex_multiple.html b/ishtar_common/templates/ishtar/blocks/window_field_flex_multiple.html new file mode 100644 index 000000000..60f6361b7 --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/window_field_flex_multiple.html @@ -0,0 +1,8 @@ +{% load i18n %}{% if data.count %} +<dl class="col-12 col-md-6 col-lg-4 d-flex flex-wrap row"> + <dt class="col-5">{% trans caption %}</dt> + <dd class="col-7">{% for d in data.all %} + {% if forloop.counter0 %} ; {% endif %}{{ d }} + {% endfor %}</dd> +</dl> +{% endif %} diff --git a/ishtar_common/templates/ishtar/blocks/window_field_flex_url.html b/ishtar_common/templates/ishtar/blocks/window_field_flex_url.html new file mode 100644 index 000000000..59f612bc6 --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/window_field_flex_url.html @@ -0,0 +1,7 @@ +{% load i18n %}{% if link %} +<div class="col-12 col-md-6 col-lg-4 d-flex flex-wrap row"> + <dt class="col-5">{% trans caption %}</dt> + <dd class="col-7"> + <a target="_blank" href='{{link|safe}}'>{% if link_name %}{{link_name}}{% else %}{{link}}{% endif %}</a> + </dd> +{% endif%} diff --git a/ishtar_common/templates/ishtar/blocks/window_nav.html b/ishtar_common/templates/ishtar/blocks/window_nav.html index f212ebff6..89263d0de 100644 --- a/ishtar_common/templates/ishtar/blocks/window_nav.html +++ b/ishtar_common/templates/ishtar/blocks/window_nav.html @@ -1,56 +1,62 @@ {% load i18n %} -{% if previous or next %} - <div class='tool-right'> - {% if previous %} - <a class='history-nav' href="#" onclick='load_window("{% url histo_url item.pk previous|date:"c"%}");$("#{{window_id}}").hide();return false;' title="{%trans 'Previous version'%}"> - <span class="fa-stack"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-step-backward fa-stack-1x fa-inverse"></i> - </span> - <br/>{{previous}} - </a> - {% else %} - <span class='history-nav'> </span> - {% endif %} - {% if next %} - <a class='history-nav' title="{% trans 'Restore this version' %}" href="#" onclick='if(confirm("{%trans 'Are you sure to restore to this version? All changes made since this version will be lost.' %}")){load_url("{% url revert_url item.pk item.history_date|date:"c"%}");closeAllWindows();load_window("{% url show_url item.pk None %}");}'> - <span class="fa-stack fa-lg"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-history fa-stack-1x fa-inverse"></i> - </span> - <br/>{% trans "Restore" %} - </a> - <a class='history-nav' href="#" onclick='load_window("{% url histo_url item.pk next|date:"c" %}");$("#{{window_id}}").hide();return false;' title="{%trans 'Next version'%}"> - <span class="fa-stack"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-step-forward fa-stack-1x fa-inverse"></i> - </span> - <br/>{{next}} - </a> - {% else %} - <span class='history-nav'> </span> - <span class='history-nav'> </span> - {% endif %} +<div class="row toolbar"> + {% if previous or next %} + <div class='col-md-2'> + <div class="btn-group btn-group-sm" role="group" aria-label="{% trans 'History'%}"> + {% if previous %} + <button type="button" class="btn btn-secondary" + data-toggle="tooltip" data-placement="bottom" + title="{{previous}}" + onclick='load_window("{% url histo_url item.pk previous|date:"c"%}");$("#{{window_id}}").hide();return false;'> + <i class="fa fa-step-backward"></i> + </button> + {% endif %} + {% if next %} + <button type="button" class="btn btn-secondary" + data-toggle="tooltip" data-placement="bottom" + onclick='if(confirm("{%trans 'Are you sure to restore to this version? All changes made since this version will be lost.' %}")){load_url("{% url revert_url item.pk item.history_date|date:"c"%}");closeAllWindows();load_window("{% url show_url item.pk None %}");}' + title="{% trans 'Restore this version' %}"> + <i class="fa fa-history"></i> + </button> + <button type="button" class="btn btn-secondary" + data-toggle="tooltip" data-placement="bottom" + onclick='load_window("{% url histo_url item.pk next|date:"c" %}");$("#{{window_id}}").hide();return false;' + title="{{next}}"> + <i class="fa fa-step-forward"></i> + </button> + {% endif %} + </div> </div> -{% endif %} -<div class='tool-left'> + <div class='offset-md-6 col-md-4 text-right'> + {% else %} + <div class='offset-md-8 col-md-4 text-right'> + {% endif %} + <div class="btn-group btn-group-sm" role="group" aria-label="{% trans 'Actions' %}"> {% block extra_actions %}{% endblock %} - {% if modify_url %}<a href='{% url modify_url item.pk %}' title="{% trans 'Modify' %}"> - <span class="fa-stack fa-lg"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-pencil fa-stack-1x fa-inverse"></i> - </span> - </a>{% endif %} - {% if pin_action and item.SLUG %} - <span class='pin-action' onclick='$.get("{% url 'pin' item.SLUG item.pk %}", function(){load_shortcut_menu(); display_info("{% trans 'Item pined in your shortcut menu.' %}")});' title="{% trans 'Pin' %}"> - <span class="fa-stack fa-lg"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-thumb-tack fa-stack-1x fa-inverse"></i> - </span> - </span>{% endif %} - <a class='badge' href='{% url show_url item.pk "odt" %}' title='{% trans "Export as OpenOffice.org file"%}'>ODT</a> <a class='badge' href='{% url show_url item.pk "pdf" %}' title='{% trans "Export as PDF file"%}'>PDF</a> + {% if modify_url %} + <a class="btn btn-secondary" href='{% url modify_url item.pk %}' + title="{% trans 'Modify' %}"> + <i class="fa fa-pencil"></i> + </a> + {% endif %} + {% if pin_action and item.SLUG %} + <a class="btn btn-secondary" href="#" class='pin-action' + onclick='$.get("{% url "pin" item.SLUG item.pk %}", function(){load_shortcut_menu(); display_info("{% trans 'Item pined in your shortcut menu.' %}")});' title="{% trans 'Pin' %}"> + <i class="fa fa-thumb-tack"></i> + </a> + {% endif %} + <a class="btn btn-secondary" href='{% url show_url item.pk "odt" %}' + title='{% trans "Export as OpenOffice.org file"%}'> + ODT <i class="fa fa-file-word-o" aria-hidden="true"></i> + <a class="btn btn-secondary" href='{% url show_url item.pk "pdf" %}' + title='{% trans "Export as PDF file"%}'> + PDF <i class="fa fa-file-pdf-o" aria-hidden="true"></i> + </a> + </div> + </div> </div> -<hr class='clear'> {% if next %} - <p class='info-box'><i class="fa fa-info-circle" aria-hidden="true"></i> <em>{% trans "Relation between items are not historized." %}</em></p> +<div class="alert alert-warning" role="alert"> + {% trans "Relation between items are not historized." %} +</div> {% endif %} diff --git a/ishtar_common/templates/ishtar/blocks/window_tables/dynamic_documents.html b/ishtar_common/templates/ishtar/blocks/window_tables/dynamic_documents.html index 891cd0f6f..e10390915 100644 --- a/ishtar_common/templates/ishtar/blocks/window_tables/dynamic_documents.html +++ b/ishtar_common/templates/ishtar/blocks/window_tables/dynamic_documents.html @@ -1,23 +1,95 @@ {% load i18n %} <h4>{{caption}}</h4> -<table id='grid_{{name}}' class='jqgrid'></table> -<div id='pager_{{name}}'></div> - -<div id='foot_{{name}}' class='gridfooter'> -{% if source_full %} -<a class="badge" href='{{simple_source}}csv{{ source_attrs|safe }}' target='_blank' title="{% trans 'Export as CSV' %}">{% trans "CSV" %}</a> -<a class="badge" href='{{source_full}}csv{{ source_attrs|safe }}' target='_blank' title="{% trans 'Export as CSV - full' %}">{% trans "CSV full" %}</a> -{% else %} -<a class="badge" href="{{simple_source}}csv{{ source_attrs|safe }}" target="_blank" title="{% trans 'Export as CSV' %}">CSV</a> -{% endif %} {{encoding}} + +<div class="modal fade table-modal-lg" tabindex="-1" role="dialog" + aria-hidden="true" id="modal_grid_{{name}}"> + <div class="modal-dialog full modal-lg"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + <div class="modal-body"> + <div class="current-sheets"></div> + <div class="current-grid"></div> + </div> + </div> + </div> +</div> + +<div id="grid_{{name}}_meta_wrapper"> + <table id='grid_{{name}}' class="display"> + <thead> + <tr> + <th></th> + <th></th>{% for col in col_names %} + <th>{{col}}</th> + {% endfor %}</tr> + </thead> + </table> +</div> + +<div id='foot_{{name}}' class="gridfooter row toolbar"> + <div class='col-md-2'> + <div class="btn-group btn-group-sm" role="group"> + <button class="btn btn-secondary" data-toggle="modal" + data-target=".table-modal-lg"> + {% trans "Expand table" %} <i class="fa fa-expand" aria-hidden="true"></i> + </button> + </div> + </div> + <div class='col-md-2'> + <div class="btn-group btn-group-sm" role="group" + aria-label="{% trans 'Export'%}"> + {% if source_full %} + <a class="btn btn-secondary" href='{{simple_source}}csv{{ source_attrs|safe }}' target='_blank' title="{% trans 'Export as CSV' %}">{% trans "CSV" %}</a> + <a class="btn btn-secondary" href='{{source_full}}csv{{ source_attrs|safe }}' target='_blank' title="{% trans 'Export as CSV - full' %}">{% trans "CSV full" %}</a> + {% else %} + <a class="btn btn-secondary" href="{{simple_source}}csv{{ source_attrs|safe }}" target="_blank" title="{% trans 'Export as CSV' %}">CSV</a> + {% endif %} + </div> + </div> +</div> + +<div class="row toolbar justify-content-center"> </div> <script type="text/javascript" language='javascript'> setTimeout( function(){ - $("#grid_{{name}}").jqGrid({ + datatable_options = { + "ajax": { + "url": "{{source}}", + "dataSrc": "rows" + }, + "columns": [ + { "data": "id", "visible": false }, + { "data": "link", "orderable": false },{% for col in extra_cols %} + { "data": "{{col}}", "defaultContent": "-"}{% if not forloop.last %},{% endif %}{% endfor %} + ] + }; + $.extend(datatable_options, datatables_default); + if (datatables_i18n) datatable_options['language'] = datatables_i18n; + + datatable_{{sname}} = jQuery("#grid_{{name}}").DataTable(datatable_options); + + $('#modal_grid_{{name}}').on('show.bs.modal', function (e) { + $('#grid_{{name}}_wrapper').appendTo( + '#modal_grid_{{name}} .modal-body .current-grid'); + $('#grid_{{name}}').DataTable().clear().draw() + }); + + $('#modal_grid_{{name}}').on('hide.bs.modal', function (e) { + $('#grid_{{name}}_wrapper').appendTo( + '#grid_{{name}}_meta_wrapper'); + $('#grid_{{name}}').DataTable().clear().draw() + }); + + {% comment %} + { url:'{{source|safe}}', datatype: "json", mtype: 'GET', @@ -42,6 +114,7 @@ setTimeout( } }); {% if large %}jQuery("#grid_{{name}}").jqGrid('setGridHeight', 272);{% endif %} + {% endcomment %} }, 200); </script> diff --git a/ishtar_common/templates/ishtar/blocks/wizard_breadcrumb.html b/ishtar_common/templates/ishtar/blocks/wizard_breadcrumb.html new file mode 100644 index 000000000..79bca71f1 --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/wizard_breadcrumb.html @@ -0,0 +1,21 @@ +<form action="." method="post">{% csrf_token %} + <nav aria-label="breadcrumb" role="navigation"> + <ol class="breadcrumb"> + {% for step in previous_steps %} + <li class="breadcrumb-item"> + <button class='change_step' name="form_prev_step" + value="{{forloop.counter0}}">{{step}}</button> + </li> + {% endfor %} + <li class="breadcrumb-item active"> + <a href='#'>{{current_step_label}}</a> + </li> + {% for step in next_steps %} + <li class="breadcrumb-item"> + <button class='change_step' name="form_prev_step" + value="{{forloop.counter|add:previous_step_counter}}">{{step}}</button> + </li> + {% endfor %} + </ol> + </nav> +</form> diff --git a/ishtar_common/templates/ishtar/sheet.html b/ishtar_common/templates/ishtar/sheet.html index bfefd5eb6..4f118f2f9 100644 --- a/ishtar_common/templates/ishtar/sheet.html +++ b/ishtar_common/templates/ishtar/sheet.html @@ -12,68 +12,86 @@ </head> <body> {% endblock %} -<div class="sheet" id='{{window_id}}'> -{% block head_sheet %} -<script type="text/javascript">var last_window='{{window_id}}';</script> -<div class="head"> + <div class="card sheet" id="{{window_id}}"> + <div class="card-header" data-sheet-id="{{sheet_id}}" role="tab" id='head-{{window_id}}'> + <div class="row"> + <div class="col"> + <h5 class="mb-0"> + <a data-toggle="collapse" href="#collapse-{{window_id}}" aria-expanded="true" + aria-controls="collapse-{{window_id}}"> + {% block head_title %}{% endblock %} + </a> + </h5> + </div> + <div class='col text-center'> + <a href='#' class='previous_page'> + <span class="fa-stack"> + <i class="fa fa-circle fa-stack-2x"></i> + <i class="fa fa-arrow-left fa-stack-1x fa-inverse"></i> + </span> + </a> + <a href='#' class='next_page'> + <span class="fa-stack"> + <i class="fa fa-circle fa-stack-2x"></i> + <i class="fa fa-arrow-right fa-stack-1x fa-inverse"></i> + </span> + </a> + </div> + <div class='col text-right'> + <a href='#' onclick='$("#{{window_id}}").hide()' title="{% trans 'Close' %}"> + <span class="fa-stack"> + <i class="fa fa-circle fa-stack-2x"></i> + <i class="fa fa-times fa-stack-1x fa-inverse"></i> + </span> + </a> + {% comment %} + <a href='#' onclick='closeAllWindows();' title="{% trans "Close all windows" %}"> + <span class="fa-stack"> + <i class="fa fa-files-o fa-stack-2x"></i> + <i class="fa fa-circle fa-stack-15x"></i> + <i class="fa fa-times fa-stack-1x fa-inverse"></i> + </span> + </a> + {% endcomment %} + </div> + </div> + {% block header_title %}{% endblock %} + </div> -<a href='#' class='previous_page'> -<span class="fa-stack fa-lg"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-arrow-left fa-stack-1x fa-inverse"></i> -</span> -</a> -<div class='close-buttons'> -<a href='#' onclick='$("#{{window_id}}").hide("slow")' title="{% trans 'Close' %}"> -<span class="fa-stack"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-times fa-stack-1x fa-inverse"></i> -</span> -</a> -<a href='#' onclick='closeAllWindows();' title="{% trans "Close all windows" %}"> -<span class="fa-stack"> - <i class="fa fa-files-o fa-stack-2x"></i> - <i class="fa fa-circle fa-stack-15x"></i> - <i class="fa fa-times fa-stack-1x fa-inverse"></i> -</span> -</a> -</div> -<a href='#' class='next_page'> -<span class="fa-stack fa-lg"> - <i class="fa fa-circle fa-stack-2x"></i> - <i class="fa fa-arrow-right fa-stack-1x fa-inverse"></i> -</span> -</a> - -<h1>{% block head_title %}{% endblock %}</h1> -</div> + <div id="collapse-{{window_id}}" class="collapse show" role="tabpanel" + aria-labelledby="heading-{{window_id}}" data-parent="#window"> + {% block toolbar %}{% endblock %} + <div class="card-body"> + {% block head_sheet %} + <script type="text/javascript"> + var last_window='{{window_id}}'; -<script type="text/javascript" language='javascript'> -jQuery(document).ready(function(){ - if (! get_next_table_id({{item.pk}})){ - jQuery('.next_page').hide(); - } - if (! get_previous_table_id({{item.pk}})){ - jQuery('.previous_page').hide(); - } - jQuery(".next_page").click(function() { - load_window("{{current_window_url}}" + get_next_table_id({{item.pk}}) + "/", - '', function(){$("#{{window_id}}").hide();}); - }); - jQuery(".previous_page").click(function() { - load_window("{{current_window_url}}" + get_previous_table_id({{item.pk}}) + "/", - '', function(){$("#{{window_id}}").hide();}); - }); -}); -</script> -{% endblock %} -{% block header_title %}{% endblock %} -<div class="body"> -{% block toolbar %}{% endblock %} -{% block content %} -{% endblock %} -</div> + jQuery(document).ready(function(){ + if (! get_next_table_id({{item.pk}})){ + jQuery('.next_page').hide(); + } + if (! get_previous_table_id({{item.pk}})){ + jQuery('.previous_page').hide(); + } + jQuery(".next_page").click(function() { + load_window("{{current_window_url}}" + get_next_table_id({{item.pk}}) + "/", + '', function(){$("#{{window_id}}").remove();}); + }); + jQuery(".previous_page").click(function() { + load_window("{{current_window_url}}" + get_previous_table_id({{item.pk}}) + "/", + '', function(){$("#{{window_id}}").remove();}); + }); + }); + </script> + {% endblock %} + <div class="body"> + {% block content %} + {% endblock %} + </div> + </div> + </div> + </div> </div> {%block main_foot%} </body> diff --git a/ishtar_common/templates/ishtar/wizard/confirm_wizard.html b/ishtar_common/templates/ishtar/wizard/confirm_wizard.html index 7339af9a8..034d6e21a 100644 --- a/ishtar_common/templates/ishtar/wizard/confirm_wizard.html +++ b/ishtar_common/templates/ishtar/wizard/confirm_wizard.html @@ -3,14 +3,9 @@ {% load range %} {% block content %} <h2>{{wizard_label}}</h2> -<form action="." method="post">{% csrf_token %} -<ul id='form_path'> -{% for step in previous_steps %} - <li><button name="form_prev_step" value="{{forloop.counter0}}">{{step}}</button></li> -{% endfor %} - <li class='current'><a href='#'>{{current_step_label}}</a></li> -</ul> -</form> + +{% include "ishtar/blocks/wizard_breadcrumb.html" %} + <form action="." method="post">{% csrf_token %} <div class='form'> {% block "warning_informations" %}{% endblock %} diff --git a/ishtar_common/templates/ishtar/wizard/default_wizard.html b/ishtar_common/templates/ishtar/wizard/default_wizard.html index 19076b0de..7ba87c44d 100644 --- a/ishtar_common/templates/ishtar/wizard/default_wizard.html +++ b/ishtar_common/templates/ishtar/wizard/default_wizard.html @@ -5,18 +5,10 @@ {% endblock %} {% block content %} {% block wizard_head %} -<h2>{{wizard_label}}</h2> -<form action="." method="post">{% csrf_token %} -<ul id='form_path'> -{% for step in previous_steps %} - <li><button class='change_step' name="form_prev_step" value="{{forloop.counter0}}">{{step}}</button></li> -{% endfor %} - <li class='current'><a href='#'>{{current_step_label}}</a></li> -{% for step in next_steps %} - <li><button class='change_step' name="form_prev_step" value="{{forloop.counter|add:previous_step_counter}}">{{step}}</button></li> -{% endfor %} -</ul> -</form> +<h3>{{wizard_label}}</h3> + +{% include "ishtar/blocks/wizard_breadcrumb.html" %} + {% endblock %} {% block wizard_form %} <form action="." method="post" name='wizard'{% if wizard.form.file_upload %} enctype="multipart/form-data"{% endif %}>{% csrf_token %} @@ -31,14 +23,12 @@ <table class='formset'> {%if wizard.form.non_form_errors%}<tr class='error'><th colspan='2'>{{wizard.form.non_form_errors}}</th></tr>{%endif%} {% for formsetform in wizard.form.forms %} - {% table_form formsetform %} + {% bs_form formsetform %} {% endfor %} <tr class='modify'><td colspan="2"><button name="formset_modify" value="{{wizard.steps.current}}">{% trans "Add/Modify" %}</button></td></tr></li> </table> {% else %} -{% if not is_search %}<table>{% endif %} -{% table_form wizard.form %} -{% if not is_search %}</table>{% endif %} + {% bs_form wizard.form %} {% endif %} {% endblock %} <input type="hidden" name="{{ step_field }}" value="{{ step0 }}" /> diff --git a/ishtar_common/templates/ishtar/wizard/search.html b/ishtar_common/templates/ishtar/wizard/search.html index e5066cf87..da7955c26 100644 --- a/ishtar_common/templates/ishtar/wizard/search.html +++ b/ishtar_common/templates/ishtar/wizard/search.html @@ -4,10 +4,18 @@ {{wizard.form.media}} {% endblock %} {% block content %} -<h2>{{wizard_label}}</h2> -<ul id='form_path'> - <li class='current'><a href='#'>{{current_step.form_label}}</a></li> -</ul> +<h3>{{wizard_label}}</h3> + +{% comment %} +<nav aria-label="breadcrumb" role="navigation"> + <ol class="breadcrumb"> + <li class="breadcrumb-item active"> + <a href='#'>{{current_step.form_label}}</a> + </li> + </ol> +</nav> +{% endcomment %} + {% if wizard.form.forms %} <div class='form'> <div class='top_button'><input type="submit" id="submit_form" value="{% trans "Validate" %}"/></div> @@ -20,7 +28,7 @@ <tr class='modify'><td colspan="2"><button name="formset_modify" value="{{wizard.steps.current}}">{% trans "Add/Modify" %}</button></td></tr></li> </table> {% else %} -<div class='form'> +<div class='form search'> {{ wizard.form.as_p }} </div> {% endif %} diff --git a/ishtar_common/templates/ishtar/wizard/validation_bar.html b/ishtar_common/templates/ishtar/wizard/validation_bar.html index b99b9e689..0a30fb7e1 100644 --- a/ishtar_common/templates/ishtar/wizard/validation_bar.html +++ b/ishtar_common/templates/ishtar/wizard/validation_bar.html @@ -1,8 +1,24 @@ {% load i18n %} -<div id='validation-bar'> - <input type="submit" id="submit_form" name='validate' value="{% trans 'Validate' %}"/> +<div id='validation-bar' class="row text-center"> + <div class="col-sm"> + <button type="submit" id="submit_form" name='validate' + value="validate" class="btn btn-success"> + {% trans 'Validate' %} + </button> + </div> {% if last_step_is_available and next_steps %} - <input type="submit" id="submit_end_form" name='validate_and_end' value="{% trans 'Validate and end' %}"/> + <div class="col-sm"> + <button type="submit" id="submit_end_form" name='validate_and_end' + value="validate_and_end" class="btn btn-success"> + {% trans 'Validate and end' %} + </button> + </div> {% endif %} - <a href="{% url 'reset_wizards' %}" id="reset_wizards" class='button'>{% trans "Cancel" %}</a> + <div class="col-sm"> + <a href="{% url 'reset_wizards' %}" id="reset_wizards"> + <button type="button" class="btn btn-secondary"> + {% trans "Cancel" %} + </button> + </a> + </div> </div> diff --git a/ishtar_common/templates/navbar.html b/ishtar_common/templates/navbar.html new file mode 100644 index 000000000..0f6036a6c --- /dev/null +++ b/ishtar_common/templates/navbar.html @@ -0,0 +1,59 @@ +{% load i18n %} +<header class="navbar navbar-expand-lg navbar-dark bg-dark"> + {% block header %} + <a class="navbar-brand" href="/"> + <img src="{{STATIC_URL}}media/images/ishtar-blason.svg" + width="30" height="30" alt=""> + </a> + {% include "actions.html" %} + <button class="navbar-toggler" type="button" + data-toggle="collapse" data-target="#navbar-actions" + aria-controls="navbar-actions" aria-expanded="false" + aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="collapse navbar-collapse justify-content-end" id="navbar-actions"> + <ul class="navbar-nav"> + {% if APP_NAME %} + <li class="nav-item"> + <a class="navbar-brand" href="/">{{APP_NAME}}</a> + </li> + {% endif %} + {% if user.is_authenticated %} + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" data-toggle="dropdown" + href="#" role="button" aria-haspopup="true" aria-expanded="false">{{ user.username }}</a> + <div class="dropdown-menu dropdown-menu-right"> + <a class="dropdown-item" href="{% url 'auth_logout' %}"> + {% trans "Log out" %} + </a> + <a class="dropdown-item" href="{% url 'auth_password_change' %}"> + {% trans "Change password" %} + </a> + </div> + </li> + {% else %} + <li class="nav-item"> + <a class="nav-link" href="{% url 'auth_login' %}">{% trans "Log in" %}</a> + </li> + {% endif %} + {% if LANGUAGES|length > 1 %} + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" data-toggle="dropdown" + href="#" role="button" aria-haspopup="true" aria-expanded="false"><i class="fa fa-flag" aria-hidden="true"></i></a> + {% csrf_token %} + <div class="dropdown-menu dropdown-menu-right" id="language-selector"> + {% for lang in LANGUAGES %}<a class="dropdown-item" href="#" data-lang="{{ lang.0 }}"> + {{ lang.1 }} + </a>{% endfor %} + <form action="/i18n/setlang/" method="post" id='language-form'> + {% csrf_token %} + <input name="language" value="{{LANGUAGE_CODE}}"> + </form> + </div> + </li> + {% endif %} + </ul> + </div> + {% endblock %} +</header> diff --git a/ishtar_common/templates/registration/login.html b/ishtar_common/templates/registration/login.html index e8122f150..3e82a882f 100644 --- a/ishtar_common/templates/registration/login.html +++ b/ishtar_common/templates/registration/login.html @@ -2,18 +2,46 @@ {% load i18n %} {% block content %} -<div class='form'> -<form method="post" action=".">{% csrf_token %} -<table id='login'> - <caption>{%trans "Log in"%}</caption> -{{ form.as_table }} - <tr class='submit'><td colspan='2'><input type="submit" value="{% trans 'Log in' %}" /></td></tr> - <input type="hidden" name="next" value="{{ next }}" /> -</table> -</form> +<div class="row justify-content-center"> + <div class="col-md-6"> + <h4>{%trans "Log in"%}</h4> + <form method="post" action=".">{% csrf_token %} + <input type="hidden" name="next" value="{{ next }}" /> + {% if form.non_field_errors %} + <div class="form-group row"> + {% for error in form.non_field_errors %} + <div class="form-group has-errors text-danger small"> + {{error}} + </div> + {% endfor %} + </div> + {% endif %} + + {% for field in form %} + {% if field.errors %} + <div class="form-group row has-errors text-danger small"> + {{field.errors}} + </div> + {% endif %} + <div class="form-group row"> + <label for="{{field.id}}" class="col-6 col-form-label">{{field.label}}</label> + <div class="col-6">{{field}}</div> + </div> + {% endfor %} + + <div class="row justify-content-center"> + <div class="col-12"> + <button type="submit" class="btn btn-primary">{% trans 'Log in' %}</button> + </div> + </div> + </form> + </div> </div> -<div class='info'> -<p>{% trans "Forgot password?" %} <a href="{% url 'auth_password_reset' %}">{% trans "Reset it" %}</a></p> -<p>{% trans "Not member?" %} <a href="{% url 'registration_register' %}">{% trans "Register" %}</a></p> +<hr/> +<div class="row justify-content-center"> + <div class="col-md-6"> + <small class="text-secondary">{% trans "Forgot password?" %} <a href="{% url 'auth_password_reset' %}">{% trans "Reset it" %}</a> – + {% trans "Not member?" %} <a href="{% url 'registration_register' %}">{% trans "Register" %}</a></small> + </div> </div> {% endblock %} diff --git a/ishtar_common/templates/sheet_ope.html b/ishtar_common/templates/sheet_ope.html deleted file mode 100644 index 1e18e8b7e..000000000 --- a/ishtar_common/templates/sheet_ope.html +++ /dev/null @@ -1,146 +0,0 @@ -{% extends "sheet.html" %} -{% load i18n %} -{% block content %} -<div class='tool'>{%trans "Export as:"%} <a href='{% url show-file item.pk "odt" %}'>{%trans "OpenOffice.org file"%}</a>, <a href='{% url show-file item.pk "pdf" %}'>{%trans "PDF file"%}</a></div> -<h3>{% trans "General"%}</h3> -<p><label>{%trans "Year:"%}</label> <span class='value'>{{ item.year }}</span></p> -<p><label>{%trans "Numerical reference:"%}</label> <span class='value'>{{ item.numeric_reference }}</span></p> - -{% if item.patriarche_code %}<p><label>{%trans "Patriarche OA code:"%}</label> <span class='value'>{{ item.patriarche_code }}</span></p>{%endif%} -{% if item.patriarche_code_not_recorded %}<p><label>{%trans "Patriarche OA code not yet recorded !"%}</label></p>{%endif%} - -<p><label>{%trans "Operation's name:"%}</label> <span class='value'>{{ item.internal_reference }}</span></p> - -<p><label>{%trans "Edition date:"%}</label> <span class='value'>{{ item.history.all.0.history_date }}</span></p> <!-- date = now --> - -<p><label>{%trans "Begining date:"%}</label> <span class='value'>{{ item.begin_date }}</span></p> -<p><label>{%trans "Field work end date:"%}</label> <span class='value'>{{ item.end_date }}</span></p> - -<p><label>{%trans "Head scientist:"%}</label> <span class='value'>{{ item.head_scientist.full_label }}</span></p> -<p><label>{%trans "State:"%}</label> <span class='value'>{% if item.is_active %}{%trans "Active file"%}</span></p> -{% else %}{%trans "Closed operation"%}</span></p> -<p><label>{%trans "Closing date:"%}</label> <span class='value'>{{ item.closing.date }} <strong>{%trans "by" %}</strong> {{ item.closing.user }}</span></p> -{% endif %} -<p><label>{%trans "Type:"%}</label> <span class='value'>{{ item.operation_type }}</span></p> -<p><label>{%trans "Surface:"%}</label> <span class='value'>{{ item.total_surface }} m<sup>2</sup> ({{ item.total_surface_ha }} ha)</span></p> -<p><label>{%trans "Cost:"%}</label> <span class='value'>{{ item.cost }} Euros, ({{ item.cost_by_m2 }} Euros/m<sup>2</sup>)</span></p> -<p><label>{%trans "Duration:"%}</label> <span class='value'>{{ item.duration }} {%trans "Day"%}s</span></p> - -<p><label>{%trans "Remains:"%}</label> <span class='value'>{{ item.remains.all|join:", " }}</span></p> -<p><label>{%trans "Periods:"%}</label> <span class='value'>{{ item.periods.all|join:", " }}</span></p> - -{% if item.related_file %} -<p><label>{%trans "Related file:"%}</label> <span class='value'><a href='{% url show-file item.related_file.pk ''%}'>{{ item.related_file }}</a></span></p><!-- Displayed as Year/index/Commune/Common_name This should be a link to the file sheet of the related file --> -{% if item.related_file.is_preventive %} -{% if item.operator_reference_code %}<p><label>{%trans "Operator's reference code:"%}</label> <span class='value'>{{ item.operator_reference_code }}</span></p>{% endif %} -{% if item.related_file.town_planning_service %}<p><label>{%trans "Planning service:"%}</label> <span class='value'>{{ item.related_file.town_planning_service }}</span></p>{% endif %} -{% if item.related_file.permit_type %}<p><label>{%trans "Permit type:"%}</label> <span class='value'>{{ item.related_file.permit_type }}</span></p>{% endif %} -{% if item.related_file.permit_reference %}<p><label>{%trans "Permit reference:"%}</label> <span class='value'>{{ item.related_file.permit_reference }}</span></p>{% endif %} -{% if item.related_file.general_contractor.attached_to %}<p><label>{%trans "General contractor organisation:"%}</label> <span class='value'>{{ item.related_file.general_contractor.attached_to }}</span></p>{% endif %} <!-- Contractor's organisation displayed as concat of Name/Adress/postal_code/city --> -{% if item.related_file.general_contractor %}<p><label>{%trans "General contractor:"%}</label> <span class='value'>{{ item.related_file.general_contractor.full_label }}</span></p>{% endif %} -{% endif %} -{% endif %} - -{% if item.comment %}<p><label>{%trans "Comment:"%}</label> <span class='value'>{{ item.comment }}</span></p>{%endif%} - -<h3>{% trans "Localisation"%}</h3> -<p><label>{%trans "Towns:"%}</label> <span class='value'>{{ item.towns.all|join:", " }}</span></p> - -<p><label>{%trans "Main address:"%}</label> <span class='value'>{{ item.address }}</span></p> -{% if item.address_complement %}<p><label>{%trans "Complement:"%}</label> <span class='value'>{{ item.address_complement }}</span></p>{%endif%} -{% if item.postal_code %}<p><label>{%trans "Postal code:"%}</label> <span class='value'>{{ item.postal_code }}</span></p>{%endif%} - -<p><label>{%trans "Lambert X:"%}</label> <span class='value'>{{ item.lambert_x }}</span></p> -<p><label>{%trans "Lambert Y:"%}</label> <span class='value'>{{ item.lambert_y }}</span></p> -<p><label>{%trans "Altitude (m NGF):"%}</label> <span class='value'>{{ item.altitude }}</span></p> - -<table> - <caption>{%trans "Associated parcels"%}</caption> - <tr> - <th>{% trans "Commune" %}</th> - <th>{% trans "Year" %}</th> - <th>{% trans "Section" %}</th> - <th>{% trans "Parcel" %}</th> - <th>{% trans "Owner" %}</th> - </tr> - {% for parcels in item.parcel.all %} - <tr> - <td>{{operation.commune}}</td> - <td>{{operation.year}}</td> - <td>{{operation.section}}</td> - <td>{{operation.parcel}}</td> - <td class='string'>{{operation.parcel.owner}}</td> - </tr> - {% empty %} - <tr><td colspan="5" class='no_items'>{% trans "No parcel associated to this operation" %}</td></tr> - {% endfor %} -</table> - -<h3>{% trans "Admninistrative acts"%}</h3> -<table> - <caption>{%trans "Admninistrative acts"%}</caption> - <tr> - <th>{% trans "Year" %}</th> - <th>{% trans "Reference" %}</th> - <th>{% trans "Type" %}</th> - <th>{% trans "Date" %}</th> - </tr> - {% for act in item.administrative_act.all %} - <tr> - <td>{{act.signature_date.year}}</td> - <td>{{act.ref_sra}}</td> - <td class='string'>{{act.act_type}}</td> - <td>{{act.signature_date}}</td> - </tr> - {% empty %} - <tr><td colspan="4" class='no_items'>{% trans "No administrative act associated to this operation" %}</td></tr> - {% endfor %} -</table> - -<h3>{% trans "Documentation"%}</h3> -<table> - <caption>{%trans "Documents"%}</caption> - <tr> - <th>{% trans "Title" %}</th> - <th>{% trans "Type" %}</th> - <th>{% trans "Authors" %}</th> - <th>{% trans "Localisation" %}</th> - </tr> - {% for doc in item.doc.all %} - <tr> - <td>{{ doc.title }}</td> - <td class='string'>{{doc.type}}</td> - <td>{{ doc.author.all|join:", " }}</td> - <td>{{ doc.localisation }}</td> - </tr> - {% empty %} - <tr><td colspan="4" class='no_items'>{% trans "No document associated to this operation" %}</td></tr> - {% endfor %} -</table> - -<h3>{% trans "Context Records"%}</h3> -<table> - <caption>{%trans "Context Records"%}</caption> - <tr> - <th>{% trans "ID" %}</th> - <th>{% trans "Type" %}</th> - <th>{% trans "Chronology" %}</th> - <th>{% trans "Description" %}</th> - <th>{% trans "Parcel" %}</th> - <th class='link'> </th> - </tr> - {% for record_unit in item.record_unit.all %} - <tr> - <td>{{ record_unit.label }}</td> - <td class='string'>{{record_unit.unit_type}}</td> - <td>{{ record_unit.period.all|join:", " }}</td> - <td>{{ record_unit.description }}</td> - <td>{{ record_unit.section_and_parcel }}</td><!-- Displayed as (Section)-(parcel number). A record unit can be linked to only one parcel. --> - <td class='link'><a href="#{#{%url show-record_unit record_unit.pk%}#}">{% trans "Details" %}</a></td> - </tr> - {% empty %} - <tr><td colspan="6" class='no_items'>{% trans "No context record associated to this operation" %}</td></tr> - {% endfor %} -</table> - -{% endblock %} diff --git a/ishtar_common/templates/welcome.html b/ishtar_common/templates/welcome.html index 4b9f3b5c5..59a53d759 100644 --- a/ishtar_common/templates/welcome.html +++ b/ishtar_common/templates/welcome.html @@ -1,11 +1,21 @@ {% load i18n %} <h2>{% trans "Welcome in Ishtar, open source software for management and inventory of archaeological data" %}</h2> -{{random_image}} -<p>{% trans "Some useful links:" %}</p> -<ul> - <li><a href='https://ishtar-archeo.net' target="_blank">{% trans "Presentation site and blog" %}</a>{% trans ":"%} {% trans "stay tuned with Ishtar news!" %}</li> - <li><a href='{% url 'admin:index' %}' target="_blank">{% trans "Admin interface" %}</a>{% trans ":"%} {% trans "for admin only." %}</li> - <li><a href="https://forum.ishtar-archeo.net/" target="_blank">{% trans "Forum" %}</a>{% trans ":"%} {% trans "need help? find a new bug? a fantastic feature to propose? Here is the place to go." %}</li> - <li><a href="https://gitlab.com/iggdrasil/ishtar" target="_blank">{% trans "Source code" %}</a> – <a href="https://tickets.iggdrasil.net/projects/ishtar" target="_blank">{% trans "tickets" %}</a>{% trans ":"%} {% trans "where the magic happens." %}</li> -</ul> +<div class="row"> + <div class="col col-lg-4"> + {{random_image}} + </div> + <div class="col col-lg-8"> + <div class="card"> + <div class="card-body"> + <p>{% trans "Some useful links:" %}</p> + <ul> + <li><a href='https://ishtar-archeo.net' target="_blank">{% trans "Presentation site and blog" %}</a>{% trans ":"%} {% trans "stay tuned with Ishtar news!" %}</li> + <li><a href="{% url 'admin:index' %}" target="_blank">{% trans "Admin interface" %}</a>{% trans ":"%} {% trans "for admin only." %}</li> + <li><a href="https://forum.ishtar-archeo.net/" target="_blank">{% trans "Forum" %}</a>{% trans ":"%} {% trans "need help? find a new bug? a fantastic feature to propose? Here is the place to go." %}</li> + <li><a href="https://gitlab.com/iggdrasil/ishtar" target="_blank">{% trans "Source code" %}</a> – <a href="https://tickets.iggdrasil.net/projects/ishtar" target="_blank">{% trans "tickets" %}</a>{% trans ":"%} {% trans "where the magic happens." %}</li> + </ul> + </div> + </div> + </div> +</div> |