本文整理匯總了Golang中github.com/mongolar/mongolar/wrapper.Wrapper.Serve方法的典型用法代碼示例。如果您正苦於以下問題:Golang Wrapper.Serve方法的具體用法?Golang Wrapper.Serve怎麽用?Golang Wrapper.Serve使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/mongolar/mongolar/wrapper.Wrapper
的用法示例。
在下文中一共展示了Wrapper.Serve方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: DeleteElement
// Controller to delete an element and all references to the element
func DeleteElement(w *wrapper.Wrapper) {
id := w.APIParams[0]
err := elements.Delete(id, w)
if err != nil {
errmessage := fmt.Sprintf("Unable to delete %s : %s", id, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to delete element.", "Error", w)
}
err = elements.WrapperDeleteAllChild(id, w)
if err != nil {
errmessage := fmt.Sprintf("Unable to delete reference to element %s : %s", id, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to delete all references to your element.", "Error", w)
}
err = elements.SlugDeleteAllChild(id, w)
if err != nil {
errmessage := fmt.Sprintf("Unable to delete reference to element %s : %s", id, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to delete all references to your element.", "Error", w)
}
err = paths.DeleteAllChild(id, w)
if err != nil {
errmessage := fmt.Sprintf("Unable to delete reference to %s : %s", id, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to delete all references to your element.", "Error", w)
}
dynamic := services.Dynamic{
Target: id,
Template: "default.html",
}
services.SetDynamic(dynamic, w)
services.AddMessage("Successfully deleted element", "Success", w)
w.Serve()
return
}
示例2: ContentTypeEditorSubmit
// Controller to handle submission for content type change form.
func ContentTypeEditorSubmit(w *wrapper.Wrapper) {
elementid := w.APIParams[0]
e, err := elements.LoadContentElement(elementid, w)
if err != nil {
errmessage := fmt.Sprintf("Element not found to edit for %s by %s", elementid, w.Request.Host)
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("This element was not found", "Error", w)
w.Serve()
return
}
type Post struct {
Type string `json:"type"`
}
var post Post
err = form.GetValidFormData(w, &post)
if err != nil {
return
}
e.ContentValues.Type = post.Type
err = e.Save(w)
if err != nil {
errmessage := fmt.Sprintf("Element not saved %s by %s", w.APIParams[0], w.Request.Host)
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to save element.", "Error", w)
} else {
services.AddMessage("Element content type saved.", "Success", w)
}
w.Serve()
return
}
示例3: ContentEditorSubmit
// Controller to handle content editor submission.
func ContentEditorSubmit(w *wrapper.Wrapper) {
elementid := w.APIParams[0]
e, err := elements.LoadContentElement(elementid, w)
post := make(map[string]interface{})
err = form.GetValidFormData(w, &post)
if err != nil {
return
}
e.ContentValues.Content = post
delete(e.ContentValues.Content, "mongolartype")
delete(e.ContentValues.Content, "mongolarid")
delete(e.ContentValues.Content, "form_id")
err = e.Save(w)
if err != nil {
errmessage := fmt.Sprintf("Element not saved %s by %s", w.APIParams[0], w.Request.Host)
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to save element.", "Error", w)
w.Serve()
return
}
services.AddMessage("Element content saved.", "Success", w)
dynamic := services.Dynamic{
Target: elementid,
Id: elementid,
Controller: "admin/element",
Template: "admin/element.html",
}
services.SetDynamic(dynamic, w)
w.Serve()
return
}
示例4: PathEditorForm
// Controller to present path editor form
func PathEditorForm(w *wrapper.Wrapper) {
pathid := w.APIParams[0]
f := form.NewForm()
f.AddText("title", "text").AddLabel("Title").Required()
f.AddText("path", "text").AddLabel("Path").Required()
f.AddText("template", "text").AddLabel("Template").Required()
f.AddCheckBox("wildcard").AddLabel("Wildcard")
ops := []map[string]string{
map[string]string{"name": "published", "value": "published"},
map[string]string{"name": "unpublished", "value": "unpublished"},
}
f.AddRadio("status", ops).AddLabel("Status").Required()
f.AddText("id", "text").Hidden()
var p paths.Path
var err error
if pathid != "new" {
p, err = paths.LoadPath(pathid, w)
if err != nil {
errmessage := fmt.Sprintf("Could not retrieve path %s by %s: %s", w.APIParams[0], w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Error retrieving path information.", "Error", w)
w.Serve()
return
}
} else {
p = paths.NewPath()
}
f.FormData = p
f.Register(w)
w.SetTemplate("admin/form.html")
w.SetPayload("form", f)
w.Serve()
return
}
示例5: AddExistingChild
// Controller for adding existing element to wrapper element or path.
func AddExistingChild(w *wrapper.Wrapper) {
var parenttype string
if len(w.APIParams) > 1 {
parenttype = w.APIParams[0]
} else {
http.Error(w.Writer, "Forbidden", 403)
w.Serve()
return
}
if w.Request.Method != "POST" {
AddExistingChildForm(w)
return
}
w.Shift()
switch parenttype {
case "wrapper":
AddExistingWrapperSubmit(w)
return
case "paths":
AddExistingPathSubmit(w)
return
default:
http.Error(w.Writer, "Forbidden", 403)
w.Serve()
}
return
}
示例6: AdminPaths
// Controller to list all paths
func AdminPaths(w *wrapper.Wrapper) {
pl, err := paths.PathList(w)
if err != nil {
services.AddMessage("There was an error retrieving your site paths", "Error", w)
errmessage := fmt.Sprintf("Error getting path list: %s", err.Error())
w.SiteConfig.Logger.Error(errmessage)
} else {
w.SetContent(pl)
}
w.Serve()
}
示例7: PathEditor
// Controller for editing paths
func PathEditor(w *wrapper.Wrapper) {
if len(w.APIParams) == 0 {
http.Error(w.Writer, "Forbidden", 403)
w.Serve()
return
}
if w.Request.Method != "POST" {
PathEditorForm(w)
return
}
PathEditorSubmit(w)
return
}
示例8: EditContentType
func EditContentType(w *wrapper.Wrapper) {
if len(w.APIParams) < 1 {
http.Error(w.Writer, "Forbidden", 403)
w.Serve()
return
}
if w.Request.Method != "POST" {
EditContentTypeForm(w)
return
}
EditContentTypeSubmit(w)
return
}
示例9: ContentEditorForm
// Controller for content editing form.
func ContentEditorForm(w *wrapper.Wrapper) {
elementid := w.APIParams[0]
e, err := elements.LoadContentElement(elementid, w)
if err != nil {
errmessage := fmt.Sprintf("Element not found to edit for %s by %s", elementid, w.Request.Host)
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("This element was not found", "Error", w)
w.Serve()
return
}
if e.ContentValues.Type == "" {
errmessage := fmt.Sprintf("No content type set for %s", elementid, w.Request.Host)
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("This element doesn't have a content type set. Set a content type to edit values.", "Error", w)
w.Serve()
return
}
var ct contenttypes.ContentType
ct, err = contenttypes.LoadContentTypeT(e.ContentValues.Type, w)
if err != nil {
errmessage := fmt.Sprintf("Unable to find content type %s : %s", e.ContentValues.Type, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to find content type.", "Error", w)
w.Serve()
return
}
f := form.NewForm()
f.Fields = ct.Form
f.FormData = e.ContentValues.Content
f.Register(w)
w.SetTemplate("admin/form.html")
w.SetPayload("form", f)
w.Serve()
return
}
示例10: EditContentTypeForm
func EditContentTypeForm(w *wrapper.Wrapper) {
f := form.NewForm()
ct := new(ContentType)
if w.APIParams[0] != "new" {
c := w.DbSession.DB("").C("content_types")
i := bson.M{"_id": bson.ObjectIdHex(w.APIParams[0])}
err := c.Find(i).One(ct)
if err != nil {
errmessage := fmt.Sprintf("Content Type not found %s : %s", w.APIParams[0], err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Your content types was not found ", "Error", w)
w.Serve()
return
}
var elements []map[string]interface{}
for _, field := range ct.Form {
element := make(map[string]interface{})
element["type"] = field.Type
element["key"] = field.Key
element["label"] = field.TemplateOptions.Label
element["placeholder"] = field.TemplateOptions.Placeholder
element["rows"] = field.TemplateOptions.Rows
element["cols"] = field.TemplateOptions.Cols
element["options"] = ""
for _, opt := range field.TemplateOptions.Options {
element["options"] = fmt.Sprintf("%s%s|%s\n", element["options"], opt["name"], opt["value"])
}
elements = append(elements, element)
}
data := make(map[string]interface{})
data["elements"] = elements
data["content_type"] = ct.Type
f.FormData = data
} else {
data := make(map[string]interface{})
fd := make([]map[string]string, 0)
data["elements"] = fd
data["content_type"] = ""
f.FormData = data
}
f.AddText("content_type", "text").AddLabel("Content Type Name")
f.AddRepeatSection("elements", "Add another field", FieldFormGroup())
f.Register(w)
w.SetPayload("form", f)
w.SetTemplate("admin/form.html")
w.Serve()
return
}
示例11: GetAllContentTypes
func GetAllContentTypes(w *wrapper.Wrapper) {
c := w.DbSession.DB("").C("content_types")
var cts []ContentType
err := c.Find(nil).Limit(50).Iter().All(&cts)
if err != nil {
errmessage := fmt.Sprintf("Unable to retrieve a list of content types.")
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to retrieve a list of elements.", "Error", w)
w.Serve()
return
}
w.SetPayload("content_types", cts)
w.Serve()
return
}
示例12: AllElements
// Controller to list all elements
func AllElements(w *wrapper.Wrapper) {
c := w.DbSession.DB("").C("elements")
var es []elements.Element
err := c.Find(nil).Limit(50).Iter().All(&es)
if err != nil {
errmessage := fmt.Sprintf("Unable to retrieve a list of all elements: %s", err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("There was a problem retrieving the element list.", "Error", w)
w.Serve()
return
}
w.SetPayload("elements", es)
w.Serve()
return
}
示例13: GetValidFormData
func GetValidFormData(w *wrapper.Wrapper, post interface{}) error {
p := make([]byte, w.Request.ContentLength)
_, err := w.Request.Body.Read(p)
if err != nil {
errmessage := fmt.Sprintf("Error processing post values %s: %s", w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("There was an issue processing your form.", "Error", w)
w.Serve()
return errors.New("Could not marshall Post values")
}
data := make(map[string]interface{})
err = json.Unmarshal(p, &data)
if err != nil {
errmessage := fmt.Sprintf("Error processing post values %s: %s", w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("There was an issue processing your form.", "Error", w)
w.Serve()
return errors.New("Could not marshall Post values")
}
register, reg_err := GetFormRegister(data["form_id"].(string), w)
if reg_err != nil {
errmessage := fmt.Sprintf("Invalid or expired form %s: %s", w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Your form was expired, please try again.", "Error", w)
w.Serve()
return errors.New("Inalid or expired form")
}
err = json.Unmarshal(p, post)
if err != nil {
errmessage := fmt.Sprintf("Error processing post values %s: %s", w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("There was an issue processing your form.", "Error", w)
w.Serve()
return errors.New("Could not marshall Post values")
}
missing := register.ValidateRequired(data)
if len(missing) > 0 {
for _, label := range missing {
message := fmt.Sprintf("%s is required.", label)
services.AddMessage(message, "Error", w)
}
w.Serve()
return errors.New("missing fields")
}
return nil
}
示例14: GetContentType
func GetContentType(w *wrapper.Wrapper) {
c := w.DbSession.DB("").C("content_types")
i := bson.M{"_id": bson.ObjectIdHex(w.APIParams[0])}
var ct ContentType
err := c.Find(i).One(&ct)
if err != nil {
errmessage := fmt.Sprintf("Content Type not found %s : %s", w.APIParams[0], err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Your content types was not found.", "Error", w)
w.Serve()
return
}
w.SetPayload("content_type", ct)
w.Serve()
return
}
示例15: LoginUrls
func (lo *LoginMap) LoginUrls(w *wrapper.Wrapper) {
us := make(map[string]map[string]string)
oauthlogins := make(map[string]map[string]string)
w.SiteConfig.RawConfig.MarshalKey("OAuthLogins", &oauthlogins)
for k, l := range oauthlogins {
c := "http://" + w.Request.Host + "/" + w.SiteConfig.APIEndPoint + "/login/callback/" + k
login := lo.Logins[k]
login.SetConfig(l, c, lo.State)
u := login.GetUrl()
m := map[string]string{"url": u, "login_text": l["login_text"]}
us[k] = m
}
w.SetPayload("login_links", us)
w.Serve()
return
}