本文整理匯總了Golang中github.com/mongolar/mongolar/wrapper.Wrapper.SetTemplate方法的典型用法代碼示例。如果您正苦於以下問題:Golang Wrapper.SetTemplate方法的具體用法?Golang Wrapper.SetTemplate怎麽用?Golang Wrapper.SetTemplate使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/mongolar/mongolar/wrapper.Wrapper
的用法示例。
在下文中一共展示了Wrapper.SetTemplate方法的11個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: 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
}
示例2: SortPathForm
// Controller for path sort form.
func SortPathForm(w *wrapper.Wrapper) {
var parentid string
if len(w.APIParams) > 0 {
parentid = w.APIParams[0]
} else {
http.Error(w.Writer, "Forbidden", 403)
w.Serve()
return
}
p, err := paths.LoadPath(parentid, w)
if err != nil {
errmessage := fmt.Sprintf("Path not found to sort for %s by %s.", parentid, w.Request.Host)
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("This element was not found", "Error", w)
w.Serve()
return
} else {
if len(p.Elements) > 0 {
w.SetPayload("elements", p.Elements)
} else {
services.AddMessage("This has no elements assigned yet.", "Error", w)
}
w.SetTemplate("admin/element_sorter.html")
w.Serve()
return
}
}
示例3: 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
}
示例4: SlugUrlEditorForm
func SlugUrlEditorForm(w *wrapper.Wrapper) {
slugid := w.APIParams[0]
e, err := elements.LoadSlugElement(slugid, w)
if err != nil {
errmessage := fmt.Sprintf("Element not found to edit for %s by %s", slugid, w.Request.Host)
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to load slug parent", "Error", w)
w.Serve()
return
}
f := form.NewForm()
data := make(map[string]string)
for slug, id := range e.Slugs {
data[id] = slug
e := elements.NewElement()
err = elements.GetById(id, &e, w)
if err != nil {
errmessage := fmt.Sprintf("Content not found %s : %s", id, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("There was a problem loading some slug elements.", "Error", w)
w.Serve()
return
}
f.AddText(id, "text").AddLabel(e.Title).Required()
}
f.FormData = data
f.Register(w)
w.SetTemplate("admin/form.html")
w.SetPayload("form", f)
w.Serve()
return
}
示例5: 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
}
示例6: PathValues
// The controller function to retrieve elements ids from the path
func PathValues(w *wrapper.Wrapper) {
// Request is never url based so we can Never cache this request.
// TODO: move no caching into a reusable function.
w.Writer.Header().Add("Cache-Control", "no-cache, no-store, must-revalidate")
w.Writer.Header().Add("Pragma", "no-cache")
w.Writer.Header().Add("Expires", "0")
p := paths.NewPath()
u := w.Request.Header.Get("CurrentPath")
if u == "" {
http.Error(w.Writer, "Forbidden", 403)
w.Serve()
return
}
qp, err := p.PathMatch(u, "published", w)
if err != nil {
if err.Error() == "not found" {
if "/"+w.SiteConfig.FourOFour != u {
services.Redirect("/"+w.SiteConfig.FourOFour, w)
w.Serve()
return
} else {
services.AddMessage("There was a problem with the system.", "Error", w)
w.Serve()
return
}
}
}
var v []elements.Element
for _, eid := range p.Elements {
e := elements.NewElement()
err = elements.GetById(eid, &e, w)
if err != nil {
errmessage := fmt.Sprintf("Content not found %s : %s", eid, err.Error())
w.SiteConfig.Logger.Error(errmessage)
} else {
v = append(v, e)
}
}
w.SetPayload("mongolar_slug", qp)
w.SetContent(v)
w.SetTemplate(p.Template)
w.Serve()
return
}
示例7: ContentTypeEditorForm
// Controller to ddisplay form to change content type for conteent element
func ContentTypeEditorForm(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
}
cts := make([]contenttypes.ContentType, 0)
cts, err = contenttypes.AllContentTypes(w)
if err != nil {
errmessage := fmt.Sprintf("Unable to query all Content Types: %s", err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to retrieve content types.", "Error", w)
w.Serve()
return
}
opts := make([]map[string]string, 0)
for _, ct := range cts {
opt := map[string]string{
"name": ct.Type,
"value": ct.Type,
}
opts = append(opts, opt)
}
f := form.NewForm()
f.AddSelect("type", opts)
data := map[string]string{"type": e.ContentValues.Type}
f.FormData = data
f.Register(w)
w.SetTemplate("admin/form.html")
w.SetPayload("form", f)
w.Serve()
return
}
示例8: AddExistingChildForm
// Controller for adding existing element form.
func AddExistingChildForm(w *wrapper.Wrapper) {
elems, err := elements.ElementList(w)
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
}
options := make([]map[string]string, 0)
for _, element := range elems {
option := map[string]string{"name": element.Title, "value": element.MongoId.Hex(), "group": element.Controller}
options = append(options, option)
}
f := form.NewForm()
f.AddSelect("element", options).AddLabel("Element").Required()
f.Register(w)
w.SetTemplate("admin/form.html")
w.SetPayload("form", f)
w.Serve()
return
}
示例9: ElementEditor
// Controller to edit an elements properties
// TODO: break this into smaller functions to make it easier to maintain
func ElementEditor(w *wrapper.Wrapper) {
var elementid string
if len(w.APIParams) > 0 {
elementid = w.APIParams[0]
} else {
http.Error(w.Writer, "Forbidden", 403)
}
if w.Request.Method != "POST" {
f := form.NewForm()
f.AddText("title", "text").AddLabel("Title")
op := make([]map[string]string, 0)
for _, ec := range w.SiteConfig.ElementControllers {
uc := []rune(ec)
uc[0] = unicode.ToUpper(uc[0])
name := string(uc)
op = append(op, map[string]string{"name": name, "value": ec})
}
f.AddSelect("controller", op).AddLabel("Controller")
f.AddText("template", "text").AddLabel("Template")
f.AddText("dyn", "text").AddLabel("Dynamic Id")
f.AddText("classes", "text").AddLabel("Classes")
f.AddText("id", "text").Hidden()
if elementid != "new" {
e := elements.NewElement()
err := elements.GetById(elementid, &e, w)
if err != nil {
errmessage := fmt.Sprintf("Element not found to edit for %s by %s", elementid, w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("This element was not found", "Error", w)
w.Serve()
return
}
// Have to do this for namespacing stuff on the AngularJs side.
data := map[string]string{
"controller": e.Controller,
"template": e.Template,
"dyn": e.DynamicId,
"classes": e.Classes,
"id": e.MongoId.Hex(),
"title": e.Title,
}
f.FormData = data
}
f.Register(w)
w.SetTemplate("admin/form.html")
w.SetPayload("form", f)
} else {
post := make(map[string]string)
err := form.GetValidFormData(w, &post)
if err != nil {
return
} else {
c := w.DbSession.DB("").C("elements")
if post["mongolarid"] == "new" {
p := elements.Element{
Controller: post["controller"],
DynamicId: post["dyn"],
Template: post["template"],
Title: post["title"],
Classes: post["classes"],
}
err := c.Insert(p)
if err != nil {
errmessage := fmt.Sprintf("Unable to save new element by %s : %s", w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("There was a problem saving your element.", "Error", w)
} else {
services.AddMessage("Your element was saved.", "Success", w)
}
} else {
p := bson.M{
"$set": bson.M{
"template": post["template"],
"title": post["title"],
"dynamic_id": post["dyn"],
"controller": post["controller"],
"classes": post["classes"],
},
}
s := bson.M{"_id": bson.ObjectIdHex(post["mongolarid"])}
err := c.Update(s, p)
if err != nil {
errmessage := fmt.Sprintf("Unable to save element %s by %s : %s",
post["mongolarid"], w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("There was a problem saving your element.", "Error", w)
} else {
services.AddMessage("Your element was saved.", "Success", w)
dynamic := services.Dynamic{
Target: post["mongolarid"],
Id: post["mongolarid"],
Controller: "admin/element",
Template: "admin/element.html",
}
services.SetDynamic(dynamic, w)
}
}
}
//.........這裏部分代碼省略.........
示例10: OrphanElements
// Controller to retrive a list of all orphaned elements.
func OrphanElements(w *wrapper.Wrapper) {
assigned := make([]bson.ObjectId, 0)
paths, err := paths.PathList(w)
if err != nil {
errmessage := fmt.Sprintf("Could not retrieve path elements for orphan list: %s", err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Could not retrieve path elements.", "Error", w)
w.Serve()
}
for _, path := range paths {
for _, element := range path.Elements {
id := bson.ObjectIdHex(element)
assigned = append(assigned, id)
}
}
wrappers := make([]elements.WrapperElement, 0)
c := w.DbSession.DB("").C("elements")
s := bson.M{"controller": "wrapper"}
i := c.Find(s).Limit(50).Iter()
err = i.All(&wrappers)
if err != nil {
errmessage := fmt.Sprintf("Could not retrieve wrapper elements for orphan list: %s", err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Could not retrieve wrapper elements.", "Error", w)
w.Serve()
}
for _, wrapper := range wrappers {
for _, eid := range wrapper.Elements {
bsonid := bson.ObjectIdHex(eid)
assigned = append(assigned, bsonid)
}
}
slugs := make([]elements.SlugElement, 0)
s = bson.M{"controller": "slug"}
i = c.Find(s).Limit(50).Iter()
err = i.All(&slugs)
if err != nil {
errmessage := fmt.Sprintf("Could not retrieve slug elements for orphan list: %s", err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Could not retrieve slug elements.", "Error", w)
w.Serve()
}
for _, slug := range slugs {
for _, eid := range slug.Slugs {
bsonid := bson.ObjectIdHex(eid)
assigned = append(assigned, bsonid)
}
}
unassigned := new([]elements.Element)
s = bson.M{"_id": bson.M{"$nin": assigned}}
i = c.Find(s).Limit(50).Iter()
err = i.All(unassigned)
if err != nil {
errmessage := fmt.Sprintf("Could not retrieve unassigned elements: %s", err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Could not retrieve unassigned elements.", "Error", w)
w.Serve()
}
w.SetTemplate("admin/orphan_path_elements.html")
w.SetPayload("elements", unassigned)
w.Serve()
return
}
示例11: MenuEditor
// Controller to edit a menu element
// TODO: break this into smaller functions
func MenuEditor(w *wrapper.Wrapper) {
if len(w.APIParams) == 0 {
http.Error(w.Writer, "Forbidden", 403)
return
}
menuid := w.APIParams[0]
if w.Request.Method != "POST" {
e, err := elements.LoadMenuElement(menuid, w)
if err != nil {
errmessage := fmt.Sprintf("Element not found to edit for %s by %s.", menuid, w.Request.Host)
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("This element was not found", "Error", w)
w.Serve()
return
}
if e.MenuItems == nil {
items := make(map[string][]map[string]string)
items["menu_items"] = make([]map[string]string, 0)
w.SetPayload("menu", items)
} else {
w.SetPayload("menu", e)
}
w.SetPayload("title", e.Title)
w.SetTemplate("admin/menu_editor.html")
w.Serve()
return
} else {
e, err := elements.LoadMenuElement(menuid, w)
if err != nil {
errmessage := fmt.Sprintf("Element not found to edit for %s by %s.", menuid, w.Request.Host)
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("This element was not found", "Error", w)
w.Serve()
return
}
err = json.NewDecoder(w.Request.Body).Decode(&e)
if err != nil {
errmessage := fmt.Sprintf("Unable to update marshall menu elements by %s: %s", w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to save menu element.", "Error", w)
w.Serve()
return
}
err = e.Save(w)
if err != nil {
errmessage := fmt.Sprintf("Unable to update menu element %s by %s: %s", menuid, w.Request.Host, err.Error())
w.SiteConfig.Logger.Error(errmessage)
services.AddMessage("Unable to save menu element.", "Error", w)
w.Serve()
return
}
dynamic := services.Dynamic{
Target: "modaleditor",
Controller: "",
Template: "",
Id: "",
}
services.SetDynamic(dynamic, w)
services.AddMessage("You menu element have been updated.", "Success", w)
w.Serve()
}
}