Browse Source

Change currecncy action

Vova Tkach 5 years ago
parent
commit
35dbd18b86

+ 1 - 1
assets/template/header_html_file.go

@@ -54,7 +54,7 @@ var VarHeaderHtmlFile = []byte(`<!doctype html>
 								<a id="basket-nav-btn" class="nav-link" href="" onclick="window&&window.frontend&&frontend.ShopBasketBtnCollapse()&&frontend.ShopBasketOpen(this);return false;">Basket <span class="badge badge-pill badge-primary">{{$.Data.ShopBasketProductsCount}}</span></a>
 							</li>
 							<li class="currency-changer">
-								<select class="form-control" onchange="document.location.reload(true);">
+								<select class="form-control" onchange="document.location='/shop/basket/currency/'+this.value+'/';">
 									{{range $.Data.Shop.Currencies}}
 										<option value="{{.Id}}"{{if eq .Id $.Data.Shop.CurrentCurrency.Id}} selected{{end}}>{{.Code}}</option>
 									{{end}}

+ 1 - 1
hosts/localhost/template/header.html

@@ -52,7 +52,7 @@
 								<a id="basket-nav-btn" class="nav-link" href="" onclick="window&&window.frontend&&frontend.ShopBasketBtnCollapse()&&frontend.ShopBasketOpen(this);return false;">Basket <span class="badge badge-pill badge-primary">{{$.Data.ShopBasketProductsCount}}</span></a>
 							</li>
 							<li class="currency-changer">
-								<select class="form-control" onchange="document.location.reload(true);">
+								<select class="form-control" onchange="document.location='/shop/basket/currency/'+this.value+'/';">
 									{{range $.Data.Shop.Currencies}}
 										<option value="{{.Id}}"{{if eq .Id $.Data.Shop.CurrentCurrency.Id}} selected{{end}}>{{.Code}}</option>
 									{{end}}

+ 16 - 1
modules/module_shop.go

@@ -4,6 +4,7 @@ import (
 	"html"
 	"net/http"
 	"strings"
+	"time"
 
 	"golang-fave/assets"
 	"golang-fave/consts"
@@ -444,7 +445,7 @@ func (this *Modules) RegisterModule_Shop() *Module {
 			// Render template
 			wrap.RenderFrontEnd("shop-category", fetdata.New(wrap, false, row, rou), http.StatusOK)
 			return
-		} else if len(wrap.UrlArgs) >= 3 && wrap.UrlArgs[0] == "shop" && wrap.UrlArgs[1] == "basket" && (wrap.UrlArgs[2] == "info" || wrap.UrlArgs[2] == "plus" || wrap.UrlArgs[2] == "minus" || wrap.UrlArgs[2] == "remove") {
+		} else if len(wrap.UrlArgs) >= 3 && wrap.UrlArgs[0] == "shop" && wrap.UrlArgs[1] == "basket" && (wrap.UrlArgs[2] == "info" || wrap.UrlArgs[2] == "plus" || wrap.UrlArgs[2] == "minus" || wrap.UrlArgs[2] == "remove" || wrap.UrlArgs[2] == "currency") {
 			if wrap.UrlArgs[2] == "info" {
 				wrap.W.WriteHeader(http.StatusOK)
 				wrap.W.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
@@ -469,6 +470,20 @@ func (this *Modules) RegisterModule_Shop() *Module {
 				wrap.W.Header().Set("Content-Type", "application/json; charset=utf-8")
 				wrap.W.Write([]byte(wrap.ShopBasket.Remove(wrap.R, wrap.CurrHost, wrap.GetSessionId(), wrap.DB, utils.StrToInt(wrap.UrlArgs[3]))))
 				return
+			} else if wrap.UrlArgs[2] == "currency" && len(wrap.UrlArgs) == 4 && utils.IsNumeric(wrap.UrlArgs[3]) {
+				http.SetCookie(wrap.W, &http.Cookie{
+					Name:     "currency",
+					Value:    wrap.UrlArgs[3],
+					Path:     "/",
+					Expires:  time.Now().Add(7 * 24 * time.Hour),
+					HttpOnly: true,
+				})
+				redirectUrl := wrap.R.Referer()
+				if redirectUrl == "" {
+					redirectUrl = "/"
+				}
+				http.Redirect(wrap.W, wrap.R, redirectUrl, 302)
+				return
 			}
 		} else if len(wrap.UrlArgs) == 2 && wrap.UrlArgs[0] == "shop" && wrap.UrlArgs[1] != "" {
 			// Shop product