|
4 | 4 | "encoding/json" |
5 | 5 | "fmt" |
6 | 6 | "net/http" |
| 7 | + "net/url" |
7 | 8 | "sort" |
8 | 9 | "strconv" |
9 | 10 | "strings" |
@@ -573,6 +574,7 @@ func (h *WebHandler) AppEditForm(w http.ResponseWriter, r *http.Request, render |
573 | 574 | render(w, r, http.StatusNotFound, "error.html", map[string]interface{}{"Message": "app not found"}) |
574 | 575 | return |
575 | 576 | } |
| 577 | + oldServerID := app.ServerID |
576 | 578 | if err := r.ParseForm(); err != nil { |
577 | 579 | servers, _ := h.serverRepo.List() |
578 | 580 | render(w, r, http.StatusBadRequest, "apps_add.html", map[string]interface{}{ |
@@ -655,6 +657,28 @@ func (h *WebHandler) AppEditForm(w http.ResponseWriter, r *http.Request, render |
655 | 657 | return |
656 | 658 | } |
657 | 659 |
|
| 660 | + var flashMsg string |
| 661 | + if oldServerID != 0 && oldServerID != serverID { |
| 662 | + oldServerName := fmt.Sprintf("#%d", oldServerID) |
| 663 | + newServerName := fmt.Sprintf("#%d", serverID) |
| 664 | + if servers, err := h.serverRepo.List(); err == nil { |
| 665 | + for _, s := range servers { |
| 666 | + if s.ID == oldServerID { |
| 667 | + oldServerName = s.Name |
| 668 | + } |
| 669 | + if s.ID == serverID { |
| 670 | + newServerName = s.Name |
| 671 | + } |
| 672 | + } |
| 673 | + } |
| 674 | + h.service.DeleteRoutes(app.ID) |
| 675 | + go h.service.CleanupFromServer(id, oldServerID) |
| 676 | + flashMsg = url.QueryEscape(fmt.Sprintf( |
| 677 | + "App moved from %s to %s. Containers stopped on %s, but app folder remains — check and delete manually if no longer needed.", |
| 678 | + oldServerName, newServerName, oldServerName, |
| 679 | + )) |
| 680 | + } |
| 681 | + |
658 | 682 | saveFormSecrets(r, h.service, id) |
659 | 683 | saveFormFiles(r, h.service, id) |
660 | 684 |
|
@@ -704,7 +728,11 @@ func (h *WebHandler) AppEditForm(w http.ResponseWriter, r *http.Request, render |
704 | 728 |
|
705 | 729 | go h.service.Redeploy(id, removedDomains...) |
706 | 730 |
|
707 | | - http.Redirect(w, r, "/apps/"+strconv.FormatInt(id, 10), http.StatusSeeOther) |
| 731 | + redirectURL := "/apps/" + strconv.FormatInt(id, 10) |
| 732 | + if flashMsg != "" { |
| 733 | + redirectURL += "?flash=" + flashMsg |
| 734 | + } |
| 735 | + http.Redirect(w, r, redirectURL, http.StatusSeeOther) |
708 | 736 | } |
709 | 737 |
|
710 | 738 | func (h *WebHandler) AppDetailPage(w http.ResponseWriter, r *http.Request, render RenderFunc) { |
@@ -759,6 +787,7 @@ func (h *WebHandler) AppDetailPage(w http.ResponseWriter, r *http.Request, rende |
759 | 787 | "Files": files, |
760 | 788 | "Routes": routes, |
761 | 789 | "Domains": domains, |
| 790 | + "Flash": r.URL.Query().Get("flash"), |
762 | 791 | "DomainCount": len(domains), |
763 | 792 | "ExtraDomainCount": len(domains) - 1, |
764 | 793 | }) |
|
0 commit comments