Zaibon

Untitled

Apr 13th, 2014
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 4.31 KB | None | 0 0
  1. package controllers
  2.  
  3. import (
  4.     "fmt"
  5.     "strconv"
  6.     "time"
  7.  
  8.     "appengine/datastore"
  9.     "appengine/urlfetch"
  10.  
  11.     "github.com/Zaibon/facebook"
  12.     "github.com/Zaibon/laminerie/models"
  13.     "github.com/astaxie/beegae"
  14.     "github.com/russross/blackfriday"
  15. )
  16.  
  17. const (
  18.     fbAccessToken = ""
  19.     fbId          = ""
  20. )
  21.  
  22. //AdminController
  23. type AdminController struct {
  24.     BaseController
  25. }
  26.  
  27. func (this *AdminController) NestPrepare() {
  28.     beegae.ReadFromRequest(&this.BaseController.Controller)
  29.  
  30.     this.Layout = "layouts/admin/global.tpl"
  31. }
  32.  
  33. func (this *AdminController) Dashboard() {
  34.  
  35. }
  36.  
  37. func (this *AdminController) ListNews() {
  38.     c := this.AppEngineCtx
  39.     q := datastore.NewQuery("NewsPost").Order("-Created")
  40.     var news []models.NewsPost
  41.     keys, err := q.GetAll(c, &news)
  42.     if err != nil {
  43.         flash := beegae.NewFlash()
  44.         flash.Error("error loading news : %s", err)
  45.         flash.Store(&this.BaseController.Controller)
  46.         return
  47.     }
  48.  
  49.     for i := range news {
  50.         // news[i].Key = keys[i].Encode()
  51.         news[i].Key = keys[i].IntID()
  52.         if len(news[i].Content) > 150 {
  53.             news[i].Content = news[i].Content[:150]
  54.         }
  55.         s := blackfriday.MarkdownCommon([]byte(news[i].Content))
  56.         news[i].Content = string(s)
  57.     }
  58.     this.Data["news"] = news
  59. }
  60.  
  61. func (this *AdminController) CreateNews() {
  62.     //tell the template to include markdown js script
  63.     this.Data["markdown"] = true
  64. }
  65.  
  66. func (this *AdminController) AddNews() {
  67.     c := this.AppEngineCtx
  68.  
  69.     news := models.NewsPost{}
  70.     this.ParseForm(&news)
  71.     news.Created = time.Now()
  72.  
  73.     flash := beegae.NewFlash()
  74.     if news.Title == "" || news.Content == "" {
  75.         flash.Error("aucun champ ne doit etre vide")
  76.         flash.Store(&this.BaseController.Controller)
  77.         this.Redirect("/admin/createnews", 302)
  78.         return
  79.     }
  80.  
  81.     if err := news.Save(c); err != nil {
  82.         flash.Error("Erreur d'enregistrement : %s", err)
  83.         flash.Store(&this.BaseController.Controller)
  84.         this.Redirect("/admin/createnews", 302)
  85.     }
  86.  
  87.     //facebook publication
  88.     fbPub, _ := this.GetBool("fb")
  89.     if fbPub == true {
  90.         client := urlfetch.Client(c)
  91.  
  92.         session := facebook.Session{
  93.             Client: client,
  94.         }
  95.  
  96.         params := facebook.Params{
  97.             "message":      news.Content,
  98.             "access_token": fbAccessToken,
  99.         }
  100.         url := fmt.Sprintf("/%s/feed", fbId)
  101.         _, err := session.Api(url, facebook.POST, params)
  102.         if err != nil {
  103.             flash.Error("Erreur de publication sur facebook : %s", err)
  104.             flash.Store(&this.BaseController.Controller)
  105.             this.Redirect("/admin/createnews", 302)
  106.         }
  107.     }
  108.  
  109.     flash.Notice("News bien ajoutée")
  110.     flash.Store(&this.BaseController.Controller)
  111.     this.Redirect("/admin/dashboard", 302)
  112. }
  113.  
  114. func (this *AdminController) EditNews() {
  115.     //tell the template to include markdown js script
  116.     this.Data["markdown"] = true
  117.     c := this.AppEngineCtx
  118.  
  119.     strKey := this.Ctx.Input.Param("0")
  120.     key, err := strconv.ParseInt(strKey, 10, 64)
  121.     if err != nil {
  122.         flash := beegae.NewFlash()
  123.         flash.Error("error loading news : %s", err)
  124.         flash.Store(&this.BaseController.Controller)
  125.         return
  126.     }
  127.  
  128.     news := models.NewsPost{Key: key}
  129.     if err := news.Get(c); err != nil {
  130.         flash := beegae.NewFlash()
  131.         flash.Error("error loading news : %s", err)
  132.         flash.Store(&this.BaseController.Controller)
  133.         return
  134.     }
  135.  
  136.     this.Data["News"] = news
  137. }
  138.  
  139. func (this *AdminController) EditNewSubmit() {
  140.     c := this.AppEngineCtx
  141.  
  142.     news := models.NewsPost{}
  143.     this.ParseForm(&news)
  144.  
  145.     oldNews := models.NewsPost{Key: news.Key}
  146.     oldNews.Get(c)
  147.  
  148.     news.Created = oldNews.Created
  149.  
  150.     flash := beegae.NewFlash()
  151.     if news.Title == "" || news.Content == "" {
  152.         flash.Error("aucun champ ne doit etre vide")
  153.         flash.Store(&this.BaseController.Controller)
  154.         this.Redirect("/admin/createnews", 302)
  155.         return
  156.     }
  157.  
  158.     if err := news.Edit(c); err != nil {
  159.         flash.Error("Erreur d'enregistrement : %s", err)
  160.         flash.Store(&this.BaseController.Controller)
  161.         this.Redirect("/admin/createnews", 302)
  162.     }
  163.  
  164.     flash.Notice("News bien editée")
  165.     flash.Store(&this.BaseController.Controller)
  166.     this.Redirect("/admin/dashboard", 302)
  167. }
  168.  
  169. func (this *AdminController) DeleteNews() {
  170.     c := this.AppEngineCtx
  171.     flash := beegae.NewFlash()
  172.     defer func() {
  173.         flash.Store(&this.BaseController.Controller)
  174.         this.Redirect("/admin/listnews", 302)
  175.     }()
  176.  
  177.     strKey := this.Ctx.Input.Param("0")
  178.     key, err := strconv.ParseInt(strKey, 10, 64)
  179.     if err != nil {
  180.         flash.Error("error deleting news : %s", err)
  181.         return
  182.     }
  183.  
  184.     news := models.NewsPost{Key: key}
  185.     err = news.Delete(c)
  186.     if err != nil {
  187.         flash.Error("error deleting news : %s", err)
  188.     } else {
  189.         flash.Notice("news deleted")
  190.     }
  191.  
  192. }
Advertisement
Add Comment
Please, Sign In to add comment