Ver código fonte

file naming.

master
Patrick Peng Sun 8 anos atrás
pai
commit
d0fa7200c7
3 arquivos alterados com 207 adições e 42 exclusões
  1. +0
    -40
      editMeeting.go
  2. +206
    -0
      spaEditMeeting.go
  3. +1
    -2
      spaEditProfile.go

+ 0
- 40
editMeeting.go Ver arquivo

@@ -1,40 +0,0 @@
package main

import (
"fmt"
"html/template"
"io/ioutil"
"log"
"net/http"
)

func spaEditMeetingHandler(w http.ResponseWriter, r *http.Request) {
//fmt.Fprintf(w, "ok meeting handled")
e, err := crmGetEntity("Meeting", "595d064a6e372fc1f")
log.Println(err)
meeting, ok := e.(crmdMeeting)
log.Println(ok)
spaEditMeetingPopulateMeetingInfo(w, meeting)
}

func spaEditMeetingPopulateMeetingInfo(w http.ResponseWriter, meeting crmdMeeting) {
tTest := template.New("spaEditMeeting")
str, err := ioutil.ReadFile("spa/editmeeting.html")
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Formating information not available.")
return
}
tTest, err = tTest.Parse(string(str))
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Formating instruction invalid")
return
}
err = tTest.Execute(w, meeting)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Monkey runs into our computer room...")
log.Println("ERROR: Template execution on spa/Edit, failed \n" + err.Error())
}
}

+ 206
- 0
spaEditMeeting.go Ver arquivo

@@ -0,0 +1,206 @@
package main

import (
"fmt"
"html/template"
"io"
"io/ioutil"
"log"
"net/http"
"net/url"
"os"
"strings"
"time"
)

func spaEditMeetingHandler(w http.ResponseWriter, r *http.Request) {
lead, found := getLeadFromRequest(r)
if !found {
response403Handler(w)
// w.WriteHeader(http.StatusUnauthorized)
// fmt.Fprintf(w, "User not found ")
return
}

meeting, found := getMeetingFromRequest(r)

switch r.Method {
case "GET":
if !found {
//empty meeting
meeting.showEdit(w)
return
}
if lead.ID != meeting.ParentID { //is the meeting belongs to this user?
response403Handler(w)
return
}
//editing existing meeting
meeting.showEdit(w)
case "POST":
if found && (lead.ID != meeting.ParentID) { //is the meeting belongs to this user?
response403Handler(w)
return
}
meeting.saveFromWeb(w, r)
default:
w.WriteHeader(http.StatusUnauthorized)
fmt.Fprintf(w, "Unsupported Method %s", r.Method)
}

// e, err := crmGetEntity("Meeting", "595d064a6e372fc1f")
// log.Println(err)
// meeting, ok := e.(crmdMeeting)
// log.Println(ok)
// spaEditMeetingPopulateMeetingInfo(w, meeting)
}

func (m crmdMeeting) showEdit(w http.ResponseWriter) {
tTest := template.New("spaEditMeeting")
str, err := ioutil.ReadFile("spa/editmeeting.html")
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Formating information not available.")
return
}
tTest, err = tTest.Parse(string(str))
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Formating instruction invalid")
return
}
err = tTest.Execute(w, m)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(w, "Monkey runs into our computer room...")
log.Println("ERROR: Template execution on spa/Edit, failed \n" + err.Error())
}
}

func getMeetingFromRequest(r *http.Request) (meeting crmdMeeting, found bool) {
q, err := url.ParseQuery(r.URL.RawQuery)
if err != nil {
return
}

id, ok := q["mid"] //meetingid
if !ok {
return
}
meeting, err = crmGetMeeting(id[0])

if err != nil {
found = false
log.Printf("WARNING: cannot find meeting with id [%s]", id[0])
return
}
found = true
return
}

func (m crmdMeeting) saveFromWeb(w http.ResponseWriter, r *http.Request) {

meeting := crmdMeeting{}
err := r.ParseMultipartForm(32 << 20)
if err != nil {
response400Handler(w)
return
}

//if !checkCSRF(r.Form["csrf"])
//csrf, ook := r.Form["csrf"]
ok := meeting.validateFormInput(r.Form)
if !ok {
meeting.showEdit(w)
return
}

//check to see if there is file, cover picture
meeting.validateFormFile(r)

meeting.ID = m.ID
updatedMeeting, err := meeting.save()
if err == nil {
updatedMeeting.showEdit(w)
return
}

response500Handler(w)
}

func (m *crmdMeeting) validateFormInput(form url.Values) bool {

val, ok := form["meetingname"]
if ok {
m.Name = val[0]
} else {
m.addSpaErr("活动主题/标题不能为空")
}

val, ok = form["description"]
if ok {
m.Description = val[0]
} else {
m.addSpaErr("清添加描述活动本身")
}

startdate, sok := form["startdate"]
starthour, hok := form["starthour"]
duration, rok := form["duration"]
if sok && hok && rok {
m.buildStartDate(startdate[0], starthour[0])
m.buildDuration(duration[0])
} else {
m.addSpaErr("活动日期,开始时间,持续时间 不能为空")
}

val, ok = form["venue"]
if ok {
m.Venue = val[0]
} else {
m.addSpaErr("请添加活动地点/集合地点")
}

return !m.hasError()
}

func (m *crmdMeeting) validateFormFile(r *http.Request) (ok bool) {
file, _, err := r.FormFile("cover")
if err == nil {
defer file.Close()
f, err := ioutil.TempFile(os.TempDir(), "wechat_hitxy_spa_edit_meeting")
if err == nil {
defer f.Close()
io.Copy(f, file)
attch, err := crmCreateAttachment(f.Name())
if err == nil {
m.CoverID = attch.ID
os.Remove(f.Name())
return true
}
}
}
return false
}

func (m *crmdMeeting) buildStartDate(date, hour string) {
layout := "2 January, 2006 15:04"
value := strings.TrimSpace(date) + " " + strings.TrimSpace(hour)
t, err := time.Parse(layout, value)
if err != nil {
m.addSpaErr("开始日期,时间,无法识别")
return
}
m.DateStart = t.Format(getCrmTimeLayout())
log.Println(m.DateStart)
}

func (m *crmdMeeting) buildDuration(duration string) {
var hour, minute int
cnt, err := fmt.Sscanf(duration, "%d:%d", &hour, &minute)
if cnt != 2 && err != nil {
m.addSpaErr("持续时间不正确")
return
}
m.Duration = (hour * 3600) + (minute * 60)
}

spaEdit.go → spaEditProfile.go Ver arquivo

@@ -73,8 +73,7 @@ func spaEditProfilePopulateLeadInfo(w http.ResponseWriter, lead crmdLead) {
func spaEditProfileSaveLead(w http.ResponseWriter, r *http.Request) {
original, found := getLeadFromRequest(r)
if !found {
w.WriteHeader(http.StatusUnauthorized)
fmt.Fprintf(w, "You are not authorized to change data...")
response403Handler(w)
log.Println("ERROR: trying to spa/edit lead, but not found")
return
}

Carregando…
Cancelar
Salvar