ソースを参照

auto height meeting editing with textarea

master
Patrick Peng Sun 9年前
コミット
b5adad4754
9個のファイルの変更62行の追加19行の削除
  1. +1
    -1
      crmMeeting_test.go
  2. +11
    -0
      crmdMeeting.go
  3. +0
    -10
      editEvent.go
  4. +40
    -0
      editMeeting.go
  5. +2
    -2
      livecast.go
  6. +2
    -2
      main.go
  7. +3
    -1
      spa/assets/js/spa.js
  8. +2
    -2
      spa/editmeeting.html
  9. +1
    -1
      spa/pinegrow.json

+ 1
- 1
crmMeeting_test.go ファイルの表示

AssertEqual(t, newMeeting.Status, "Planned", "meeting status is planned") AssertEqual(t, newMeeting.Status, "Planned", "meeting status is planned")


AssertEqual(t, newMeeting.ParentName, "", "parentName not expected to be updated") AssertEqual(t, newMeeting.ParentName, "", "parentName not expected to be updated")
entity, err := crmFindEntityByID("Meeting", newMeeting.ID)
entity, err := crmGetEntity("Meeting", newMeeting.ID)
AssertEqual(t, err, nil, "re read saved meeting should be ok") AssertEqual(t, err, nil, "re read saved meeting should be ok")
anotherRead, ok := entity.(crmdMeeting) anotherRead, ok := entity.(crmdMeeting)
AssertEqual(t, ok, true, "reading entity shold be crmdMeeting") AssertEqual(t, ok, true, "reading entity shold be crmdMeeting")

+ 11
- 0
crmdMeeting.go ファイルの表示

//cover //cover
CoverID string `json:"coverId,omitempty"` CoverID string `json:"coverId,omitempty"`
CoverName string `json:"coverName,omitempty"` CoverName string `json:"coverName,omitempty"`

//for web spa operation
spaErrMsg string
} }


func (m crmdMeeting) save() (newMeeting crmdMeeting, err error) { func (m crmdMeeting) save() (newMeeting crmdMeeting, err error) {
} }
return return
} }

func (m *crmdMeeting) setSpaErr(e string) {
m.spaErrMsg = e
}

func (m crmdMeeting) ErrorMessage() string {
return m.spaErrMsg
}

+ 0
- 10
editEvent.go ファイルの表示

package main

import (
"fmt"
"net/http"
)

func editMeetingHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "ok meeting handled")
}

+ 40
- 0
editMeeting.go ファイルの表示

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())
}
}

+ 2
- 2
livecast.go ファイルの表示

Description string `json:"description,omitempty"` Description string `json:"description,omitempty"`
} }


func liveCastHandler(w http.ResponseWriter, r *http.Request) {
func spaLiveCastHandler(w http.ResponseWriter, r *http.Request) {
castID := "" castID := ""
q, err := url.ParseQuery(r.URL.RawQuery) q, err := url.ParseQuery(r.URL.RawQuery)
if err == nil { if err == nil {
} }


//castID = "5967812b87eb10564" //castID = "5967812b87eb10564"
entity, err := crmFindEntityByID("Livecast", castID)
entity, err := crmGetEntity("Livecast", castID)
if err != nil || entity == nil { if err != nil || entity == nil {
response404Handler(w) response404Handler(w)
return return

+ 2
- 2
main.go ファイルの表示

http.HandleFunc("/crmpixel.png", crmpixel) //tracking pixel. http.HandleFunc("/crmpixel.png", crmpixel) //tracking pixel.
http.HandleFunc("/crmcache", crmcache) http.HandleFunc("/crmcache", crmcache)
http.HandleFunc("/spa/editprofile", spaEditProfile) http.HandleFunc("/spa/editprofile", spaEditProfile)
http.HandleFunc("/spa/livecast", liveCastHandler)
http.HandleFunc("/spa/editmeeting", editMeetingHandler)
http.HandleFunc("/spa/livecast", spaLiveCastHandler)
http.HandleFunc("/spa/editmeeting", spaEditMeetingHandler)
http.ListenAndServe(":65500", nil) http.ListenAndServe(":65500", nil)
} }



+ 3
- 1
spa/assets/js/spa.js ファイルの表示

} }


$(document).ready(function() { $(document).ready(function() {
console.log("ready");
$('.datepicker').pickadate({ $('.datepicker').pickadate({
format: 'mm/dd/yyyy', format: 'mm/dd/yyyy',
selectMonths: true, // Creates a dropdown to control month selectMonths: true, // Creates a dropdown to control month
$('#modalerr').modal('open'); $('#modalerr').modal('open');
} }
$("textarea").height( $("textarea")[0].scrollHeight );
console.log("spa ready");
}); });


$("form").submit(function(event){ $("form").submit(function(event){

spa/newevent.html → spa/editmeeting.html ファイルの表示

<div class="row"> <div class="row">
<div class="input-field col s12"> <div class="input-field col s12">
<i class="mdi-action-loyalty small prefix"></i> <i class="mdi-action-loyalty small prefix"></i>
<input name="meetingname" id="meetingname" type="text" class="validate">
<input name="meetingname" id="meetingname" type="text" class="validate" value="{{.Name}}">
<label for="meetingname"> 活动主题/标题 (30字以内) </label> <label for="meetingname"> 活动主题/标题 (30字以内) </label>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="input-field col s12"> <div class="input-field col s12">
<i class="mdi-action-list small prefix"></i> <i class="mdi-action-list small prefix"></i>
<textarea id="description" name="description" class="materialize-textarea"></textarea>
<textarea id="description" name="description" class="materialize-textarea">{{.Description}}</textarea>
<label for="description"> <label for="description">
活动描述 200字左右 活动描述 200字左右
</label> </label>

+ 1
- 1
spa/pinegrow.json ファイルの表示

{"files":{"edit.html":{"frameworks":["spa","pg.insight.events","pg.code-validator","pg.asset.manager","pg.project.items","mat0.97.5","pg.html","pg.components"],"last_page_width":896},"404.html":{"frameworks":["spa","pg.insight.events","pg.code-validator","pg.asset.manager","pg.project.items","mat0.97.5","pg.html","pg.components"],"last_page_width":1024},"livecast.html":{"frameworks":["spa","pg.insight.events","pg.code-validator","pg.project.items","pg.asset.manager","mat0.97.5","pg.html","pg.components"],"last_page_width":1024},"newEvents.html":{"frameworks":["spa","pg.insight.events","pg.code-validator","pg.project.items","pg.asset.manager","mat0.97.5","pg.html","pg.components"],"last_page_width":1024},"newevent.html":{"frameworks":["spa","pg.insight.events","pg.asset.manager","pg.code-validator","pg.project.items","mat0.97.5","pg.html","pg.components"],"last_page_width":1024}},"breakpoints":["28.875em","33.875em","35.875em","38.875em","40.125em","46.75em","360px","390px","420px","450px","480px","510px","540px","570px","601px","630px","660px","690px","720px","750px","780px","810px","840px","870px","900px","930px","960px","993px","1200px"],"frameworks":["spa","pg.insight.events","pg.asset.manager","pg.code-validator","pg.project.items","mat0.97.5","pg.html","pg.components"],"template_framework_id":"materialize"}
{"files":{"edit.html":{"frameworks":["spa","pg.insight.events","pg.code-validator","pg.asset.manager","pg.project.items","mat0.97.5","pg.html","pg.components"],"last_page_width":896},"404.html":{"frameworks":["spa","pg.insight.events","pg.code-validator","pg.asset.manager","pg.project.items","mat0.97.5","pg.html","pg.components"],"last_page_width":1024},"livecast.html":{"frameworks":["spa","pg.insight.events","pg.code-validator","pg.project.items","pg.asset.manager","mat0.97.5","pg.html","pg.components"],"last_page_width":1024},"newEvents.html":{"frameworks":["spa","pg.insight.events","pg.code-validator","pg.project.items","pg.asset.manager","mat0.97.5","pg.html","pg.components"],"last_page_width":1024},"newevent.html":{"frameworks":["spa","pg.insight.events","pg.asset.manager","pg.code-validator","pg.project.items","mat0.97.5","pg.html","pg.components"],"last_page_width":1024},"editmeeting.html":{"frameworks":["spa","pg.insight.events","pg.asset.manager","pg.code-validator","pg.project.items","mat0.97.5","pg.html","pg.components"],"last_page_width":1024}},"breakpoints":["28.875em","33.875em","35.875em","38.875em","40.125em","46.75em","360px","390px","420px","450px","480px","510px","540px","570px","601px","630px","660px","690px","720px","750px","780px","810px","840px","870px","900px","930px","960px","993px","1200px"],"frameworks":["spa","pg.insight.events","pg.asset.manager","pg.code-validator","pg.project.items","mat0.97.5","pg.html","pg.components"],"template_framework_id":"materialize"}

読み込み中…
キャンセル
保存