@@ -12,46 +12,44 @@ import (
1212
1313//ShowIndexPage shows index page and message list inside it
1414func ShowIndexPage (c * gin.Context ) {
15- messages , _ := store .GetAllMessages ()
1615 isLoggedIn , _ := c .Get ("is_logged_in" )
1716 //fresh index page according to the values
1817 render (c , gin.H {
1918 "is_logged_in" : isLoggedIn ,
20- "title" : "Welcome to Micro Message!" ,
21- "payload" : messages }, "index.html" )
19+ "title" : "Welcome to Micro Message!" }, "index.html" )
2220}
2321
2422//ShowCreatePage shows create message page
2523func ShowCreatePage (c * gin.Context ) {
26- isLoggedIn , _ := c .Get ("is_logged_in" )
24+ isLoggedIn , _ := c .Get ("is_logged_in" )
2725 render (c , gin.H {
28- "is_logged_in" : isLoggedIn ,
29- "title" : "Create Message" }, "create-message.html" )
26+ "is_logged_in" : isLoggedIn ,
27+ "title" : "Create Message" }, "create-message.html" )
3028}
3129
3230//GetMessages shows list of messages and
3331func GetMessages (c * gin.Context ) {
34- isLoggedIn , _ := c .Get ("is_logged_in" )
32+ isLoggedIn , _ := c .Get ("is_logged_in" )
3533 if messages , err := store .GetAllMessages (); err == nil {
3634 render (c , gin.H {
37- "is_logged_in" : isLoggedIn ,
38- "title" : "Message List" ,
39- "payload" : messages }, "messages.html" )
35+ "is_logged_in" : isLoggedIn ,
36+ "title" : "Message List" ,
37+ "payload" : messages }, "messages.html" )
4038 } else {
4139 c .AbortWithStatus (http .StatusNotFound )
4240 }
4341}
4442
4543//GetMessage get message based on message id
4644func GetMessage (c * gin.Context ) {
47- isLoggedIn , _ := c .Get ("is_logged_in" )
45+ isLoggedIn , _ := c .Get ("is_logged_in" )
4846 //convert parameter value from string to integer
4947 if messageId , err := strconv .Atoi (c .Param ("messageid" )); err == nil {
5048 if message , err := store .GetMessageByID (messageId ); err == nil {
5149 render (c , gin.H {
52- "is_logged_in" : isLoggedIn ,
53- "id" : message .ID ,
54- "payload" : message }, "message.html" )
50+ "is_logged_in" : isLoggedIn ,
51+ "id" : message .ID ,
52+ "payload" : message }, "message.html" )
5553 } else {
5654 //if message not found
5755 c .AbortWithError (http .StatusNotFound , err )
@@ -63,14 +61,15 @@ func GetMessage(c *gin.Context) {
6361
6462//CreateMessage ceates a new message
6563func CreateMessage (c * gin.Context ) {
66- isLoggedIn , _ := c .Get ("is_logged_in" )
67- // Obtain the POSTed content values
64+ isLoggedIn , _ := c .Get ("is_logged_in" )
65+ // Obtain the POSTed title, content values
66+ title := c .PostForm ("title" )
6867 content := c .PostForm ("content" )
69- if id , err := store .CreateMessage (content ); err == nil {
68+ if id , err := store .CreateMessage (title , content ); err == nil || id != 0 {
7069 render (c , gin.H {
71- "is_logged_in" : isLoggedIn ,
72- "title" : "Submission Successful" ,
73- "id" : id }, "submission.html" )
70+ "is_logged_in" : isLoggedIn ,
71+ "title" : "Submission Successful" ,
72+ "id" : id }, "submission.html" )
7473 } else {
7574 c .AbortWithError (http .StatusInternalServerError , errors .New ("Failed to create message" ))
7675 }
@@ -81,7 +80,7 @@ func DeleteMessage(c *gin.Context) {
8180 if messageId , err := strconv .Atoi (c .Param ("messageid" )); err == nil {
8281 if err := store .DeleteMessage (messageId ); err == nil {
8382 render (c , gin.H {
84- "title" : "Successfully deleted message" }, "delete-successful.html" )
83+ "title" : "Successfully deleted message" }, "delete-successful.html" )
8584 } else {
8685 c .AbortWithError (http .StatusNoContent , fmt .Errorf ("Not find corresponding message based in id %d" , messageId ))
8786 }
@@ -94,10 +93,16 @@ func DeleteMessage(c *gin.Context) {
9493// If the header doesn't specify this, HTML is rendered, provided that
9594// the template name is present
9695func render (c * gin.Context , data gin.H , templateName string ) {
96+ loggedInInterface , _ := c .Get ("is_logged_in" )
97+ data ["is_logged_in" ] = loggedInInterface .(bool )
98+
9799 switch c .Request .Header .Get ("Accept" ) {
98100 case "application/json" :
99101 // Respond with JSON
100102 c .JSON (http .StatusOK , data ["payload" ])
103+ if data ["id" ] != "" {
104+ c .JSON (http .StatusOK , data ["id" ])
105+ }
101106 case "application/xml" :
102107 // Respond with XML
103108 c .XML (http .StatusOK , data ["payload" ])
0 commit comments