Event resturcturing

- new short_description field instead of title
- autosave text

- autocompletion on login
This commit is contained in:
Martin Bauer
2013-09-28 18:57:19 +02:00
parent 6c3a7ca408
commit d71c35bcd7
32 changed files with 639 additions and 118 deletions

View File

@@ -0,0 +1,78 @@
{% load i18n admin_static admin_modify %}
<div class="inline-group" id="{{ inline_admin_formset.formset.prefix }}-group">
<div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
{{ inline_admin_formset.formset.management_form }}
<fieldset class="module">
<h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
{{ inline_admin_formset.formset.non_form_errors }}
<table>
<thead><tr>
{% for field in inline_admin_formset.fields %}
{% if not field.widget.is_hidden %}
<th{% if forloop.first %} colspan="2"{% endif %}{% if field.required %} class="required"{% endif %}>{{ field.label|capfirst }}
{% if field.help_text %}&nbsp;<img src="{% static "admin/img/icon-unknown.gif" %}" class="help help-tooltip" width="10" height="10" alt="({{ field.help_text|striptags }})" title="{{ field.help_text|striptags }}" />{% endif %}
</th>
{% endif %}
{% endfor %}
{% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" %}</th>{% endif %}
</tr></thead>
<tbody>
{% for inline_admin_form in inline_admin_formset %}
{% if inline_admin_form.form.non_field_errors %}
<tr><td colspan="{{ inline_admin_form|cell_count }}">{{ inline_admin_form.form.non_field_errors }}</td></tr>
{% endif %}
<tr class="form-row {% cycle "row1" "row2" %} {% if forloop.last %} empty-form{% endif %}"
id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
<td class="original">
{% if inline_admin_form.original or inline_admin_form.show_url %}<p>
</p>{% endif %}
{% if inline_admin_form.has_auto_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
{{ inline_admin_form.fk_field.field }}
{% spaceless %}
{% for fieldset in inline_admin_form %}
{% for line in fieldset %}
{% for field in line %}
{% if field.is_hidden %} {{ field.field }} {% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endspaceless %}
</td>
{% for fieldset in inline_admin_form %}
{% for line in fieldset %}
{% for field in line %}
<td{% if field.field.name %} class="field-{{ field.field.name }}"{% endif %}>
{% if field.is_readonly %}
<p>{{ field.contents|linebreaksbr }}</p>
{% else %}
{{ field.field.errors.as_ul }}
{{ field.field }}
{% endif %}
</td>
{% endfor %}
{% endfor %}
{% endfor %}
{% if inline_admin_formset.formset.can_delete %}
<td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
</fieldset>
</div>
</div>
<script type="text/javascript">
(function($) {
$("#{{ inline_admin_formset.formset.prefix }}-group .tabular.inline-related tbody tr").tabularFormset({
prefix: "{{ inline_admin_formset.formset.prefix }}",
adminStaticPrefix: '{% static "admin/" %}',
addText: "{% blocktrans with inline_admin_formset.opts.verbose_name|title as verbose_name %}Add another {{ verbose_name }}{% endblocktrans %}",
deleteText: "{% trans 'Remove' %}"
});
})(django.jQuery);
</script>

View File

@@ -22,11 +22,7 @@
<div class="row">
<div class="span12">
<h3>Termin bearbeiten</h3>
<!--
<form action="/contact/" method="post">
{% csrf_token %} {{ form.as_p }} <input type="submit" value="Submit" />
</form>
-->
{% crispy form %}
</div>
@@ -52,8 +48,8 @@
<script>
$(document).ready(function(){
$('.dateinput').datepicker({
format: "dd.mm.yyyy",
weekStart: 1,
@@ -62,17 +58,57 @@ $(document).ready(function(){
todayHighlight: true,
startDate: "{% now "SHORT_DATE_FORMAT" %}",
});
$('.timeinput').addClass('input-small').wrap('<div class="input-append bootstrap-timepicker">')
$(".input-append").append( '<span class="add-on"><i class="icon-time"></i></span>' )
$('.timeinput').addClass('input-small').wrap('<div class="input-append bootstrap-timepicker">')
$(".input-append").append( '<span class="add-on"><i class="icon-time"></i></span>' )
$('.timeinput').timepicker({
$('.timeinput').timepicker({
minuteStep: 15,
showMeridian: false,
defaultTime: false
});
function onTypeChange( val )
{
if ( val == "Reh") {
$("#div_id_time").show();
$("#div_id_meeting_time").hide();
$("#div_id_map_location").hide();
$("#div_id_end_date").hide();
if ( ! $("#id_time").val() ) {
$("#id_time").val("19:00");
}
if ( ! $("#id_location").val() ) {
$("#id_location").val("Rohr");
}
}
else if ( val == "Conc" ) {
$("#div_id_time").show();
$("#div_id_meeting_time").show();
$("#div_id_map_location").show();
$("#div_id_end_date").hide();
}
else if ( val == "Party") {
$("#div_id_time").show();
$("#div_id_meeting_time").hide();
$("#div_id_map_location").show();
$("#div_id_end_date").hide();
}
else if ( val == "Travel") {
$("#div_id_time").hide();
$("#div_id_meeting_time").hide();
$("#div_id_map_location").show();
$("#div_id_end_date").show();
}
}
$("#id_type").change( function() {
onTypeChange( $(this).val() );
} );
onTypeChange( $("#id_type").val() );
} );
</script>
{% endaddtoblock %}

View File

@@ -42,6 +42,8 @@
}
function putStatus( button, status ) {
$("#saving").html("Speichere..");
p = button.parent();
putObject = [ { "event": p.data("event-id"),
"user": p.data("username"),
@@ -51,7 +53,8 @@
type: "PUT",
url: "{% url 'event_api' %}",
contentType: "application/json",
data: JSON.stringify(putObject)
data: JSON.stringify(putObject),
success: function() { $("#saving").html("Ok"); }
});
setEventButtonStatus( button, status );
@@ -63,7 +66,8 @@
$(function(){
$(".event-comment").bindWithDelay("keypress", function() {
$("#saving").html("Speichere..");
putObject = [ { "event": $(this).data("event-id"),
"user": $(this).data("username"),
@@ -73,7 +77,8 @@
type: "PUT",
url: "{% url 'event_api' %}",
contentType: "application/json",
data: JSON.stringify(putObject)
data: JSON.stringify(putObject),
success: function() { $("#saving").html("Ok"); }
});
}, 800 );
@@ -98,6 +103,7 @@
<div class="container">
<form>
<div class="row">
<div class="row-fluid eventTable">
<div class="span12">
@@ -112,6 +118,7 @@
<th id='eventTitle'>Termin</th>
<th id='date' >Datum</th>
<th id='time' >Uhrzeit</th>
<th id='time' >Treffpunkt</th>
<th id='place' >Ort</th>
<th id='status' >Status ändern</th>
<th id='comment' >Kommentar</th>
@@ -121,11 +128,16 @@
{% for event in events %}
<tr>
<td class="center"> <a href="{{ event.pk }}"> {{ event.title }} </a> </td>
<td class="center"> {{ event.date }} </td>
<td class="center"> {% if event.time %} {{ event.time }} {% endif %} </td>
<!-- <td class="center"> {{ event.location }} </td> -->
<td class="center"> Ort </td>
{% if not perms.eventplanner.change_event %}
<td class="center"> {{ event.title }} </td>
{% else %}
<td class="center"> <a href="{{ event.pk }}"> {{ event.title }} </a> </td>
{% endif %}
<td class="center"> {{ event.date | date:"SHORT_DATE_FORMAT" }} </td>
<td class="center"> {% if event.time %} {{ event.time | time:"H:i" }} {% endif %} </td>
<td class="center"> {% if event.meeting_time %} {{ event.meeting_time | time:"H:i" }} {% endif %} </td>
<td class="center"> {{ event.location }} </td>
<td class="center">
<div class="btn-group event-status-select" data-event-id="{{event.pk}}" data-username="{{user.username}}" >
@@ -156,6 +168,13 @@
</div><!--/row-->
</div>
</div>
<div class="row">
<div class="span12">
<em>Änderungen werden automatisch gespeichert: </em> <em id="saving">Ok</em>
</div>
</div>
</form>
</div>
{% endblock %}

View File

@@ -129,7 +129,7 @@
{% for event in events %}
<tr class="eventRow">
<td class="center"> <a href="{{ event.pk }}"> {{ event.title }} </a> </td>
<td class="center"> {{ event.date }} </td>
<td class="center"> {{ event.date | date:"SHORT_DATE_FORMAT" }} </td>
{% for p in event.participation %}
@@ -176,7 +176,6 @@
<div class="span12">
<button id="saveButton" class="btn btn-primary" disabled="true">Speichern</button>
</div>
</div>
{% endif %}</form>