Pracownia.Programowania/main.go

101 lines
2.1 KiB
Go
Raw Normal View History

2018-12-08 23:15:39 +01:00
package main
import (
"fmt"
"html/template"
"net/http"
2018-12-10 19:42:28 +01:00
2018-12-11 20:42:44 +01:00
"git.wmi.amu.edu.pl/s439508/Pracownia.Programowania/helpers"
"git.wmi.amu.edu.pl/s439508/Pracownia.Programowania/models"
2018-12-08 23:15:39 +01:00
)
2018-12-10 19:42:28 +01:00
var posts map[string]*models.Post
2018-12-08 23:15:39 +01:00
func index(w http.ResponseWriter, r *http.Request) {
2018-12-10 19:42:28 +01:00
fmt.Println(posts)
t, err := template.ParseFiles(
"views/write.html",
"views/header.html",
"views/footer.html",
2018-12-11 20:42:44 +01:00
"views/index.html",
2018-12-10 19:42:28 +01:00
)
if err != nil {
fmt.Fprintf(w, err.Error())
}
2018-12-11 20:42:44 +01:00
t.ExecuteTemplate(w, "index", posts)
2018-12-10 19:42:28 +01:00
}
func write(w http.ResponseWriter, r *http.Request) {
2018-12-08 23:15:39 +01:00
t, err := template.ParseFiles(
"views/index.html",
"views/header.html",
"views/footer.html",
2018-12-11 20:42:44 +01:00
"views/write.html",
)
if err != nil {
fmt.Fprintf(w, err.Error())
}
t.ExecuteTemplate(w, "write", nil)
}
func edit(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFiles(
"views/index.html",
"views/header.html",
"views/footer.html",
"views/write.html",
2018-12-08 23:15:39 +01:00
)
if err != nil {
fmt.Fprintf(w, err.Error())
}
2018-12-11 20:42:44 +01:00
id := r.FormValue("id")
post, found := posts[id]
if !found {
http.NotFound(w, r)
}
t.ExecuteTemplate(w, "write", post)
2018-12-08 23:15:39 +01:00
}
2018-12-10 19:42:28 +01:00
func savePost(w http.ResponseWriter, r *http.Request) {
id := r.FormValue("id")
title := r.FormValue("title")
content := r.FormValue("content")
2018-12-11 20:42:44 +01:00
var post *models.Post
if id != "" {
post = posts[id]
post.Title = title
post.Content = content
} else {
post := models.NewPost(helpers.GenerateId(), title, content)
posts[post.Id] = post
}
http.Redirect(w, r, "/", 302)
}
func deletePost(w http.ResponseWriter, r *http.Request) {
id := r.FormValue("id")
if id == "" {
http.NotFound(w, r)
}
delete(posts, id)
2018-12-10 19:42:28 +01:00
http.Redirect(w, r, "/", 302)
}
2018-12-08 23:15:39 +01:00
func main() {
2018-12-10 19:42:28 +01:00
posts = make(map[string]*models.Post, 0)
2018-12-08 23:15:39 +01:00
fmt.Println("Listening port 8080")
2018-12-10 19:42:28 +01:00
http.Handle("/bower_components/", http.StripPrefix("/bower_components/", http.FileServer(http.Dir("./bower_components/"))))
2018-12-08 23:15:39 +01:00
http.HandleFunc("/", index)
2018-12-10 19:42:28 +01:00
http.HandleFunc("/write", write)
2018-12-11 20:42:44 +01:00
http.HandleFunc("/edit", edit)
2018-12-10 19:42:28 +01:00
http.HandleFunc("/savePost", savePost)
2018-12-11 20:42:44 +01:00
http.HandleFunc("/deletePost", deletePost)
2018-12-08 23:15:39 +01:00
http.ListenAndServe(":8080", nil)
}