|
@@ -9,6 +9,7 @@ package web
|
|
|
|
|
|
import (
|
|
import (
|
|
"errors"
|
|
"errors"
|
|
|
|
+ "fmt"
|
|
"html/template"
|
|
"html/template"
|
|
"log"
|
|
"log"
|
|
"net/http"
|
|
"net/http"
|
|
@@ -16,6 +17,7 @@ import (
|
|
"path"
|
|
"path"
|
|
"path/filepath"
|
|
"path/filepath"
|
|
"strconv"
|
|
"strconv"
|
|
|
|
+ "strings"
|
|
|
|
|
|
"github.com/gorilla/mux"
|
|
"github.com/gorilla/mux"
|
|
"github.com/gorilla/sessions"
|
|
"github.com/gorilla/sessions"
|
|
@@ -117,13 +119,13 @@ func setupTemplates(configAssetsPath string) {
|
|
func SetupGlobals(c map[string]interface{}) {
|
|
func SetupGlobals(c map[string]interface{}) {
|
|
|
|
|
|
globals = Globals{
|
|
globals = Globals{
|
|
- AssetsBaseURL: c["assetsbaseurl"].(string),
|
|
+ AssetsBaseURL: strings.Trim(c["assetsbaseurl"].(string), "/"),
|
|
AssetsPath: c["assetspath"].(string),
|
|
AssetsPath: c["assetspath"].(string),
|
|
AssetsVersion: c["assetsversion"].(int),
|
|
AssetsVersion: c["assetsversion"].(int),
|
|
RefreshDelay: c["refreshdelay"].(int),
|
|
RefreshDelay: c["refreshdelay"].(int),
|
|
SessionKey: []byte(c["sessionkey"].(string)),
|
|
SessionKey: []byte(c["sessionkey"].(string)),
|
|
SessionName: c["sessionname"].(string),
|
|
SessionName: c["sessionname"].(string),
|
|
- SiteBaseURL: c["sitebaseurl"].(string),
|
|
+ SiteBaseURL: strings.Trim(c["sitebaseurl"].(string), "/"),
|
|
SiteName: c["sitename"].(string),
|
|
SiteName: c["sitename"].(string),
|
|
}
|
|
}
|
|
|
|
|
|
@@ -138,10 +140,22 @@ To build URLs for assets, use URLForAsset().
|
|
- ns: the assets namespace. One of "js", "css', "images".
|
|
- ns: the assets namespace. One of "js", "css', "images".
|
|
- path: the asset path relative to the project root
|
|
- path: the asset path relative to the project root
|
|
*/
|
|
*/
|
|
-func URLFromRoute(router *mux.Router, name string, params map[string]string) string {
|
|
+func URLFromRoute(router *mux.Router, name string, params map[string]string) (string, error) {
|
|
- log.Println("Generating route:", name, params)
|
|
+ route := router.Get(name)
|
|
-
|
|
+ if route == nil {
|
|
- return "/"
|
|
+ err := errors.New(fmt.Sprintf("Error building unregistered route %s\n", name))
|
|
|
|
+ return "", err
|
|
|
|
+ }
|
|
|
|
+ pairs := mapToPairs(params)
|
|
|
|
+ url, err := route.URL(pairs...)
|
|
|
|
+ if err != nil {
|
|
|
|
+ err = errors.New(fmt.Sprintf("Error building route %s: %s\n", name, err))
|
|
|
|
+ return "", err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ fqsu := globals.SiteBaseURL + url.String()
|
|
|
|
+ return fqsu, nil
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|