Commit b669bfdf by Emil Tullstedt Committed by GitHub

Dashboard: Add failsafe for slug generation (#23709)

parent c0635947
package models
import (
"encoding/base64"
"errors"
"fmt"
"strings"
......@@ -189,7 +190,18 @@ func (dash *Dashboard) UpdateSlug() {
}
func SlugifyTitle(title string) string {
return slug.Make(strings.ToLower(title))
s := slug.Make(strings.ToLower(title))
if s == "" {
// If the dashboard name is only characters outside of the
// sluggable characters, the slug creation will return an
// empty string which will mess up URLs. This failsafe picks
// that up and creates the slug as a base64 identifier instead.
s = base64.RawURLEncoding.EncodeToString([]byte(title))
if slug.MaxLength != 0 && len(s) > slug.MaxLength {
s = s[:slug.MaxLength]
}
}
return s
}
// GetUrl return the html url for a folder if it's folder, otherwise for a dashboard
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment