Skip to content

Commit

Permalink
Fix layout escape bug
Browse files Browse the repository at this point in the history
  • Loading branch information
Wuvist committed Dec 1, 2014
1 parent 004ca18 commit 832cad0
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 7 deletions.
6 changes: 4 additions & 2 deletions gorazor/cases/layout/base.gohtml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
var title string
var js string
}

@{
companyName := "深圳思品科技有限公司"
}
<!DOCTYPE html>
<html>
<head>
Expand All @@ -32,7 +34,7 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="http://wethinkwith.com">深圳思品科技有限公司</a>我们在<a href="http://www.v2ex.com/t/109162">招聘</a>
<a class="navbar-brand" href="http://wethinkwith.com">@companyName</a>我们在<a href="http://www.v2ex.com/t/109162">招聘</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
Expand Down
20 changes: 17 additions & 3 deletions gorazor/gogen.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,11 +188,25 @@ func (cp *Compiler) visitExp(child interface{}, parent *Ast, idx int, isHomo boo
val := getValStr(child)
if htmlEsc == nil {
if ppNotExp && idx == 0 && isHomo {
if val == "helper" || val == "html" || val == "raw" || pack == "layout" {
start += "("
} else {
needEsape := true
switch {
case val == "helper" || val == "html" || val == "raw":
needEsape = false
case pack == "layout":
needEsape = true
for _, param := range cp.params {
if strings.HasPrefix(param, val+" ") {
needEsape = false
break
}
}
}

if needEsape {
start += "gorazor.HTMLEscape("
cp.imports[GorazorNamespace] = true
} else {
start += "("
}
}
if ppNotExp && idx == ppChildCnt-1 && isHomo {
Expand Down
10 changes: 8 additions & 2 deletions gorazor/test/layout/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,20 @@ package layout

import (
"bytes"
"github.com/sipin/gorazor/gorazor"
"tpl/admin/helper"
)

func Base(body string, title string, js string) string {
var _buffer bytes.Buffer
_buffer.WriteString("\n\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <link rel=\"stylesheet\" href=\"/css/bootstrap.min.css\">\n <link rel=\"stylesheet\" href=\"/css/dashboard.css\">\n <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->\n <!--[if lt IE 9]>\n <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n <script src=\"https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js\"></script>\n <![endif]-->\n <title>")

companyName := "深圳思品科技有限公司"

_buffer.WriteString("\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <link rel=\"stylesheet\" href=\"/css/bootstrap.min.css\">\n <link rel=\"stylesheet\" href=\"/css/dashboard.css\">\n <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->\n <!--[if lt IE 9]>\n <script src=\"https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js\"></script>\n <script src=\"https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js\"></script>\n <![endif]-->\n <title>")
_buffer.WriteString((title))
_buffer.WriteString("</title>\n</head>\n<body>\n <div class=\"navbar navbar-inverse navbar-fixed-top\" role=\"navigation\">\n <div class=\"container-fluid\">\n <div class=\"navbar-header\">\n <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n <span class=\"sr-only\">Toggle navigation</span>\n <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n <a class=\"navbar-brand\" href=\"http://wethinkwith.com\">深圳思品科技有限公司</a>我们在<a href=\"http://www.v2ex.com/t/109162\">招聘</a>\n </div>\n <div class=\"navbar-collapse collapse\">\n <ul class=\"nav navbar-nav navbar-right\">\n <li><a href=\"/admin/setting\">设置</a></li>\n <li><a href=\"/admin/help\">帮助</a></li>\n <li><a href=\"/admin/logout\">退出</a></li>\n </ul>\n <form class=\"navbar-form navbar-right\">\n <input type=\"text\" class=\"form-control\" placeholder=\"搜索...\">\n </form>\n </div>\n </div>\n </div>\n\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-sm-3 col-md-2 sidebar\">\n ")
_buffer.WriteString("</title>\n</head>\n<body>\n <div class=\"navbar navbar-inverse navbar-fixed-top\" role=\"navigation\">\n <div class=\"container-fluid\">\n <div class=\"navbar-header\">\n <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n <span class=\"sr-only\">Toggle navigation</span>\n <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n <span class=\"icon-bar\"></span>\n </button>\n <a class=\"navbar-brand\" href=\"http://wethinkwith.com\">")
_buffer.WriteString(gorazor.HTMLEscape(companyName))
_buffer.WriteString("</a>我们在<a href=\"http://www.v2ex.com/t/109162\">招聘</a>\n </div>\n <div class=\"navbar-collapse collapse\">\n <ul class=\"nav navbar-nav navbar-right\">\n <li><a href=\"/admin/setting\">设置</a></li>\n <li><a href=\"/admin/help\">帮助</a></li>\n <li><a href=\"/admin/logout\">退出</a></li>\n </ul>\n <form class=\"navbar-form navbar-right\">\n <input type=\"text\" class=\"form-control\" placeholder=\"搜索...\">\n </form>\n </div>\n </div>\n </div>\n\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-sm-3 col-md-2 sidebar\">\n ")
_buffer.WriteString((helper.Menu()))
_buffer.WriteString("\n </div>\n <div class=\"col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main\">\n ")
_buffer.WriteString((body))
Expand Down

0 comments on commit 832cad0

Please sign in to comment.