From 945af900ee539fc270e82e906c6d961c51e4913d Mon Sep 17 00:00:00 2001 From: Kevin Chabowski Date: Fri, 30 Aug 2013 23:46:47 +0200 Subject: Added Joblist --- jobs.go | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 jobs.go (limited to 'jobs.go') diff --git a/jobs.go b/jobs.go new file mode 100644 index 0000000..d4787fa --- /dev/null +++ b/jobs.go @@ -0,0 +1,81 @@ +package main + +import ( + "github.com/gorilla/sessions" + "kch42.de/gostuff/mailremind/model" + "net/http" +) + +type jobTpldata struct { + ID, Subject, Excerpt, Next string +} + +func jobToTpldata(job model.Job, user model.User) *jobTpldata { + excerpt := string(job.Content()) + if len(excerpt) > 100 { + excerpt = string([]rune(excerpt)[0:100]) + " (...)" + } + + return &jobTpldata{ + ID: job.ID().String(), + Subject: job.Subject(), + Excerpt: excerpt, + Next: job.Next().In(user.Location()).Format("2006-Jan-02 15:04:05"), + } +} + +type jobsTpldata struct { + Error, Success string + Jobs []*jobTpldata + Fatal bool +} + +func jobs(user model.User, sess *sessions.Session, req *http.Request) interface{} { + if user == nil { + return &jobsTpldata{Error: "You need to be logged in to do that.", Fatal: true} + } + + outdata := new(jobsTpldata) + + if req.Method == "POST" { + if err := req.ParseForm(); err != nil { + outdata.Error = "Could not understand form data." + goto listjobs + } + + if req.FormValue("Delconfirm") != "yes" { + goto listjobs + } + + for _, _id := range req.Form["Jobs"] { + id, err := db.ParseDBID(_id) + if err != nil { + outdata.Error = "Not all jobs could be deleted." + continue + } + + job, err := user.JobByID(id) + if err != nil { + outdata.Error = "Not all jobs could be deleted." + continue + } + + if job.Delete() != nil { + outdata.Error = "Not all jobs could be deleted." + continue + } + + outdata.Success = "Jobs deleted." + } + } + +listjobs: + jobs := user.Jobs() + outdata.Jobs = make([]*jobTpldata, len(jobs)) + + for i, job := range jobs { + outdata.Jobs[i] = jobToTpldata(job, user) + } + + return outdata +} -- cgit v1.2.3-70-g09d2