Merge pull request #709 from emanuelschuetze/fixes-for-1.4b2

Fixes and improvements for 1.4b2
This commit is contained in:
Emanuel Schütze 2013-06-03 15:58:13 -07:00
commit 37da0cc7bb
29 changed files with 1548 additions and 1906 deletions

View File

@ -42,6 +42,8 @@ Participants:
- Added warning if non-superuser removes his last group containing permission to manage participants. - Added warning if non-superuser removes his last group containing permission to manage participants.
Other: Other:
- New template based on twitter bootstrap. - New template based on twitter bootstrap.
- New GUI frontend for the Windows portable version.
- Added command to backup sqlite database.
- Used Tornado web server (instead of Django's default development server). - Used Tornado web server (instead of Django's default development server).
- New mediafile app (files) to upload/download files via frontend. - New mediafile app (files) to upload/download files via frontend.
- New config app: Apps have to define config vars only once; config pages and - New config app: Apps have to define config vars only once; config pages and

77
THANKS
View File

@ -5,29 +5,84 @@
OpenSlides uses parts of the following projects: OpenSlides uses parts of the following projects:
* Django * Django
<https://www.djangoproject.com/> <https://www.djangoproject.com>
License: BSD
* Django mptt
<https://github.com/django-mptt/django-mptt>
License: BSD
* jQuery * jQuery
<http://www.jquery.com/> <http://www.jquery.com>
and some addons: cookie, form, once, templating License: MIT
and some plugins:
- jQuery DataTables Plugin
<http://www.datatables.net>
License: BSD/GPLv2
- jQuery Cookie Plugin
<https://github.com/carhartl/jquery-cookie/>
License: MIT/GPL
- jQuery Form Plugin
<http://malsup.com/jquery/form/>
License: MIT/GPLv2
- jQuery Once Plugin
<http://plugins.jquery.com/project/once/>
License: MIT/GPL
- jQuery Templating Plugin
<https://github.com/BorisMoore/jquery-tmpl/>
License: MIT/GPLv2
* jQuery UI * jQuery UI
<http://jqueryui.com/> <http://jqueryui.com>
custom ui components: core, widget, mouse, sortable, datepicker, slider with custom ui components: core, widget, mouse, sortable, datepicker, slider
with css theme 'smoothness' and css theme 'smoothness'
and some addons: slider access, timepicker License: MIT
and some addons:
* nestedSortable jQuery Plugin - jQuery UI Nested Sortable
<http://mjsarfatti.com/sandbox/nestedSortable/> <http://mjsarfatti.com/code/nestedSortable/>
License: MIT
- jQuery UI Slider Access
<http://trentrichardson.com/examples/jQuery-SliderAccess/>
License: MIT/GPLv2
- jQuery timepicker addon
<http://trentrichardson.com/examples/timepicker/>
License: MIT/GPLv2
* Twitter Bootstrap * Twitter Bootstrap
<http://twitter.github.com/bootstrap/> <http://twitter.github.com/bootstrap/>
License: Apache License v2.0
* CKEditor
<http://ckeditor.com>
License: GPL, LGPL, MPL
* Beautiful Soup
<http://www.crummy.com/software/BeautifulSoup/>
License: MIT
* Bleach
<https://github.com/jsocol/bleach/>
License: BSD
* Pillow
<https://github.com/python-imaging/Pillow>
License: Standard PIL License
* qrcode
<https://github.com/lincolnloop/python-qrcode>
License: BSD
* ReportLab * ReportLab
<http://www.reportlab.com/software/opensource/rl-toolkit/> <http://www.reportlab.com/software/opensource/rl-toolkit/>
License: BSD
* Tornado
<http://www.tornadoweb.org/en/stable/>
License: Apache License v2.0
* Ubuntu TrueType Font * Ubuntu TrueType Font
<http://font.ubuntu.com/> <http://font.ubuntu.com>
License: Ubuntu Font Licence 1.0
* Sphinx * Sphinx
<http://sphinx-doc.org/> <http://sphinx-doc.org/>

View File

@ -51,15 +51,15 @@ def setup_agenda_config_page(sender, **kwargs):
validators=[validate_start_time, ], validators=[validate_start_time, ],
widget=forms.DateTimeInput(format='%d.%m.%Y %H:%M'), widget=forms.DateTimeInput(format='%d.%m.%Y %H:%M'),
required=False, required=False,
label=_('Begin of event'), label=ugettext_lazy('Begin of event'),
help_text=_('Input format: DD.MM.YYYY HH:MM'))) help_text=ugettext_lazy('Input format: DD.MM.YYYY HH:MM')))
agenda_show_last_speakers = ConfigVariable( agenda_show_last_speakers = ConfigVariable(
name='agenda_show_last_speakers', name='agenda_show_last_speakers',
default_value=1, default_value=1,
form_field=forms.IntegerField( form_field=forms.IntegerField(
min_value=0, min_value=0,
label=_('Number of last speakers to be shown on the projector'))) label=ugettext_lazy('Number of last speakers to be shown on the projector')))
extra_stylefiles = ['styles/timepicker.css', 'styles/jquery-ui/jquery-ui.custom.min.css'] extra_stylefiles = ['styles/timepicker.css', 'styles/jquery-ui/jquery-ui.custom.min.css']
extra_javascript = ['javascript/jquery-ui.custom.min.js', extra_javascript = ['javascript/jquery-ui.custom.min.js',

View File

@ -37,6 +37,9 @@ ol.agenda_list {
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ededed',GradientType=0 ); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ededed',GradientType=0 );
overflow: auto; overflow: auto;
} }
.agenda_list li > div.activeline {
background: #bed4de !important;
}
.agenda_list.sortable li > div { .agenda_list.sortable li > div {
cursor: move; cursor: move;
} }
@ -52,13 +55,14 @@ ol.agenda_list {
.agenda_list .openclose { width: 40px; float: left; min-height: 1px; } .agenda_list .openclose { width: 40px; float: left; min-height: 1px; }
.agenda_list .duration { width: 92px; float: right; min-height: 1px; padding-left: 5px; } .agenda_list .duration { width: 92px; float: right; min-height: 1px; padding-left: 5px; }
.agenda_list .manage { width: 150px; float: right; min-height: 1px; padding-left: 5px; } .agenda_list .manage { width: 200px; float: right; min-height: 1px; padding-left: 5px; }
.agenda_list .title { float: left; } .agenda_list .title { float: left; padding-left: 5px;}
.agenda_list .optional { float: left; } .agenda_list .optional { float: left; }
.agenda_list .opener_closer { float: left; margin-right: 10px; } .agenda_list .opener_closer { float: left; margin-right: 10px; margin-left:-6px;}
.agenda_list .opener_closer .btn { padding: 0 2px; }
.agenda_list .optional { float: right; width: 208px; padding-left: 8px;} .agenda_list .optional { float: right; width: 208px; padding-left: 8px;}
#menu-overview .manage { width: 150px; } #menu-overview .manage { width: 200px; }
#menu-overview .duration { width: 75px; } #menu-overview .duration { width: 75px; }
#menu-overview .optional { width: 200px; } #menu-overview .optional { width: 200px; }

View File

@ -1,15 +1,15 @@
{% load i18n %} {% load i18n %}
{% load tags %} {% load tags %}
<div> <div class="{% if node.active %}activeline{% endif %}">
{% if perms.agenda.can_manage_agenda or perms.projector.can_manage_projector %} {% if perms.agenda.can_manage_agenda or perms.projector.can_manage_projector %}
<div class="manage"> <div class="manage">
<span style="width: 1px; white-space: nowrap;"> <span style="width: 1px; white-space: nowrap;">
{% if perms.projector.can_manage_projector %} {% if perms.projector.can_manage_projector %}
<a href="{% url 'projector_activate_slide' node.sid %}" <a href="{% url 'projector_activate_slide' node.sid %}"
class="activate_link btn {% if node.active and not show_list %}btn-primary{% endif %} btn-mini" class="activate_link btn {% if node.active and not show_list and not summary %}btn-primary{% endif %} btn-mini"
rel="tooltip" data-original-title="{% trans 'Show agenda item' %}"> rel="tooltip" data-original-title="{% trans 'Show agenda item' %}">
<i class="icon-facetime-video {% if node.active and not show_list %}icon-white{% endif %}"></i> <i class="icon-facetime-video {% if node.active and not show_list and not summary %}icon-white{% endif %}"></i>
</a> </a>
<a href="{% url 'projector_activate_slide' node.sid 'show_list_of_speakers' %}" <a href="{% url 'projector_activate_slide' node.sid 'show_list_of_speakers' %}"
class="activate_link btn btn-mini {% if node.active and show_list %}btn-primary{% endif %}" class="activate_link btn btn-mini {% if node.active and show_list %}btn-primary{% endif %}"
@ -18,15 +18,22 @@
</a> </a>
{% endif %} {% endif %}
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<a href="{% model_url node 'edit' %}" title="{% trans 'Edit' %}" class="btn btn-mini"> <a href="{% model_url node 'edit' %}" rel="tooltip" data-original-title="{% trans 'Edit' %}" class="btn btn-mini">
<i class="icon-pencil"></i> <i class="icon-pencil"></i>
</a> </a>
<a href="{% model_url node 'delete' %}" title="{% trans 'Delete' %}" class="btn btn-mini"> <a href="{% model_url node 'delete' %}" rel="tooltip" data-original-title="{% trans 'Delete' %}" class="btn btn-mini">
<i class="icon-remove"></i> <i class="icon-remove"></i>
</a> </a>
<a href="{% if node.closed %}{% url 'item_open' node.id %}{% else %}{% url 'item_close' node.id %}{% endif %}"
class="close_link btn btn-mini {% if node.closed %}btn-success{% endif %} tooltip-left"
rel="tooltip" data-original-title="{% trans 'Change status (open/closed)' %}">
<i class="{% if node.closed %}icon-checked-new{% else %}icon-unchecked-new{% endif %}"></i>
</a>
{% if not node.is_leaf_node %} {% if not node.is_leaf_node %}
<a href="{% url 'projector_activate_slide' node.sid 'summary' %}" class="activate_link btn btn-mini" title="{% trans 'Show summary for this item' %}"> <a href="{% url 'projector_activate_slide' node.sid 'summary' %}"
<i class="icon-summary"></i> class="activate_link btn btn-mini {% if node.active and summary %}btn-primary{% endif %}"
title="{% trans 'Show summary for this item' %}">
<i class="icon-summary {% if node.active and summary %}icon-white{% endif %}"></i>
</a> </a>
{% endif %} {% endif %}
{% endif %} {% endif %}
@ -37,36 +44,36 @@
{% if perms.agenda.can_see_orga_items %} {% if perms.agenda.can_see_orga_items %}
<div class="duration"> <div class="duration">
{% if node.duration %} {% if node.duration %}
{{ node.duration }}h {% if start and end %}<a {% if node.tooltip %}rel="tooltip" data-original-title="{% trans 'End' %}: {{ node.tooltip|date:"DATETIME_FORMAT" }}"{% endif %}><i class="icon-clock"></i></a>{% endif %} {{ node.duration }} h
{% if start and end %}
<a rel="tooltip" data-original-title="{% trans 'End' %}:
{{ end|date:"DATETIME_FORMAT" }}"><i class="icon-clock"></i>
</a>
{% endif %}
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<div class="optional"> <div class="optional">
{{ node.comment|first_line }} {% if node.comment %}
{{ node.comment|first_line }}
<a class="btn btn-mini" rel="popover" data-content="{{ node.comment|linebreaks }}">
<i class="icon icon-search"></i>
</a>
{% endif %}
</div> </div>
{% endif %} {% endif %}
<div class="opener_closer"> <div class="opener_closer">
<a href="#" class="opener btn btn-mini"><span class="icon-plus"></span></a> <a class="opener btn btn-mini" rel="tooltip" data-original-title="{% trans 'Expand items' %}"><span class="icon-plus"></span></a>
<a href="#" class="closer btn btn-mini"><span class="icon-minus"></span></a> <a class="closer btn btn-mini" rel="tooltip" data-original-title="{% trans 'Collapse items' %}"><span class="icon-minus"></span></a>
</div>
<div class="openclose">
{% if perms.agenda.can_manage_agenda %}
<a href="{% if node.closed %}{% url 'item_open' node.id %}{% else %}{% url 'item_close' node.id %}{% endif %}"
class="close_link btn btn-mini {% if node.closed %}btn-success{% endif %}" title="{% trans 'Change status (open/closed)' %}">
<i class="{% if node.closed %}icon-checked-new{% else %}icon-unchecked-new{% endif %}"></i>
</a>
{% else %}
<span class="close_link">
<i class="{% if node.closed %}icon-checked-new{% else %}icon-unchecked-new{% endif %}"></i>
</span>
{% endif %}
</div> </div>
<div class="title"> <div class="title">
<a class="closed" rel="tooltip" data-original-title="{% trans 'Item closed' %}">
<i class="{% if node.closed %}icon-checked-new{% endif %}"></i>
</a>
{% with form=node.weight_form %} {% with form=node.weight_form %}
{{ form.weight }} {{ form.weight }}
{{ form.self }} {{ form.self }}

View File

@ -14,18 +14,19 @@
margin: 1em; margin: 1em;
z-index: 2; z-index: 2;
width: 45%; width: 45%;
min-width: 200px} min-width: 200px;}
#overlay_list_of_speaker_box h3 { #overlay_list_of_speaker_box h3 {
margin: 5px} margin: 5px;}
#overlay_list_of_speaker_box ul { #overlay_list_of_speaker_box ul {
margin: 5px} list-style-type: none;
margin: 5px;}
#overlay_list_of_speaker_box li { #overlay_list_of_speaker_box li {
font-size: 120%; font-size: 120%;
line-height: 120%} line-height: 120%;}
#overlay_list_of_speaker_box .old_speaker { #overlay_list_of_speaker_box .old_speaker {
color: #777777} color: #777777;}
#overlay_list_of_speaker_box .actual_speaker { #overlay_list_of_speaker_box .actual_speaker {
margin-bottom: 0em} margin-bottom: 0em;}
</style> </style>
<div id="overlay_list_of_speaker_box"> <div id="overlay_list_of_speaker_box">

View File

@ -46,18 +46,22 @@
</h1> </h1>
{% if perms.agenda.can_see_orga_items %} {% if perms.agenda.can_see_orga_items %}
{% if start and end %} {% if start and end %}
<table id="agendatime" class="table table-bordered"> <table id="agendatime" class="table table-bordered">
<tr> <tr>
<td>{% trans "Start of event" %}:</td> <td>{% trans "Start of event" %}:</td>
<td>{{ start|date:"DATETIME_FORMAT" }}</td> <td>{{ start|date:"DATETIME_FORMAT" }}</td>
</tr> </tr>
<tr> <tr>
<td>{% trans "Estimated end" %}:</td> <td>{% trans "Estimated end" %}:</td>
<td>{{ end|date:"DATETIME_FORMAT" }}</td> <td>{{ end|date:"DATETIME_FORMAT" }}</td>
</tr> </tr>
</table> </table>
{% endif %} {% else %}
<div style="float: right;">
<a href="{% url 'config_agenda' %}" class="btn btn-mini">{% trans 'Set start time of event' %}</a>
</div>
{% endif %}
{% endif %} {% endif %}
<label class="checkbox"> <label class="checkbox">
<input type="checkbox" id="hide_closed_items"> {% trans "Hide closed items" %} <input type="checkbox" id="hide_closed_items"> {% trans "Hide closed items" %}
@ -68,7 +72,6 @@
</i></small> </i></small>
<table id="menu-overview" class="table table-striped table-bordered"> <table id="menu-overview" class="table table-striped table-bordered">
<tr> <tr>
<th class="openclose"></th>
<th class="title">{% trans "Item" %}</th> <th class="title">{% trans "Item" %}</th>
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<th class="optional">{% trans "Comment" %}</th> <th class="optional">{% trans "Comment" %}</th>
@ -81,7 +84,6 @@
{% endif %} {% endif %}
</tr> </tr>
<tr class="topline{% if active_sid == 'agenda' %} activeline{% endif %}"> <tr class="topline{% if active_sid == 'agenda' %} activeline{% endif %}">
<td class="openclose"></td>
<td class="title"> <td class="title">
{% trans "Agenda" %} {% trans "Agenda" %}
</td> </td>
@ -89,7 +91,7 @@
<td class="optional"></td> <td class="optional"></td>
{% endif %} {% endif %}
{% if perms.agenda.can_see_orga_items %} {% if perms.agenda.can_see_orga_items %}
<td class="duration">{{ duration }}h</td> <td class="duration">{{ duration }} h</td>
{% endif %} {% endif %}
{% if perms.agenda.can_manage_agenda or perms.projector.can_manage_projector %} {% if perms.agenda.can_manage_agenda or perms.projector.can_manage_projector %}
<td class="manage"> <td class="manage">

View File

@ -4,7 +4,7 @@
<p><a href="{% url 'agenda_add_to_current_list_of_speakers' %}" class="btn"><i class="icon icon-speaker"></i> {% trans 'Put me on the current list of speakers' %}</a></p> <p><a href="{% url 'agenda_add_to_current_list_of_speakers' %}" class="btn"><i class="icon icon-speaker"></i> {% trans 'Put me on the current list of speakers' %}</a></p>
{% endif %} {% endif %}
<p><a href="{% url 'agenda_current_list_of_speakers' %}" class="btn"><i class="icon icon-bell"></i> {% trans 'Go to current list of speakers' %}</a></p> <p><a href="{% url 'agenda_current_list_of_speakers' %}" class="btn"> {% trans 'Go to current list of speakers' %}</a></p>
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<hr> <hr>

View File

@ -24,7 +24,7 @@
{% if perms.projector.can_manage_projector %} {% if perms.projector.can_manage_projector %}
<a href="{% url 'projector_activate_slide' item.sid %}" <a href="{% url 'projector_activate_slide' item.sid %}"
class="activate_link btn btn-mini {% if item.active and not show_list %}btn-primary{% endif %}" class="activate_link btn btn-mini {% if item.active and not show_list %}btn-primary{% endif %}"
rel="tooltip" data-original-title="{% trans 'Show' %}"> rel="tooltip" data-original-title="{% trans 'Show item' %}">
<i class="icon icon-facetime-video {% if item.active and not show_list %}icon-white{% endif %}"></i> <i class="icon icon-facetime-video {% if item.active and not show_list %}icon-white{% endif %}"></i>
</a> </a>
{% endif %} {% endif %}
@ -46,7 +46,7 @@
{% if not item.related_sid %} {% if not item.related_sid %}
{{ item.text|safe|linebreaks }} {{ item.text|safe|linebreaks }}
{% else %} {% else %}
<a href="{% model_url item.get_related_slide %}" class="btn btn-small">{% trans 'View' %} "{{ item.get_related_slide }}" ({% trans item.get_related_type %})</a> <a href="{% model_url item.get_related_slide %}" class="btn btn-small">{% trans item.get_related_type %} {{ item.get_related_slide }}</a>
{% endif %} {% endif %}
</p> </p>
@ -124,9 +124,11 @@
{% if speaker_dict.type == 'actual_speaker' %} {% if speaker_dict.type == 'actual_speaker' %}
<a href="{% url 'agenda_speaker_end_speach' item.pk %}" class="btn btn-mini btn-danger"><i class="icon-bell icon-white"></i> {% trans 'End speach' %}</a> <a href="{% url 'agenda_speaker_end_speach' item.pk %}" class="btn btn-mini btn-danger"><i class="icon-bell icon-white"></i> {% trans 'End speach' %}</a>
{% elif speaker_dict.type == 'coming_speaker' %} {% elif speaker_dict.type == 'coming_speaker' %}
<a href="{% url 'agenda_speaker_speak' item.pk speaker_dict.speaker.person.person_id %}" class="btn btn-mini"><i class="icon-bell"></i> {% trans "Begin speach" %}</a> <a href="{% url 'agenda_speaker_speak' item.pk speaker_dict.speaker.person.person_id %}"
class="btn btn-mini"><i class="icon-bell"></i> {% trans "Begin speach" %}</a>
{% endif %} {% endif %}
<a href="{% model_url speaker_dict.speaker 'delete' %}" title="{% trans 'Delete' %}" class="btn btn-mini"> <a href="{% model_url speaker_dict.speaker 'delete' %}"
rel="tooltip" data-original-title="{% trans 'Delete' %}" class="btn btn-mini">
<i class="icon-remove"></i> <i class="icon-remove"></i>
</a> </a>
{% endif %} {% endif %}
@ -138,9 +140,9 @@
<p> <p>
{% if is_on_the_list_of_speakers %} {% if is_on_the_list_of_speakers %}
<a href="{% url 'agenda_speaker_delete' object.id %}" class="btn">{% trans "Remove me from the list" %}</a> <a href="{% url 'agenda_speaker_delete' object.id %}" class="btn"><i class="icon icon-speaker"></i> {% trans "Remove me from the list" %}</a>
{% elif not object.speaker_list_closed and perms.agenda.can_be_speaker %} {% elif not object.speaker_list_closed and perms.agenda.can_be_speaker %}
<a href="{% url 'agenda_speaker_append' object.id %}" class="btn">{% trans "Put me on the list" %}</a> <a href="{% url 'agenda_speaker_append' object.id %}" class="btn"><i class="icon icon-speaker"></i> {% trans "Put me on the list" %}</a>
{% endif %} {% endif %}
</p> </p>
@ -150,9 +152,9 @@
<label>{{ field.label }}:</label> <label>{{ field.label }}:</label>
<div class="control-group input-append {% if field.errors %}error{% endif %}"> <div class="control-group input-append {% if field.errors %}error{% endif %}">
{{ field }} {{ field }}
<button class="btn btn-primary" type="submit" title="{% trans 'Apply' %}"><i class="icon-ok icon-white"></i></button> <button class="btn btn-primary tooltip-bottom" type="submit" data-original-title="{% trans 'Apply' %}"><i class="icon-ok icon-white"></i></button>
{% if perms.participant.can_see_participant and perms.participant.can_manage_participant %} {% if perms.participant.can_see_participant and perms.participant.can_manage_participant %}
<a href="{% url 'user_new' %}" class="btn" title="{% trans 'Add new participant' %}"><i class="icon-add-user"></i></a> <a href="{% url 'user_new' %}" class="btn" rel="tooltip" data-original-title="{% trans 'Add new participant' %}"><i class="icon-add-user"></i></a>
{% endif %} {% endif %}
{% if field.errors %} {% if field.errors %}
<span class="help-inline">{{ field.errors }}</span> <span class="help-inline">{{ field.errors }}</span>

View File

@ -9,15 +9,15 @@
/* List of speakers projector slide */ /* List of speakers projector slide */
ul#list_of_speakers { ul#list_of_speakers {
list-style-type: none; list-style-type: none;
padding: 0} padding: 0;}
#list_of_speakers li { #list_of_speakers li {
font-size: 130%; font-size: 130%;
line-height: 150%} line-height: 150%;}
#list_of_speakers .old_speaker { #list_of_speakers .old_speaker {
color: #9FA9B7} color: #9FA9B7;}
#list_of_speakers .actual_speaker { #list_of_speakers .actual_speaker {
font-weight: bold; font-weight: bold;
margin-bottom: 0.5em} margin-bottom: 0.5em;}
</style> </style>
{% endblock %} {% endblock %}

View File

@ -83,6 +83,7 @@ class Overview(TemplateView):
'duration': duration, 'duration': duration,
'start': start, 'start': start,
'end': end, 'end': end,
'summary': config['presentation_argument'] == 'summary',
'show_list': config['presentation_argument'] == 'show_list_of_speakers'}) 'show_list': config['presentation_argument'] == 'show_list_of_speakers'})
return context return context

View File

@ -53,20 +53,25 @@
<td> <td>
<span style="width: 1px; white-space: nowrap;"> <span style="width: 1px; white-space: nowrap;">
{% if perms.projector.can_manage_projector %} {% if perms.projector.can_manage_projector %}
<a href="{% url 'projector_activate_slide' assignment.sid %}" class="activate_link btn {% if assignment.active %}btn-primary{% endif %} btn-mini" title="{% trans 'Show' %}"> <a href="{% url 'projector_activate_slide' assignment.sid %}"
class="activate_link btn {% if assignment.active %}btn-primary{% endif %} btn-mini"
rel="tooltip" data-original-title="{% trans 'Show election' %}">
<i class="icon-facetime-video {% if assignment.active %}icon-white{% endif %}"></i> <i class="icon-facetime-video {% if assignment.active %}icon-white{% endif %}"></i>
</a> </a>
{% endif %} {% endif %}
{% if perms.assignment.can_manage_assignment %} {% if perms.assignment.can_manage_assignment %}
<a href="{% url 'assignment_edit' assignment.id %}" title="{% trans 'Edit' %}" class="btn btn-mini"> <a href="{% url 'assignment_edit' assignment.id %}"
<i class="icon-pencil"></i> rel="tooltip" data-original-title="{% trans 'Edit' %}"
class="btn btn-mini"><i class="icon-pencil"></i>
</a> </a>
<a href="{% url 'assignment_delete' assignment.id %}" title="{% trans 'Delete' %}" class="btn btn-mini"> <a href="{% url 'assignment_delete' assignment.id %}"
<i class="icon-remove"></i> rel="tooltip" data-original-title="{% trans 'Delete' %}"
class="btn btn-mini"><i class="icon-remove"></i>
</a> </a>
{% endif %} {% endif %}
<a href="{% url 'print_assignment' assignment.id %}" class="btn btn-mini" title="{% trans 'Print election as PDF' %}" target="_blank"> <a href="{% url 'print_assignment' assignment.id %}"
<i class="icon-print"></i> PDF data-original-title="{% trans 'Print election as PDF' %}" target="_blank"
class="btn btn-mini tooltip-left"><i class="icon-print"></i> PDF
</a> </a>
</span> </span>
</td> </td>

View File

@ -106,9 +106,11 @@
<label>{{ field.label }}:</label> <label>{{ field.label }}:</label>
<div class="input-append"> <div class="input-append">
{{ field }} {{ field }}
<button class="btn btn-primary" type="submit" title="{% trans 'Apply' %}"><i class="icon-ok icon-white"></i></button> <button class="btn btn-primary tooltip-bottom" type="submit"
data-original-title="{% trans 'Apply' %}"><i class="icon-ok icon-white"></i></button>
{% if perms.participant.can_see_participant and perms.participant.can_manage_participant %} {% if perms.participant.can_see_participant and perms.participant.can_manage_participant %}
<a href="{% url 'user_new' %}" target="_blank" class="btn" title="{% trans 'Add new participant' %}"><i class="icon-add-user"></i></a> <a href="{% url 'user_new' %}" target="_blank" class="btn"
rel="tooltip" data-original-title="{% trans 'Add new participant' %}"><i class="icon-add-user"></i></a>
{% endif %} {% endif %}
</div> </div>
{% endfor %} {% endfor %}
@ -124,7 +126,8 @@
{% for person in blocked_candidates %} {% for person in blocked_candidates %}
<li> <li>
<a href="{% model_url person 'view' %}">{{ person }}</a> <a href="{% model_url person 'view' %}">{{ person }}</a>
<a class="btn btn-mini" href="{% url 'assignment_delother' assignment.id person.person_id %}" title="{% trans 'Remove candidate' %}"> <a class="btn btn-mini" href="{% url 'assignment_delother' assignment.id person.person_id %}"
rel="tooltip" data-original-title="{% trans 'Remove candidate' %}">
<i class="icon-ban-circle"></i> <i class="icon-ban-circle"></i>
</a> </a>
</li> </li>
@ -164,8 +167,10 @@
<i class="icon-unchecked-new"></i> <i class="icon-unchecked-new"></i>
{% endif %} {% endif %}
</a> </a>
<a href="{% url 'assignment_poll_view' poll.id %}" class="btn btn-mini" title="{% trans 'Edit' %}"><i class="icon-pencil"></i></a> <a href="{% url 'assignment_poll_view' poll.id %}" class="btn btn-mini"
<a href="{% url 'assignment_poll_delete' poll.id %}" class="btn btn-mini" title="{% trans 'Delete' %}"><i class="icon-remove"></i></a> rel="tooltip" data-original-title="{% trans 'Edit' %}"><i class="icon-pencil"></i></a>
<a href="{% url 'assignment_poll_delete' poll.id %}" class="btn btn-mini"
rel="tooltip" data-original-title="{% trans 'Delete' %}"><i class="icon-remove"></i></a>
{% endif %} {% endif %}
</th> </th>
{% endfor %} {% endfor %}
@ -182,10 +187,11 @@
<td> <td>
{% if candidate in assignment.elected %} {% if candidate in assignment.elected %}
{% if perms.assignment.can_manage_assignment %} {% if perms.assignment.can_manage_assignment %}
<a class="election_link elected" href="{% url 'assignment_user_not_elected' assignment.id candidate.person_id %}"></a> <a class="election_link elected" href="{% url 'assignment_user_not_elected' assignment.id candidate.person_id %}"
rel="tooltip" data-original-title="{% trans 'Mark candidate as elected' %}"></a>
{% else %} {% else %}
<a class="elected"> <a class="elected">
<img src="{% static 'img/voting-yes.png' %}" title="{% trans 'Candidate is elected' %}"> <img src="{% static 'img/voting-yes.png' %}" class="tooltip-bottom" data-original-title="{% trans 'Candidate is elected' %}">
</a> </a>
{% endif %} {% endif %}
{% else %} {% else %}
@ -198,11 +204,11 @@
{% for vote in poll_list %} {% for vote in poll_list %}
<td style="white-space:nowrap;"> <td style="white-space:nowrap;">
{% if 'Yes' in vote and 'No' in vote and 'Abstain' in vote %} {% if 'Yes' in vote and 'No' in vote and 'Abstain' in vote %}
<img src="{% static 'img/voting-yes.png' %}" title="{% trans 'Yes' %}"> {{ vote.Yes }}<br> <img src="{% static 'img/voting-yes.png' %}" class="tooltip-left" data-original-title="{% trans 'Yes' %}"> {{ vote.Yes }}<br>
<img src="{% static 'img/voting-no.png' %}" title="{% trans 'No' %}"> {{ vote.No }}<br> <img src="{% static 'img/voting-no.png' %}" class="tooltip-left" data-original-title="{% trans 'No' %}"> {{ vote.No }}<br>
<img src="{% static 'img/voting-abstention.png' %}" title="{% trans 'Abstention' %}"> {{ vote.Abstain }}<br> <img src="{% static 'img/voting-abstention.png' %}" class="tooltip-left" data-original-title="{% trans 'Abstention' %}"> {{ vote.Abstain }}<br>
{% elif 'Votes' in vote %} {% elif 'Votes' in vote %}
<img src="{% static 'img/voting-yes.png' %}" title="{% trans 'Yes' %}"> {{ vote.Votes }} <img src="{% static 'img/voting-yes.png' %}" class="tooltip-left" data-original-title="{% trans 'Yes' %}"> {{ vote.Votes }}
{% elif vote == None %} {% elif vote == None %}
{% trans 'was not a <br> candidate'%} {% trans 'was not a <br> candidate'%}
{% else %} {% else %}
@ -221,7 +227,7 @@
{% if poll.published or perms.assignment.can_manage_assignment %} {% if poll.published or perms.assignment.can_manage_assignment %}
<td style="white-space:nowrap;"> <td style="white-space:nowrap;">
{% if poll.has_votes %} {% if poll.has_votes %}
<img src="{% static 'img/voting-invalid.png' %}" title="{% trans 'Invalid' %}"> <img src="{% static 'img/voting-invalid.png' %}" class="tooltip-left" data-original-title="{% trans 'Invalid' %}">
{{ poll.print_votesinvalid }} {{ poll.print_votesinvalid }}
{% endif %} {% endif %}
</td> </td>
@ -237,7 +243,7 @@
{% if poll.published or perms.assignment.can_manage_assignment %} {% if poll.published or perms.assignment.can_manage_assignment %}
<td style="white-space:nowrap;"> <td style="white-space:nowrap;">
{% if poll.has_votes %} {% if poll.has_votes %}
<img src="{% static 'img/voting-total.png' %}" title="{% trans 'Votes cast' %}"> <img src="{% static 'img/voting-total.png' %}" class="tooltip-left" data-original-title="{% trans 'Votes cast' %}">
<strong>{{ poll.print_votescast }}</strong> <strong>{{ poll.print_votescast }}</strong>
{% endif %} {% endif %}
</td> </td>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-06-01 21:13+0200\n" "POT-Creation-Date: 2013-06-03 22:50+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

File diff suppressed because it is too large Load Diff

View File

@ -3,13 +3,14 @@
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# #
# Translators: # Translators:
# <moosline@savvy.ch>, 2012. # moosline <moosline@savvy.ch>, 2013
# moosline <moosline@savvy.ch>, 2012
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenSlides\n" "Project-Id-Version: OpenSlides\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-06-01 21:13+0200\n" "POT-Creation-Date: 2013-06-04 00:21+0200\n"
"PO-Revision-Date: 2012-12-09 11:46+0000\n" "PO-Revision-Date: 2013-06-03 15:05+0000\n"
"Last-Translator: moosline <moosline@savvy.ch>\n" "Last-Translator: moosline <moosline@savvy.ch>\n"
"Language-Team: French (http://www.transifex.com/projects/p/openslides/" "Language-Team: French (http://www.transifex.com/projects/p/openslides/"
"language/fr/)\n" "language/fr/)\n"
@ -22,191 +23,191 @@ msgstr ""
#: agenda/static/javascript/agenda-config-datepicker.js:9 #: agenda/static/javascript/agenda-config-datepicker.js:9
#: agenda/static/javascript/agenda-config-datepicker.js:39 #: agenda/static/javascript/agenda-config-datepicker.js:39
msgid "en" msgid "en"
msgstr "" msgstr "en"
#: agenda/static/javascript/agenda-config-datepicker.js:10 #: agenda/static/javascript/agenda-config-datepicker.js:10
msgid "previous month" msgid "previous month"
msgstr "" msgstr "le mois dernier"
#: agenda/static/javascript/agenda-config-datepicker.js:11 #: agenda/static/javascript/agenda-config-datepicker.js:11
msgid "next month" msgid "next month"
msgstr "" msgstr "le mois prochain"
#: agenda/static/javascript/agenda-config-datepicker.js:13 #: agenda/static/javascript/agenda-config-datepicker.js:13
msgid "January" msgid "January"
msgstr "" msgstr "Janvier"
#: agenda/static/javascript/agenda-config-datepicker.js:13 #: agenda/static/javascript/agenda-config-datepicker.js:13
msgid "February" msgid "February"
msgstr "" msgstr "Février"
#: agenda/static/javascript/agenda-config-datepicker.js:13 #: agenda/static/javascript/agenda-config-datepicker.js:13
msgid "March" msgid "March"
msgstr "" msgstr "Mars"
#: agenda/static/javascript/agenda-config-datepicker.js:14 #: agenda/static/javascript/agenda-config-datepicker.js:14
msgid "April" msgid "April"
msgstr "" msgstr "Avril"
#: agenda/static/javascript/agenda-config-datepicker.js:14 #: agenda/static/javascript/agenda-config-datepicker.js:14
#: agenda/static/javascript/agenda-config-datepicker.js:20 #: agenda/static/javascript/agenda-config-datepicker.js:20
msgid "May" msgid "May"
msgstr "" msgstr "Mai"
#: agenda/static/javascript/agenda-config-datepicker.js:14 #: agenda/static/javascript/agenda-config-datepicker.js:14
msgid "June" msgid "June"
msgstr "" msgstr "Juin"
#: agenda/static/javascript/agenda-config-datepicker.js:15 #: agenda/static/javascript/agenda-config-datepicker.js:15
msgid "July" msgid "July"
msgstr "" msgstr "Juillet"
#: agenda/static/javascript/agenda-config-datepicker.js:15 #: agenda/static/javascript/agenda-config-datepicker.js:15
msgid "August" msgid "August"
msgstr "" msgstr "Août"
#: agenda/static/javascript/agenda-config-datepicker.js:15 #: agenda/static/javascript/agenda-config-datepicker.js:15
msgid "September" msgid "September"
msgstr "" msgstr "Septembre"
#: agenda/static/javascript/agenda-config-datepicker.js:16 #: agenda/static/javascript/agenda-config-datepicker.js:16
msgid "October" msgid "October"
msgstr "" msgstr "Octobre"
#: agenda/static/javascript/agenda-config-datepicker.js:16 #: agenda/static/javascript/agenda-config-datepicker.js:16
msgid "November" msgid "November"
msgstr "" msgstr "Novembre"
#: agenda/static/javascript/agenda-config-datepicker.js:16 #: agenda/static/javascript/agenda-config-datepicker.js:16
msgid "December" msgid "December"
msgstr "" msgstr "Décembre"
#: agenda/static/javascript/agenda-config-datepicker.js:19 #: agenda/static/javascript/agenda-config-datepicker.js:19
msgid "Jan" msgid "Jan"
msgstr "" msgstr "Jan"
#: agenda/static/javascript/agenda-config-datepicker.js:19 #: agenda/static/javascript/agenda-config-datepicker.js:19
msgid "Feb" msgid "Feb"
msgstr "" msgstr "Feb"
#: agenda/static/javascript/agenda-config-datepicker.js:19 #: agenda/static/javascript/agenda-config-datepicker.js:19
msgid "Mar" msgid "Mar"
msgstr "" msgstr "Mar"
#: agenda/static/javascript/agenda-config-datepicker.js:20 #: agenda/static/javascript/agenda-config-datepicker.js:20
msgid "Apr" msgid "Apr"
msgstr "" msgstr "Apr"
#: agenda/static/javascript/agenda-config-datepicker.js:20 #: agenda/static/javascript/agenda-config-datepicker.js:20
msgid "Jun" msgid "Jun"
msgstr "" msgstr "Jui"
#: agenda/static/javascript/agenda-config-datepicker.js:21 #: agenda/static/javascript/agenda-config-datepicker.js:21
msgid "Jul" msgid "Jul"
msgstr "" msgstr "Jul"
#: agenda/static/javascript/agenda-config-datepicker.js:21 #: agenda/static/javascript/agenda-config-datepicker.js:21
msgid "Aug" msgid "Aug"
msgstr "" msgstr "Aou"
#: agenda/static/javascript/agenda-config-datepicker.js:21 #: agenda/static/javascript/agenda-config-datepicker.js:21
msgid "Sep" msgid "Sep"
msgstr "" msgstr "Sep"
#: agenda/static/javascript/agenda-config-datepicker.js:22 #: agenda/static/javascript/agenda-config-datepicker.js:22
msgid "Oct" msgid "Oct"
msgstr "" msgstr "Oct"
#: agenda/static/javascript/agenda-config-datepicker.js:22 #: agenda/static/javascript/agenda-config-datepicker.js:22
msgid "Nov" msgid "Nov"
msgstr "" msgstr "Nov"
#: agenda/static/javascript/agenda-config-datepicker.js:22 #: agenda/static/javascript/agenda-config-datepicker.js:22
msgid "Dec" msgid "Dec"
msgstr "" msgstr "Déc"
#: agenda/static/javascript/agenda-config-datepicker.js:25 #: agenda/static/javascript/agenda-config-datepicker.js:25
msgid "Sunday" msgid "Sunday"
msgstr "" msgstr "Dimanche"
#: agenda/static/javascript/agenda-config-datepicker.js:25 #: agenda/static/javascript/agenda-config-datepicker.js:25
msgid "Monday" msgid "Monday"
msgstr "" msgstr "Lundi"
#: agenda/static/javascript/agenda-config-datepicker.js:25 #: agenda/static/javascript/agenda-config-datepicker.js:25
msgid "Tuesdey" msgid "Tuesdey"
msgstr "" msgstr "Mardi"
#: agenda/static/javascript/agenda-config-datepicker.js:25 #: agenda/static/javascript/agenda-config-datepicker.js:25
msgid "Wednesday" msgid "Wednesday"
msgstr "" msgstr "Mecredi"
#: agenda/static/javascript/agenda-config-datepicker.js:26 #: agenda/static/javascript/agenda-config-datepicker.js:26
msgid "Thursday" msgid "Thursday"
msgstr "" msgstr "Jeudi"
#: agenda/static/javascript/agenda-config-datepicker.js:26 #: agenda/static/javascript/agenda-config-datepicker.js:26
msgid "Friday" msgid "Friday"
msgstr "" msgstr "Vendredi"
#: agenda/static/javascript/agenda-config-datepicker.js:26 #: agenda/static/javascript/agenda-config-datepicker.js:26
msgid "Saturday" msgid "Saturday"
msgstr "" msgstr "Samedi"
#: agenda/static/javascript/agenda-config-datepicker.js:29 #: agenda/static/javascript/agenda-config-datepicker.js:29
#: agenda/static/javascript/agenda-config-datepicker.js:33 #: agenda/static/javascript/agenda-config-datepicker.js:33
msgid "Su" msgid "Su"
msgstr "" msgstr "Di"
#: agenda/static/javascript/agenda-config-datepicker.js:29 #: agenda/static/javascript/agenda-config-datepicker.js:29
#: agenda/static/javascript/agenda-config-datepicker.js:33 #: agenda/static/javascript/agenda-config-datepicker.js:33
msgid "Mo" msgid "Mo"
msgstr "" msgstr "Lu"
#: agenda/static/javascript/agenda-config-datepicker.js:29 #: agenda/static/javascript/agenda-config-datepicker.js:29
#: agenda/static/javascript/agenda-config-datepicker.js:33 #: agenda/static/javascript/agenda-config-datepicker.js:33
msgid "Tu" msgid "Tu"
msgstr "" msgstr "Ma"
#: agenda/static/javascript/agenda-config-datepicker.js:29 #: agenda/static/javascript/agenda-config-datepicker.js:29
#: agenda/static/javascript/agenda-config-datepicker.js:33 #: agenda/static/javascript/agenda-config-datepicker.js:33
msgid "We" msgid "We"
msgstr "" msgstr "Me"
#: agenda/static/javascript/agenda-config-datepicker.js:30 #: agenda/static/javascript/agenda-config-datepicker.js:30
#: agenda/static/javascript/agenda-config-datepicker.js:34 #: agenda/static/javascript/agenda-config-datepicker.js:34
msgid "Th" msgid "Th"
msgstr "" msgstr "Je"
#: agenda/static/javascript/agenda-config-datepicker.js:30 #: agenda/static/javascript/agenda-config-datepicker.js:30
#: agenda/static/javascript/agenda-config-datepicker.js:34 #: agenda/static/javascript/agenda-config-datepicker.js:34
msgid "Fr" msgid "Fr"
msgstr "" msgstr "Ve"
#: agenda/static/javascript/agenda-config-datepicker.js:30 #: agenda/static/javascript/agenda-config-datepicker.js:30
#: agenda/static/javascript/agenda-config-datepicker.js:34 #: agenda/static/javascript/agenda-config-datepicker.js:34
msgid "Sa" msgid "Sa"
msgstr "" msgstr "Sa"
#: agenda/static/javascript/agenda-config-datepicker.js:45 #: agenda/static/javascript/agenda-config-datepicker.js:45
msgid "Time" msgid "Time"
msgstr "" msgstr "Heure"
#: agenda/static/javascript/agenda-config-datepicker.js:46 #: agenda/static/javascript/agenda-config-datepicker.js:46
msgid "Hour" msgid "Hour"
msgstr "" msgstr "Heure"
#: agenda/static/javascript/agenda-config-datepicker.js:47 #: agenda/static/javascript/agenda-config-datepicker.js:47
msgid "Minute" msgid "Minute"
msgstr "" msgstr "Minute"
#: agenda/static/javascript/agenda-config-datepicker.js:48 #: agenda/static/javascript/agenda-config-datepicker.js:48
msgid "Current time" msgid "Current time"
msgstr "" msgstr "heure actuelle"
#: agenda/static/javascript/agenda-config-datepicker.js:49 #: agenda/static/javascript/agenda-config-datepicker.js:49
msgid "Close" msgid "Close"
msgstr "" msgstr "Fermer"
#: agenda/static/javascript/agenda.js:17 #: agenda/static/javascript/agenda.js:17
#, c-format #, c-format
@ -215,40 +216,40 @@ msgstr ", dans %s sont cachés"
#: static/javascript/dataTables.bootstrap.js:19 #: static/javascript/dataTables.bootstrap.js:19
msgid "_MENU_ entries per page" msgid "_MENU_ entries per page"
msgstr "" msgstr "_MENU_ Entrées par page"
#: static/javascript/dataTables.bootstrap.js:20 #: static/javascript/dataTables.bootstrap.js:20
msgid "Search:" msgid "Search:"
msgstr "" msgstr "Recherche:"
#: static/javascript/dataTables.bootstrap.js:21 #: static/javascript/dataTables.bootstrap.js:21
msgid "Showing _START_ to _END_ of _TOTAL_ entries" msgid "Showing _START_ to _END_ of _TOTAL_ entries"
msgstr "" msgstr "Voici _START_ à _END_ sur _TOTAL_ entrées"
#: static/javascript/dataTables.bootstrap.js:22 #: static/javascript/dataTables.bootstrap.js:22
msgid "Showing 0 entries" msgid "Showing 0 entries"
msgstr "" msgstr "Affichage de 0 entrées"
#: static/javascript/dataTables.bootstrap.js:23 #: static/javascript/dataTables.bootstrap.js:23
msgid "(filtered from _MAX_ total entries)" msgid "(filtered from _MAX_ total entries)"
msgstr "" msgstr "(filtrée à partir des entrées totales _Max_)"
#: static/javascript/dataTables.bootstrap.js:24 #: static/javascript/dataTables.bootstrap.js:24
msgid "No matching records found" msgid "No matching records found"
msgstr "" msgstr "Aucun enregistrement correspondant n'a été trouvé"
#: static/javascript/dataTables.bootstrap.js:26 #: static/javascript/dataTables.bootstrap.js:26
msgid "First" msgid "First"
msgstr "" msgstr "Premier"
#: static/javascript/dataTables.bootstrap.js:27 #: static/javascript/dataTables.bootstrap.js:27
msgid "Last" msgid "Last"
msgstr "" msgstr "Dernier"
#: static/javascript/dataTables.bootstrap.js:28 #: static/javascript/dataTables.bootstrap.js:28
msgid "Next" msgid "Next"
msgstr "" msgstr "Prochain"
#: static/javascript/dataTables.bootstrap.js:29 #: static/javascript/dataTables.bootstrap.js:29
msgid "Previous" msgid "Previous"
msgstr "" msgstr "Avant"

View File

@ -34,8 +34,8 @@
{% if perms.mediafile.can_manage %} {% if perms.mediafile.can_manage %}
<td> <td>
<span style="width: 1px; white-space: nowrap;"> <span style="width: 1px; white-space: nowrap;">
<a href="{% model_url mediafile 'update' %}" title="{% trans 'Edit' %}" class="btn btn-mini"><i class="icon-pencil"></i></a> <a href="{% model_url mediafile 'update' %}" rel="tooltip" data-original-title="{% trans 'Edit' %}" class="btn btn-mini"><i class="icon-pencil"></i></a>
<a href="{% model_url mediafile 'delete' %}" title="{% trans 'Delete' %}" class="btn btn-mini"><i class="icon-remove"></i></a> <a href="{% model_url mediafile 'delete' %}" rel="tooltip" data-original-title="{% trans 'Delete' %}" class="btn btn-mini"><i class="icon-remove"></i></a>
</span> </span>
</td> </td>
{% endif %} {% endif %}

View File

@ -27,11 +27,11 @@
<td>{{ category.prefix }}</td> <td>{{ category.prefix }}</td>
<td><a href="{% model_url category 'update' %}">{{ category }}</a></td> <td><a href="{% model_url category 'update' %}">{{ category }}</a></td>
<td><span style="width: 1px; white-space: nowrap;"> <td><span style="width: 1px; white-space: nowrap;">
<a href="{% model_url category 'update' %}" title="{% trans 'Edit' %}" class="btn btn-mini"> <a href="{% model_url category 'update' %}" rel="tooltip" data-original-title="{% trans 'Edit' %}"
<i class="icon-pencil"></i> class="btn btn-mini"><i class="icon-pencil"></i>
</a> </a>
<a href="{% model_url category 'delete' %}" title="{% trans 'Delete' %}" class="btn btn-mini"> <a href="{% model_url category 'delete' %}" rel="tooltip" data-original-title="{% trans 'Delete' %}"
<i class="icon-remove"></i> class="btn btn-mini"><i class="icon-remove"></i>
</a> </a>
</span> </span>
</td> </td>

View File

@ -20,8 +20,12 @@
{% trans "Version" %} {{ version.version_number }} {% trans "Version" %} {{ version.version_number }}
</small> </small>
<small class="pull-right"> <small class="pull-right">
<a href="{% url 'motion_list' %}" class="btn btn-mini"><i class="icon-chevron-left"></i> {% trans "Back to overview" %}</a> <a href="{% url 'motion_list' %}" class="btn btn-mini"
<a href="{% url 'motion_detail_pdf' motion.id %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Print motion as PDF' %}" target="_blank"><i class="icon-print"></i> PDF</a> rel="tooltip" data-original-title="{% trans 'Show item' %}">
<i class="icon-chevron-left"></i> {% trans "Back to overview" %}</a>
<a href="{% url 'motion_detail_pdf' motion.id %}" class="btn btn-mini"
rel="tooltip" data-original-title="{% trans 'Print motion as PDF' %}" target="_blank">
<i class="icon-print"></i> PDF</a>
<!-- activate projector --> <!-- activate projector -->
{% if perms.projector.can_manage_projector %} {% if perms.projector.can_manage_projector %}
<a href="{% url 'projector_activate_slide' motion.sid %}" class="activate_link btn {% if motion.active %}btn-primary{% endif %} btn-mini" rel="tooltip" data-original-title="{% trans 'Show motion' %}"> <a href="{% url 'projector_activate_slide' motion.sid %}" class="activate_link btn {% if motion.active %}btn-primary{% endif %} btn-mini" rel="tooltip" data-original-title="{% trans 'Show motion' %}">
@ -34,11 +38,11 @@
{% trans 'More actions' %} <span class="caret"></span> {% trans 'More actions' %} <span class="caret"></span>
</a> </a>
<ul class="dropdown-menu pull-right"> <ul class="dropdown-menu pull-right">
<!-- edit -->
{% if allowed_actions.edit %}
<li><a href="{% model_url motion 'edit' %}"><i class="icon-pencil"></i> {% trans 'Edit motion' %}</a></li>
{% endif %}
{% if perms.motion.can_manage_motion %} {% if perms.motion.can_manage_motion %}
<!-- edit -->
{% if allowed_actions.edit %}
<li><a href="{% model_url motion 'edit' %}"><i class="icon-pencil"></i> {% trans 'Edit motion' %}</a></li>
{% endif %}
<!-- delete --> <!-- delete -->
{% if allowed_actions.delete %} {% if allowed_actions.delete %}
<li><a href="{% model_url motion 'delete' %}"><i class="icon-remove"></i> {% trans 'Delete motion' %}</a></li> <li><a href="{% model_url motion 'delete' %}"><i class="icon-remove"></i> {% trans 'Delete motion' %}</a></li>
@ -136,6 +140,7 @@
<!-- Log --> <!-- Log -->
{% if perms.motion.can_manage_motion %} {% if perms.motion.can_manage_motion %}
<p>
<div class="btn-group" data-toggle="buttons-checkbox"> <div class="btn-group" data-toggle="buttons-checkbox">
<button type="button" class="btn" data-toggle="collapse" data-target="#log"> <button type="button" class="btn" data-toggle="collapse" data-target="#log">
{% trans "Show log" %} {% trans "Show log" %}
@ -148,6 +153,7 @@
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
</p>
{% endif %} {% endif %}
</div> <!--/span--> </div> <!--/span-->

View File

@ -25,7 +25,7 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if perms.motion.can_manage_motion %} {% if perms.motion.can_manage_motion %}
<a href="{% url 'motion_category_list' %}" class="btn btn-mini"><i class="icon-th-large"></i> {% trans 'Categories' %}</a> <a href="{% url 'motion_category_list' %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Manage categories' %}"><i class="icon-th-large"></i> {% trans 'Categories' %}</a>
<a href="{% url 'motion_csv_import' %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Import motions' %}"><i class="icon-import"></i> {% trans 'Import' %}</a> <a href="{% url 'motion_csv_import' %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Import motions' %}"><i class="icon-import"></i> {% trans 'Import' %}</a>
{% endif %} {% endif %}
<a href="{% url 'motion_list_pdf' %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Print all motions as PDF' %}" target="_blank"><i class="icon-print"></i> PDF</a> <a href="{% url 'motion_list_pdf' %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Print all motions as PDF' %}" target="_blank"><i class="icon-print"></i> PDF</a>
@ -79,15 +79,15 @@
</a> </a>
{% endif %} {% endif %}
{% if perms.motion.can_manage_motion %} {% if perms.motion.can_manage_motion %}
<a href="{% model_url motion 'edit' %}" title="{% trans 'Edit' %}" class="btn btn-mini"> <a href="{% model_url motion 'edit' %}" rel="tooltip" data-original-title="{% trans 'Edit' %}"
<i class="icon-pencil"></i> class="btn btn-mini"><i class="icon-pencil"></i>
</a> </a>
<a href="{% model_url motion 'delete' %}" title="{% trans 'Delete' %}" class="btn btn-mini"> <a href="{% model_url motion 'delete' %}" rel="tooltip" data-original-title="{% trans 'Delete' %}"
<i class="icon-remove"></i> class="btn btn-mini"><i class="icon-remove"></i>
</a> </a>
{% endif %} {% endif %}
<a href="{% url 'motion_detail_pdf' motion.id %}" class="btn btn-mini" title="{% trans 'Print motion as PDF' %}" target="_blank"> <a href="{% url 'motion_detail_pdf' motion.id %}" data-original-title="{% trans 'Print motion as PDF' %}"
<i class="icon-print"></i> PDF class="btn btn-mini tooltip-left" target="_blank"><i class="icon-print"></i> PDF
</a> </a>
</span> </span>
</td> </td>

View File

@ -731,7 +731,10 @@ class MotionCSVImportView(FormView):
if count_success: if count_success:
messages.success( messages.success(
self.request, self.request,
"<strong>%s</strong><br>%s" % (_('Summary'), _('%d of %d motions successfully imported.') % (count_success, count_lines))) "<strong>%s</strong><br>%s" % (
_('Summary'),
_('%(counts)d of %(total)d motions successfully imported.')
% {'counts': count_success, 'total': count_lines}))
return super(MotionCSVImportView, self).form_valid(form) return super(MotionCSVImportView, self).form_valid(form)
motion_csv_import = MotionCSVImportView.as_view() motion_csv_import = MotionCSVImportView.as_view()

View File

@ -46,8 +46,7 @@
<tr> <tr>
<th>{% trans "Present" %}</th> <th>{% trans "Present" %}</th>
<th class="optional">{% trans "Title" %}</th> <th class="optional">{% trans "Title" %}</th>
<th>{% trans "First Name" %}</th> <th>{% trans "Name" %}</th>
<th>{% trans "Last Name" %}</th>
<th class="optional">{% trans "Structure level" %}</th> <th class="optional">{% trans "Structure level" %}</th>
<th class="optional">{% trans "Group" %}</th> <th class="optional">{% trans "Group" %}</th>
<th class="optional">{% trans "Committee" %}</th> <th class="optional">{% trans "Committee" %}</th>
@ -65,19 +64,24 @@
{% if user != request_user and not user.is_superuser %} {% if user != request_user and not user.is_superuser %}
<a href="{% url 'user_status_toggle' user.id %}" <a href="{% url 'user_status_toggle' user.id %}"
class="status_link btn btn-mini {% if user.is_active %}btn-success{% endif %}" class="status_link btn btn-mini {% if user.is_active %}btn-success{% endif %}"
title="{% if user.is_active %}{% trans 'present' %}{% else %}{% trans 'absent' %}{% endif %}"> rel="tooltip" data-original-title="{% if user.is_active %}{% trans 'present' %}{% else %}{% trans 'absent' %}{% endif %}">
<i class="{% if user.is_active %}icon-on{% else %}icon-off{% endif %}"></i> <i class="{% if user.is_active %}icon-on{% else %}icon-off{% endif %}"></i>
</a> </a>
{% endif %} {% endif %}
{% else %} {% else %}
<span class="status_link"> <span class="status_link">
<i class="status_link {% if user.is_active %}icon-on{% else %}icon-off{% endif %}" <i class="status_link {% if user.is_active %}icon-on{% else %}icon-off{% endif %} tooltip-bottom"
title="{% if user.is_active %}{% trans 'present' %}{% else %}{% trans 'absent' %}{% endif %}"></i> data-original-title="{% if user.is_active %}{% trans 'present' %}{% else %}{% trans 'absent' %}{% endif %}"></i>
{% endif %} {% endif %}
</td> </td>
<td class="optional">{{ user.title }}</td> <td class="optional">{{ user.title }}</td>
<td><a href="{% url 'user_view' user.id %}">{{ user.first_name }}</a></td> <td>
<td><a href="{% url 'user_view' user.id %}">{{ user.last_name }}</a></td> {% if 'participant_sort_users_by_first_name'|get_config %}
<a href="{% url 'user_view' user.id %}">{{ user.first_name }} {{ user.last_name }}</a>
{% else %}
<a href="{% url 'user_view' user.id %}">{{ user.last_name }}, {{ user.first_name }}</a>
{% endif %}
</td>
<td class="optional">{{ user.structure_level }}</td> <td class="optional">{{ user.structure_level }}</td>
<td class="optional"> <td class="optional">
{% for group in user.groups.all %} {% for group in user.groups.all %}
@ -89,7 +93,13 @@
</td> </td>
<td class="optional">{{ user.committee }}</td> <td class="optional">{{ user.committee }}</td>
{% if perms.participant.can_manage_participant %} {% if perms.participant.can_manage_participant %}
<td class="optional">{{ user.comment|first_line }}</td> <td class="optional">
{% if user.comment %}
<a class="btn btn-mini" rel="popover" data-content="{{ user.comment|linebreaks }}">
<i class="icon icon-search"></i>
</a>
{% endif %}
</td>
<td class="optional"> <td class="optional">
{% if user.last_login > user.date_joined %} {% if user.last_login > user.date_joined %}
{{ user.last_login }} {{ user.last_login }}
@ -98,15 +108,18 @@
<td> <td>
<span style="width: 1px; white-space: nowrap;"> <span style="width: 1px; white-space: nowrap;">
{% if perms.projector.can_manage_projector %} {% if perms.projector.can_manage_projector %}
<a href="{% url 'projector_activate_slide' user.sid %}" class="activate_link btn {% if user.active %}btn-primary{% endif %} btn-mini" title="{% trans 'Show' %}"> <a href="{% url 'projector_activate_slide' user.sid %}" class="activate_link btn {% if user.active %}btn-primary{% endif %} btn-mini"
<i class="icon-facetime-video {% if user.active %}icon-white{% endif %}"></i> rel="tooltip" data-original-title="{% trans 'Show participant' %}">
</a> <i class="icon-facetime-video {% if user.active %}icon-white{% endif %}"></i>
</a>
{% endif %} {% endif %}
<a href="{% url 'user_edit' user.id %}" title="{% trans 'Edit' %}" class="btn btn-mini"> <a href="{% url 'user_edit' user.id %}" rel="tooltip" data-original-title="{% trans 'Edit' %}"
class="btn btn-mini">
<i class="icon-pencil"></i> <i class="icon-pencil"></i>
</a> </a>
{% if user != request_user %} {% if user != request_user %}
<a href="{% url 'user_delete' user.id %}" title="{% trans 'Delete' %}" class="btn btn-mini"> <a href="{% url 'user_delete' user.id %}" rel="tooltip" data-original-title="{% trans 'Delete' %}"
class="btn btn-mini">
<i class="icon-remove"></i> <i class="icon-remove"></i>
</a> </a>
{% endif %} {% endif %}

View File

@ -29,14 +29,19 @@ $(function () {
success: function(data) { success: function(data) {
$('.activate_link').removeClass('btn-primary'); $('.activate_link').removeClass('btn-primary');
$('.activate_link i').removeClass('icon-white'); $('.activate_link i').removeClass('icon-white');
$('tr').removeClass('activeline');
$('div').removeClass('activeline');
$('li').removeClass('activeline');
// is table line // is table line
if ( link.parent().parent().parent().is("tr") ) { if ( link.parent().parent().parent().is("tr") ) {
$('tr').removeClass('activeline'); link.parent().parent().parent().addClass('activeline');
}
// is sortable list (agenda)
if ( link.parent().parent().parent().is("div") ) {
link.parent().parent().parent().addClass('activeline'); link.parent().parent().parent().addClass('activeline');
} }
// is widget list item // is widget list item
if ( link.parent().is("li") ) { if ( link.parent().is("li") ) {
$('li').removeClass('activeline');
link.parent().addClass('activeline'); link.parent().addClass('activeline');
} }
link.addClass('btn-primary'); link.addClass('btn-primary');
@ -165,6 +170,13 @@ $(document).ready(function(){
$('.tooltip-bottom').tooltip({ $('.tooltip-bottom').tooltip({
placement: 'bottom' placement: 'bottom'
}); });
//Popover
$(this).popover({
selector: "a[rel=popover]",
placement: 'bottom',
html: true
});
// Resize menu and content container // Resize menu and content container
function iconmenu(){ function iconmenu(){
$('.leftmenu').removeClass('span2').addClass('lefticon').addClass('span1'); $('.leftmenu').removeClass('span2').addClass('lefticon').addClass('span1');

View File

@ -39,8 +39,8 @@ def first_line(text):
lines = text.split('\n') lines = text.split('\n')
except AttributeError: except AttributeError:
return '' return ''
if len(lines) > 1 or len(lines[0]) > 40: if len(lines) > 1 or len(lines[0]) > 30:
s = "%s ..." s = "%s ..."
else: else:
s = "%s" s = "%s"
return s % lines[0][:40] return s % lines[0][:30]