func (self *TextPreview) Render(context *Context, writer *utils.XMLWriter) (err error) { if len(self.PlainText) < self.MaxLength { writer.Content(self.PlainText) } else { shortLength := self.ShortLength if shortLength == 0 { shortLength = self.MaxLength } // If in the middle of a word, go back to space before it for shortLength > 0 && !unicode.IsSpace(rune(self.PlainText[shortLength-1])) { shortLength-- } // If in the middle of space, go back to word before it for shortLength > 0 && unicode.IsSpace(rune(self.PlainText[shortLength-1])) { shortLength-- } writer.Content(self.PlainText[:shortLength]) writer.Content("... ") if self.MoreLink != nil { writer.OpenTag("a") writer.Attrib("href", self.MoreLink.URL(context.PathArgs...)) writer.AttribIfNotDefault("title", self.MoreLink.LinkTitle(context)) content := self.MoreLink.LinkContent(context) if content != nil { err = content.Render(context, writer) } writer.ForceCloseTag() // a } } return err }
func (self HTML) Render(context *Context, writer *utils.XMLWriter) (err error) { writer.Content(string(self)) return nil }
func (self *StringsSelectModel) RenderItem(index int, context *Context, writer *utils.XMLWriter) (err error) { writer.Content(self.Options[index]) return nil }
func (self *Menu) Render(context *Context, writer *utils.XMLWriter) (err error) { writer.OpenTag("ul").Attrib("id", self.id).AttribIfNotDefault("class", self.Class) requestURL := context.RequestURL() // Find active item activeIndex := -1 if self.ActiveItemClass != "" { // First try exact URL match for i := range self.Items { url := self.Items[i].URL(context.PathArgs...) if url == requestURL { activeIndex = i break } } // If no exact URL match is found, search for sub pages if activeIndex == -1 { for i := range self.Items { url := self.Items[i].URL(context.PathArgs...) if strings.HasPrefix(requestURL, url) { activeIndex = i // todo // not perfect, what if homepage matches first, but other matches better? } } } } for i := range self.Items { index := i if self.Reverse { index = len(self.Items) - 1 - i } itemClass := self.ItemClass linkModel := self.Items[index] url := linkModel.URL(context.PathArgs...) // use i instead of index if i == activeIndex { itemClass += " " + self.ActiveItemClass } writer.OpenTag("li").Attrib("id", self.id, "_", index).AttribIfNotDefault("class", itemClass) if i > 0 && self.BetweenItems != "" { writer.Content(self.BetweenItems) } writer.OpenTag("a") writer.Attrib("href", url) writer.AttribIfNotDefault("title", linkModel.LinkTitle(context)) writer.AttribIfNotDefault("rel", linkModel.LinkRel(context)) content := linkModel.LinkContent(context) if content != nil { err = content.Render(context, writer) if err != nil { return err } } writer.ForceCloseTag() // a writer.ForceCloseTag() // li } writer.ForceCloseTag() // ul return nil }