diff options
-rw-r--r-- | ishtar/furnitures/urls.py | 2 | ||||
-rw-r--r-- | ishtar/furnitures/views.py | 19 | ||||
-rw-r--r-- | ishtar/furnitures/widgets.py | 3 | ||||
-rw-r--r-- | ishtar/templates/base.html | 7 | ||||
-rw-r--r-- | ishtar/templates/sheet.html | 7 | ||||
-rw-r--r-- | ishtar/templates/sheet_file.html | 119 | ||||
-rw-r--r-- | ishtar/templates/wizard_file_sheet.html | 120 | ||||
-rw-r--r-- | static/js/ishtar.js | 15 | ||||
-rw-r--r-- | static/media/style.css | 69 |
9 files changed, 236 insertions, 125 deletions
diff --git a/ishtar/furnitures/urls.py b/ishtar/furnitures/urls.py index 7d223df58..deaea4248 100644 --- a/ishtar/furnitures/urls.py +++ b/ishtar/furnitures/urls.py @@ -87,6 +87,8 @@ urlpatterns += patterns('ishtar.furnitures.views', name='autocomplete-file'), url(BASE_URL + r'get-file/(?P<type>.+)?$', 'get_file', name='get-file'), + url(BASE_URL + r'show-file/(?P<pk>.+)?$', 'show_file', + name='show-file'), url(BASE_URL + r'autocomplete-operation/$', 'autocomplete_operation', name='autocomplete-operation'), url(BASE_URL + r'get-operation/(?P<type>.+)?$', 'get_operation', diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index c4dd517fb..4e0001287 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -30,6 +30,7 @@ from django.template import RequestContext from django.shortcuts import render_to_response, redirect from django.utils.translation import ugettext, ugettext_lazy as _ from django.core.exceptions import ObjectDoesNotExist +from django.core.urlresolvers import reverse from django.db.models import Q from django.core import serializers @@ -182,10 +183,14 @@ def get_item(model, func_name, default_name, extra_request_keys=[]): else: data.append(val and unicode(val) or u"") datas.append(data) + link_template = "<a href='#' onclick='load_window(\"%%s\")'>%s</a>" % \ + (unicode(_("Details"))) if data_type == "json": rows = [] for data in datas: - res = {'id':data[0]} + res = {'id':data[0], + 'link':link_template % reverse('show-'+default_name, + args=[data[0]])} for idx, value in enumerate(data[1:]): if value: res[model.TABLE_COLS[idx].split('.')[-1]] = value @@ -218,7 +223,19 @@ def get_item(model, func_name, default_name, extra_request_keys=[]): return func +def show_item(model, name): + def func(request, pk, **dct): + try: + item = model.objects.get(pk=pk) + except ObjectDoesNotExist: + return HttpResponse(None) + dct['item'] = item + return render_to_response('sheet_%s.html' % name, dct, + context_instance=RequestContext(request)) + return func + get_file = get_item(models.File, 'get_file', 'file') +show_file = show_item(models.File, 'file') def autocomplete_operation(request, non_closed=True): if not request.user.has_perm('furnitures.view_operation', models.Operation)\ diff --git a/ishtar/furnitures/widgets.py b/ishtar/furnitures/widgets.py index 34fa24357..5d184f123 100644 --- a/ishtar/furnitures/widgets.py +++ b/ishtar/furnitures/widgets.py @@ -204,9 +204,10 @@ jQuery("#grid_%(name)s").jqGrid({ url:'%(source)s',
datatype: "json",
mtype: 'GET',
- colNames:['id', %(col_names)s],
+ colNames:['id', '', %(col_names)s],
colModel:[
{name:'id', index:'id', hidden:true},
+{name:'link', index:'link', width:80},
%(extra_cols)s
],
sortname: 'value',
diff --git a/ishtar/templates/base.html b/ishtar/templates/base.html index e7570e6c3..7bfc579bb 100644 --- a/ishtar/templates/base.html +++ b/ishtar/templates/base.html @@ -4,7 +4,6 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> - <link rel="stylesheet" href="{{MEDIA_URL}}/media/style.css" /> <link rel="shortcut icon" href="{{MEDIA_URL}}/media/images/favicon.png"> <title>{% block title %}Ishtar{% if APP_NAME %} - {{APP_NAME}}{%endif%}{% endblock %} </title> @@ -16,6 +15,7 @@ <script language="javascript" type="text/javascript" src="{{JQUERY_UI_URL}}ui/i18n/jquery.ui.datepicker-{{COUNTRY}}.js"></script> <script language="javascript" type="text/javascript" src="{{MEDIA_URL}}/js/ishtar.js"></script> <link type="text/css" href="{{JQUERY_UI_URL}}css/smoothness/jquery-ui.css" rel="stylesheet" /> + <link rel="stylesheet" href="{{MEDIA_URL}}/media/style.css" /> {% block extra_head %} {% endblock %} </head> @@ -23,14 +23,15 @@ <div id="header"> {% block header %} {% if user.is_authenticated %} - {% trans "Logged in" %}: {{ user.username }} - (<a href="{% url auth_logout %}">{% trans "Log out" %}</a> | + {% 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 %} {% endblock %} </div> + <div id="window"></div> <div id="logo"> {% if APP_NAME %}<p id="app_name">{{APP_NAME}}</p>{%endif%} </div> diff --git a/ishtar/templates/sheet.html b/ishtar/templates/sheet.html new file mode 100644 index 000000000..9d1305c1d --- /dev/null +++ b/ishtar/templates/sheet.html @@ -0,0 +1,7 @@ +{% load i18n %} +<div class="sheet"> +<div class="head"><a href='#' onclick='$("#window").hide("slow")'>{% trans "Close" %}</a></div> +<div class="body"> +{% block content %}{% endblock %} +</div> +</div> diff --git a/ishtar/templates/sheet_file.html b/ishtar/templates/sheet_file.html new file mode 100644 index 000000000..67b48d26b --- /dev/null +++ b/ishtar/templates/sheet_file.html @@ -0,0 +1,119 @@ +{% extends "sheet.html" %} +{% load i18n %} +{% block content %} +<p><label>{%trans "Year:"%}</label> {{ item.year }}</p> +<p><label>{%trans "Numerical reference:"%}</label> {{ item.numeric_reference }}</p> + +<p><label>{%trans "File's name:"%}</label> {{ item.internal_reference }}</p> + +<p><label>{%trans "Edition date:"%}</label> {{ item.history.all.0.history_date }}</p> <!-- date = now --> +{% if item.reception_date %}<p>{%trans "Reception date"%} : {{ item.reception_date }}</p>{% endif %} +{% comment %} +<p>{%trans "Creation date"%} : {% item.creation_date %}</p> <!-- creation date --> +{% if item.deadline_date and not item.acts %} + <p>{%trans "Deadline"%} : {% item.deadline_date %}</p> <!-- calculated deadline for some preventive files , see saisine_type, not displayed if an act as been send --> +{% endif %} + +<p>{%trans "Responsible"%} : {% item.responsible %}</p> <!-- file's responsible displayed as Title/Surname/Name/Organisation--> + +{% if item.is_active %}<!-- active or inactive file --> + <p>{%trans "Active file"%}</p> +{% endif %} +{% if item.is_inactive %} + <p>{%trans "Closed file"%}</p> + <p>{%trans "Closure date" %} : {% item.closure_date %} {%trans "by" %} {% item.closer_user%}</p> +{% endif %} + +<p>{%trans "Type"%} : {% item.type %}</p> <!-- programed or preventive --> + +{% if item.related %}<p>{%trans "Related file"%} : {% item.related %}</p>{% endif %} <!-- Displayed as Year/index/Commune/Common_name This should be a link to the file sheet of the related file, mais sais pas faire. Optionnel à ce stade. --> + +<!-- Localisation --> +<p>{%trans "Communes"%} : {% item.communes %}</p> <!-- Concat of the communes TITLE 2--> + +<p>{%trans "Principal adress"%} : {% item.princ_adress %}</p> <!-- Principal adress of the place --> +<p>{%trans "Complementary adress"%} : {% item.complem_adress %}</p> <!-- Complementary adress of the place --> +<p>{%trans "Postal code"%} : {% item.postal_code %}</p> <!-- Postal code of the place --> + + +<!-- Surface --> +<p>{%trans "Surface"%} : {% item.surface %} ({% item.surface_ha %) ha)</p> <!-- surface in square meters and hectares--> + + +<!-- Preventive file --> + +{% if item.is_preventive %} + <p>{%trans "Planed surface"%} : {% item.planed_surface %} ({% item.planed_surface_ha %) ha)</p> <!-- planed surface in square meters and hectares--> + <p>{%trans "Saisine type"%} : {% item.saisine_type %}</p> <!-- saisine type --> + {% if item.service %}<p>{%trans "Service"%} : {% item.service %}</p>{% endif %} <!-- requesting service --> + {% if item.permit_type %}<p>{%trans "Permit type"%} : {% item.permit_type %}</p>{% endif %} <!-- permit type --> + {% if item.permit_ref %}<p>{%trans "Permit reference"%} : {% item.permit_ref %}</p>{% endif %} <!-- permit reference --> + {% if item.contractor_org %}<p>{%trans "Contractor organisation"%} : {% item.contractor_org %}</p>{% endif %} <!-- Contractor's organisation displayed as concat of Name/Adress/postal_code/city --> + {% if item.contractor %}<p>{%trans "Contractor"%} : {% item.contractor %}</p>{% endif %} <!-- contractor displayed as concat of title/Surname/Name/Adress/postal_code/city --> + <p>{%trans "Numerical reference"%} : {% item.index %}</p> <!-- index --> +{% endif %} + +<p>{%trans "Comments"%} : {% item.comments %}</p> <!-- free text comments --> + +<!-- associated acts --> + + <table class='adm_acts'> <!-- associated acts class--> + <caption>{%trans "Admninistrative acts"%}</caption> + <tr> + {% for label, in item.data_acts %} + <th>{{label}}</th> + {% endfor %} + </tr> + {% for data, in item.data_acts %} + <tr> + <td>{{year}}</td> + <td>{{reference}}</td> + <td>{{type}}</td> + <td>{{date}}</td> + </tr> + {% endfor %} + </table> + +<!-- associated operations --> + + <table class='adm_ope'> <!-- associated ope class--> + <caption>{%trans "Associated operations"%}</caption> + <tr> + {% for label, in item.data_ope %} + <th>{{label}}</th> + {% endfor %} + </tr> + {% for data, in item.data_ope %} + <tr> + <td>{{year}}</td> + <td>{{reference}}</td> + <td>{{patriarche}}</td> + <td>{{type}}</td> + <td>{{head_scientist}}</td> + <td>{{date_debut}}</td> + <td>{{date_fin}}</td> + <td>{{link_to_ope_sheet}}</td> + </tr> + {% endfor %} + </table> + +<!-- Operation's associated acts --> + + <table class='adm_acts'> <!-- associated acts class--> + <caption>{%trans "Admninistrative acts linked to associated operations"%}</caption> + <tr> + {% for label, in item.ope.data_acts %} + <th>{{label}}</th> + {% endfor %} + </tr> + {% for data, in item.ope.data_acts %} + <tr> + <td>{{year}}</td> + <td>{{reference}}</td> + <td>{{type}}</td> + <td>{{date}}</td> + </tr> + {% endfor %} + </table> +{% endcomment %} +{% endblock %} diff --git a/ishtar/templates/wizard_file_sheet.html b/ishtar/templates/wizard_file_sheet.html deleted file mode 100644 index b6a530a3b..000000000 --- a/ishtar/templates/wizard_file_sheet.html +++ /dev/null @@ -1,120 +0,0 @@ -{% extends "base.html" %} -{% load i18n %} -{% block content %} - -<p>{%trans "File description sheet"%}</p> <!-- Title 1 --> -<p>{%trans "Year"%} : {% file.year %}</p> <!-- year --> -<p>{%trans "Numerical reference"%} : {% file.index %}</p> <!-- index --> - -<p>{%trans "File's name"%} : {% file.internal_ref %}</p> <!-- common name of the file --> - -<p>{%trans "Edition date"%} : {% date %}</p> <!-- date = now --> -<p>{%trans "Reception date"%} : {% file.recept_date %}</p> <!-- reception date --> -<p>{%trans "Creation date"%} : {% file.crea_date %}</p> <!-- creation date --> -{% if file.deadline_date and not file.acts %} - <p>{%trans "Deadline"%} : {% file.deadline_date %}</p> <!-- calculated deadline for some preventive files , see saisine_type, not displayed if an act as been send --> -{% endif %} - -<p>{%trans "Responsible"%} : {% file.responsible %}</p> <!-- file's responsible displayed as Title/Surname/Name/Organisation--> - -{% if file.is_active %}<!-- active or inactive file --> - <p>{%trans "Active file"%}</p> -{% endif %} -{% if file.is_inactive %} - <p>{%trans "Closed file"%}</p> - <p>{%trans "Closure date" %} : {% file.closure_date %} {%trans "by" %} {% file.closer_user%}</p> -{% endif %} - -<p>{%trans "Type"%} : {% file.type %}</p> <!-- programed or preventive --> - -{% if file.related %}<p>{%trans "Related file"%} : {% file.related %}</p>{% endif %} <!-- Displayed as Year/index/Commune/Common_name This should be a link to the file sheet of the related file, mais sais pas faire. Optionnel à ce stade. --> - -<!-- Localisation --> -<p>{%trans "Communes"%} : {% file.communes %}</p> <!-- Concat of the communes TITLE 2--> - -<p>{%trans "Principal adress"%} : {% file.princ_adress %}</p> <!-- Principal adress of the place --> -<p>{%trans "Complementary adress"%} : {% file.complem_adress %}</p> <!-- Complementary adress of the place --> -<p>{%trans "Postal code"%} : {% file.postal_code %}</p> <!-- Postal code of the place --> - - -<!-- Surface --> -<p>{%trans "Surface"%} : {% file.surface %} ({% file.surface_ha %) ha)</p> <!-- surface in square meters and hectares--> - - -<!-- Preventive file --> - -{% if file.is_preventive %} - <p>{%trans "Planed surface"%} : {% file.planed_surface %} ({% file.planed_surface_ha %) ha)</p> <!-- planed surface in square meters and hectares--> - <p>{%trans "Saisine type"%} : {% file.saisine_type %}</p> <!-- saisine type --> - {% if file.service %}<p>{%trans "Service"%} : {% file.service %}</p>{% endif %} <!-- requesting service --> - {% if file.permit_type %}<p>{%trans "Permit type"%} : {% file.permit_type %}</p>{% endif %} <!-- permit type --> - {% if file.permit_ref %}<p>{%trans "Permit reference"%} : {% file.permit_ref %}</p>{% endif %} <!-- permit reference --> - {% if file.contractor_org %}<p>{%trans "Contractor organisation"%} : {% file.contractor_org %}</p>{% endif %} <!-- Contractor's organisation displayed as concat of Name/Adress/postal_code/city --> - {% if file.contractor %}<p>{%trans "Contractor"%} : {% file.contractor %}</p>{% endif %} <!-- contractor displayed as concat of title/Surname/Name/Adress/postal_code/city --> - <p>{%trans "Numerical reference"%} : {% file.index %}</p> <!-- index --> -{% endif %} - -<p>{%trans "Comments"%} : {% file.comments %}</p> <!-- free text comments --> - -<!-- associated acts --> - - <table class='adm_acts'> <!-- associated acts class--> - <caption>{%trans "Admninistrative acts"%}</caption> - <tr> - {% for label, in file.data_acts %} - <th>{{label}}</th> - {% endfor %} - </tr> - {% for data, in file.data_acts %} - <tr> - <td>{{year}}</td> - <td>{{reference}}</td> - <td>{{type}}</td> - <td>{{date}}</td> - </tr> - {% endfor %} - </table> - -<!-- associated operations --> - - <table class='adm_ope'> <!-- associated ope class--> - <caption>{%trans "Associated operations"%}</caption> - <tr> - {% for label, in file.data_ope %} - <th>{{label}}</th> - {% endfor %} - </tr> - {% for data, in file.data_ope %} - <tr> - <td>{{year}}</td> - <td>{{reference}}</td> - <td>{{patriarche}}</td> - <td>{{type}}</td> - <td>{{head_scientist}}</td> - <td>{{date_debut}}</td> - <td>{{date_fin}}</td> - <td>{{link_to_ope_sheet}}</td> - </tr> - {% endfor %} - </table> - -<!-- Operation's associated acts --> - - <table class='adm_acts'> <!-- associated acts class--> - <caption>{%trans "Admninistrative acts linked to associated operations"%}</caption> - <tr> - {% for label, in file.ope.data_acts %} - <th>{{label}}</th> - {% endfor %} - </tr> - {% for data, in file.ope.data_acts %} - <tr> - <td>{{year}}</td> - <td>{{reference}}</td> - <td>{{type}}</td> - <td>{{date}}</td> - </tr> - {% endfor %} - </table> - -{% endblock %} diff --git a/static/js/ishtar.js b/static/js/ishtar.js index 131a220c9..7dc1be345 100644 --- a/static/js/ishtar.js +++ b/static/js/ishtar.js @@ -45,3 +45,18 @@ $("#main_menu ul li").live('click', function(){ $(this).find('ul').show('slow'); }); +function load_window(url){ + $.ajax({ + url: url, + cache: false, + success:function(html){ + $("#window").html(html); + $("#window").show('slow'); + }, + error:function(XMLHttpRequest, textStatus, errorThrows){ + } + }); + + + +} diff --git a/static/media/style.css b/static/media/style.css index 8b2b9576a..f559ac827 100644 --- a/static/media/style.css +++ b/static/media/style.css @@ -233,3 +233,72 @@ table.confirm tr.spacer td:last-child{ .jqgrid{ cursor:pointer; } + +.ui-jqgrid a{ + color:red; + text-decoration:underline; + color:#D14; +} + +#window{ + position: absolute; + top: 50px; + width:600px; + background: #FFF; + z-index: 2000; + left: 50%; + margin-left: -300px; + border: 1px solid #AAA; + -webkit-box-shadow: 0px 0px 20px #444; + -moz-box-shadow: 0px 0px 20px #444; + text-align: left; + display:none; +} + +#window{ + width:760px; + height:90%; + position: absolute; + top: 5%; + background: #FFF; + z-index: 2000; + left: 50%; + margin-left: -380px; + -webkit-box-shadow: 0px 0px 20px #444; + -moz-box-shadow: 0px 0px 20px #444; + text-align: left; + display:none; + -moz-border-radius:8px; + -webkit-border-radius:8px; + border-radius:8px; +} + +#window .sheet{ +} + + +#window .head{ + text-align:center; + background-color:#EEE; + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; + border-top-left-radius: 8px; + border-top-right-radius: 8px; +} + +#window .body{ + padding:10px; +} + +#window label{ + display:inline-table; + font-weight:bold; + width:160px; +} + +#window p{ + margin:0.3em; +} + |