package finder import ( "net/http" "personalwebsite/apps" "personalwebsite/wde" "personalwebsite/webfilesystem" "strings" "github.com/gin-gonic/gin" ) type FinderApplication struct { fs *webfilesystem.WebFileSystem manifest apps.ApplicationManifest } func NewFinderApplication(webFs *webfilesystem.WebFileSystem) *FinderApplication { return &FinderApplication{ fs: webFs, manifest: apps.ApplicationManifest{ AppId: "finder", WindowName: "TODO DELETE", //TODO DELETE }, } } func (f *FinderApplication) GetManifest() apps.ApplicationManifest { return f.manifest } func (f *FinderApplication) GetId() string { return f.manifest.AppId } func (f *FinderApplication) Render(isMobile bool) gin.H { return gin.H{} } func (f *FinderApplication) RenderContextMenu(context string, data string) gin.H { islands := [][]wde.ContexMenuRow{} //FIXME switch context { case "FileTileView": islands = [][]wde.ContexMenuRow{ { { Label: "Get Info", Action: strings.Join([]string{"getInfo"}[:], ","), }, }, { { Label: "New Directory", Action: strings.Join([]string{"newDir"}[:], ","), }, }, } case "directory": islands = [][]wde.ContexMenuRow{ { { Label: "Test", Action: strings.Join([]string{""}[:], ","), }, { Label: "Delete", Action: strings.Join([]string{""}[:], ","), }, }, { { Label: "Get Info", Action: strings.Join([]string{""}[:], ","), }, }, } default: islands = [][]wde.ContexMenuRow{ { { Label: "temp Menu 1", Action: strings.Join([]string{""}[:], ","), }, { Label: "temp Menu 2", Action: strings.Join([]string{""}[:], ","), }, { Label: "temp Menu 3", Action: strings.Join([]string{""}[:], ","), }, { Label: "temp Menu 4", Action: strings.Join([]string{""}[:], ","), }, }, } } islands = append(islands, []wde.ContexMenuRow{ { Label: "Delete File", Action: strings.Join([]string{"deleteFile"}[:], ";"), }, }) return gin.H{ "Islands": islands, } } func (f *FinderApplication) Routes(routes *gin.RouterGroup) { routes.GET("render", func(ctx *gin.Context) { isMobileParam := ctx.Query("isMobile") isMobile := isMobileParam == "true" admin := true if isMobile { ctx.HTML(http.StatusOK, "finder/mobile-app.tmpl", f.Render(isMobile)) return } if admin { ctx.HTML(http.StatusOK, "finder/admin-app.tmpl", f.Render(isMobile)) return } ctx.HTML(http.StatusOK, "finder/app.tmpl", f.Render(isMobile)) }) routes.GET("renderMobileDesktop", func(ctx *gin.Context) { ctx.HTML(http.StatusOK, "finder/mobile-desktop.tmpl", gin.H{}) }) routes.GET("renderDesktop", func(ctx *gin.Context) { path := ctx.Query("path") if path == "" { ctx.JSON(http.StatusBadRequest, "no path provided") return } ctx.HTML(http.StatusOK, "finder/desktop.tmpl", gin.H{}) }) routes.GET("contextMenu", func(ctx *gin.Context) { context := ctx.Query("context") data := ctx.Query("data") ginH := f.RenderContextMenu(context, data) ctx.HTML(http.StatusOK, "wde-widgets/context-menu.tmpl", ginH) }) }