Updated template with twitter bootstrap. Step 1: agenda and application.

This commit is contained in:
Emanuel Schuetze 2012-09-05 00:20:28 +02:00
parent 34a690c713
commit 7fde53a09e
36 changed files with 7987 additions and 1607 deletions

View File

@ -18,7 +18,3 @@
.close_link.closed span { .close_link.closed span {
background-image: url(../images/icons/close.png); background-image: url(../images/icons/close.png);
} }
table#menu-overview {
white-space: nowrap;
}

View File

@ -1,4 +1,4 @@
{% extends "agenda/base_agenda.html" %} {% extends "base.html" %}
{% load i18n %} {% load i18n %}
@ -12,26 +12,42 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1>
{% if item %} {% if item %}
<h1>{% trans "Edit item" %}</h1> {% trans "Edit item" %}
{% else %} {% else %}
<h1>{% trans "New item" %}</h1> {% trans "New item" %}
{% endif %} {% endif %}
<small class="pull-right">
<a href="{% url item_overview %}" class="btn btn-mini"><i class="icon-chevron-left"></i> {% trans "Back to overview" %}</a>
</small>
</h1>
<form action="" method="post">{% csrf_token %} <form action="" method="post">{% csrf_token %}
{{ form.as_p }} {% for field in form %}
<p> <div class="control-group{% if field.errors %} error{% endif%}">
<button class="button" type="submit"> <label for="id_{{ field.name }}">{{ field.label }}{% if field.field.required %}<span class="required">*</span>{% endif %}:</label>
<span class="icon ok">{% trans 'Save' %}</span> {{ field }}
</button> {% if field.errors %}
<button class="button" type="submit" name="apply"> <span class="help-inline">{{ field.errors }}</span>
<span class="icon apply">{% trans 'Apply' %}</span> {% endif %}
</button> {% if field.help_text %}
<a href='{% url item_overview %}'> <span class="help-inline">{{ field.help_text }})</span>
<button class="button" type="button" onclick="window.location='{% url item_overview %}'"> {% endif %}
<span class="icon cancel">{% trans 'Cancel' %}</span> </div>
</button> {% endfor %}
</a> <div class="control-group">
</p> <button class="btn btn-primary" type="submit">
{% trans 'Save' %}
</button>
<button class="btn" type="submit" name="apply">
{% trans 'Apply' %}
</button>
<a href='{% url item_overview %}'>
<button class="btn" type="button" onclick="window.location='{% url item_overview %}'">
{% trans 'Cancel' %}</span>
</button>
</a>
</div>
<small>* {% trans "required" %}</small> <small>* {% trans "required" %}</small>
</form> </form>
{% endblock %} {% endblock %}

View File

@ -49,7 +49,7 @@
</td> </td>
{% endif %} {% endif %}
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<td class="tabledrag-hide"> <td class="tabledrag-hide" style="display: none;">
{% with form=item.weight_form %} {% with form=item.weight_form %}
{{ form.weight }} {{ form.weight }}
{{ form.self }} {{ form.self }}

View File

@ -1,4 +1,4 @@
{% extends "agenda/base_agenda.html" %} {% extends "base.html" %}
{% load tags %} {% load tags %}
{% load i18n %} {% load i18n %}
@ -10,6 +10,9 @@
{% block header %} {% block header %}
<link type="text/css" rel="stylesheet" media="all" href="{% static 'styles/tabledrag.css' %}" /> <link type="text/css" rel="stylesheet" media="all" href="{% static 'styles/tabledrag.css' %}" />
<link type="text/css" rel="stylesheet" media="all" href="{% static 'styles/agenda.css' %}" /> <link type="text/css" rel="stylesheet" media="all" href="{% static 'styles/agenda.css' %}" />
{% endblock %}
{% block javascript %}
<script type="text/javascript" src="{% static 'javascript/agenda.js' %}"></script> <script type="text/javascript" src="{% static 'javascript/agenda.js' %}"></script>
<script type="text/javascript" src="{% static 'javascript/jquery.cookie.js' %}"></script> <script type="text/javascript" src="{% static 'javascript/jquery.cookie.js' %}"></script>
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
@ -37,29 +40,38 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<form action="" method="post">{% csrf_token %} <form action="" method="post">{% csrf_token %}
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<div id="changed-order-message" style="display:none" class="notification warning"> <div id="changed-order-message" style="display:none" class="alert alert-warning">
<em>{% trans "Do you want to save the changed order of agenda items?" %}<br> <button type="button" class="close" data-dismiss="alert">×</button>
<input type="submit" value="{% trans 'Yes' %}"> <p>{% trans "Do you want to save the changed order of agenda items?" %}</p>
<input type="button" onclick="window.location.href='{% url item_overview %}';" value="{% trans 'No' %}"> <p>
</em> <button class="btn" type="submit">{% trans 'Yes' %}</button>
<a href="{% url item_overview %}" class="btn">{% trans 'No' %}</a>
</p>
</div> </div>
{% endif %} {% endif %}
<h1>{% trans "Agenda" %}</h1> <h1>{% trans "Agenda" %}
<small class="pull-right">
{% if perms.agenda.can_manage_agenda %}
<a href="{% url item_new %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'New item' %}"><i class="icon-plus"></i> {% trans "New" %}</a>
{% endif %}
<a href="{% url print_agenda %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Print agenda as PDF' %}"><i class="icon-print"></i> PDF</a>
</small>
</h1>
<p> <label class="checkbox">
{% trans "Filter" %}:
<input type="checkbox" id="hide_closed_items"> {% trans "Hide closed items" %} <input type="checkbox" id="hide_closed_items"> {% trans "Hide closed items" %}
</p> </label>
{{ items|length }}
<small><i>{{ items|length }}
{% blocktrans count counter=items|length %}item{% plural %}items{% endblocktrans %}<span id="hiddencount"></span> {% blocktrans count counter=items|length %}item{% plural %}items{% endblocktrans %}<span id="hiddencount"></span>
<table id="menu-overview" class="agendatable"> </i></small>
<table id="menu-overview" class="table table-striped table-bordered">
<tr> <tr>
<th width="50">{% trans "Done" %}</th> <th width="10px"></th>
<th>{% trans "Item" %}</th> <th>{% trans "Item" %}</th>
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<th width="200">{% trans "Comment" %}</th> <th width="200">{% trans "Comment" %}</th>
@ -68,7 +80,7 @@
<th width="50">{% trans "Actions" %}</th> <th width="50">{% trans "Actions" %}</th>
{% endif %} {% endif %}
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<th class="tabledrag-hide">{% trans "Weight" %}</th> <th class="tabledrag-hide" style="display: none;">{% trans "Weight" %}</th>
{% endif %} {% endif %}
</tr> </tr>
<tr class="topline{% if active_sid == 'agenda' %} activeline{% endif %}"> <tr class="topline{% if active_sid == 'agenda' %} activeline{% endif %}">

View File

@ -1,4 +1,4 @@
{% extends "agenda/base_agenda.html" %} {% extends "base.html" %}
{% load i18n %} {% load i18n %}

View File

@ -212,6 +212,7 @@ def register_tab(request):
selected = request.path.startswith('/agenda/') selected = request.path.startswith('/agenda/')
return Tab( return Tab(
title=_('Agenda'), title=_('Agenda'),
app='agenda',
url=reverse('item_overview'), url=reverse('item_overview'),
permission=request.user.has_perm('agenda.can_see_agenda') permission=request.user.has_perm('agenda.can_see_agenda')
or request.user.has_perm('agenda.can_manage_agenda'), or request.user.has_perm('agenda.can_manage_agenda'),

View File

@ -1,66 +0,0 @@
{% extends "base.html" %}
{% load tags %}
{% load i18n %}
{% load staticfiles %}
{% block submenu %}
{% url application_overview as url_applicationoverview %}
<h4>{% trans "Motions" %}</h4>
<ul>
<li class="{% if request.path == url_applicationoverview %}selected{% endif %}"><a href="{% url application_overview %}">{% trans "All motions" %}</a></li>
{% if perms.application.can_create_application or perms.application.can_manage_application %}
<li class="{% active request '/application/new' %}"><a href="{% url application_new %}">{% trans "New motion" %}</a></li>
{% endif %}
{% if perms.application.can_manage_application %}
<li class="{% active request '/application/import' %}"><a href="{% url application_import %}">{% trans 'Import motions' %}</a></li>
{% endif %}
<li><a href="{% url print_applications %}"><img src="{% static 'images/icons/pdf.png' %}"> {% trans 'All motions as PDF' %}</a></li>
</ul>
{# second submenu #}
{% if application %}
<br>
<h3>{% trans "Application No." %}
{% if application.number != None %}
{{ application.number }}
{% else %}
<i>[-]</i>
{% endif %}
</h3>
<ul>
{# view application #}
{% url application_view application.id as url_applicationview %}
<li class="{% if request.path == url_applicationview %}selected{% endif %}"><a href="{% url application_view application.id %}">{% trans 'View motion' %}</a></li>
{# edit application #}
{% if "edit" in actions %}
{% url application_edit application.id as url_applicationedit %}
<li class="{% if request.path == url_applicationedit %}selected{% endif %}"><a href="{% url application_edit application.id %}"><img src="{% static 'images/icons/edit.png' %}"> {% trans 'Edit motion' %}</a></li>
{% endif %}
{# delete application #}
{% if "delete" in actions %}
<li><a href="{% url application_delete application.id %}"><img src="{% static 'images/icons/delete.png' %}"> {% trans 'Delete motion' %}</a></li>
{% endif %}
{# PDF #}
<li><a href="{% url print_application application.id %}"><img src="{% static 'images/icons/pdf.png' %}"> {% trans 'Motion as PDF' %}</a></li>
{# activate and polls #}
{% if perms.projector.can_manage_projector %}
<li>
<a class="activate_link {% if item.active %}active{% endif %}" href="{% url projector_activate_slide application.sid %}"><img src="{% static 'images/icons/projector.png' %}"> {% trans 'Show Application' %}</a>
</li>
{% endif %}
{% if perms.application.can_manage_application %}
{% for poll in application.polls %}
{% url application_poll_view poll.id as url_applicationpollview %}
<li class="{% if request.path == url_applicationpollview %}selected{% endif %}"><a href="{% url application_poll_view poll.id %}"><img src="{% static 'images/icons/edit.png' %}"> {{ forloop.counter }}. {% trans "Vote" %}</a></li>
{% endfor %}
{% endif %}
{# Agenda Item #}
{% if perms.agenda.can_manage_agenda %}
<li>
<a href="{% url application_create_agenda application.id %}">{% trans 'New agenda item' %}</a>
</li>
{% endif %}
</ul>
{% endif %}
{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends "application/base_application.html" %} {% extends "base.html" %}
{% load i18n %} {% load i18n %}
@ -12,28 +12,43 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1>
{% if application %} {% if application %}
<h1>{% trans "Edit motion" %}</h1> {% trans "Edit motion" %}
{% else %} {% else %}
<h1>{% trans "New motion" %}</h1> {% trans "New motion" %}
{% endif %} {% endif %}
<small class="pull-right">
<a href="{% url application_overview %}" class="btn btn-mini"><i class="icon-chevron-left"></i> {% trans "Back to overview" %}</a>
</small>
</h1>
<form action="" method="post">{% csrf_token %} <form action="" method="post">{% csrf_token %}
{{ form.as_p }} {% for field in form %}
<div class="control-group{% if field.errors %} error{% endif%}">
<label for="id_{{ field.name }}">{{ field.label }}{% if field.field.required %}<span class="required">*</span>{% endif %}:</label>
{{ field }}
{% if field.errors %}
<span class="help-inline">{{ field.errors }}</span>
{% endif %}
{% if field.help_text %}
<span class="help-inline">{{ field.help_text }})</span>
{% endif %}
</div>
{% endfor %}
{{ managerform.as_p }} {{ managerform.as_p }}
<p> <div class="control-group">
<button class="button" type="submit"> <button class="btn btn-primary" type="submit">
<span class="icon ok">{% trans 'Save' %}</span> {% trans 'Save' %}
</button> </button>
<button class="button" type="submit" name="apply"> <button class="btn" type="submit" name="apply">
<span class="icon apply">{% trans 'Apply' %}</span> {% trans 'Apply' %}
</button> </button>
<a href='{% url application_overview %}'> <a href='{% url application_overview %}'>
<button class="button" type="button" onclick="window.location='{% url application_overview %}'"> <button class="btn" type="button" onclick="window.location='{% url application_overview %}'">
<span class="icon cancel">{% trans 'Cancel' %}</span> {% trans 'Cancel' %}</span>
</button> </button>
</a> </a>
</p> </div>
<small>* {% trans "required" %}</small> <small>* {% trans "required" %}</small>
</form> </form>

View File

@ -1,13 +1,17 @@
{% extends "application/base_application.html" %} {% extends "base.html" %}
{% load i18n %} {% load i18n %}
{% block title %}{{ block.super }} {% trans "Import motions" %} {% endblock %} {% block title %}{{ block.super }} {% trans "Import motions" %} {% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Import motions" %}</h1> <h1>{% trans "Import motions" %}
<p>{% trans 'Select a CSV file to import motions!' %}</p> <small class="pull-right">
<a href="{% url application_overview %}" class="btn btn-mini"><i class="icon-chevron-left"></i> {% trans "Back to overview" %}</a>
</small>
</h1>
<p>{% trans 'Select a CSV file to import motions!' %}</p>
<p>{% trans 'Required comma separated values: <code>{number, title, text, reason, first_name, last_name}</code> (<code>number</code> and <code>reason</code> are optional and may be empty)' %} <p>{% trans 'Required comma separated values: <code>{number, title, text, reason, first_name, last_name}</code> (<code>number</code> and <code>reason</code> are optional and may be empty)' %}
<br> <br>
{% trans 'Required CSV file encoding: UTF-8 (Unicode).' %} {% trans 'Required CSV file encoding: UTF-8 (Unicode).' %}
@ -17,17 +21,26 @@
</p> </p>
<form enctype="multipart/form-data" action="" method="post">{% csrf_token %} <form enctype="multipart/form-data" action="" method="post">{% csrf_token %}
{{ form.as_p }} {% for field in form %}
<p> <div class="control-group{% if field.errors %} error{% endif%}">
<button class="button" type="submit"> <label for="id_{{ field.name }}">{{ field.label }}{% if field.field.required %}<span class="required">*</span>{% endif %}:</label>
<span class="icon import">{% trans 'Import' %}</span> {{ field }}
</button> {% if field.errors %}
<a href="{% url application_overview%}"> <span class="help-inline">{{ field.errors }}</span>
<button class="button" type="button" onclick="window.location='{% url application_overview %}'"> {% endif %}
<span class="icon cancel">{% trans 'Cancel' %}</span> {% if field.help_text %}
<span class="help-inline">{{ field.help_text }})</span>
{% endif %}
</div>
{% endfor %}
<div class="control-group">
<button class="btn btn-primary" type="submit">
{% trans 'Import' %}
</button> </button>
<a href='{% url application_overview %}' class="btn">
{% trans 'Cancel' %}
</a> </a>
</p> </div>
<small>* {% trans "required" %}</small> <small>* {% trans "required" %}</small>
</form> </form>
{% endblock %} {% endblock %}

View File

@ -1,4 +1,4 @@
{% extends "application/base_application.html" %} {% extends "base.html" %}
{% load tags %} {% load tags %}
{% load i18n %} {% load i18n %}
@ -7,17 +7,31 @@
{% block title %}{{ block.super }} {% trans "Motions" %}{% endblock %} {% block title %}{{ block.super }} {% trans "Motions" %}{% endblock %}
{% block content %} {% block content %}
<h1>{% trans "Motions" %}</h1> <h1>{% trans "Motions" %}
<p><form action="{{ request.url }}" name="filter" method="get"> <small class="pull-right">
{% trans "Filter" %}: {% if perms.application.can_manage_application %}
<a href="{% url application_new %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'New motion' %}"><i class="icon-plus"></i> {% trans "New" %}</a>
<a href="{% url application_import %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Import motions' %}"><i class="icon-share-alt"></i> {% trans 'Import' %}</a>
{% endif %}
<a href="{% url print_applications %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Print all motions as PDF' %}"><i class="icon-print"></i> PDF</a>
</small>
</h1>
<form action="{{ request.url }}" name="filter" method="get" class="form-inline">
{% if min_supporters > 0 %} {% if min_supporters > 0 %}
<label class="checkbox">
<input type="checkbox" name="needsup" onchange="document.forms['filter'].submit()" <input type="checkbox" name="needsup" onchange="document.forms['filter'].submit()"
{% if 'on' in request.GET.needsup %}checked{% endif %}> {% trans "Need supporters" %} &nbsp; {% if 'on' in request.GET.needsup %}checked{% endif %}> {% trans "Need supporters" %} &nbsp;
</label>
{% endif %} {% endif %}
<label class="checkbox">
<input type="checkbox" name="number" onchange="document.forms['filter'].submit()" <input type="checkbox" name="number" onchange="document.forms['filter'].submit()"
{% if 'on' in request.GET.number %}checked{% endif %}> {% trans "Without number" %} &nbsp; {% if 'on' in request.GET.number %}checked{% endif %}> {% trans "Without number" %} &nbsp;
</label>
<label class="checkbox">
<input type="checkbox" name="status" onchange="document.forms['filter'].submit()" <input type="checkbox" name="status" onchange="document.forms['filter'].submit()"
{% if 'on' in request.GET.status %}checked{% endif %}> {% trans "Status" %}: {% if 'on' in request.GET.status %}checked{% endif %}> {% trans "Status" %}:
</label>
<select class="default-input" name="statusvalue" onchange="{% if 'on' in request.GET.status %}document.forms['filter'].submit(){% endif %}"> <select class="default-input" name="statusvalue" onchange="{% if 'on' in request.GET.status %}document.forms['filter'].submit(){% endif %}">
<option value="pub" {% if 'pub' in request.GET.statusvalue %}selected{% endif %}>{% trans "Not yet authorized" %}</option> <option value="pub" {% if 'pub' in request.GET.statusvalue %}selected{% endif %}>{% trans "Not yet authorized" %}</option>
<option value="per" {% if 'on' in request.GET.status and 'per' in request.GET.statusvalue %}selected{% endif %}>{% trans "Authorized" %}</option> <option value="per" {% if 'on' in request.GET.status and 'per' in request.GET.statusvalue %}selected{% endif %}>{% trans "Authorized" %}</option>
@ -26,11 +40,12 @@
<option value="wit" {% if 'on' in request.GET.status and 'wit' in request.GET.statusvalue %}selected{% endif %}>{% trans "Withdrawen (by submitter)" %}</option> <option value="wit" {% if 'on' in request.GET.status and 'wit' in request.GET.statusvalue %}selected{% endif %}>{% trans "Withdrawen (by submitter)" %}</option>
<option value="rev" {% if 'rev' in request.GET.statusvalue %}selected{% endif %}>{% trans "Needs Review" %}</option> <option value="rev" {% if 'rev' in request.GET.statusvalue %}selected{% endif %}>{% trans "Needs Review" %}</option>
</select> </select>
</form>
</p> </form>
{{ applications|length }} <small><i>{{ applications|length }}
{% blocktrans count counter=applications|length %}motion{% plural %}motions{% endblocktrans %} {% blocktrans count counter=applications|length %}motion{% plural %}motions{% endblocktrans %}
<table> </i></small>
<table class="table table-striped table-bordered">
<tr> <tr>
<th><a href="?sort=number{% if 'number' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{% trans "Number" %}</a></th> <th><a href="?sort=number{% if 'number' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{% trans "Number" %}</a></th>
<th><a href="?sort=title{% if 'title' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{% trans "Motion title" %}</a></th> <th><a href="?sort=title{% if 'title' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{% trans "Motion title" %}</a></th>

View File

@ -1,22 +1,48 @@
{% extends 'application/base_application.html' %} {% extends 'base.html' %}
{% load i18n %} {% load i18n %}
{% load staticfiles %} {% load staticfiles %}
{% block title %} {% block title %}
{{ block.super }} {% trans "Motion" %} "{{ application.public_version.title }}" {{ block.super }} - {% trans "Motion" %} {{ application.number }}, {{ ballot }}. {% trans "Vote" %}
{{ ballot }}. {% trans "Vote" %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<h1>{{ application.public_version.title }} ({% trans "Motion" %} <h1>
{{ application.number }}) {{ ballot }}. {% trans "Vote" %}</h1> {{ application.title }}
<i class="helptext">{% trans "Special values" %}: -1 = {% trans 'majority' %}; -2 = {% trans 'undocumented' %}</i> <small>
{% trans "Motion" %} {{ application.number }}, {{ ballot }}. {% trans "Vote" %}
</small>
<small class="pull-right">
<div class="btn-toolbar">
<a href="{% url application_view application.id %}" class="btn btn-mini"><i class="icon-chevron-left"></i> {% trans "Back to motion" %}</a>
<div class="btn-group">
<a data-toggle="dropdown" href="#" class="btn btn-mini dropdown-toggle">
{% trans 'More actions' %}
<span class="caret"></span>
</a>
<ul class="dropdown-menu pull-right">
<!-- delete -->
{% if "delete" in actions %}
<li><a href="{% url application_poll_delete poll.id %}"><i class="icon-remove"></i> {% trans 'Delete Vote' %}</a></li>
{% endif %}
<!-- activate projector -->
{% if perms.projector.can_manage_projector %}
<li>
<a class="activate_link {% if item.active %}active{% endif %}" href="{% url projector_activate_slide application.sid %}"><i class="icon-facetime-video"></i> {% trans 'Show Application' %}</a>
</li>
{% endif %}
</ul>
</div>
</div>
</small>
</h1>
<i class="helptext">{% trans "Special values" %}: -1 = {% trans 'majority' %}; -2 = {% trans 'undocumented' %}</i>
<form action="" method="post" class="small-form">{% csrf_token %} <form action="" method="post" class="small-form">{% csrf_token %}
{{ pre_form }} {{ pre_form }}
<span id="poll_id" style="display:none">{{ poll.id }}</span> <span id="poll_id" style="display:none">{{ poll.id }}</span>
<table class="table table-striped table-bordered" style="width: auto;">
<table class="table" style="width: auto;">
<tr> <tr>
<th>{% trans "Option" %}</th> <th>{% trans "Option" %}</th>
<th>{% trans "Votes" %}</th> <th>{% trans "Votes" %}</th>
@ -36,29 +62,24 @@
<td>{{ pollform.votescast.errors }}{{ pollform.votescast }}</td> <td>{{ pollform.votescast.errors }}{{ pollform.votescast }}</td>
</tr> </tr>
</table> </table>
{{ post_form }} {{ post_form }}
<!-- ballot paper button -->
<p> <p>
<a href='{% url print_application_poll poll.id %}'> <a href='{% url print_application_poll poll.id %}' class="btn">
<button class="button" type="button" onclick="window.location='{% url print_application_poll poll.id %}'"> <i class="icon-print"></i> {% trans 'Ballot paper as PDF' %}
<span class="icon pdf">{% trans 'Ballot paper as PDF' %}</span>
</button>
</a>
</p>
<p>
<button class="button" type="submit">
<span class="icon ok">{% trans 'Save' %}</span>
</button>
<button class="button" type="submit" name="apply">
<span class="icon apply">{% trans 'Apply' %}</span>
</button>
<a href='{% url application_view application.id %}'>
<button class="button" type="button" onclick="window.location='{% url application_view application.id %}'">
<span class="icon cancel">{% trans 'Cancel' %}</span>
</button>
</a> </a>
</p> </p>
<!-- Control buttons -->
<div class="control-group">
<button type="submit" class="btn btn-primary">
{% trans 'Save' %}
</button>
<button type="submit" name="apply" class="btn">
{% trans 'Apply' %}
</button>
<a href='{% url application_view application.id %}' class="btn">
{% trans 'Cancel' %}
</a>
</div>
</form> </form>
{% endblock %} {% endblock %}

View File

@ -1,221 +1,73 @@
{% extends "application/base_application.html" %} {% extends "base.html" %}
{% load tags %} {% load tags %}
{% load i18n %} {% load i18n %}
{% load staticfiles %} {% load staticfiles %}
{% block title %}{{ block.super }} {% trans "Motion" %} "{{ version.title }}"{% endblock %} {% block title %}
{{ block.super }} - {% trans "Motion" %}
{% if application.number != None %}
{% block submenu %} {{ application.number }}
{{ block.super }} {% else %}
[{% trans "no number" %}]
{% endif %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div id="sidebar"> <h1>
<div class="box"> {{ version.title }}
<h4>{% trans "Submitter" %}:</h4> <small>
{{ application.submitter }} {% if application.number != None %}
{% if user == application.submitter.user %} {% trans "Motion" %} {{ application.number }},
<img src="{% static 'images/icons/user-information.png' %}" title="{% trans 'You!' %}"> {% else %}
<i>[{% trans "no number" %}]</i>,
{% endif %} {% endif %}
{% if min_supporters > 0 %}
<h4>{% trans "Supporters" %}: *</h4>
{% if not application.supporters %}
-
{% else %}
<ol>
{% for supporter in application.supporters %}
<li> {{ supporter }}</li>
{% endfor %}
</ol>
{% endif %}
{% endif %}
<h4>{% trans "Status" %}:</h4>
{% if application.status != "pub" %}
{% trans application.get_status_display %}
<br>
{% endif %}
{% for note in application.notes %}
{{ note }}
{% if not forloop.last %}<br>{% endif %}
{% endfor %}
<h4>{% trans "Vote results" %}:</h4>
{% with application.polls as polls %}
{% if not polls.exists %}
{% if perms.application.can_manage_application %}
{% if "genpoll" in actions %}
<a href='{% url application_gen_poll application.id %}'>
<span class="button">
<span class="icon statistics">{% trans 'New vote' %}</span>
</span>
</a>
{% else %}
-
{% endif %}
{% else %}
-
{% endif %}
{% endif %}
<ul class="results">
{% for poll in polls %}
{% if perms.application.can_manage_application or poll.has_votes %}
<li>
{% if perms.application.can_manage_application %}
<strong>{{ forloop.counter }}. {% trans "Vote" %} </strong>
<a class="icon edit" href="{% url application_poll_view poll.id %}" title="{% trans 'Edit Vote' %}">
<span></span>
</a>
<a class="icon delete" href="{% url application_poll_delete poll.id %}" title="{% trans 'Delete Vote' %}">
<span></span>
</a>
{% elif poll.has_votes %}
<strong>{{ forloop.counter }}. {% trans "Vote" %}:</strong>
{% endif %}
<br>
{% if poll.has_votes %}
{% with poll.get_options.0 as option %}
<img src="{% static 'images/icons/voting-yes.png' %}" title="{% trans 'Yes' %}"> {{ option.Yes }}<br>
<img src="{% static 'images/icons/voting-no.png' %}" title="{% trans 'No' %}"> {{ option.No }}<br>
<img src="{% static 'images/icons/voting-abstention.png' %}" title="{% trans 'Abstention' %}"> {{ option.Abstain }}<br>
<img src="{% static 'images/icons/voting-invalid.png' %}" title="{% trans 'Invalid' %}"> {{ poll.print_votesinvalid }}<br>
<div style="border-top: 1px solid; padding-top: 5px; margin: 5px 0; width: 10em;">
<img src="{% static 'images/icons/voting-total.png' %}" title="{% trans 'Votes cast' %}"> {{ poll.print_votescast }}
</div>
{% endwith %}
{% if perms.application.can_manage_application %}
{% if forloop.last %}
{% if "genpoll" in actions %}
<a href='{% url application_gen_poll application.id %}'>
<span class="button"><span class="icon statistics">{% trans 'New vote' %}</span></span>
</a>
{% endif %}
{% endif %}
{% endif %}
{% else %}
{% if perms.application.can_manage_application %}
<a href='{% url application_poll_view poll.id %}'>
<span class="button"><span class="icon statistics">{% trans 'Enter result' %}</span></span>
</a>
{% endif %}
{% endif %}
</li>
{% endif %}
{% endfor %}
</ul>
{% endwith %}
<h4>{% trans "Creation Time" %}:</h4>
{{ application.creation_time }}
<p></p>
{% if "wit" in actions and user == application.submitter.user %}
<p></p>
<a href='{% url application_set_status application.id 'wit' %}'>
<span class="button"><span class="icon revert">{% trans 'Withdraw' %}</span></span>
</a>
{% endif %}
{% if perms.application.can_support_application and min_supporters > 0 %}
{% if "unsupport" in actions %}
<p></p>
<a href='{% url application_unsupport application.id %}'>
<span class="button"><span class="icon remove">{% trans 'Unsupport' %}</span></span>
</a>
{% endif %}
{% if "support" in actions %}
<p></p>
<a href='{% url application_support application.id %}'>
<span class="button"><span class="icon add">{% trans 'Support' %}</span></span>
</a>
{% endif %}
{% endif %}
</div>
{% if min_supporters > 0 %}
<small>* {% trans "minimum required supporters" %}: {{ min_supporters }}</small>
{% endif %}
<br><br>
{% if perms.application.can_manage_application %}
<div class="box">
<h4><b>{% trans "Manage motion" %}</b></h4>
{% if "pub" in actions or "per" in actions or "nop" in actions or "setnumber" in actions %}
<h4>{% trans "Formal validation" %}:</h4>
{% if "pub" in actions %}
<a href='{% url application_set_status application.id 'pub' %}'><span class="button"><span class="icon ok-blue">{% trans 'Publish' %}</span></span></a>
{% endif %}
{% if "per" in actions %}
<a href='{% url application_permit application.id %}'><span class="button"><span class="icon ok-blue">{% trans 'Permit' %}</span></span></a>
{% endif %}
{% if "nop" in actions %}
<a href='{% url application_notpermit application.id %}'><span class="button"><span class="icon reject">{% trans 'Not permit (reject)' %}</span></span></a>
{% endif %}
{% if "setnumber" in actions %}
<a href='{% url application_set_number application.id %}'><span class="button"><span class="icon number">{% trans 'Set Number' %}</span></span></a>
{% endif %}
</p>
{% endif %}
<h4></h4>
{% if "acc" in actions or "rej" in actions %}
<h4>{% trans "Result after vote" %}:</h4>
{% if "acc" in actions %}
<a href='{% url application_set_status application.id 'acc' %}'>
<span class="button"><span class="icon done">{% trans 'Accepted' %}</span></span>
</a>
{% endif %}
{% if "rej" in actions %}
<a href='{% url application_set_status application.id 'rej' %}'>
<span class="button"><span class="icon reject">{% trans 'Rejected' %}</span></span>
</a>
{% endif %}
{% endif %}
{% if "adj" in actions or "noc" in actions or "com" in actions or "wit" in actions %}
<h4>{% trans 'Result after debate' %}:</h4>
{% if "adj" in actions %}
<a href='{% url application_set_status application.id 'adj' %}'><span class="button">{% trans 'Adjourned' %}</span></a><br>
{% endif %}
{% if "noc" in actions %}
<a href='{% url application_set_status application.id 'noc' %}'><span class="button">{% trans 'Not Concerned' %}</span></a><br>
{% endif %}
{% if "com" in actions %}
<a href='{% url application_set_status application.id 'com' %}'><span class="button">{% trans 'Commited a bill' %}</span></a><br>
{% endif %}
{% if "wit" in actions %}
<a href='{% url application_set_status application.id 'wit' %}'><span class="button">{% trans 'Withdrawed by Submitter' %}</span></a>
{% endif %}
{% endif %}
<p></p>
<hr>
<h4>{% trans "For Administration only:" %}</h4>
<a href='{% url application_reset application.id %}'>
<span class="button"><span class="icon undo">{% trans 'Reset' %}</span></span>
</a>
</div>
{% endif %} {# end perms.application.can_support_application #}
</div> <!-- end sidebar -->
<div id="main">
<h1>
{{ version.title }}
({% trans "Motion" %}
{% if application.number != None %}
{{ application.number }})
{% else %}
<i>[{% trans "no number" %}]</i>)
{% endif %}
</h1>
{% trans "Version" %} {{ version.aid }} {% trans "Version" %} {{ version.aid }}
</small>
<small class="pull-right">
<div class="btn-toolbar">
<a href="{% url application_overview %}" class="btn btn-mini"><i class="icon-chevron-left"></i> {% trans "Back to overview" %}</a>
<a href="{% url print_application application.id %}" class="btn btn-mini" rel="tooltip" data-original-title="{% trans 'Print this motion as PDF' %}"><i class="icon-print"></i> PDF</a>
<div class="btn-group">
<a data-toggle="dropdown" href="#" class="btn btn-mini dropdown-toggle">
{% trans 'More actions' %}
<span class="caret"></span>
</a>
<ul class="dropdown-menu pull-right">
<!-- edit -->
{% if "edit" in actions %}
<li><a href="{% url application_edit application.id %}"><i class="icon-edit"></i> {% trans 'Edit motion' %}</a></li>
{% endif %}
<!-- delete -->
{% if "delete" in actions %}
<li><a href="{% url application_delete application.id %}"><i class="icon-remove"></i> {% trans 'Delete motion' %}</a></li>
{% endif %}
<!-- activate projector -->
{% if perms.projector.can_manage_projector %}
<li>
<a class="activate_link {% if item.active %}active{% endif %}" href="{% url projector_activate_slide application.sid %}"><i class="icon-facetime-video"></i> {% trans 'Show Application' %}</a>
</li>
{% endif %}
<!-- edit poll -->
{% if perms.application.can_manage_application %}
{% for poll in application.polls %}
<li><a href="{% url application_poll_view poll.id %}"><i class="icon-edit"></i> {{ forloop.counter }}. {% trans "Vote" %}</a></li>
{% endfor %}
{% endif %}
<!-- create agenda item -->
{% if perms.agenda.can_manage_agenda %}
<li>
<a href="{% url application_create_agenda application.id %}"><i class="icon-plus"></i> {% trans 'New agenda item' %}</a>
</li>
{% endif %}
</ul>
</div>
</div>
</small>
</h1>
<div class="row-fluid">
<div class="span9">
{% if application.public_version != application.last_version %} {% if application.public_version != application.last_version %}
&#8901; &#8901;
{% if version == application.public_version %} {% if version == application.public_version %}
@ -225,82 +77,271 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
<h2>{% trans "Motion" %}:</h2> <!-- Text -->
<h4>{% trans "Motion text" %}:</h4>
{{ version.text|linebreaks }} {{ version.text|linebreaks }}
<br>
<h2>{% trans "Reason" %}:</h2> <!-- Reason -->
<h4>{% trans "Reason" %}:</h4>
{% if version.reason %} {% if version.reason %}
{{ version.reason|linebreaks }} {{ version.reason|linebreaks }}
{% else %} {% else %}
{% endif %} {% endif %}
<br>
<!-- Version history -->
{% if application.versions|length > 1 %} {% if application.versions|length > 1 %}
<h2>{% trans "Version History" %}:</h2> <h4>{% trans "Version History" %}:</h4>
<table class="table table-striped table-bordered">
<table class="table valigntop" style="width: auto;"> <tr>
<tr> <th></th>
<th></th> <th>{% trans "Version" %}</th>
<th>{% trans "Version" %}</th> <th>{% trans "Time" %}</th>
<th>{% trans "Time" %}</th> <th>{% trans "Title" %}</th>
<th>{% trans "Title" %}</th> <th>{% trans "Text" %}</th>
<th>{% trans "Text" %}</th> <th>{% trans "Reason" %}</th>
</tr>
<th>{% trans "Reason" %}</th> {% for revision in application.versions %}
</tr> <tr>
{% for revision in application.versions %} <td style="white-space:nowrap;">
<tr class="{% cycle 'odd' '' %}"> {% if application.status != "pub" %}
<td style="white-space:nowrap;"> {% if revision == application.permitted %}
{% if application.status != "pub" %} <img title="{% trans 'Version authorized' %}" src="{% static 'images/icons/accept.png' %}">
{% if revision == application.permitted %}
<img title="{% trans 'Version authorized' %}" src="{% static 'images/icons/accept.png' %}">
{% else %}
{% if perms.application.can_manage_application %}
<a href="{% url application_version_permit revision.id %}"><img title="{% trans 'Permit Version' %}" src="{% static 'images/icons/accept-grey.png' %}"></a>
{% endif %}
{% if not revision.rejected and revision.id > application.permitted.id and perms.application.can_manage_application %}
<a href="{% url application_version_reject revision.id %}"><img title="{% trans 'Reject Version' %}" src="{% static 'images/icons/reject-grey.png' %}"></a>
{% endif %}
{% endif %}
{% if revision.rejected %}
<img title="{% trans 'Version rejected' %}" src="{% static 'images/icons/reject.png' %}">
{% endif %}
{% endif %}
</td>
<td>{{ revision.aid }}</td>
<td><i>{{ revision.time }}</i></td>
<td>
{% ifchanged %}
<b>{{ revision.title }}</b>
{% else %} {% else %}
<i>[{% trans "unchanged" %}]</i> {% if perms.application.can_manage_application %}
{% endifchanged %} <a href="{% url application_version_permit revision.id %}"><img title="{% trans 'Permit Version' %}" src="{% static 'images/icons/accept-grey.png' %}"></a>
</td> {% endif %}
<td> {% if not revision.rejected and revision.id > application.permitted.id and perms.application.can_manage_application %}
{% ifchanged %} <a href="{% url application_version_reject revision.id %}"><img title="{% trans 'Reject Version' %}" src="{% static 'images/icons/reject-grey.png' %}"></a>
{{ revision.text|linebreaks }} {% endif %}
{% else %} {% endif %}
<i>[{% trans "unchanged" %}]</i> {% if revision.rejected %}
{% endifchanged %} <img title="{% trans 'Version rejected' %}" src="{% static 'images/icons/reject.png' %}">
</td> {% endif %}
<td> {% endif %}
{% ifchanged %} </td>
{{ revision.reason|linebreaks }} <td>{{ revision.aid }}</td>
{% else %} <td><i>{{ revision.time }}</i></td>
<i>[{% trans "unchanged" %}]</i> <td>
{% endifchanged %} {% ifchanged %}
</td> <b>{{ revision.title }}</b>
</tr> {% else %}
{% endfor %} <i>[{% trans "unchanged" %}]</i>
</table> {% endifchanged %}
</td>
<td>
{% ifchanged %}
{{ revision.text|linebreaks }}
{% else %}
<i>[{% trans "unchanged" %}]</i>
{% endifchanged %}
</td>
<td>
{% ifchanged %}
{{ revision.reason|linebreaks }}
{% else %}
<i>[{% trans "unchanged" %}]</i>
{% endifchanged %}
</td>
</tr>
{% endfor %}
</table>
{% endif %} {% endif %}
<!-- Log -->
{% if perms.application.can_manage_application %}
<h4>{% trans "Log" %}:</h4>
<small>{{ application.log|linebreaks }}</small>
{% endif %}
</div> <!--/span-->
<div class="span3">
<div class="well">
<!-- Submitter -->
<h5>{% trans "Submitter" %}:</h5>
{{ application.submitter }}
{% if user == application.submitter.user %}
<img src="{% static 'images/icons/user-information.png' %}" title="{% trans 'Me' %}">
{% endif %}
<!-- Supporters -->
{% if min_supporters > 0 %}
<h5>{% trans "Supporters" %}: *</h5>
{% if not application.supporters %}
-
{% else %}
<ol>
{% for supporter in application.supporters %}
<li> {{ supporter }}</li>
{% endfor %}
</ol>
{% endif %}
{% endif %}
<!-- Status -->
<h5>{% trans "Status" %}:</h5>
{% if application.status != "pub" %}
{% trans application.get_status_display %}
<br>
{% endif %}
{% for note in application.notes %}
{{ note }}
{% if not forloop.last %}<br>{% endif %}
{% endfor %}
<!-- Vote results -->
<h5>{% trans "Vote results" %}:</h5>
{% with application.polls as polls %}
{% if not polls.exists %}
{% if perms.application.can_manage_application %}
{% if "genpoll" in actions %}
<a href='{% url application_gen_poll application.id %}' class="btn btn-mini">
<i class="icon-signal"></i> {% trans 'New vote' %}
</a>
{% else %}
-
{% endif %}
{% else %}
-
{% endif %}
{% endif %}
<ol>
{% for poll in polls %}
{% if perms.application.can_manage_application or poll.has_votes %}
<li>{% trans "Vote" %}
{% if perms.application.can_manage_application %}
<a class="btn btn-mini" href="{% url application_poll_view poll.id %}" title="{% trans 'Edit Vote' %}"><i class="icon-edit"></i></a>
<a class="btn btn-mini" href="{% url application_poll_delete poll.id %}" title="{% trans 'Delete Vote' %}"><i class="icon-remove"></i></a>
{% endif %}
<br>
{% if poll.has_votes %}
{% with poll.get_options.0 as option %}
<img src="{% static 'images/icons/voting-yes.png' %}" title="{% trans 'Yes' %}"> {{ option.Yes }}<br>
<img src="{% static 'images/icons/voting-no.png' %}" title="{% trans 'No' %}"> {{ option.No }}<br>
<img src="{% static 'images/icons/voting-abstention.png' %}" title="{% trans 'Abstention' %}"> {{ option.Abstain }}<br>
<img src="{% static 'images/icons/voting-invalid.png' %}" title="{% trans 'Invalid' %}"> {{ poll.print_votesinvalid }}<br>
<div style="border-top: 1px solid; padding-top: 5px; margin: 5px 0; width: 10em;">
<img src="{% static 'images/icons/voting-total.png' %}" title="{% trans 'Votes cast' %}"> {{ poll.print_votescast }}
</div>
{% endwith %}
{% if perms.application.can_manage_application %}
{% if forloop.last %}
{% if "genpoll" in actions %}
<a href='{% url application_gen_poll application.id %}' class="btn btn-mini">
<i class="icon-signal"></i> {% trans 'New vote' %}
</a>
{% endif %}
{% endif %}
{% endif %}
{% else %}
{% if perms.application.can_manage_application %}
<span class="label label-info">{% trans 'No results' %}</span>
{% endif %}
{% endif %}
</li>
{% endif %}
{% endfor %}
</ol>
{% endwith %}
<!-- Creation Time -->
<h5>{% trans "Creation Time" %}:</h5>
{{ application.creation_time }}
<!-- Widthdraw button -->
{% if "wit" in actions and user == application.submitter.user %}
<br><br>
<a href='{% url application_set_status application.id 'wit' %}' class="btn">
<span class="icon revert">{% trans 'Withdraw motion' %}</span>
</a>
{% endif %}
<!-- Support/Unsupport button -->
{% if perms.application.can_support_application and min_supporters > 0 %}
{% if "unsupport" in actions %}
<br><br>
<a href='{% url application_unsupport application.id %}' class="btn">
{% trans 'Unsupport motion' %}
</a>
{% endif %}
{% if "support" in actions %}
<br><br>
<a href='{% url application_support application.id %}'>
{% trans 'Support' %}
</a>
{% endif %}
{% endif %}
<!-- Footnote: requried supporters -->
{% if min_supporters > 0 %}
<br><br>
<small>* {% trans "minimum required supporters" %}: {{ min_supporters }}</small>
{% endif %}
</div> <!--/well-->
{% if perms.application.can_manage_application %} {% if perms.application.can_manage_application %}
<h2>{% trans "Log" %}:</h2> <!-- Manage application box -->
{{ application.log|linebreaks }} <div class="well">
<h4>{% trans "Manage motion" %}</h4>
<!-- Formal validation -->
{% if "pub" in actions or "per" in actions or "nop" in actions or "setnumber" in actions %}
<h5>{% trans "Formal validation" %}:</h5>
<div class="btn-group btn-group-vertical">
{% if "pub" in actions %}
<a href='{% url application_set_status application.id 'pub' %}' class="btn">{% trans 'Publish' %}</a>
{% endif %}
{% if "per" in actions %}
<a href='{% url application_permit application.id %}' class="btn btn-info">{% trans 'Permit' %}</a>
{% endif %}
{% if "nop" in actions %}
<a href='{% url application_notpermit application.id %}' class="btn">{% trans 'Not permit' %}</a>
{% endif %}
{% if "setnumber" in actions %}
<a href='{% url application_set_number application.id %}' class="btn">{% trans 'Set number' %}</a>
{% endif %}
</div>
{% endif %} {% endif %}
</div> <!-- Result after vote -->
{% if "acc" in actions or "rej" in actions %}
<h5>{% trans "Result after vote" %}:</h5>
<div class="btn-group btn-group-vertical">
{% if "acc" in actions %}
<a href='{% url application_set_status application.id 'acc' %}' class="btn btn-success">
<i class="icon-ok icon-white"></i> {% trans 'Accepted' %}
</a>
{% endif %}
{% if "rej" in actions %}
<a href='{% url application_set_status application.id 'rej' %}' class="btn btn-danger">
<i class="icon-ban-circle icon-white"></i> {% trans 'Rejected' %}
</a>
{% endif %}
</div>
{% endif %}
<!-- Result after debate -->
{% if "adj" in actions or "noc" in actions or "com" in actions or "wit" in actions %}
<br><br>
<div class="btn-group">
<a data-toggle="dropdown" href="#" class="btn dropdown-toggle">
{% trans 'More actions' %}
<span class="caret"></span>
</a>
<ul class="dropdown-menu pull-right">
{% if "adj" in actions %}
<li><a href='{% url application_set_status application.id 'adj' %}'>{% trans 'Adjourned' %}</a></li>
{% endif %}
{% if "noc" in actions %}
<li><a href='{% url application_set_status application.id 'noc' %}'>{% trans 'Not Concerned' %}</a></li>
{% endif %}
{% if "com" in actions %}
<li><a href='{% url application_set_status application.id 'com' %}'>{% trans 'Commited a bill' %}</a></li>
{% endif %}
{% if "wit" in actions %}
<li><a href='{% url application_set_status application.id 'wit' %}'>{% trans 'Withdrawed by Submitter' %}</a></li>
{% endif %}
</ul>
</div>
{% endif %}
<p></p>
<hr>
<h5>{% trans "For Administration only:" %}</h5>
<a href='{% url application_reset application.id %}' class="btn btn-danger">
{% trans 'Reset' %}
</a>
</div> <!--/well-->
{% endif %} {# end perms.application.can_support_application #}
</div> <!--/span-->
</div> <!--/row-->
{% endblock %} {% endblock %}

View File

@ -909,6 +909,7 @@ def register_tab(request):
selected = True if request.path.startswith('/application/') else False selected = True if request.path.startswith('/application/') else False
return Tab( return Tab(
title=_('Applications'), title=_('Applications'),
app='application',
url=reverse('application_overview'), url=reverse('application_overview'),
permission=request.user.has_perm('application.can_see_application') or request.user.has_perm('application.can_support_application') or request.user.has_perm('application.can_support_application') or request.user.has_perm('application.can_manage_application'), permission=request.user.has_perm('application.can_see_application') or request.user.has_perm('application.can_support_application') or request.user.has_perm('application.can_support_application') or request.user.has_perm('application.can_manage_application'),
selected=selected, selected=selected,

View File

@ -20,7 +20,7 @@
</p> </p>
{{ assignments|length }} {{ assignments|length }}
{% blocktrans count counter=assignments|length %}election{% plural %}elections{% endblocktrans %} {% blocktrans count counter=assignments|length %}election{% plural %}elections{% endblocktrans %}
<table> <table class="table table-striped table-bordered">
<tr> <tr>
<th><a href="?sort=name{% if 'name' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{% trans "Election" %}</a></th> <th><a href="?sort=name{% if 'name' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{% trans "Election" %}</a></th>
<th>{% trans "Candidates" %}</th> <th>{% trans "Candidates" %}</th>

View File

@ -646,6 +646,7 @@ def register_tab(request):
selected = request.path.startswith('/assignment/') selected = request.path.startswith('/assignment/')
return Tab( return Tab(
title=_('Elections'), title=_('Elections'),
app='assignment',
url=reverse('assignment_overview'), url=reverse('assignment_overview'),
permission=request.user.has_perm('assignment.can_see_assignment') permission=request.user.has_perm('assignment.can_see_assignment')
or request.user.has_perm('assignment.can_nominate_other') or request.user.has_perm('assignment.can_nominate_other')

View File

@ -117,6 +117,7 @@ def register_tab(request):
selected = request.path.startswith('/config/') selected = request.path.startswith('/config/')
return Tab( return Tab(
title=_('Configuration'), title=_('Configuration'),
app='config',
url=reverse('config_general'), url=reverse('config_general'),
permission=request.user.has_perm('config.can_manage_config'), permission=request.user.has_perm('config.can_manage_config'),
selected=selected, selected=selected,

File diff suppressed because it is too large Load Diff

View File

@ -16,10 +16,7 @@
<h1>{% trans "Login" %}</h1> <h1>{% trans "Login" %}</h1>
{% if form.errors %} {% if form.errors %}
<div class="notification error"> <div class="alert alert-error">
<a class="close" href="#">
<img alt="close" title="{% trans 'Close this notification' %}" src="{% static 'images/icons/cross.png' %}">
</a>
{% for msg in form.non_field_errors %} {% for msg in form.non_field_errors %}
<em>{{ msg }}</em> <em>{{ msg }}</em>
{% if not forloop.last %}<br />{% endif %} {% if not forloop.last %}<br />{% endif %}
@ -29,18 +26,10 @@
</div> </div>
{% endif %} {% endif %}
{% if first_time_message %} {% if first_time_message %}
<div class="notification info"> <div class="alert alert-info">
<a class="close" href="#">
<img alt="close" title="{% trans 'Close this notification' %}" src="{% static 'images/icons/cross.png' %}">
</a>
<em>{{ first_time_message|safe }}</em> <em>{{ first_time_message|safe }}</em>
</div> </div>
{% endif %} {% endif %}
<script>
$("div.notification").click(function () {
$(this).hide("fast");
});
</script>
<form method="post" action="{% url user_login %}{% if next %}?next={{ next }}{% endif %}"> <form method="post" action="{% url user_login %}{% if next %}?next={{ next }}{% endif %}">
{% csrf_token %} {% csrf_token %}
<table> <table>

View File

@ -61,7 +61,7 @@
{% else %} {% else %}
{{ users.count }} {% trans "of" %} {{ allusers }} {% trans "Participants" %} (= {{ percent }} %) {{ users.count }} {% trans "of" %} {{ allusers }} {% trans "Participants" %} (= {{ percent }} %)
{% endif %} {% endif %}
<table> <table class="table table-striped table-bordered">
<tr> <tr>
<th><a href="?sort=first_name&reverse={% if 'first_name' in sortfilter.sort and 'reverse' not in sortfilter %}1{% else %}---{%endif%}">{% trans "First Name" %}</a></th> <th><a href="?sort=first_name&reverse={% if 'first_name' in sortfilter.sort and 'reverse' not in sortfilter %}1{% else %}---{%endif%}">{% trans "First Name" %}</a></th>
<th><a href="?sort=last_name&reverse={% if 'last_name' in sortfilter.sort and 'reverse' not in sortfilter %}1{% else %}---{%endif%}">{% trans "Last Name" %}</a></th> <th><a href="?sort=last_name&reverse={% if 'last_name' in sortfilter.sort and 'reverse' not in sortfilter %}1{% else %}---{%endif%}">{% trans "Last Name" %}</a></th>

View File

@ -495,6 +495,7 @@ def register_tab(request):
selected = request.path.startswith('/participant/') selected = request.path.startswith('/participant/')
return Tab( return Tab(
title=_('Participants'), title=_('Participants'),
app='participant',
url=reverse('user_overview'), url=reverse('user_overview'),
permission=request.user.has_perm('participant.can_see_participant') or permission=request.user.has_perm('participant.can_see_participant') or
request.user.has_perm('participant.can_manage_participant'), request.user.has_perm('participant.can_manage_participant'),

View File

@ -358,6 +358,7 @@ def register_tab(request):
selected = True if request.path.startswith('/projector/') else False selected = True if request.path.startswith('/projector/') else False
return Tab( return Tab(
title=_('Dashboard'), title=_('Dashboard'),
app='dashboard',
url=reverse('dashboard'), url=reverse('dashboard'),
permission=request.user.has_perm('projector.can_manage_projector') or permission=request.user.has_perm('projector.can_manage_projector') or
request.user.has_perm('projector.can_see_dashboard'), request.user.has_perm('projector.can_see_dashboard'),

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

File diff suppressed because one or more lines are too long

View File

@ -43,3 +43,115 @@ function new_message(text, type) {
$('#notifications').append(message); $('#notifications').append(message);
message.slideDown('fast'); message.slideDown('fast');
} }
// Functios for sidebar navigation
$(document).ready(function(){
// Resize navigation
$(window).resize(function(){
if($(this).width() < 1124) {
iconmenu();
if($(window).width() < 570) {
$('.table').each(function(){
if($(this).find('.table-wrapper').size() == 0) {
$(this).wrap('<div class="table-wrapper"></div>');
}
});
}
} else {
fullmenu();
}
});
if($(window).width() < 1124) {
iconmenu();
if($(window).width() < 570) {
$('.table').each(function(){
if($(this).find('.table-wrapper').size() == 0) {
$(this).wrap('<div class="table-wrapper"></div>');
}
});
}
} else {
fullmenu();
}
// Sticky navigation
$(window).scroll(function(){
var el = $('.leftmenu > ul');
if($(window).width() > 479) {
if ( ($(this).scrollTop() > 80) && ($(this).scrollLeft() < 10)) {
el.css({'position':'fixed','top':'10px','width':'14.15%'});
} else {
el.css({'position': 'relative', 'top': '0','width':'auto'});
}
} else {
if (($(this).scrollTop() > 130) && ($(this).scrollLeft() < 10)){
el.css({'position':'fixed','top':'10px','width':'14.15%'});
} else {
el.css({'position': 'relative', 'top': '0','width':'auto'});
}
}
});
// Submenu with drop down
$('.leftmenu a').click(function(e){
if($(this).siblings('ul').size() == 1){
e.preventDefault();
var submenu = $(this).siblings('ul');
if($(this).hasClass('open')) {
if($(this).parents('.leftmenu').hasClass('lefticon')) {
submenu.fadeOut();
} else {
submenu.slideUp('fast');
}
$(this).removeClass('open');
} else {
if($(this).parents('.leftmenu').hasClass('lefticon')) {
submenu.fadeIn();
} else {
submenu.slideDown('fast');
}
$(this).addClass('open');
}
}
});
// Tooltips
$('.leftmenu').tooltip({
selector: "a[rel=tooltip]",
placement: 'right'
});
$('h1').tooltip({
selector: "a[rel=tooltip]",
placement: 'bottom'
});
$('body').tooltip({
selector: '.tooltip'
});
$('.tooltip-left').tooltip({
placement: 'left'
});
$('.tooltip-right').tooltip({
placement: 'right'
});
$('.tooltip-top').tooltip({
placement: 'top'
});
$('.tooltip-bottom').tooltip({
placement: 'bottom'
});
// Resize menu and content container
function iconmenu(){
$('.leftmenu').removeClass('span2').addClass('lefticon').addClass('span1');
$('.leftmenu > ul > li > a').each(function(){
atitle = $(this).text();
$(this).attr({'rel':'tooltip','title':atitle});
});
$('#content').removeClass('span10').addClass('span11');
}
function fullmenu(){
$('.leftmenu').removeClass('span1').removeClass('lefticon').addClass('span2');
$('.leftmenu > ul > li > a').each(function(){
$(this).attr({'rel':'','title':''});
});
$('#content').removeClass('span11').addClass('span10');
}
});

View File

@ -1,615 +1,196 @@
/** /* Header */
* OpenSlides default template style
*
* :copyright: 2011, 2012 by OpenSlides team, see AUTHORS.
* :license: GNU GPL, see LICENSE for more details.
*/
body {
padding: 0 0 0px;
margin:0;
background:url("../images/bg-submenu.gif") repeat-y scroll 0 0 #FFFFFF;
color:#1B110F;
font-family:'Lucida Grande',"Trebuchet MS",Verdana,sans-serif;
font-size:12px;
position:relative;
}
/* HEADER */
#header { #header {
position:relative; background-color: #333333;
background:url("../images/bg-header.gif") repeat-x scroll center top #3D3020; background-image: -moz-linear-gradient(top, #444444, #222222);
height:150px; background-image: -ms-linear-gradient(top, #444444, #222222);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
background-image: -webkit-linear-gradient(top, #444444, #222222);
background-image: -o-linear-gradient(top, #444444, #222222);
background-image: linear-gradient(top, #444444, #222222);
box-shadow: 0 0 7px rgba(0,0,0,0.6);
height: 35px;
margin-bottom: 20px;
padding: 7px 20px 0;
position: relative;
} }
#logo { #header .logo img {
position:absolute; height: 30px;
top: 25px; padding-left: 3px;
left: 75px;
} }
#header_title { #header .title {
position:absolute; font-size: 20px;
height:40px; color: #999999;
left:230px;
top:25px;
font-size:34px;
font-weight: bold;
color:#FFFFFF;
}
#header_subtitle {
position:absolute;
color:#B9A894;
left:230px;
top:70px;
font-size:14px;
}
#header_userprofile, #header_userprofile a {
color:#B9A894;
}
#header_userprofile {
position:absolute;
font-size:10px;
top:10px;
right:20px;
}
#header_userprofile li {
float:right;
margin:0 10px 0 0;
}
#header_userprofile li#last {
clear:both;
color:#6A5644;
padding:8px 0 0;
}
#header_userprofile li strong {
color:#ECE0D2;
font-weight:normal;
}
#header_userprofile li a {
color:#B9A894;
padding:1px 0 1px 10px;
text-decoration:none;
}
#header_userprofile li a:hover {
color:#ECE0D2;
} }
/* Main Menu */ h1 {
#mainmenu { border-bottom: 1px solid #EEEEEE;
position:absolute; margin: 0px 0 30px;
bottom:0; padding-bottom: 9px;
left:197px;
z-index:1000;}
#mainmenu li {
float:left;
font-size:12px;
} }
#mainmenu li a { h5 {
border-radius:6px 6px 0px 0px; margin-bottom: 0px;
background:none repeat scroll 0 0 #4F4743;
color:#A59A92;
display:block;
margin:0 3px;
padding:10px 12px;
text-decoration:none;
} }
#mainmenu li a:hover { /*h1 small a {
color:#ECE0D2; background: none repeat scroll 0 0 #F1F1F1;
} border: 0 none;
#mainmenu li.selected a { font-family: sans-serif;
background:none repeat scroll 0 0 #FFFFFF; font-size: 14px;
color:#333333; margin-left: 4px;
padding: 3px 8px;
position: relative;
text-decoration: none;
top: -7px;
}*/
a:hover {
text-decoration: none;
} }
/* Wrapper */
#wrapper {
float:left;
line-height:140%; /* Left Menu */
.leftmenu ul {
margin: 0;
list-style: none;
}
.leftmenu ul ul {
display: none;
margin-left: 35px;
margin-top: -1px;
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
}
.leftmenu ul li {
display: block;
width: 100%; width: 100%;
} }
.leftmenu ul li a {
/* Sub Menu */ border-style: none solid solid;
#submenu { border-width: 0 1px 1px;
float: left; border-color: #dddddd;
width: 200px; color: #666666;
margin-left: -100%; display: block;
font-weight: bold;
background-color: #ffffff;
padding: 0;
} }
#submenu .section { .leftmenu ul li:first-child a {
border-top:1px solid #2C2523; border-top: 1px solid #DDDDDD;
}
#submenu .sectiontitle {
/*background-color: #2E2520*/
}
#submenu .section h4 {
border-top:1px solid #443C3A;
border-bottom:1px solid #B9A894;
color:#B9A894;
padding:15px 20px 10px 5px;
margin:0px;
margin-bottom:0px;
font-size: 16px;
text-align:right;
}
#submenu .section h3 {
border-bottom:1px dashed #B9A894;
color:#B9A894;
padding:15px 20px 10px 5px;
margin:0px;
margin-bottom:0px;
font-size: 16px;
text-align:right;
overflow:hidden;
}
#submenu li a {
color:#B9A894;
display:block;
font-size:11px;
padding:6px 20px 6px 2px;
text-align:right;
text-decoration:none;
}
.section li a:hover {
background:none repeat scroll 0 0 #443C3A;
}
#submenu li.selected a, .section li.selected a:hover {
background:none repeat scroll 0 0 #FFFFFF;
color:#333333;
} }
.leftmenu ul li a span.ico {
/* Content */
#content {
margin-left: 200px;
padding: 3px 20px;
}
#content h1 {
font-size: 28px;
font-weight: normal;
line-height: 100%;
}
#content h2 {
margin-top: 40px;
}
#content h3 {
font-size: 20px;
font-weight: normal;
}
/* Table */
table {
border-collapse:collapse;
border-color:#CCCCCC;
border-style:solid;
border-width:1px;
font-size:11px;
margin:0;
width:100%;
border-spacing:0px;
}
table th {
border-right:1px solid #CCCCCC;
color:#333333;
font-weight:bold;
padding:10px 10px 10px 10px;
text-align:left;
text-transform:uppercase;
}
table tr.odd td {
background:none repeat scroll 0 0 #F1F1F1;
}
table td {
background:none repeat scroll 0 0 #F7F7F7;
border-right:1px solid #CCCCCC;
line-height:120%;
padding: 10px 10px;
vertical-align:middle;
}
table tr:hover td, tr.odd:hover td {
background:none repeat scroll 0 0 #E8E4DE;
}
table a.table_delete {
background:url("../img/icons/cross.png") no-repeat scroll 0 0 transparent;
display:block;
float:left;
height:16px;
margin:0 10px 0 0;
padding:0;
text-indent:-9999px;
width:16px;
}
table a.table_edit {
background:url("../img/icons/pencil.png") no-repeat scroll 0 0 transparent;
display:block;
float:left;
height:16px;
margin:0 10px 0 0;
padding:0;
text-indent:-9999px;
width:16px;
}
.valigntop td {
vertical-align:top;
}
.agendatable td.dragcell {
padding: 0px 0 0px 10px;
}
.agendatable td img.center {
margin-left: 10px;
}
.agendatable tr.activesummarychildline td {
background-color: #f5cfa2;
}
.cleantable, .cleantable td, .cleantable td:hover {
border:none;
background:none;
line-height:120%;
padding: 5px 0;
font-size:11px;
margin:0;
width: 0;
}
tr.total td {
border-top: 1px solid #333333;
background-color: #e3e3e3;
}
tr.topline td {
border-bottom: 1px solid #333333;
background-color: #e3e3e3;
}
table tr.emptyline, table tr.emptyline td, table tr.emptyline td:hover {
border-right: 0px;
border-top: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
background: none !important;
}
/* Links and Images */
a {
color:#41829F;
text-decoration: none;
display: inline-block; display: inline-block;
background: #f9f9f9;
padding: 8px 10px 6px;
margin: 0 5px 0 0;
border-right: 1px solid #dddddd;
} }
a:hover { .leftmenu ul li a, .leftmenu ul li a span.ico {
text-decoration: underline; -webkit-transition: background 0.2s ease-in-out;
-moz-transition: background 0.2s ease-in-out;
-ms-transition: background 0.2s ease-in-out;
-o-transition: background 0.2s ease-in-out;
transition: background 0.2s ease-in-out;
} }
img { .leftmenu ul li a:hover {
border:none; background-color: #f5f5f5;
color: #000000;
}
.leftmenu ul li a:hover span.ico {
background-color: #efefef;
}
.leftmenu ul li.active a {
background-color: #333333;
color: #ffffff;
}
.leftmenu ul li.active a span.ico {
background-color: #111111;
border-right: 1px solid #444444;
}
.leftmenu ul li.active a span.ico i {
background-image: url("../img/glyphicons-halflings-white.png");
}
.leftmenu ul li.hider a {
margin-top: 5px;
height: 20px;
} }
.leftmenu.lefticon > ul {
/*Forms*/ width: 37px !important;
form {
margin:0;
padding:0
} }
label { .leftmenu.lefticon ul ul {
/*clear:both;*/ position: absolute;
display:block; z-index: 20;
padding:5px 0; margin-top: -34px;
} }
input[type="text"], input[type="email"], input[type="password"], input[type="number"], textarea, select { .leftmenu.lefticon > ul > li > a > span.text {
background:none repeat scroll 0 0 #F7F7F7; display: none;
border:1px solid #CCCCCC;
outline:medium none;
padding:5px;
font-size:13px;
width: 400px;
size:800px;
} }
input[type="text"], input[type="email"], input[type="password"], input[type="number"] { .leftmenu.lefticon ul ul > li > a {
height:17px; min-width: 200px !important;
} }
textarea { .leftmenu.lefticon span.text {
height: 150px; padding-right: 15px;
}
select {
padding:0px;
}
input[type="submit"], input[type="button"] {
background:url("../images/button.gif") repeat-x scroll left top #459300 !important;
border:1px solid #459300 !important;
color:#FFFFFF !important;
cursor:pointer;
display:inline-block;
padding:4px 10px !important;
margin: 2px 0 2px 0;
}
#id_permissions {
height: 310px;
}
.button {
border: 1px solid #D3D3D3;
border-radius: 4px 4px 4px 4px;
display: inline-block;
font-weight: normal;
padding: 4px 10px;
margin: 2px 0 2px 0;
text-align: center;
text-decoration: none;
background:#f9f9f9;
background:#f9f9f9 -webkit-gradient( linear,0% 0%,0% 100%,from(rgba(255,255,255,.2)),to(rgba(0,0,0,0)));
background:#f9f9f9 -moz-linear-gradient( top,rgba(255,255,255,.4),rgba(0,0,0,0));
color: #555555;
cursor: pointer;
}
.button:hover {
border: 1px solid #999999;
background:#f9f9f9 -webkit-gradient(linear,0% 0%,0% 100%,from(rgba(255,255,255,.55)),to(rgba(0,0,0,0)));
background:#f9f9f9 -moz-linear-gradient( top,rgba(255,255,255,.55),rgba(0,0,0,0));
}
.button:active {
-webkit-box-shadow:inset 0 100% 0 0 rgba(0,0,0,0.2);
background:#f9f9f9 -webkit-gradient(linear,0% 0%,0% 100%,from(rgba(0,0,0,.3)),to(rgba(0,0,0,0)));
background:#f9f9f9 -moz-linear-gradient( top,rgba(0,0,0,.1),rgba(0,0,0,0));
}
.button .icon {
height: 16px;
text-indent:20px;
padding-top: 1px;
display:block;
text-transform:none;
white-space:nowrap;
}
.button .cancel{
background:url(../images/icons/dialog-cancel.png) no-repeat 0px 0px;
}
.button .ok{
background:url(../images/icons/dialog-ok-apply.png) no-repeat 0px 0px;
}
.button .ok-blue, .button .apply{
background:url(../images/icons/dialog-ok.png) no-repeat 0px 0px;
}
.button .edit{
background:url(../images/icons/edit.png) no-repeat 0px 0px;
}
.button .revert{
background:url(../images/icons/revert.png) no-repeat 0px 0px;
}
.button .undo{
background:url(../images/icons/undo.png) no-repeat 0px 0px;
}
.button .item{
background:url(../images/icons/view-list-details.png) no-repeat 0px 0px;
}
.button .projector{
background:url(../images/icons/projector.png) no-repeat 0px 0px;
}
.button .done{
background:url(../images/icons/done.png) no-repeat 0px 0px;
}
.button .close{
background:url(../images/icons/close.png) no-repeat 0px 0px;
}
.button .reject{
background:url(../images/icons/reject.png) no-repeat 0px 0px;
}
.statistics{
background:url(../images/icons/statistics.png) no-repeat 0px 0px;
}
.button .pdf{
background:url(../images/icons/pdf.png) no-repeat 0px 0px;
}
.button .adduser{
background:url(../images/icons/add-user.png) no-repeat 0px 0px;
}
.button .removeuser{
background:url(../images/icons/remove-user.png) no-repeat 0px 0px;
}
.button .export{
background:url(../images/icons/export.png) no-repeat 0px 0px;
}
.button .import{
background:url(../images/icons/import.png) no-repeat 0px 0px;
}
.add{
background:url(../images/icons/add.png) no-repeat 0px 0px;
}
.button .number{
background:url(../images/icons/number.png) no-repeat 0px 0px;
}
.button .guest{
background:url(../images/icons/guest.png) no-repeat 0px 0px;
}
.button .clear{
background:url(../images/icons/clear.png) no-repeat 0px 0px;
text-indent:12px;
} }
.small-input { /** Navigation icons (mapping to glyphicons-halflings) **/
width: 40px !important; .icon-dashboard {
background-position: 0 -24px;
}
.icon-agenda {
background-position: -264px 0;
}
.icon-application {
background-position: -24px -24px;
}
.icon-assignment {
background-position: -408px 0;
}
.icon-participant {
background-position: -168px 0;
}
.icon-config {
background-position: -360px -144px;
} }
.small-form input { /** Utils **/
width: 40px !important; .nopadding {
padding: 0;
}
.alert form {
margin-bottom: 0;
} }
.medium-input { /** Forms **/
width: 200px !important; .errorlist{
margin: 0;
} }
.default-input { .errorlist li {
width: auto !important; list-style: none outside none;
}
.errorlist {
color:#DA3939;
font-size:9px;
font-style:italic;
height:13px;
padding:0;
} }
form .required label:after { form .required label:after {
content: " *"; content: " *";
} }
form .error {
font-weight: bold;
color:#DA3939;
}
form p.error {
margin-top:0;
}
form .error input, form .error textarea {
border:1px solid #DA3939;
}
form input:after {
font-weight: bold;
}
.helptext { .helptext {
font-size:9px; font-size:9px;
display: block; display: block;
color: #556652; color: #556652;
} }
/* Fieldsets */ textarea {
fieldset { height: 100px;
width: 0px;
padding: 0 60px 0 20px;
} }
/* Lists */ /** Responsive **/
ul { @media (max-width: 767px) {
list-style:none outside none; body {
-moz-padding-start:0px; padding: 0;
margin:0; }
padding:0; .row-fluid .leftmenu {
} float: left;
ol { }
-moz-padding-start:20px; #content {
margin:0; margin: 0 5px 0 45px;
padding-left:20px; }
} }
ul.results {
list-style:square outside none;
-moz-padding-start:0px;
margin-left: 20px;
padding:0;
}
/* Main container */
#main ul{
list-style: disc inside;
}
#main table {
width: auto;
}
/* Misc */
#sidebar {
width: 250px;
float: right;
margin:50px 0 20px 10px;
}
.box {
border:1px solid #808080;
padding: 0px 10px 10px 10px;
}
.box h4 {
margin-bottom: 0;
color: #333333;
font-weight: normal;
text-transform: uppercase;
}
.note {
color: red;
}
/* Footer */
#footer {
border-top:1px solid #CCCCCC;
font-size:12px;
margin:20px 0 0;
padding:5px 0;
clear: both;
}
/* Notification */
.notification {
border-radius: 6px 6px 6px 6px;
background-position: 10px 11px !important;
background-repeat: no-repeat !important;
border: 1px solid;
font-size: 13px;
margin: 10px 0 15px 0;
padding: 0;
position: relative;
line-height: 100%;
width: 96%;
cursor: pointer;
}
.notification .close {
color: #990000;
font-size: 9px;
position: absolute;
right: 5px;
top: 5px;
}
.notification em {
display: block;
font-style: normal;
line-height: 1.5em;
padding: 10px 20px 10px 36px;
}
.notification.success {
background: url("../images/icons/done.png") repeat scroll 0 0 #D5FFCE;
border-color: #9ADF8F;
color: #556652;
}
.notification.error {
background: url("../images/icons/error.png") repeat scroll 0 0 #FFCECE;
border-color: #DF8F8F;
color: #665252;
}
.notification.warning {
background: url("../images/icons/warning.png") repeat scroll 0 0 #FFFBCC;
border-color: #E6DB55;
color: #666452;
}
.notification.info {
background: url("../images/icons/information.png") repeat scroll 0 0 #DBE3FF;
border-color: #A2B4EE;
color: #585B66;
}
/* Icons */
.icon {
font-size: 14px;
}
.icon span {
background-repeat: no-repeat;
background-position: center;
width: 16px;
height: 16px;
display: inline-block;
}
.right {
float: right
}
.preview {
background:url("../images/icons/preview.png") no-repeat 0px 0px;
}
.edit {
background:url("../images/icons/edit.png") no-repeat 0px 0px;
}
.delete {
background:url("../images/icons/delete.png") no-repeat 0px 0px;
}
/* inactive/active */
a.activate_link span {
background-image: url(../images/icons/accept-grey.png);
background-repeat: no-repeat;
background-position: center;
width: 16px;
height: 16px;
display: inline-block;
}
a.activate_link.active span {
background-image: url(../images/icons/accept.png);
}
tr.activeline td, li.activeline {
background-color: #bed4de !important;
}

File diff suppressed because it is too large Load Diff

5624
openslides/static/styles/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -9,8 +9,6 @@ body.drag {
.draggable a.tabledrag-handle { .draggable a.tabledrag-handle {
cursor: move; cursor: move;
float: left; /* LTR */ float: left; /* LTR */
height: 1.7em;
margin: -0.4em 0 -0.4em -0.5em; /* LTR */
padding-right: 0.5em ; /* LTR */ padding-right: 0.5em ; /* LTR */
text-decoration: none; text-decoration: none;
} }

View File

@ -7,86 +7,122 @@
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head> <head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}{% get_config 'event_name' %}{% endblock %}</title> <title>{% block title %}{% get_config 'event_name' %}{% endblock %}</title>
<link type="text/css" rel="stylesheet" media="all" href="{% static 'styles/base.css' %}" />
<link rel="shortcut icon" href="{% static 'images/favicon.png' %}" type="image/png" /> <!-- styles -->
<script type="text/javascript" src="{% static 'javascript/jquery.js' %}"></script> <link href="{% static 'styles/bootstrap.css' %}" type="text/css" rel="stylesheet">
<script type="text/javascript" src="{% static 'javascript/utils.js' %}"></script> <link href="{% static 'styles/bootstrap-responsive.css' %}" type="text/css" rel="stylesheet">
<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script> <link href="{% static 'styles/base.css' %}" type="text/css" rel="stylesheet">
<link href="{% static 'img/favicon.png' %}" type="image/png" rel="shortcut icon" />
{% block header %} {% block header %}
{% endblock %} {% endblock %}
</head> </head>
<body> <body>
<div id="header"> <!-- Navbar -->
<a href="/" title="{% trans 'Home' %}"><div id="logo"><img src="{% static 'images/logo.png' %}"></div></a> <div class="container-fluid nopadding">
<div id="header_title">{% get_config 'event_name' %}</div> <div class="row-fluid">
<div id="header_subtitle">{% get_config 'event_description' %}</div> <div class="span12">
<div id="header_userprofile"> <div id="header">
<ul> <a href="/" class="logo" title="{% trans 'Home' %}"><img src="{% static 'img/logo.png' %}"></a>
{% if user.is_authenticated %} <!--<a class="title" href="#">{% get_config 'event_name' %}</a>-->
<li>|<a href="{% url user_logout %}">{% trans "Logout" %}</a></li> <div class="btn-group pull-right">
{% url user_settings as url_usersettings %} {% if user.is_authenticated %}
<li>|<a href="{% url user_settings %}">{% if request.path == url_usersettings %}<strong>{% endif %}{% trans "User Settings" %}{% if request.path == url_usersettings %}</strong>{% endif %}</a></li> <a href="#" data-toggle="dropdown" class="btn btn-small dropdown-toggle">
<li>{% trans "Welcome" %}, <strong>{{ user.username }}</strong></li> <i class="icon-user"></i> {{ user.username }}
{% else %} <span class="caret"></span>
<li><a href="{% url user_login %}">{% trans "Login" %}</a></li> </a>
<ul class="dropdown-menu">
{% url user_settings as url_usersettings %}
<li><a href="{% url user_settings %}"><i class="icon-cog"></i> {% trans "Profile" %}</a></li>
<li><a href="{% url password_change %}"><i class="icon-lock"></i> {% trans "Change password" %}</a></li>
<li class="divider"></li>
<li><a href="{% url user_logout %}"><i class="icon-off"></i> {% trans "Logout" %}</a></li>
</ul>
{% else %}
<a href="{% url user_login %}">{% trans "Login" %}</a>
{% endif %}
</div>
</div> <!--/#header-->
</div> <!--/.span12-->
</div>
</div> <!--/.container-fluid-->
<!--
{% block mainmenu %}
{% endblock %}
{% block submenu %}
{% endblock %}
-->
<!-- Container -->
<div class="container-fluid" id="container">
<div class="row-fluid">
<!-- Sidebar navigation-->
<div class="span2 leftmenu lefticon">
<ul>
{% for tab in tabs %}
{% if tab.permission %}
<li{% if tab.selected %} class="active"{% endif %}>
<a href="{{ tab.url }}">
<span class="ico"><i class="icon-{{tab.app}}"></i></span>
<span class="text">{{ tab.title }}</span>
</a>
</li>
{% endif %} {% endif %}
</ul> {% endfor %}
</div> </ul>
</div>
<div id="mainmenu"> <!-- Content -->
{% block mainmenu %} <div id="content" class="span10">
<ul> <div class="row-fluid">
{% for tab in tabs %} <div class="span12">
{% if tab.permission %} <div id="notifications">
<li{% if tab.selected%} class="selected"{% endif %}> <div id="dummy-notification" class="notification" style="display:none">
<a href="{{ tab.url }}">{{ tab.title }}</a> <button type="button" class="close" data-dismiss="alert">×</button>
</li> </div>
{% endif %} {% for message in messages %}
{% endfor %} <div class="alert {% if message.tags %}alert-{{ message.tags }}{% endif %}">
</ul> <button type="button" class="close" data-dismiss="alert">×</button>
{% endblock %} {{ message|safe }}
</div> </div>
{% endfor %}
</div>
{% block content %}
{% endblock %}
</div> </div>
</div>
<hr>
<footer>
<small>
&copy; Copyright 2012 | Powered by <a href="http://openslides.org" target="_blank">OpenSlides</a>
</small>
</footer>
</div><!--/content-->
</div><!--/row-->
</div><!--/container-fluid-->
<div id="wrapper">
<div id="content">
<div id="notifications">
<div id="dummy-notification" class="notification" style="display:none">
<a class="close" href="#">
<img alt="close" title="{% trans 'Close this notification' %}" src="{% static 'images/icons/cross.png' %}">
</a>
<em></em>
</div>
{% for message in messages %}
<div class="notification {% if message.tags %}{{ message.tags }}{% endif %}">
<a class="close" href="#">
<img alt="close" title="{% trans 'Close this notification' %}" src="{% static 'images/icons/cross.png' %}">
</a>
<em>{{ message|safe }}</em>
</div>
{% endfor %}
<script>
$("div.notification").click(function () {
$(this).slideUp("fast");
});
</script>
</div>
{% block content %}
{% endblock %}
<div id="footer">
<small>
&copy; Copyright 2012 | Powered by <a href="http://openslides.org" target="_blank">OpenSlides</a>
</small>
</div>
</div>
</div> <!-- end wrapper -->
<div id="submenu">
<div class="section">
{% block submenu %}
{% endblock %}
</div>
</div> <!-- JavaScript (Placed at the end of the document so the pages load faster) -->
<script src="{% static 'javascript/jquery.js' %}" type="text/javascript"></script>
<script src="{% static 'javascript/utils.js' %}" type="text/javascript"></script>
<script src="{% static 'javascript/bootstrap.min.js' %}" type="text/javascript"></script>
<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
{% block javascript %}
{% endblock %}
</body> </body>
</html> </html>

View File

@ -16,9 +16,10 @@ from django.template.loader_tags import BlockNode, ExtendsNode
class Tab(object): class Tab(object):
def __init__(self, title='', url='', permission='', selected=False): def __init__(self, title='', app='', url='', permission='', selected=False):
self.selected = False self.selected = False
self.title = title self.title = title
self.app = app
self.permission = permission self.permission = permission
self.selected = selected self.selected = selected
self.url = url self.url = url

View File

@ -46,8 +46,8 @@ def gen_confirm_form(request, message, url):
%s %s
<form action="%s" method="post"> <form action="%s" method="post">
<input type="hidden" value="%s" name="csrfmiddlewaretoken"> <input type="hidden" value="%s" name="csrfmiddlewaretoken">
<input type="submit" value="%s"> <button type="submit" class="btn">%s</button>
<input type="button" value="%s"> <button class="btn">%s</button>
</form> </form>
""" """
% (message, url, csrf(request)['csrf_token'], _("Yes"), _("No"))) % (message, url, csrf(request)['csrf_token'], _("Yes"), _("No")))

View File

@ -127,7 +127,7 @@ class QuestionMixin(object):
def confirm_form(self): def confirm_form(self):
option_fields = "\n".join([ option_fields = "\n".join([
'<input type="submit" name="%s" value="%s">' % (option[0], unicode(option[1])) '<button type="submit" class="btn" name="%s">%s</button>' % (option[0], unicode(option[1]))
for option in self.get_answer_options()]) for option in self.get_answer_options()])
messages.warning(self.request, messages.warning(self.request,
""" """