- Tabellarische Ansichten für Aufgaben, Benutzer geändert

- Dashboard angepasst und tabellarische Ansicht eingeführt
- Standards Sortierung nach Bereichen und Aufgaben inkl. Standard-Link
- Public-Base angepasst
- Schriften in der Custom.css angepasst
This commit is contained in:
holger.trampe 2019-12-09 11:49:55 +01:00
parent e3fe1732a3
commit 910c6bd017
13 changed files with 399 additions and 155 deletions

View File

@ -14,29 +14,96 @@
</div>
<hr>
<div class="row">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<div class="col-12">
<ul class="nav nav-tabs" id="area_tabs" role="tablist">
{% for area in areas %}
<li class="nav-item">
<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Home</a>
<a class="nav-link" id="{{area.id}}" data-toggle="tab" href="#t_{{area.id}}" role="tab" aria-controls="t_{{area.id}}" aria-selected="false">{{area.name}}</a>
</li>
{% endfor %}
<li class="nav-item">
<a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Profile</a>
</li>
<li class="nav-item">
<a class="nav-link" id="contact-tab" data-toggle="tab" href="#contact" role="tab" aria-controls="contact" aria-selected="false">Contact</a>
</li>
<a class="nav-link" id="userown" data-toggle="tab" href="#t_userown" role="tab" aria-controls="t_userown" aria-selected="false">Eigene Standards</a>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
<div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">...</div>
</div>
</div>
{% endblock content %}
<div class="col">
<div class="tab-content" id="area_contents">
{% for area in areas %}
<div class="tab-pane fade" id="t_{{area.id}}" role="tabpanel" aria-labelledby="{{area.id}}">
{% for task in tasks %}
{% if task.area == area %}
<h4 class="mt-4 mb-4">{{task.name}}</h4>
<table class="table">
<thead>
<tr>
<th scope="col">Titel</th>
<th scope="col">Erstellt am</th>
<th scope="col">Geändert von</th>
<th scope="col">Geändert am</th>
<th scope="col">Öffentlichkeitsstatus</th>
<th scope="col">&nbsp;</th>
</tr>
</thead>
{% for standard in standards_of_agency %}
{% if standard.task == task %}
<tr>
<td><a href="{% url 'standard-single' standard.pk %}">{{standard.name}}</a></td>
<td>{{standard.created_standard_date}}</td>
<td>{{standard.last_modified_by.first_name}} {{standard.last_modified_by.last_name}}</td>
<td>{{standard.last_modified_on}}</td>
<td>{{standard.public|yesno:"Öffentlich,Nicht öffentlich"}}</td>
<td>
{% if standard.created_standard_by == request.user or perms.users.standards_management %}
<a href="{% url 'standard-update' standard.pk %}" class="btn"><i class="fas fa-cog"></i></a>
{% endif %}
</td>
</tr>
{% endif %}
{% endfor %}
</table>
<hr>
{% endif %}
{% endfor %}
</div>
{% endfor %}
<div class="tab-pane fade" id="t_userown" role="tabpanel" aria-labelledby="userown">
<h4 class="mt-4 mb-4">Ihre Standards</h4>
<table class="table">
<thead>
<tr>
<th scope="col">Titel</th>
<th scope="col">Erstellt am</th>
<th scope="col">Geändert von</th>
<th scope="col">Geändert am</th>
<th scope="col">Öffentlichkeitsstatus</th>
<th scope="col">&nbsp;</th>
</tr>
</thead>
{% for standard in standards_of_user %}
<tr>
<td><a href="{% url 'standard-single' standard.pk %}">{{standard.name}}</a></td>
<td>{{standard.created_standard_date}}</td>
<td>{{standard.last_modified_by.first_name}} {{standard.last_modified_by.last_name}}</td>
<td>{{standard.last_modified_on}}</td>
<td>{{standard.public|yesno:"Öffentlich,Nicht öffentlich"}}</td>
<td><a href="{% url 'standard-update' standard.pk %}" class="btn"><i class="fas fa-cog"></i></a></td>
</tr>
{% endfor %}
</table>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#area_tabs li:first-child a').tab('show');
})
$('#area_tabs a').on('click', function (e) {
e.preventDefault()
$(this).tab('show')
});
</script>
{% endblock content %}

View File

@ -20,8 +20,11 @@ class StandardsManagement(LoginRequiredMixin, ListView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# # Get all Users of the Same Agency as logged user
areas = Areas.objects.filter(agency__pk=self.request.user.profile.agency.pk)
standards_of_user = Standards.objects.filter(agency__pk=self.request.user.profile.agency.pk, created_standard_by=self.request.user.pk)
standards_of_agency = Standards.objects.filter(agency__pk=self.request.user.profile.agency.pk)
context.update({'active_link' : 'standards', 'standards_of_agency' : standards_of_agency})
tasks = Tasks.objects.filter(agency__pk=self.request.user.profile.agency.pk)
context.update({'active_link' : 'standards', 'tasks': tasks, 'standards_of_agency' : standards_of_agency, 'areas' : areas, 'standards_of_user' : standards_of_user})
return context

View File

@ -13,59 +13,40 @@
</div>
<hr>
<div class="row">
{% for item in tasks_of_agency %}
<!-- Area Chart -->
<div class="col-xl-4 mb-4">
<div class="card shadow">
<!-- Card Header - Dropdown -->
<div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">{{item.name }}</h6>
<div class="dropdown no-arrow">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
<div class="dropdown-header">Aufgabeninfo</div>
<a class="dropdown-item" href="{% url 'tasks-manage' item.pk %}">Bearbeiten</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item text-danger" href="{% url 'tasks-delete' item.pk %}" >Löschen</a>
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Bereich</th>
<th scope="col">Erstellt von</th>
<th scope="col">Erstellt am</th>
<th scope="col">&nbsp;</th>
</tr>
</thead>
{% for item in tasks_of_agency %}
<tr>
<td><a href="{% url 'standard-task' item.pk %}">{{item.name }}</a></td>
<td>{{ item.area.name }}</td>
<td>{{ item.created_area_by.first_name }} {{ item.created_area_by.last_name }}</td>
<td>{{ item.created_area_date }}</td>
<td>{{standard.created_standard_by.first_name}} {{standard.created_standard_by.last_name}}</td>
<td>
<div class="dropdown no-arrow">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
<div class="dropdown-header">Aufgabeninfo</div>
<a class="dropdown-item" href="{% url 'tasks-manage' item.pk %}">Bearbeiten</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item text-danger" href="{% url 'tasks-delete' item.pk %}" >Löschen</a>
</div>
</div>
</div>
</div>
</div>
<!-- Card Body -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<h6><b>Name</b></h6>
<p>
{{ item.name }}
</p>
<h6><b>Erstellt von</b></h6>
<p>
{{ item.created_area_by.first_name }} {{ item.created_area_by.last_name }}
</p>
</div>
<div class="col-md-6">
<h6><b>Übergeordneter Bereich</b></h6>
<p>
{{ item.area.name }}
</p>
<h6><b>Erstellt am</b></h6>
<p>
{{ item.created_area_date }}
</p>
</div>
<div class="col-md-6">
<h6><b>Beschreibung</b></h6>
<p>
{{ item.desc }}
</p>
</div>
</div>
</div>
</div>
</div>
{% endfor%}
</td>
</tr>
{% endfor %}
</table>
</div>
{% endblock content %}

View File

@ -0,0 +1,71 @@
{% extends "users/base.html" %}
{% block content %}
<div class="content-section col-12">
<h3>Aufgabenverwaltung</h3>
<hr>
<p>
Aufgaben unterteilen die Agentur in verschiedene Aufgabenbereiche innerhalb der Bereiche.
</p>
<div class="row">
<div class="content-section col-4">
<a class="btn btn-primary" href="{% url 'tasks-addtask' %}">Neue Aufgabe anlegen</a>
</div>
</div>
<hr>
<div class="row">
{% for item in tasks_of_agency %}
<!-- Area Chart -->
<div class="col-xl-4 mb-4">
<div class="card shadow">
<!-- Card Header - Dropdown -->
<div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">{{item.name }}</h6>
<div class="dropdown no-arrow">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
<div class="dropdown-header">Aufgabeninfo</div>
<a class="dropdown-item" href="{% url 'tasks-manage' item.pk %}">Bearbeiten</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item text-danger" href="{% url 'tasks-delete' item.pk %}" >Löschen</a>
</div>
</div>
</div>
<!-- Card Body -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<h6><b>Name</b></h6>
<p>
{{ item.name }}
</p>
<h6><b>Erstellt von</b></h6>
<p>
{{ item.created_area_by.first_name }} {{ item.created_area_by.last_name }}
</p>
</div>
<div class="col-md-6">
<h6><b>Übergeordneter Bereich</b></h6>
<p>
{{ item.area.name }}
</p>
<h6><b>Erstellt am</b></h6>
<p>
{{ item.created_area_date }}
</p>
</div>
<div class="col-md-6">
<h6><b>Beschreibung</b></h6>
<p>
{{ item.desc }}
</p>
</div>
</div>
</div>
</div>
</div>
{% endfor%}
</div>
{% endblock content %}

View File

@ -1,4 +1,33 @@
html h1, h2, h3, h4, h5, h6, b, a {
html {
font-family: 'Roboto' !important;
font-size: 1em !important;
}
html h6 {
font-family: 'Roboto' !important;
font-size: 1.0em;
}
html h5 {
font-family: 'Roboto' !important;
font-size: 1.1em;
}
html h4 {
font-family: 'Roboto' !important;
font-size: 1.3em;
}
html h3 {
font-family: 'Roboto' !important;
font-size: 1.5em;
}
html h2 {
font-family: 'Roboto' !important;
font-size: 1.7em;
}
html h1 {
font-family: 'Roboto' !important;
font-size: 2em;
}

View File

@ -1,6 +1,6 @@
{% load static %}
<!DOCTYPE html>
<html lang="en">
<html lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
@ -26,7 +26,7 @@
<link href="{% static 'users/css/theme.css' %}" rel="stylesheet">
<link href="{% static 'users/css/custom.css' %}" rel="stylesheet">
<!--<link href="{%static 'users/css/bootstrap.min.css' %}" rel="stylesheet">-->
<link href='http://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Roboto&display=swap' rel='stylesheet' type='text/css'>
</head>
@ -155,7 +155,9 @@
<div class="text-center d-none d-md-inline">
<button class="rounded-circle border-0" id="sidebarToggle"></button>
</div>
<div style="bottom: 10px; position: absolute;" class="sidebar-heading">
Version 0.5.0
</div>
</ul>
<!-- End of Sidebar -->
@ -250,23 +252,27 @@
<!-- End of Main Content -->
<!-- Footer -->
<!--
<footer class="sticky-footer bg-white">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>Copyright &copy; digitale-agentur.com für <b>{{ user.profile.agency.name }}</b></span>
</div>
</div>
</footer>
-->
<!-- End of Footer -->
<br /><br />
</div>
<!-- End of Content Wrapper -->
</div>
<!-- End of Page Wrapper -->
<!--
<footer class="sticky-footer bg-white" style="width: 86.2%;position: absolute;
bottom: 0; margin-top: 80px; padding-top: 20px; padding-bottom: 20px;
">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>Copyright &copy; digitale-agentur.com für <b>{{ user.profile.agency.name }}</b></span><br /><small>Version 0.0.5</small>
</div>
</div>
</footer>
-->
<!-- Scroll to Top Button-->
<a class="scroll-to-top rounded" href="#page-top">
<i class="fas fa-angle-up"></i>
@ -281,7 +287,7 @@
<!-- Custom scripts for all pages-->
<script src="{%static 'users/js/sb-admin-2.min.js' %}"></script>
<!-- CUSTOM FONT -->
<link href="{% static 'users/css/custom.css' %}" rel="stylesheet">
<!-- Page level plugins -->

View File

@ -9,18 +9,37 @@
<h5>Neueste Standards</h5>
<div class="row">
<hr>
<div class="col mt-2">
{% for item in standards_of_agency %}
as
{% endfor %}
<div class="col-9 mt-2">
<table class="table">
<thead>
<tr>
<th scope="col">Titel</th>
<th scope="col">Erstellt am</th>
<th scope="col">Erstellt von</th>
<th scope="col">Geändert am</th>
<th scope="col">Geändert von</th>
</tr>
</thead>
{% for standard in standards_of_agency %}
<tr>
<td><a href="{% url 'standard-single' standard.pk %}">{{standard.name}}</a></td>
<td>{{standard.created_standard_date}}</td>
<td>{{standard.created_standard_by.first_name}} {{standard.created_standard_by.last_name}}</td>
<td><small>{{standard.last_modified_on}}</small></td>
<td><small>{{standard.last_modified_by.first_name}} {{standard.last_modified_by.last_name}}</small></td>
</tr>
{% endfor %}
</table>
</div>
<div class="col text-right" >
<img class="img-profile" width="50%" src="{{ request.user.profile.agency.agencypic.url }}">
<div class="col-3 text-right" >
<img class="img-profile" width="100%" src="{{ request.user.profile.agency.agencypic.url }}">
</div>
</div>
</div>
{% endblock content %}

View File

@ -3,8 +3,8 @@
<!-- CRISPY -->
{% load crispy_forms_tags %}
{% block content %}
<legend class="border-bottom mb-4">
<h2>Erfolgreich abgemeldet!</h2>
<legend class="border-bottom mb-3">
<h4>Erfolgreich abgemeldet!</h4>
</legend>
<small>
<a href="{% url 'login' %}">Wieder zurück?</a>

View File

@ -1,6 +1,6 @@
{% load static %}
<!DOCTYPE html>
<html lang="en">
<html lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
@ -24,6 +24,7 @@
<link href="{%static 'users/css/sb-admin-2.css' %}" rel="stylesheet">
<link href="{% static 'users/css/theme.css' %}" rel="stylesheet">
<!--<link href="{%static 'users/css/bootstrap.min.css' %}" rel="stylesheet">-->
<link href='http://fonts.googleapis.com/css?family=Roboto&display=swap' rel='stylesheet' type='text/css'>
</head>
@ -94,7 +95,8 @@
<!-- Custom scripts for all pages-->
<script src="{%static 'users/js/sb-admin-2.min.js' %}"></script>
<!-- CUSTOM FONT -->
<link href="{% static 'users/css/custom.css' %}" rel="stylesheet">
<!-- Page level plugins -->
<!--<script src="vendor/chart.js/Chart.min.js"></script>-->

View File

@ -1,3 +1,7 @@
{% extends "users/base.html" %}
{% block content %}
<div class="content-section col-12">
@ -6,22 +10,34 @@
<p>
Erstellen Sie weitere Mitarbeiter ihrer Agentur. Die neuen Benutzer erhalten eine E-Mail mit einem entsprechenden Link, um ihr Passwort zu generieren.
</p>
<div class="row">
<div class="row mb-3">
<div class="content-section col-4">
<a class="btn btn-primary" href="{% url 'users-adduser' %} ">Neuer Benutzer</a>
<a class="btn btn-primary" href="{% url 'users-adduser' %} ">Neuer Benutzer</a>
</div>
</div>
<hr>
<div class="row">
{% for item in users_of_agency %}
<!-- Area Chart -->
<div class="col-xl-4 mb-4">
<div class="card shadow">
<!-- Card Header - Dropdown -->
<div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">{{item.first_name }} {{ item.last_name }} ({{item.username}})</h6>
<div class="dropdown no-arrow">
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">E-Mail</th>
<th scope="col">Agenturfunktion</th>
<th scope="col">Tätigkeit</th>
<th scope="col">Telefon</th>
<th scope="col">Mobil</th>
<th scope="col">&nbsp;</th>
</tr>
</thead>
{% for item in users_of_agency %}
<tr>
<td><a href="{% url 'orga-single' item.pk %}">{{item.first_name }} {{ item.last_name }}</a></td>
<td>{{ item.email }}</td>
<td>{{ item.profile.get_func_display }}</td>
<td>{{ item.profile.compfunc }}</td>
<td>{{ item.profile.phoneland }}</td>
<td>{{ item.profile.phonemobile }}</td>
<td>
<div class="dropdown no-arrow">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a>
@ -39,45 +55,11 @@
{% endif %}
</div>
</div>
</div>
<!-- Card Body -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<h6><b>Name</b></h6>
<p>
{{ item.first_name }} {{ item.last_name }}
</p>
<h6><b>E-Mail</b></h6>
<p>
{{ item.email }}
</p>
<h6><b>Agenturfunktion</b></h6>
<p>
{{ item.profile.get_func_display }}
</p>
</div>
<div class="col-md-6">
<h6><b>Tätigkeit</b></h6>
<p>
{{ item.profile.compfunc }}
</p>
<h6><b>Festznetz</b></h6>
<p>
{{ item.profile.phoneland }}
</p>
<h6><b>Mobil</b></h6>
<p>
{{ item.profile.phonemobile }}
</p>
</div>
</div>
</div>
</div>
</div>
{% endfor%}
</div>
</td>
</tr>
{% endfor %}
</table>
</div>
</div>
{% endblock content %}

View File

@ -0,0 +1,84 @@
{% extends "users/base.html" %}
{% block content %}
<div class="content-section col-12">
<h3>Benutzerverwaltung</h3>
<hr>
<p>
Erstellen Sie weitere Mitarbeiter ihrer Agentur. Die neuen Benutzer erhalten eine E-Mail mit einem entsprechenden Link, um ihr Passwort zu generieren.
</p>
<div class="row">
<div class="content-section col-4">
<a class="btn btn-primary" href="{% url 'users-adduser' %} ">Neuer Benutzer</a>
</div>
</div>
<hr>
<div class="row">
{% for item in users_of_agency %}
<!-- Area Chart -->
<div class="col-xl-4 mb-4">
<div class="card shadow">
<!-- Card Header - Dropdown -->
<div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">{{item.first_name }} {{ item.last_name }} ({{item.username}})</h6>
<div class="dropdown no-arrow">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400"></i>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
<div class="dropdown-header">Benutzerdaten</div>
<a class="dropdown-item" href="{% url 'users-update' item.profile.pk %}">Bearbeiten</a>
<a class="dropdown-item" href="{% url 'users-prio' item.pk %}">Priorisierung</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{% url 'users-perm-update' item.profile.pk %}">Rechte</a>
<!--<div class="dropdown-header"></div>-->
<a class="dropdown-item" href="#">Zuständigkeitenn</a>
{% if item != request.user %}
<div class="dropdown-divider"></div>
<a class="dropdown-item text-danger" href="{% url 'users-delete' item.pk %}" >Löschen</a>
{% endif %}
</div>
</div>
</div>
<!-- Card Body -->
<div class="card-body">
<div class="row">
<div class="col-md-6">
<h6><b>Name</b></h6>
<p>
{{ item.first_name }} {{ item.last_name }}
</p>
<h6><b>E-Mail</b></h6>
<p>
{{ item.email }}
</p>
<h6><b>Agenturfunktion</b></h6>
<p>
{{ item.profile.get_func_display }}
</p>
</div>
<div class="col-md-6">
<h6><b>Tätigkeit</b></h6>
<p>
{{ item.profile.compfunc }}
</p>
<h6><b>Festznetz</b></h6>
<p>
{{ item.profile.phoneland }}
</p>
<h6><b>Mobil</b></h6>
<p>
{{ item.profile.phonemobile }}
</p>
</div>
</div>
</div>
</div>
</div>
{% endfor%}
</div>
</div>
{% endblock content %}