diff --git a/util/gpage/gpage.go b/util/gpage/gpage.go index ac138d60f78..d434e3f638f 100644 --- a/util/gpage/gpage.go +++ b/util/gpage/gpage.go @@ -164,7 +164,7 @@ func (p *Page) GetContent(mode int) string { p.FirstPageTag = "首页" p.LastPageTag = "尾页" return fmt.Sprintf( - `%s%s[第%d页]%s%s第%s页`, + `%s%s[第 %d 页]%s%s第%s页`, p.FirstPage(), p.PrevPage(), p.CurrentPage, @@ -184,7 +184,7 @@ func (p *Page) GetContent(mode int) string { pageStr += p.NextPage() pageStr += p.LastPage() pageStr += fmt.Sprintf( - `当前页%d/%d 共%d条`, + `当前页 %d/%d 共 %d 条`, p.CurrentPage, p.TotalPage, p.TotalSize, @@ -210,20 +210,24 @@ func (p *Page) GetContent(mode int) string { // The UrlTemplate attribute can be a URL or URI string containing the "{.page}" placeholder, // which will be replaced by the actual page number. func (p *Page) GetUrl(page int) string { - return gstr.Replace(p.UrlTemplate, DefaultPagePlaceHolder, gconv.String(page)) + return html.EscapeString(gstr.Replace(p.UrlTemplate, DefaultPagePlaceHolder, gconv.String(page))) } // GetLink returns the HTML link tag `a` content for given page number. func (p *Page) GetLink(page int, text, title string) string { + var ( + escapedTitle = html.EscapeString(title) + escapedText = html.EscapeString(text) + ) if len(p.AjaxActionName) > 0 { return fmt.Sprintf( `%s`, - p.LinkStyle, p.AjaxActionName, p.GetUrl(page), html.EscapeString(title), text, + p.LinkStyle, p.AjaxActionName, p.GetUrl(page), escapedTitle, escapedText, ) } else { return fmt.Sprintf( `%s`, - p.LinkStyle, p.GetUrl(page), html.EscapeString(title), text, + p.LinkStyle, p.GetUrl(page), escapedTitle, escapedText, ) } } diff --git a/util/gpage/gpage_z_unit_test.go b/util/gpage/gpage_z_unit_test.go index 79881330533..5399db86fdb 100644 --- a/util/gpage/gpage_z_unit_test.go +++ b/util/gpage/gpage_z_unit_test.go @@ -33,27 +33,27 @@ func Test_New(t *testing.T) { func Test_Basic(t *testing.T) { gtest.C(t, func(t *gtest.T) { page := gpage.New(9, 2, 1, `/user/list?page={.page}`) - t.Assert(page.NextPage(), `>`) + t.Assert(page.NextPage(), `>`) t.Assert(page.PrevPage(), `<`) t.Assert(page.FirstPage(), `|<`) - t.Assert(page.LastPage(), `>|`) + t.Assert(page.LastPage(), `>|`) t.Assert(page.PageBar(), `12345`) }) gtest.C(t, func(t *gtest.T) { page := gpage.New(9, 2, 3, `/user/list?page={.page}`) - t.Assert(page.NextPage(), `>`) - t.Assert(page.PrevPage(), `<`) - t.Assert(page.FirstPage(), `|<`) - t.Assert(page.LastPage(), `>|`) + t.Assert(page.NextPage(), `>`) + t.Assert(page.PrevPage(), `<`) + t.Assert(page.FirstPage(), `|<`) + t.Assert(page.LastPage(), `>|`) t.Assert(page.PageBar(), `12345`) }) gtest.C(t, func(t *gtest.T) { page := gpage.New(9, 2, 5, `/user/list?page={.page}`) t.Assert(page.NextPage(), `>`) - t.Assert(page.PrevPage(), `<`) - t.Assert(page.FirstPage(), `|<`) + t.Assert(page.PrevPage(), `<`) + t.Assert(page.FirstPage(), `|<`) t.Assert(page.LastPage(), `>|`) t.Assert(page.PageBar(), `12345`) }) @@ -82,10 +82,10 @@ func Test_CustomStyle(t *testing.T) { page.LinkStyle = "MyPageLink" page.SpanStyle = "MyPageSpan" page.SelectStyle = "MyPageSelect" - t.Assert(page.NextPage(), `>`) - t.Assert(page.PrevPage(), `<`) - t.Assert(page.FirstPage(), `|<`) - t.Assert(page.LastPage(), `>|`) + t.Assert(page.NextPage(), `>`) + t.Assert(page.PrevPage(), `<`) + t.Assert(page.FirstPage(), `|<`) + t.Assert(page.LastPage(), `>|`) t.Assert(page.PageBar(), `12345`) t.Assert(page.SelectBar(), ``) }) @@ -95,10 +95,10 @@ func Test_Ajax(t *testing.T) { gtest.C(t, func(t *gtest.T) { page := gpage.New(5, 1, 2, `/user/list/{.page}`) page.AjaxActionName = "LoadPage" - t.Assert(page.NextPage(), `>`) - t.Assert(page.PrevPage(), `<`) - t.Assert(page.FirstPage(), `|<`) - t.Assert(page.LastPage(), `>|`) + t.Assert(page.NextPage(), `>`) + t.Assert(page.PrevPage(), `<`) + t.Assert(page.FirstPage(), `|<`) + t.Assert(page.LastPage(), `>|`) t.Assert(page.PageBar(), `12345`) }) } @@ -108,8 +108,8 @@ func Test_PredefinedContent(t *testing.T) { page := gpage.New(5, 1, 2, `/user/list/{.page}`) page.AjaxActionName = "LoadPage" t.Assert(page.GetContent(1), `上一页 2 下一页`) - t.Assert(page.GetContent(2), `首页<<上一页[第2页]下一页>>尾页页`) - t.Assert(page.GetContent(3), `首页上一页12345下一页尾页当前页2/5 共5条`) + t.Assert(page.GetContent(2), `首页<<上一页[第 2 页]下一页>>尾页页`) + t.Assert(page.GetContent(3), `首页上一页12345下一页尾页当前页 2/5 共 5 条`) t.Assert(page.GetContent(4), `首页上一页12345下一页尾页`) t.Assert(page.GetContent(5), ``) })