//Upload renders the new presentation upload page. func Upload(c util.Context) (err error) { uploadURL, err := blobstore.UploadURL(c, "/admin/presentation/upload", nil) if err != nil { return } acts, err := activation.GetAfterTime(time.Now(), c) if err != nil { return } type actWithName struct { A *activation.Activation P *presentation.Presentation } ans := make([]actWithName, len(acts)) for i, a := range acts { pk := a.Presentation var p *presentation.Presentation p, err = presentation.GetByKey(pk, c) if err != nil { c.Errorf("Could not load presentation: %v", err) continue } ans[i] = actWithName{a, p} } util.RenderLayout("upload.html", "Nahrať prezentáciu", struct { UploadURL *url.URL Ans []actWithName }{uploadURL, ans}, c) return }
//TimeOverrideEdit handles editing of existing time overrides. //If it doesn't find id value in the path, it adds a new override. func TimeOverrideEdit(c util.Context) (err error) { var tc *timeConfig.TimeConfig if key := c.Vars["id"]; key == "" { tc = nil } else { var k *datastore.Key k, err = datastore.DecodeKey(key) if err != nil { return } tc, err = timeConfig.GetByKey(k, c) if err != nil { return } } c.Infof("%+v", tc) util.RenderLayout("timeConfigEdit.html", "Úprava výnimky", tc, c, "/static/js/editTC.js") return }
func ActivateScheduled(c util.Context) (err error) { t := time.Now() as, err := activation.GetBeforeTime(t, c) if err != nil { return } for _, a := range as { var p *presentation.Presentation p, err = presentation.GetByKey(a.Presentation, c) if err != nil { c.Errorf("Couldn't load presentation %s", a.Presentation.Encode()) continue } if a.Op == activation.Activate { p.Active = true } else { p.Active = false } err = p.Save(c) if err != nil { c.Errorf("Couldn't save presentation: %v", p.Name) continue } err = a.Delete(c) if err != nil { c.Errorf("Couldn't remove activation: %s", a.Key) continue } } return }
//Archive handles showing listing of presentations. func Archive(c util.Context) (err error) { page, err := strconv.Atoi(c.Vars["page"]) if err != nil { return } type tmplData struct { P *presentation.Presentation C int } ps, err := presentation.GetListing(page, 10, c) if err != nil { return } downloads := make([]tmplData, 0) for _, p := range ps { count, err := action.GetCountFor(action.Activated, p, c) if err != nil { c.Infof("Error when getting download count: %v", err) count = -1 } downloads = append(downloads, tmplData{p, count}) } maxPages, err := presentation.PageCount(10, c) if err != nil { return } util.RenderLayout("archive.html", "Archív prezentácií", struct { Data []tmplData Page int MaxPages int Tz *time.Location }{downloads, page, maxPages, util.Tz}, c) return }
//ShowConfig handles showing the page where user can see and edit //the central configuration for clients. func ShowConfig(c util.Context) (err error) { conf, err := config.Get(c) if err != nil { if err == datastore.Done { conf, err = mkConfig(c) if err != nil { c.Errorf("Error when creating new config: %v", err) } http.Redirect(c.W, c.R, "/admin/config", 303) err = nil return } else { return } } as, err := action.GetFor(conf, c) if err != nil { return } tcs, err := timeConfig.GetAll(c) if err != nil { return } a := prepareActions(as) util.RenderLayout("config.html", "Všeobecné nastavenia", struct { Conf *config.Config A map[string][]time.Time ZeroTime time.Time Tz *time.Location Tcs []*timeConfig.TimeConfig }{conf, a, time.Date(0001, 01, 01, 00, 00, 00, 00, utc), util.Tz, tcs}, c, "/static/js/config.js") return }
//Presentations shows listing of presentations in paginated form. func Presentations(c util.Context) (err error) { page, err := strconv.Atoi(c.R.FormValue("p")) if err != nil { return } ps, err := presentation.GetListing(page, perPage, c) if err != nil { return } type templateData struct { P presentation.Presentation D template.HTML } data := make([]templateData, len(ps), len(ps)) for _, p := range ps { data = append(data, templateData{P: *p, D: template.HTML(blackfriday.MarkdownCommon(p.Description))}) } maxPages, err := presentation.PageCount(perPage, c) if err != nil { return } c.Infof("Hostname: %v", appengine.DefaultVersionHostname(c)) util.RenderLayout("index.html", "Zoznam vysielaní", struct { Page int MaxPages int Data []templateData Domain string }{Page: page, MaxPages: maxPages, Data: data, Domain: appengine.DefaultVersionHostname(c)}, c, "/static/js/index.js") return }