Merge recent UI & Postgres work into main branch #4
3 changed files with 182 additions and 53 deletions
|
|
@ -1,15 +1,82 @@
|
||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import "github.com/gofiber/fiber/v2"
|
import (
|
||||||
|
"git.readonly.ch/bouzoure/pop-camarades/helpers"
|
||||||
|
"git.readonly.ch/bouzoure/pop-camarades/models"
|
||||||
|
"github.com/gofiber/fiber/v2"
|
||||||
|
)
|
||||||
|
|
||||||
func Homepage(c *fiber.Ctx) error {
|
func Homepage(c *fiber.Ctx) error {
|
||||||
|
userid, err := helpers.GetSessionUserId(c)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
allowedSectionsMembers, err := helpers.PermissionsGetSections(
|
||||||
|
userid, "show_member",
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
allowedSectionsContacts, err := helpers.PermissionsGetSections(
|
||||||
|
userid, "show_contact",
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
db, err := helpers.GetDatabase()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var membersCount int64
|
||||||
|
var contactsCount int64
|
||||||
|
|
||||||
|
db.Find(
|
||||||
|
&models.Person{},
|
||||||
|
"is_member = ? AND section_id IN ?",
|
||||||
|
true, allowedSectionsMembers,
|
||||||
|
).Count(&membersCount)
|
||||||
|
|
||||||
|
db.Find(
|
||||||
|
&models.Person{},
|
||||||
|
"is_contact = ? AND section_id IN ?",
|
||||||
|
true, allowedSectionsContacts,
|
||||||
|
).Count(&contactsCount)
|
||||||
|
|
||||||
return c.Render("index", fiber.Map{
|
return c.Render("index", fiber.Map{
|
||||||
"PageTitle": "Accueil",
|
"PageTitle": "Accueil",
|
||||||
|
"MembersCount": membersCount,
|
||||||
|
"ContactsCount": contactsCount,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func Admin(c *fiber.Ctx) error {
|
func Admin(c *fiber.Ctx) error {
|
||||||
|
db, err := helpers.GetDatabase()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var sectionsCount int64
|
||||||
|
var listsCount int64
|
||||||
|
var fieldsCount int64
|
||||||
|
var usersCount int64
|
||||||
|
var rolesCount int64
|
||||||
|
|
||||||
|
db.Find(&models.Section{}).Count(§ionsCount)
|
||||||
|
db.Find(&models.List{}).Count(&listsCount)
|
||||||
|
db.Find(&models.Field{}).Count(&fieldsCount)
|
||||||
|
db.Find(&models.User{}).Count(&usersCount)
|
||||||
|
db.Find(&models.Role{}).Count(&rolesCount)
|
||||||
|
|
||||||
return c.Render("admin", fiber.Map{
|
return c.Render("admin", fiber.Map{
|
||||||
"PageTitle": "Administration",
|
"PageTitle": "Administration",
|
||||||
|
"SectionsCount": sectionsCount,
|
||||||
|
"ListsCount": listsCount,
|
||||||
|
"FieldsCount": fieldsCount,
|
||||||
|
"UsersCount": usersCount,
|
||||||
|
"RolesCount": rolesCount,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,47 +12,88 @@
|
||||||
<hr />
|
<hr />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row" style="max-width: 600px;">
|
<div class="row mw-900">
|
||||||
|
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a class="dashboard-tile" href="/admin/sections">
|
<a class="dashboard-tile" href="/admin/sections">
|
||||||
<div class="alert alert-primary">
|
<div class="alert alert-primary">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-12 text-center text-md-start col-md-6">
|
||||||
<i class="bi-building me-2"></i>
|
<i class="bi-building me-2"></i>
|
||||||
Gestion des sections
|
Gestion des sections
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col text-center text-md-end fs-1">
|
||||||
|
{{ SectionsCount }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a class="dashboard-tile" href="/admin/lists">
|
<a class="dashboard-tile" href="/admin/lists">
|
||||||
<div class="alert alert-primary">
|
<div class="alert alert-primary">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-12 text-center text-md-start col-md-6">
|
||||||
<i class="bi-list-check me-2"></i>
|
<i class="bi-list-check me-2"></i>
|
||||||
Gestion des listes
|
Gestion des listes
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col text-center text-md-end fs-1">
|
||||||
|
{{ ListsCount }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a class="dashboard-tile" href="/admin/fields">
|
<a class="dashboard-tile" href="/admin/fields">
|
||||||
<div class="alert alert-primary">
|
<div class="alert alert-primary">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-12 text-center text-md-start col-md-6">
|
||||||
<i class="bi-database-add me-2"></i>
|
<i class="bi-database-add me-2"></i>
|
||||||
Gestion des champs supplémentaires
|
Gestion des champs supplémentaires
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col text-center text-md-end fs-1">
|
||||||
|
{{ FieldsCount }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a class="dashboard-tile" href="/admin/users">
|
<a class="dashboard-tile" href="/admin/users">
|
||||||
<div class="alert alert-primary">
|
<div class="alert alert-primary">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-12 text-center text-md-start col-md-6">
|
||||||
<i class="bi-person-square me-2"></i>
|
<i class="bi-person-square me-2"></i>
|
||||||
Gestion des utilisateurs
|
Gestion des utilisateurs
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col text-center text-md-end fs-1">
|
||||||
|
{{ UsersCount }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a class="dashboard-tile" href="/admin/roles">
|
<a class="dashboard-tile" href="/admin/roles">
|
||||||
<div class="alert alert-primary">
|
<div class="alert alert-primary">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-12 text-center text-md-start col-md-6">
|
||||||
<i class="bi-briefcase me-2"></i>
|
<i class="bi-briefcase me-2"></i>
|
||||||
Gestion des rôles
|
Gestion des rôles
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col text-center text-md-end fs-1">
|
||||||
|
{{ RolesCount }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,21 @@
|
||||||
<hr />
|
<hr />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row" style="max-width: 600px;">
|
<div class="row mw-900">
|
||||||
{% if Globals.AllowMembersPage %}
|
{% if Globals.AllowMembersPage %}
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a class="dashboard-tile" href="/members">
|
<a class="dashboard-tile" href="/members">
|
||||||
<div class="alert alert-primary">
|
<div class="alert alert-primary">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-12 text-center text-md-start col-md-6">
|
||||||
<i class="bi-people me-2"></i>
|
<i class="bi-people me-2"></i>
|
||||||
Gestion des membres
|
Gestion des membres
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col text-center text-md-end fs-1">
|
||||||
|
{{ MembersCount }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
@ -27,8 +34,15 @@
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a class="dashboard-tile" href="/contacts">
|
<a class="dashboard-tile" href="/contacts">
|
||||||
<div class="alert alert-primary">
|
<div class="alert alert-primary">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-12 text-center text-md-start col-md-6">
|
||||||
<i class="bi-telephone me-2"></i>
|
<i class="bi-telephone me-2"></i>
|
||||||
Gestion des contacts
|
Gestion des sympathisants
|
||||||
|
</div>
|
||||||
|
<div class="col text-center text-md-end fs-1">
|
||||||
|
{{ ContactsCount }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -38,9 +52,16 @@
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a class="dashboard-tile" href="/admin">
|
<a class="dashboard-tile" href="/admin">
|
||||||
<div class="alert alert-primary">
|
<div class="alert alert-primary">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-12 text-center text-md-start col-md-6">
|
||||||
<i class="bi-gear me-2"></i>
|
<i class="bi-gear me-2"></i>
|
||||||
Administration de l'application
|
Administration de l'application
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col text-center text-md-end fs-1">
|
||||||
|
<i class="bi-arrow-right"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue