Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package controllers
- import (
- "fmt"
- "strconv"
- "time"
- "appengine/datastore"
- "appengine/urlfetch"
- "github.com/Zaibon/facebook"
- "github.com/Zaibon/laminerie/models"
- "github.com/astaxie/beegae"
- "github.com/russross/blackfriday"
- )
- const (
- fbAccessToken = ""
- fbId = ""
- )
- //AdminController
- type AdminController struct {
- BaseController
- }
- func (this *AdminController) NestPrepare() {
- beegae.ReadFromRequest(&this.BaseController.Controller)
- this.Layout = "layouts/admin/global.tpl"
- }
- func (this *AdminController) Dashboard() {
- }
- func (this *AdminController) ListNews() {
- c := this.AppEngineCtx
- q := datastore.NewQuery("NewsPost").Order("-Created")
- var news []models.NewsPost
- keys, err := q.GetAll(c, &news)
- if err != nil {
- flash := beegae.NewFlash()
- flash.Error("error loading news : %s", err)
- flash.Store(&this.BaseController.Controller)
- return
- }
- for i := range news {
- // news[i].Key = keys[i].Encode()
- news[i].Key = keys[i].IntID()
- if len(news[i].Content) > 150 {
- news[i].Content = news[i].Content[:150]
- }
- s := blackfriday.MarkdownCommon([]byte(news[i].Content))
- news[i].Content = string(s)
- }
- this.Data["news"] = news
- }
- func (this *AdminController) CreateNews() {
- //tell the template to include markdown js script
- this.Data["markdown"] = true
- }
- func (this *AdminController) AddNews() {
- c := this.AppEngineCtx
- news := models.NewsPost{}
- this.ParseForm(&news)
- news.Created = time.Now()
- flash := beegae.NewFlash()
- if news.Title == "" || news.Content == "" {
- flash.Error("aucun champ ne doit etre vide")
- flash.Store(&this.BaseController.Controller)
- this.Redirect("/admin/createnews", 302)
- return
- }
- if err := news.Save(c); err != nil {
- flash.Error("Erreur d'enregistrement : %s", err)
- flash.Store(&this.BaseController.Controller)
- this.Redirect("/admin/createnews", 302)
- }
- //facebook publication
- fbPub, _ := this.GetBool("fb")
- if fbPub == true {
- client := urlfetch.Client(c)
- session := facebook.Session{
- Client: client,
- }
- params := facebook.Params{
- "message": news.Content,
- "access_token": fbAccessToken,
- }
- url := fmt.Sprintf("/%s/feed", fbId)
- _, err := session.Api(url, facebook.POST, params)
- if err != nil {
- flash.Error("Erreur de publication sur facebook : %s", err)
- flash.Store(&this.BaseController.Controller)
- this.Redirect("/admin/createnews", 302)
- }
- }
- flash.Notice("News bien ajoutée")
- flash.Store(&this.BaseController.Controller)
- this.Redirect("/admin/dashboard", 302)
- }
- func (this *AdminController) EditNews() {
- //tell the template to include markdown js script
- this.Data["markdown"] = true
- c := this.AppEngineCtx
- strKey := this.Ctx.Input.Param("0")
- key, err := strconv.ParseInt(strKey, 10, 64)
- if err != nil {
- flash := beegae.NewFlash()
- flash.Error("error loading news : %s", err)
- flash.Store(&this.BaseController.Controller)
- return
- }
- news := models.NewsPost{Key: key}
- if err := news.Get(c); err != nil {
- flash := beegae.NewFlash()
- flash.Error("error loading news : %s", err)
- flash.Store(&this.BaseController.Controller)
- return
- }
- this.Data["News"] = news
- }
- func (this *AdminController) EditNewSubmit() {
- c := this.AppEngineCtx
- news := models.NewsPost{}
- this.ParseForm(&news)
- oldNews := models.NewsPost{Key: news.Key}
- oldNews.Get(c)
- news.Created = oldNews.Created
- flash := beegae.NewFlash()
- if news.Title == "" || news.Content == "" {
- flash.Error("aucun champ ne doit etre vide")
- flash.Store(&this.BaseController.Controller)
- this.Redirect("/admin/createnews", 302)
- return
- }
- if err := news.Edit(c); err != nil {
- flash.Error("Erreur d'enregistrement : %s", err)
- flash.Store(&this.BaseController.Controller)
- this.Redirect("/admin/createnews", 302)
- }
- flash.Notice("News bien editée")
- flash.Store(&this.BaseController.Controller)
- this.Redirect("/admin/dashboard", 302)
- }
- func (this *AdminController) DeleteNews() {
- c := this.AppEngineCtx
- flash := beegae.NewFlash()
- defer func() {
- flash.Store(&this.BaseController.Controller)
- this.Redirect("/admin/listnews", 302)
- }()
- strKey := this.Ctx.Input.Param("0")
- key, err := strconv.ParseInt(strKey, 10, 64)
- if err != nil {
- flash.Error("error deleting news : %s", err)
- return
- }
- news := models.NewsPost{Key: key}
- err = news.Delete(c)
- if err != nil {
- flash.Error("error deleting news : %s", err)
- } else {
- flash.Notice("news deleted")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment