Updated template with twitter bootstrap. Step 1: agenda and application.
This commit is contained in:
parent
34a690c713
commit
7fde53a09e
@ -18,7 +18,3 @@
|
||||
.close_link.closed span {
|
||||
background-image: url(../images/icons/close.png);
|
||||
}
|
||||
|
||||
table#menu-overview {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "agenda/base_agenda.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
@ -12,26 +12,42 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>
|
||||
{% if item %}
|
||||
<h1>{% trans "Edit item" %}</h1>
|
||||
{% trans "Edit item" %}
|
||||
{% else %}
|
||||
<h1>{% trans "New item" %}</h1>
|
||||
{% trans "New item" %}
|
||||
{% 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.as_p }}
|
||||
<p>
|
||||
<button class="button" type="submit">
|
||||
<span class="icon ok">{% trans 'Save' %}</span>
|
||||
{% 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 %}
|
||||
<div class="control-group">
|
||||
<button class="btn btn-primary" type="submit">
|
||||
{% trans 'Save' %}
|
||||
</button>
|
||||
<button class="button" type="submit" name="apply">
|
||||
<span class="icon apply">{% trans 'Apply' %}</span>
|
||||
<button class="btn" type="submit" name="apply">
|
||||
{% trans 'Apply' %}
|
||||
</button>
|
||||
<a href='{% url item_overview %}'>
|
||||
<button class="button" type="button" onclick="window.location='{% url item_overview %}'">
|
||||
<span class="icon cancel">{% trans 'Cancel' %}</span>
|
||||
<button class="btn" type="button" onclick="window.location='{% url item_overview %}'">
|
||||
{% trans 'Cancel' %}</span>
|
||||
</button>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<small>* {% trans "required" %}</small>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
@ -49,7 +49,7 @@
|
||||
</td>
|
||||
{% endif %}
|
||||
{% if perms.agenda.can_manage_agenda %}
|
||||
<td class="tabledrag-hide">
|
||||
<td class="tabledrag-hide" style="display: none;">
|
||||
{% with form=item.weight_form %}
|
||||
{{ form.weight }}
|
||||
{{ form.self }}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "agenda/base_agenda.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load tags %}
|
||||
{% load i18n %}
|
||||
@ -10,6 +10,9 @@
|
||||
{% 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/agenda.css' %}" />
|
||||
{% endblock %}
|
||||
|
||||
{% block javascript %}
|
||||
<script type="text/javascript" src="{% static 'javascript/agenda.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'javascript/jquery.cookie.js' %}"></script>
|
||||
{% if perms.agenda.can_manage_agenda %}
|
||||
@ -37,29 +40,38 @@
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
{% if perms.agenda.can_manage_agenda %}
|
||||
<div id="changed-order-message" style="display:none" class="notification warning">
|
||||
<em>{% trans "Do you want to save the changed order of agenda items?" %}<br>
|
||||
<input type="submit" value="{% trans 'Yes' %}">
|
||||
<input type="button" onclick="window.location.href='{% url item_overview %}';" value="{% trans 'No' %}">
|
||||
</em>
|
||||
<div id="changed-order-message" style="display:none" class="alert alert-warning">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<p>{% trans "Do you want to save the changed order of agenda items?" %}</p>
|
||||
<p>
|
||||
<button class="btn" type="submit">{% trans 'Yes' %}</button>
|
||||
<a href="{% url item_overview %}" class="btn">{% trans 'No' %}</a>
|
||||
</p>
|
||||
</div>
|
||||
{% 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>
|
||||
{% trans "Filter" %}:
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" id="hide_closed_items"> {% trans "Hide closed items" %}
|
||||
</p>
|
||||
{{ items|length }}
|
||||
</label>
|
||||
|
||||
<small><i>{{ items|length }}
|
||||
{% 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>
|
||||
<th width="50">{% trans "Done" %}</th>
|
||||
<th width="10px"></th>
|
||||
<th>{% trans "Item" %}</th>
|
||||
{% if perms.agenda.can_manage_agenda %}
|
||||
<th width="200">{% trans "Comment" %}</th>
|
||||
@ -68,7 +80,7 @@
|
||||
<th width="50">{% trans "Actions" %}</th>
|
||||
{% endif %}
|
||||
{% if perms.agenda.can_manage_agenda %}
|
||||
<th class="tabledrag-hide">{% trans "Weight" %}</th>
|
||||
<th class="tabledrag-hide" style="display: none;">{% trans "Weight" %}</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
<tr class="topline{% if active_sid == 'agenda' %} activeline{% endif %}">
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "agenda/base_agenda.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
|
@ -212,6 +212,7 @@ def register_tab(request):
|
||||
selected = request.path.startswith('/agenda/')
|
||||
return Tab(
|
||||
title=_('Agenda'),
|
||||
app='agenda',
|
||||
url=reverse('item_overview'),
|
||||
permission=request.user.has_perm('agenda.can_see_agenda')
|
||||
or request.user.has_perm('agenda.can_manage_agenda'),
|
||||
|
@ -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 %}
|
@ -1,4 +1,4 @@
|
||||
{% extends "application/base_application.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
@ -12,28 +12,43 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>
|
||||
{% if application %}
|
||||
<h1>{% trans "Edit motion" %}</h1>
|
||||
{% trans "Edit motion" %}
|
||||
{% else %}
|
||||
<h1>{% trans "New motion" %}</h1>
|
||||
{% trans "New motion" %}
|
||||
{% 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.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 }}
|
||||
<p>
|
||||
<button class="button" type="submit">
|
||||
<span class="icon ok">{% trans 'Save' %}</span>
|
||||
<div class="control-group">
|
||||
<button class="btn btn-primary" type="submit">
|
||||
{% trans 'Save' %}
|
||||
</button>
|
||||
<button class="button" type="submit" name="apply">
|
||||
<span class="icon apply">{% trans 'Apply' %}</span>
|
||||
<button class="btn" type="submit" name="apply">
|
||||
{% trans 'Apply' %}
|
||||
</button>
|
||||
<a href='{% url application_overview %}'>
|
||||
<button class="button" type="button" onclick="window.location='{% url application_overview %}'">
|
||||
<span class="icon cancel">{% trans 'Cancel' %}</span>
|
||||
<button class="btn" type="button" onclick="window.location='{% url application_overview %}'">
|
||||
{% trans 'Cancel' %}</span>
|
||||
</button>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<small>* {% trans "required" %}</small>
|
||||
</form>
|
||||
|
||||
|
@ -1,13 +1,17 @@
|
||||
{% extends "application/base_application.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ block.super }} – {% trans "Import motions" %} {% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{% trans "Import motions" %}</h1>
|
||||
<p>{% trans 'Select a CSV file to import motions!' %}</p>
|
||||
<h1>{% trans "Import motions" %}
|
||||
<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)' %}
|
||||
<br>
|
||||
{% trans 'Required CSV file encoding: UTF-8 (Unicode).' %}
|
||||
@ -17,17 +21,26 @@
|
||||
</p>
|
||||
|
||||
<form enctype="multipart/form-data" action="" method="post">{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<p>
|
||||
<button class="button" type="submit">
|
||||
<span class="icon import">{% trans 'Import' %}</span>
|
||||
</button>
|
||||
<a href="{% url application_overview%}">
|
||||
<button class="button" type="button" onclick="window.location='{% url application_overview %}'">
|
||||
<span class="icon cancel">{% trans 'Cancel' %}</span>
|
||||
{% 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 %}
|
||||
<div class="control-group">
|
||||
<button class="btn btn-primary" type="submit">
|
||||
{% trans 'Import' %}
|
||||
</button>
|
||||
<a href='{% url application_overview %}' class="btn">
|
||||
{% trans 'Cancel' %}
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<small>* {% trans "required" %}</small>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "application/base_application.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load tags %}
|
||||
{% load i18n %}
|
||||
@ -7,17 +7,31 @@
|
||||
{% block title %}{{ block.super }} – {% trans "Motions" %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{% trans "Motions" %}</h1>
|
||||
<p><form action="{{ request.url }}" name="filter" method="get">
|
||||
{% trans "Filter" %}:
|
||||
<h1>{% trans "Motions" %}
|
||||
<small class="pull-right">
|
||||
{% 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 %}
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" name="needsup" onchange="document.forms['filter'].submit()"
|
||||
{% if 'on' in request.GET.needsup %}checked{% endif %}> {% trans "Need supporters" %}
|
||||
</label>
|
||||
{% endif %}
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" name="number" onchange="document.forms['filter'].submit()"
|
||||
{% if 'on' in request.GET.number %}checked{% endif %}> {% trans "Without number" %}
|
||||
</label>
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" name="status" onchange="document.forms['filter'].submit()"
|
||||
{% 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 %}">
|
||||
<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>
|
||||
@ -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="rev" {% if 'rev' in request.GET.statusvalue %}selected{% endif %}>{% trans "Needs Review" %}</option>
|
||||
</select>
|
||||
|
||||
</form>
|
||||
</p>
|
||||
{{ applications|length }}
|
||||
<small><i>{{ applications|length }}
|
||||
{% blocktrans count counter=applications|length %}motion{% plural %}motions{% endblocktrans %}
|
||||
<table>
|
||||
</i></small>
|
||||
<table class="table table-striped table-bordered">
|
||||
<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=title{% if 'title' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{% trans "Motion title" %}</a></th>
|
||||
|
@ -1,22 +1,48 @@
|
||||
{% extends 'application/base_application.html' %}
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% load i18n %}
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}
|
||||
{{ block.super }} – {% trans "Motion" %} "{{ application.public_version.title }}"
|
||||
– {{ ballot }}. {% trans "Vote" %}
|
||||
{{ block.super }} - {% trans "Motion" %} {{ application.number }}, {{ ballot }}. {% trans "Vote" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{{ application.public_version.title }} ({% trans "Motion" %}
|
||||
{{ application.number }}) – {{ ballot }}. {% trans "Vote" %}</h1>
|
||||
<h1>
|
||||
{{ application.title }}
|
||||
<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 %}
|
||||
{{ pre_form }}
|
||||
<span id="poll_id" style="display:none">{{ poll.id }}</span>
|
||||
|
||||
<table class="table" style="width: auto;">
|
||||
<table class="table table-striped table-bordered" style="width: auto;">
|
||||
<tr>
|
||||
<th>{% trans "Option" %}</th>
|
||||
<th>{% trans "Votes" %}</th>
|
||||
@ -36,29 +62,24 @@
|
||||
<td>{{ pollform.votescast.errors }}{{ pollform.votescast }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
{{ post_form }}
|
||||
|
||||
<!-- ballot paper button -->
|
||||
<p>
|
||||
<a href='{% url print_application_poll poll.id %}'>
|
||||
<button class="button" type="button" onclick="window.location='{% url print_application_poll poll.id %}'">
|
||||
<span class="icon pdf">{% trans 'Ballot paper as PDF' %}</span>
|
||||
</button>
|
||||
<a href='{% url print_application_poll poll.id %}' class="btn">
|
||||
<i class="icon-print"></i> {% trans 'Ballot paper as PDF' %}
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<button class="button" type="submit">
|
||||
<span class="icon ok">{% trans 'Save' %}</span>
|
||||
<!-- Control buttons -->
|
||||
<div class="control-group">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{% trans 'Save' %}
|
||||
</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 type="submit" name="apply" class="btn">
|
||||
{% trans 'Apply' %}
|
||||
</button>
|
||||
<a href='{% url application_view application.id %}' class="btn">
|
||||
{% trans 'Cancel' %}
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
@ -1,221 +1,73 @@
|
||||
{% extends "application/base_application.html" %}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load tags %}
|
||||
{% load i18n %}
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}{{ block.super }} – {% trans "Motion" %} "{{ version.title }}"{% endblock %}
|
||||
|
||||
|
||||
{% block submenu %}
|
||||
{{ block.super }}
|
||||
|
||||
{% block title %}
|
||||
{{ block.super }} - {% trans "Motion" %}
|
||||
{% if application.number != None %}
|
||||
{{ application.number }}
|
||||
{% else %}
|
||||
[{% trans "no number" %}]
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div id="sidebar">
|
||||
<div class="box">
|
||||
<h4>{% trans "Submitter" %}:</h4>
|
||||
{{ application.submitter }}
|
||||
{% if user == application.submitter.user %}
|
||||
<img src="{% static 'images/icons/user-information.png' %}" title="{% trans 'You!' %}">
|
||||
{% 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" %}
|
||||
<small>
|
||||
{% if application.number != None %}
|
||||
{{ application.number }})
|
||||
{% trans "Motion" %} {{ application.number }},
|
||||
{% else %}
|
||||
<i>[{% trans "no number" %}]</i>)
|
||||
<i>[{% trans "no number" %}]</i>,
|
||||
{% endif %}
|
||||
{% 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>
|
||||
|
||||
{% trans "Version" %} {{ version.aid }}
|
||||
|
||||
<div class="row-fluid">
|
||||
<div class="span9">
|
||||
{% if application.public_version != application.last_version %}
|
||||
⋅
|
||||
{% if version == application.public_version %}
|
||||
@ -225,34 +77,32 @@
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<h2>{% trans "Motion" %}:</h2>
|
||||
|
||||
<!-- Text -->
|
||||
<h4>{% trans "Motion text" %}:</h4>
|
||||
{{ version.text|linebreaks }}
|
||||
|
||||
<h2>{% trans "Reason" %}:</h2>
|
||||
|
||||
<br>
|
||||
<!-- Reason -->
|
||||
<h4>{% trans "Reason" %}:</h4>
|
||||
{% if version.reason %}
|
||||
{{ version.reason|linebreaks }}
|
||||
{% else %}
|
||||
–
|
||||
{% endif %}
|
||||
|
||||
|
||||
<br>
|
||||
<!-- Version history -->
|
||||
{% if application.versions|length > 1 %}
|
||||
<h2>{% trans "Version History" %}:</h2>
|
||||
|
||||
<table class="table valigntop" style="width: auto;">
|
||||
<h4>{% trans "Version History" %}:</h4>
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>{% trans "Version" %}</th>
|
||||
<th>{% trans "Time" %}</th>
|
||||
<th>{% trans "Title" %}</th>
|
||||
<th>{% trans "Text" %}</th>
|
||||
|
||||
<th>{% trans "Reason" %}</th>
|
||||
</tr>
|
||||
{% for revision in application.versions %}
|
||||
<tr class="{% cycle 'odd' '' %}">
|
||||
<tr>
|
||||
<td style="white-space:nowrap;">
|
||||
{% if application.status != "pub" %}
|
||||
{% if revision == application.permitted %}
|
||||
@ -297,10 +147,201 @@
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% 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 %}
|
||||
<h2>{% trans "Log" %}:</h2>
|
||||
{{ application.log|linebreaks }}
|
||||
<!-- Manage application box -->
|
||||
<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 %}
|
||||
<!-- 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 %}
|
||||
|
@ -909,6 +909,7 @@ def register_tab(request):
|
||||
selected = True if request.path.startswith('/application/') else False
|
||||
return Tab(
|
||||
title=_('Applications'),
|
||||
app='application',
|
||||
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'),
|
||||
selected=selected,
|
||||
|
@ -20,7 +20,7 @@
|
||||
</p>
|
||||
{{ assignments|length }}
|
||||
{% blocktrans count counter=assignments|length %}election{% plural %}elections{% endblocktrans %}
|
||||
<table>
|
||||
<table class="table table-striped table-bordered">
|
||||
<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>{% trans "Candidates" %}</th>
|
||||
|
@ -646,6 +646,7 @@ def register_tab(request):
|
||||
selected = request.path.startswith('/assignment/')
|
||||
return Tab(
|
||||
title=_('Elections'),
|
||||
app='assignment',
|
||||
url=reverse('assignment_overview'),
|
||||
permission=request.user.has_perm('assignment.can_see_assignment')
|
||||
or request.user.has_perm('assignment.can_nominate_other')
|
||||
|
@ -117,6 +117,7 @@ def register_tab(request):
|
||||
selected = request.path.startswith('/config/')
|
||||
return Tab(
|
||||
title=_('Configuration'),
|
||||
app='config',
|
||||
url=reverse('config_general'),
|
||||
permission=request.user.has_perm('config.can_manage_config'),
|
||||
selected=selected,
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -16,10 +16,7 @@
|
||||
<h1>{% trans "Login" %}</h1>
|
||||
|
||||
{% if form.errors %}
|
||||
<div class="notification error">
|
||||
<a class="close" href="#">
|
||||
<img alt="close" title="{% trans 'Close this notification' %}" src="{% static 'images/icons/cross.png' %}">
|
||||
</a>
|
||||
<div class="alert alert-error">
|
||||
{% for msg in form.non_field_errors %}
|
||||
<em>{{ msg }}</em>
|
||||
{% if not forloop.last %}<br />{% endif %}
|
||||
@ -29,18 +26,10 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if first_time_message %}
|
||||
<div class="notification info">
|
||||
<a class="close" href="#">
|
||||
<img alt="close" title="{% trans 'Close this notification' %}" src="{% static 'images/icons/cross.png' %}">
|
||||
</a>
|
||||
<div class="alert alert-info">
|
||||
<em>{{ first_time_message|safe }}</em>
|
||||
</div>
|
||||
{% endif %}
|
||||
<script>
|
||||
$("div.notification").click(function () {
|
||||
$(this).hide("fast");
|
||||
});
|
||||
</script>
|
||||
<form method="post" action="{% url user_login %}{% if next %}?next={{ next }}{% endif %}">
|
||||
{% csrf_token %}
|
||||
<table>
|
||||
|
@ -61,7 +61,7 @@
|
||||
{% else %}
|
||||
{{ users.count }} {% trans "of" %} {{ allusers }} {% trans "Participants" %} (= {{ percent }} %)
|
||||
{% endif %}
|
||||
<table>
|
||||
<table class="table table-striped table-bordered">
|
||||
<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=last_name&reverse={% if 'last_name' in sortfilter.sort and 'reverse' not in sortfilter %}1{% else %}---{%endif%}">{% trans "Last Name" %}</a></th>
|
||||
|
@ -495,6 +495,7 @@ def register_tab(request):
|
||||
selected = request.path.startswith('/participant/')
|
||||
return Tab(
|
||||
title=_('Participants'),
|
||||
app='participant',
|
||||
url=reverse('user_overview'),
|
||||
permission=request.user.has_perm('participant.can_see_participant') or
|
||||
request.user.has_perm('participant.can_manage_participant'),
|
||||
|
@ -358,6 +358,7 @@ def register_tab(request):
|
||||
selected = True if request.path.startswith('/projector/') else False
|
||||
return Tab(
|
||||
title=_('Dashboard'),
|
||||
app='dashboard',
|
||||
url=reverse('dashboard'),
|
||||
permission=request.user.has_perm('projector.can_manage_projector') or
|
||||
request.user.has_perm('projector.can_see_dashboard'),
|
||||
|
BIN
openslides/static/img/favicon.png
Normal file
BIN
openslides/static/img/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
BIN
openslides/static/img/glyphicons-halflings-white.png
Normal file
BIN
openslides/static/img/glyphicons-halflings-white.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
BIN
openslides/static/img/glyphicons-halflings.png
Normal file
BIN
openslides/static/img/glyphicons-halflings.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
openslides/static/img/logo.png
Normal file
BIN
openslides/static/img/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.1 KiB |
6
openslides/static/javascript/bootstrap.min.js
vendored
Normal file
6
openslides/static/javascript/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -43,3 +43,115 @@ function new_message(text, type) {
|
||||
$('#notifications').append(message);
|
||||
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');
|
||||
}
|
||||
});
|
@ -1,615 +1,196 @@
|
||||
/**
|
||||
* 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 {
|
||||
background-color: #333333;
|
||||
background-image: -moz-linear-gradient(top, #444444, #222222);
|
||||
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;
|
||||
background:url("../images/bg-header.gif") repeat-x scroll center top #3D3020;
|
||||
height:150px;
|
||||
}
|
||||
#logo {
|
||||
position:absolute;
|
||||
top: 25px;
|
||||
left: 75px;
|
||||
#header .logo img {
|
||||
height: 30px;
|
||||
padding-left: 3px;
|
||||
}
|
||||
#header_title {
|
||||
position:absolute;
|
||||
height:40px;
|
||||
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 */
|
||||
#mainmenu {
|
||||
position:absolute;
|
||||
bottom:0;
|
||||
left:197px;
|
||||
z-index:1000;}
|
||||
#mainmenu li {
|
||||
float:left;
|
||||
font-size:12px;
|
||||
}
|
||||
#mainmenu li a {
|
||||
border-radius:6px 6px 0px 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 {
|
||||
color:#ECE0D2;
|
||||
}
|
||||
#mainmenu li.selected a {
|
||||
background:none repeat scroll 0 0 #FFFFFF;
|
||||
color:#333333;
|
||||
}
|
||||
|
||||
|
||||
/* Wrapper */
|
||||
#wrapper {
|
||||
float:left;
|
||||
line-height:140%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Sub Menu */
|
||||
#submenu {
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin-left: -100%;
|
||||
}
|
||||
#submenu .section {
|
||||
border-top:1px solid #2C2523;
|
||||
}
|
||||
#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;
|
||||
}
|
||||
|
||||
|
||||
/* 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 {
|
||||
#header .title {
|
||||
font-size: 20px;
|
||||
font-weight: normal;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
|
||||
/* Table */
|
||||
table {
|
||||
border-collapse:collapse;
|
||||
border-color:#CCCCCC;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
font-size:11px;
|
||||
margin:0;
|
||||
width:100%;
|
||||
border-spacing:0px;
|
||||
h1 {
|
||||
border-bottom: 1px solid #EEEEEE;
|
||||
margin: 0px 0 30px;
|
||||
padding-bottom: 9px;
|
||||
}
|
||||
table th {
|
||||
border-right:1px solid #CCCCCC;
|
||||
color:#333333;
|
||||
font-weight:bold;
|
||||
padding:10px 10px 10px 10px;
|
||||
text-align:left;
|
||||
text-transform:uppercase;
|
||||
h5 {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
table tr.odd td {
|
||||
/*h1 small a {
|
||||
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;
|
||||
border: 0 none;
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
margin-left: 4px;
|
||||
padding: 3px 8px;
|
||||
position: relative;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
}
|
||||
top: -7px;
|
||||
}*/
|
||||
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
img {
|
||||
border:none;
|
||||
}
|
||||
|
||||
|
||||
/*Forms*/
|
||||
form {
|
||||
margin:0;
|
||||
padding:0
|
||||
}
|
||||
label {
|
||||
/*clear:both;*/
|
||||
display:block;
|
||||
padding:5px 0;
|
||||
}
|
||||
input[type="text"], input[type="email"], input[type="password"], input[type="number"], textarea, select {
|
||||
background:none repeat scroll 0 0 #F7F7F7;
|
||||
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"] {
|
||||
height:17px;
|
||||
}
|
||||
textarea {
|
||||
height: 150px;
|
||||
}
|
||||
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));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Left Menu */
|
||||
.leftmenu ul {
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.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));
|
||||
.leftmenu ul ul {
|
||||
display: none;
|
||||
margin-left: 35px;
|
||||
margin-top: -1px;
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
||||
}
|
||||
.button .icon {
|
||||
height: 16px;
|
||||
text-indent:20px;
|
||||
padding-top: 1px;
|
||||
.leftmenu ul li {
|
||||
display: block;
|
||||
text-transform:none;
|
||||
white-space:nowrap;
|
||||
width: 100%;
|
||||
}
|
||||
.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 {
|
||||
width: 40px !important;
|
||||
}
|
||||
|
||||
.small-form input {
|
||||
width: 40px !important;
|
||||
}
|
||||
|
||||
.medium-input {
|
||||
width: 200px !important;
|
||||
}
|
||||
.default-input {
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
.errorlist {
|
||||
color:#DA3939;
|
||||
font-size:9px;
|
||||
font-style:italic;
|
||||
height:13px;
|
||||
.leftmenu ul li a {
|
||||
border-style: none solid solid;
|
||||
border-width: 0 1px 1px;
|
||||
border-color: #dddddd;
|
||||
color: #666666;
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
background-color: #ffffff;
|
||||
padding: 0;
|
||||
}
|
||||
.leftmenu ul li:first-child a {
|
||||
border-top: 1px solid #DDDDDD;
|
||||
}
|
||||
|
||||
.leftmenu ul li a span.ico {
|
||||
display: inline-block;
|
||||
background: #f9f9f9;
|
||||
padding: 8px 10px 6px;
|
||||
margin: 0 5px 0 0;
|
||||
border-right: 1px solid #dddddd;
|
||||
}
|
||||
.leftmenu ul li a, .leftmenu ul li a span.ico {
|
||||
-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;
|
||||
}
|
||||
.leftmenu ul li a:hover {
|
||||
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 {
|
||||
width: 37px !important;
|
||||
}
|
||||
.leftmenu.lefticon ul ul {
|
||||
position: absolute;
|
||||
z-index: 20;
|
||||
margin-top: -34px;
|
||||
}
|
||||
.leftmenu.lefticon > ul > li > a > span.text {
|
||||
display: none;
|
||||
}
|
||||
.leftmenu.lefticon ul ul > li > a {
|
||||
min-width: 200px !important;
|
||||
}
|
||||
.leftmenu.lefticon span.text {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
/** Navigation icons (mapping to glyphicons-halflings) **/
|
||||
.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;
|
||||
}
|
||||
|
||||
/** Utils **/
|
||||
.nopadding {
|
||||
padding: 0;
|
||||
}
|
||||
.alert form {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/** Forms **/
|
||||
.errorlist{
|
||||
margin: 0;
|
||||
}
|
||||
.errorlist li {
|
||||
list-style: none outside none;
|
||||
}
|
||||
form .required label:after {
|
||||
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 {
|
||||
font-size:9px;
|
||||
display: block;
|
||||
color: #556652;
|
||||
}
|
||||
/* Fieldsets */
|
||||
fieldset {
|
||||
width: 0px;
|
||||
padding: 0 60px 0 20px;
|
||||
textarea {
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
ul {
|
||||
list-style:none outside none;
|
||||
-moz-padding-start:0px;
|
||||
margin:0;
|
||||
/** Responsive **/
|
||||
@media (max-width: 767px) {
|
||||
body {
|
||||
padding: 0;
|
||||
}
|
||||
ol {
|
||||
-moz-padding-start:20px;
|
||||
margin:0;
|
||||
padding-left:20px;
|
||||
.row-fluid .leftmenu {
|
||||
float: left;
|
||||
}
|
||||
ul.results {
|
||||
list-style:square outside none;
|
||||
-moz-padding-start:0px;
|
||||
margin-left: 20px;
|
||||
padding:0;
|
||||
#content {
|
||||
margin: 0 5px 0 45px;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
}
|
1040
openslides/static/styles/bootstrap-responsive.css
vendored
Normal file
1040
openslides/static/styles/bootstrap-responsive.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5624
openslides/static/styles/bootstrap.css
vendored
Normal file
5624
openslides/static/styles/bootstrap.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@ -9,8 +9,6 @@ body.drag {
|
||||
.draggable a.tabledrag-handle {
|
||||
cursor: move;
|
||||
float: left; /* LTR */
|
||||
height: 1.7em;
|
||||
margin: -0.4em 0 -0.4em -0.5em; /* LTR */
|
||||
padding-right: 0.5em ; /* LTR */
|
||||
text-decoration: none;
|
||||
}
|
||||
|
@ -7,86 +7,122 @@
|
||||
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<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>
|
||||
<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" />
|
||||
<script type="text/javascript" src="{% static 'javascript/jquery.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'javascript/utils.js' %}"></script>
|
||||
<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
|
||||
|
||||
<!-- styles -->
|
||||
<link href="{% static 'styles/bootstrap.css' %}" type="text/css" rel="stylesheet">
|
||||
<link href="{% static 'styles/bootstrap-responsive.css' %}" type="text/css" rel="stylesheet">
|
||||
<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 %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navbar -->
|
||||
<div class="container-fluid nopadding">
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<div id="header">
|
||||
<a href="/" title="{% trans 'Home' %}"><div id="logo"><img src="{% static 'images/logo.png' %}"></div></a>
|
||||
<div id="header_title">{% get_config 'event_name' %}</div>
|
||||
<div id="header_subtitle">{% get_config 'event_description' %}</div>
|
||||
<div id="header_userprofile">
|
||||
<ul>
|
||||
<a href="/" class="logo" title="{% trans 'Home' %}"><img src="{% static 'img/logo.png' %}"></a>
|
||||
<!--<a class="title" href="#">{% get_config 'event_name' %}</a>-->
|
||||
<div class="btn-group pull-right">
|
||||
{% if user.is_authenticated %}
|
||||
<li>|<a href="{% url user_logout %}">{% trans "Logout" %}</a></li>
|
||||
<a href="#" data-toggle="dropdown" class="btn btn-small dropdown-toggle">
|
||||
<i class="icon-user"></i> {{ user.username }}
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
{% url user_settings as url_usersettings %}
|
||||
<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>
|
||||
<li>{% trans "Welcome" %}, <strong>{{ user.username }}</strong></li>
|
||||
{% else %}
|
||||
<li><a href="{% url user_login %}">{% trans "Login" %}</a></li>
|
||||
{% endif %}
|
||||
<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-->
|
||||
|
||||
<div id="mainmenu">
|
||||
|
||||
<!--
|
||||
{% 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="selected"{% endif %}>
|
||||
<a href="{{ tab.url }}">{{ tab.title }}</a>
|
||||
<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 %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="content">
|
||||
<!-- Content -->
|
||||
<div id="content" class="span10">
|
||||
<div class="row-fluid">
|
||||
<div class="span12">
|
||||
<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>
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</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 class="alert {% if message.tags %}alert-{{ message.tags }}{% endif %}">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
{{ message|safe }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<script>
|
||||
$("div.notification").click(function () {
|
||||
$(this).slideUp("fast");
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
<div id="footer">
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<footer>
|
||||
<small>
|
||||
© Copyright 2012 | Powered by <a href="http://openslides.org" target="_blank">OpenSlides</a>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end wrapper -->
|
||||
</footer>
|
||||
</div><!--/content-->
|
||||
|
||||
<div id="submenu">
|
||||
<div class="section">
|
||||
{% block submenu %}
|
||||
</div><!--/row-->
|
||||
</div><!--/container-fluid-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- 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 %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -16,9 +16,10 @@ from django.template.loader_tags import BlockNode, ExtendsNode
|
||||
|
||||
|
||||
class Tab(object):
|
||||
def __init__(self, title='', url='', permission='', selected=False):
|
||||
def __init__(self, title='', app='', url='', permission='', selected=False):
|
||||
self.selected = False
|
||||
self.title = title
|
||||
self.app = app
|
||||
self.permission = permission
|
||||
self.selected = selected
|
||||
self.url = url
|
||||
|
@ -46,8 +46,8 @@ def gen_confirm_form(request, message, url):
|
||||
%s
|
||||
<form action="%s" method="post">
|
||||
<input type="hidden" value="%s" name="csrfmiddlewaretoken">
|
||||
<input type="submit" value="%s">
|
||||
<input type="button" value="%s">
|
||||
<button type="submit" class="btn">%s</button>
|
||||
<button class="btn">%s</button>
|
||||
</form>
|
||||
"""
|
||||
% (message, url, csrf(request)['csrf_token'], _("Yes"), _("No")))
|
||||
|
@ -127,7 +127,7 @@ class QuestionMixin(object):
|
||||
|
||||
def confirm_form(self):
|
||||
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()])
|
||||
messages.warning(self.request,
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user