123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- package fetdata
- import (
- "bytes"
- "html"
- "html/template"
- "os"
- "time"
- "golang-fave/engine/basket"
- "golang-fave/engine/consts"
- "golang-fave/engine/utils"
- "golang-fave/engine/wrapper"
- )
- type FERData struct {
- wrap *wrapper.Wrapper
- is404 bool
- Page *Page
- Blog *Blog
- Shop *Shop
- }
- func New(wrap *wrapper.Wrapper, is404 bool, drow interface{}, duser *utils.MySql_user) *FERData {
- var d_Page *Page
- var d_Blog *Blog
- var d_Shop *Shop
- var preUser *User
- if duser != nil {
- preUser = &User{wrap: wrap, object: duser}
- }
- if wrap.CurrModule == "index" {
- if o, ok := drow.(*utils.MySql_page); ok {
- d_Page = &Page{wrap: wrap, object: o, user: preUser}
- }
- } else if wrap.CurrModule == "blog" {
- if len(wrap.UrlArgs) == 3 && wrap.UrlArgs[0] == "blog" && wrap.UrlArgs[1] == "category" && wrap.UrlArgs[2] != "" {
- if o, ok := drow.(*utils.MySql_blog_category); ok {
- d_Blog = &Blog{wrap: wrap, category: (&BlogCategory{wrap: wrap, object: o, user: preUser}).load(nil)}
- d_Blog.load()
- }
- } else if len(wrap.UrlArgs) == 2 && wrap.UrlArgs[0] == "blog" && wrap.UrlArgs[1] != "" {
- if o, ok := drow.(*utils.MySql_blog_post); ok {
- d_Blog = &Blog{wrap: wrap, post: (&BlogPost{wrap: wrap, object: o, user: preUser}).load()}
- }
- } else {
- d_Blog = &Blog{wrap: wrap}
- d_Blog.load()
- }
- } else if wrap.CurrModule == "shop" {
- if len(wrap.UrlArgs) == 3 && wrap.UrlArgs[0] == "shop" && wrap.UrlArgs[1] == "category" && wrap.UrlArgs[2] != "" {
- if o, ok := drow.(*utils.MySql_shop_category); ok {
- d_Shop = &Shop{wrap: wrap, category: (&ShopCategory{wrap: wrap, object: o, user: preUser}).load(nil)}
- d_Shop.load()
- }
- } else if len(wrap.UrlArgs) == 2 && wrap.UrlArgs[0] == "shop" && wrap.UrlArgs[1] != "" {
- if o, ok := drow.(*utils.MySql_shop_product); ok {
- d_Shop = &Shop{wrap: wrap, product: (&ShopProduct{wrap: wrap, object: o, user: preUser}).load()}
- }
- } else {
- d_Shop = &Shop{wrap: wrap}
- d_Shop.load()
- }
- }
- if d_Blog == nil {
- d_Blog = &Blog{wrap: wrap}
- }
- if d_Shop == nil {
- d_Shop = &Shop{wrap: wrap}
- }
- fer := &FERData{
- wrap: wrap,
- is404: is404,
- Page: d_Page,
- Blog: d_Blog,
- Shop: d_Shop,
- }
- return fer
- }
- func (this *FERData) RequestURI() string {
- return this.wrap.R.RequestURI
- }
- func (this *FERData) RequestURL() string {
- return this.wrap.R.URL.Path
- }
- func (this *FERData) RequestGET() string {
- return utils.ExtractGetParams(this.wrap.R.RequestURI)
- }
- func (this *FERData) IsUserLoggedIn() bool {
- if this.wrap.User == nil {
- this.wrap.LoadSessionUser()
- }
- return this.wrap.User != nil && this.wrap.User.A_id > 0
- }
- func (this *FERData) CurrentUser() *User {
- if this.wrap.User == nil {
- return &User{wrap: this.wrap}
- } else {
- return &User{wrap: this.wrap, object: this.wrap.User}
- }
- }
- func (this *FERData) Module() string {
- if this.is404 {
- return "404"
- }
- var mod string
- if this.wrap.CurrModule == "index" {
- mod = "index"
- } else if this.wrap.CurrModule == "blog" {
- if len(this.wrap.UrlArgs) == 3 && this.wrap.UrlArgs[0] == "blog" && this.wrap.UrlArgs[1] == "category" && this.wrap.UrlArgs[2] != "" {
- mod = "blog-category"
- } else if len(this.wrap.UrlArgs) == 2 && this.wrap.UrlArgs[0] == "blog" && this.wrap.UrlArgs[1] != "" {
- mod = "blog-post"
- } else {
- mod = "blog"
- }
- } else if this.wrap.CurrModule == "shop" {
- if len(this.wrap.UrlArgs) == 3 && this.wrap.UrlArgs[0] == "shop" && this.wrap.UrlArgs[1] == "category" && this.wrap.UrlArgs[2] != "" {
- mod = "shop-category"
- } else if len(this.wrap.UrlArgs) == 2 && this.wrap.UrlArgs[0] == "shop" && this.wrap.UrlArgs[1] != "" {
- mod = "shop-product"
- } else {
- mod = "shop"
- }
- }
- return mod
- }
- func (this *FERData) ModuleBlogEnabled() bool {
- return (*this.wrap.Config).Modules.Enabled.Blog != 0
- }
- func (this *FERData) ModuleShopEnabled() bool {
- return (*this.wrap.Config).Modules.Enabled.Shop != 0
- }
- func (this *FERData) DateTimeUnix() int {
- return int(time.Now().Unix())
- }
- func (this *FERData) DateTimeFormat(format string) string {
- return time.Unix(int64(time.Now().Unix()), 0).Format(format)
- }
- func (this *FERData) EscapeString(str string) string {
- return html.EscapeString(str)
- }
- func (this *FERData) cachedBlock(block string) template.HTML {
- tmpl, err := template.New(block + ".html").Funcs(utils.TemplateAdditionalFuncs()).ParseFiles(
- this.wrap.DTemplate + string(os.PathSeparator) + block + ".html",
- )
- if err != nil {
- return template.HTML(err.Error())
- }
- var tpl bytes.Buffer
- err = tmpl.Execute(&tpl, consts.TmplData{
- System: utils.GetTmplSystemData("", ""),
- Data: this,
- })
- if err != nil {
- return template.HTML(err.Error())
- }
- return template.HTML(string(tpl.Bytes()))
- }
- func (this *FERData) CachedBlock1() template.HTML {
- if data, ok := this.wrap.GetBlock1(); ok {
- return data
- }
- data := this.cachedBlock("cached-block-1")
- this.wrap.SetBlock1(data)
- return data
- }
- func (this *FERData) CachedBlock2() template.HTML {
- if data, ok := this.wrap.GetBlock2(); ok {
- return data
- }
- data := this.cachedBlock("cached-block-2")
- this.wrap.SetBlock2(data)
- return data
- }
- func (this *FERData) CachedBlock3() template.HTML {
- if data, ok := this.wrap.GetBlock3(); ok {
- return data
- }
- data := this.cachedBlock("cached-block-3")
- this.wrap.SetBlock3(data)
- return data
- }
- func (this *FERData) CachedBlock4() template.HTML {
- if data, ok := this.wrap.GetBlock4(); ok {
- return data
- }
- data := this.cachedBlock("cached-block-4")
- this.wrap.SetBlock4(data)
- return data
- }
- func (this *FERData) CachedBlock5() template.HTML {
- if data, ok := this.wrap.GetBlock5(); ok {
- return data
- }
- data := this.cachedBlock("cached-block-5")
- this.wrap.SetBlock5(data)
- return data
- }
- func (this *FERData) ShopBasketProductsCount() int {
- return this.wrap.ShopBasket.ProductsCount(&basket.SBParam{
- R: this.wrap.R,
- DB: this.wrap.DB,
- Host: this.wrap.CurrHost,
- Config: this.wrap.Config,
- SessionId: this.wrap.GetSessionId(),
- })
- }
- func (this *FERData) ImagePlaceholderHref() string {
- return utils.GetImagePlaceholderSrc()
- }
- func (this *FERData) ShopOrderRequiredLastName() bool {
- return (*this.wrap.Config).Shop.Orders.RequiredFields.LastName != 0
- }
- func (this *FERData) ShopOrderRequiredFirstName() bool {
- return (*this.wrap.Config).Shop.Orders.RequiredFields.FirstName != 0
- }
- func (this *FERData) ShopOrderRequiredMiddleName() bool {
- return (*this.wrap.Config).Shop.Orders.RequiredFields.MiddleName != 0
- }
- func (this *FERData) ShopOrderRequiredMobilePhone() bool {
- return (*this.wrap.Config).Shop.Orders.RequiredFields.MobilePhone != 0
- }
- func (this *FERData) ShopOrderRequiredEmailAddress() bool {
- return (*this.wrap.Config).Shop.Orders.RequiredFields.EmailAddress != 0
- }
- func (this *FERData) ShopOrderRequiredDelivery() bool {
- return (*this.wrap.Config).Shop.Orders.RequiredFields.Delivery != 0
- }
- func (this *FERData) ShopOrderRequiredComment() bool {
- return (*this.wrap.Config).Shop.Orders.RequiredFields.Comment != 0
- }
|