Blank root panel, asset form as a modal, and a dedicated Statuses page
- Main panel is now blank at the top level ("Select a folder or asset
from the tree") instead of showing a dashboard - browsing happens in
the tree, the panel only shows something once you click into it.
Removed the now-dead DashboardStats/Stats() machinery it depended on.
- Add/Edit Asset no longer takes over the main panel; it opens in
#assetModal instead; asset_form.html was trimmed down to just the form
(no more breadcrumb/panel wrapper) since the modal chrome provides the
title and footer buttons now. The dynamic item-type-fields and submit
listeners moved from #main-panel's delegation to the modal element's.
- Statuses split out of the General settings page into its own
/settings/statuses page and sub-nav entry, alongside General, Item
Types, and Users.
This commit is contained in:
@@ -9,43 +9,32 @@ import (
|
||||
|
||||
type settingsPageData struct {
|
||||
User *models.User
|
||||
Statuses []models.Status
|
||||
SiteName string
|
||||
AssetPrefix string
|
||||
AssetPadding string
|
||||
Error string
|
||||
}
|
||||
|
||||
func (a *App) settingsData(r *http.Request) (settingsPageData, error) {
|
||||
ctx := r.Context()
|
||||
statusList, err := a.Statuses.List(ctx)
|
||||
if err != nil {
|
||||
return settingsPageData{}, err
|
||||
}
|
||||
siteName, err := a.Settings.Get(ctx, "site_name", "inventree")
|
||||
if err != nil {
|
||||
return settingsPageData{}, err
|
||||
}
|
||||
prefix, err := a.Settings.Get(ctx, "asset_id_prefix", "IT-")
|
||||
if err != nil {
|
||||
return settingsPageData{}, err
|
||||
}
|
||||
padding, err := a.Settings.Get(ctx, "asset_id_padding", "6")
|
||||
if err != nil {
|
||||
return settingsPageData{}, err
|
||||
}
|
||||
return settingsPageData{
|
||||
User: currentUser(r), Statuses: statusList, SiteName: siteName, AssetPrefix: prefix, AssetPadding: padding,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (a *App) handleSettingsPage(w http.ResponseWriter, r *http.Request) {
|
||||
data, err := a.settingsData(r)
|
||||
ctx := r.Context()
|
||||
siteName, err := a.Settings.Get(ctx, "site_name", "inventree")
|
||||
if err != nil {
|
||||
writeErr(w, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
a.Render(w, http.StatusOK, "settings", data)
|
||||
prefix, err := a.Settings.Get(ctx, "asset_id_prefix", "IT-")
|
||||
if err != nil {
|
||||
writeErr(w, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
padding, err := a.Settings.Get(ctx, "asset_id_padding", "6")
|
||||
if err != nil {
|
||||
writeErr(w, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
a.Render(w, http.StatusOK, "settings", settingsPageData{
|
||||
User: currentUser(r), SiteName: siteName, AssetPrefix: prefix, AssetPadding: padding,
|
||||
})
|
||||
}
|
||||
|
||||
func (a *App) handleSettingsGeneral(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -62,6 +51,20 @@ func (a *App) handleSettingsGeneral(w http.ResponseWriter, r *http.Request) {
|
||||
http.Redirect(w, r, "/settings", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
type statusesPageData struct {
|
||||
User *models.User
|
||||
Statuses []models.Status
|
||||
}
|
||||
|
||||
func (a *App) handleSettingsStatusesPage(w http.ResponseWriter, r *http.Request) {
|
||||
statusList, err := a.Statuses.List(r.Context())
|
||||
if err != nil {
|
||||
writeErr(w, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
a.Render(w, http.StatusOK, "settings_statuses", statusesPageData{User: currentUser(r), Statuses: statusList})
|
||||
}
|
||||
|
||||
func (a *App) handleStatusCreate(w http.ResponseWriter, r *http.Request) {
|
||||
if err := r.ParseForm(); err != nil {
|
||||
writeErr(w, http.StatusBadRequest, err.Error())
|
||||
@@ -71,7 +74,7 @@ func (a *App) handleStatusCreate(w http.ResponseWriter, r *http.Request) {
|
||||
if err := a.Statuses.Create(r.Context(), st); err != nil {
|
||||
a.Log.Warn("create status failed", "error", err)
|
||||
}
|
||||
http.Redirect(w, r, "/settings", http.StatusSeeOther)
|
||||
http.Redirect(w, r, "/settings/statuses", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
func (a *App) handleStatusUpdate(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -94,7 +97,7 @@ func (a *App) handleStatusUpdate(w http.ResponseWriter, r *http.Request) {
|
||||
if err := a.Statuses.Update(r.Context(), st); err != nil {
|
||||
a.Log.Warn("update status failed", "error", err)
|
||||
}
|
||||
http.Redirect(w, r, "/settings", http.StatusSeeOther)
|
||||
http.Redirect(w, r, "/settings/statuses", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
func (a *App) handleStatusDelete(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -106,7 +109,7 @@ func (a *App) handleStatusDelete(w http.ResponseWriter, r *http.Request) {
|
||||
if err := a.Statuses.Delete(r.Context(), id); err != nil {
|
||||
a.Log.Warn("delete status failed", "error", err)
|
||||
}
|
||||
http.Redirect(w, r, "/settings", http.StatusSeeOther)
|
||||
http.Redirect(w, r, "/settings/statuses", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
func (a *App) handleStatusReorder(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -152,5 +155,5 @@ func (a *App) handleStatusReorder(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
}
|
||||
http.Redirect(w, r, "/settings", http.StatusSeeOther)
|
||||
http.Redirect(w, r, "/settings/statuses", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user