// HandleUpdate handles POST or PUT /pages/1/update func HandleUpdate(context router.Context) error { // Find the page page, err := pages.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise updating the page err = authorise.Resource(context, page) if err != nil { return router.NotAuthorizedError(err) } // Update the page from params params, err := context.Params() if err != nil { return router.InternalError(err) } err = page.Update(params.Map()) if err != nil { return router.InternalError(err) } // We then find the page again, and retreive the new Url, in case it has changed during update page, err = pages.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Redirect to page url return router.Redirect(context, page.Url) }
// HandleHome serves a get request at / func HandleHome(context router.Context) error { // Setup context for template view := view.New(context) // Authorise err := authorise.Path(context) if err != nil { return router.NotAuthorizedError(err) } // If nothing exists, redirect to set up page if missingUsersAndPages() { return router.Redirect(context, "/fragmenta/setup") } page, err := pages.Find(1) if err != nil { return router.InternalError(err) } view.AddKey("page", page) view.AddKey("meta_title", page.Name) view.AddKey("meta_desc", page.Summary) view.AddKey("meta_keywords", page.Keywords) return view.Render() }
// POST pages/create func HandleCreate(context router.Context) error { // Authorise err := authorise.Path(context) if err != nil { return router.NotAuthorizedError(err) } // Setup context params, err := context.Params() if err != nil { return router.InternalError(err) } id, err := pages.Create(params.Map()) if err != nil { context.Logf("#info Failed to create page %v", params) return router.InternalError(err) } // Log creation context.Logf("#info Created page id,%d", id) // Redirect to the new page p, err := pages.Find(id) if err != nil { context.Logf("#error Error creating page,%s", err) } return router.Redirect(context, p.URLIndex()) }
// HandleShow shows pages using their ID: GET /pages/1 func HandleShow(context router.Context) error { // Find the page page, err := pages.Find(context.ParamInt("id")) if err != nil { return router.InternalError(err) } // Authorise access err = authorise.Resource(context, page) if err != nil { return router.NotAuthorizedError(err) } // Render the page return renderPage(context, page) }
// HandleUpdateShow handles GET /pages/1/update (show form to update) func HandleUpdateShow(context router.Context) error { // Find the page page, err := pages.Find(context.ParamInt("id")) if err != nil { context.Logf("#error Error finding page %s", err) return router.NotFoundError(err) } // Authorise updating page err = authorise.Resource(context, page) if err != nil { return router.NotAuthorizedError(err) } // Render the template view := view.New(context) view.AddKey("page", page) return view.Render() }
// POST /pages/1/destroy func HandleDestroy(context router.Context) error { // Set the page on the context for checking page, err := pages.Find(context.ParamInt("id")) if err != nil { return router.NotFoundError(err) } // Authorise err = authorise.Resource(context, page) if err != nil { return router.NotAuthorizedError(err) } // Destroy the page page.Destroy() // Redirect to pages root return router.Redirect(context, page.URLIndex()) }