iris icon indicating copy to clipboard operation
iris copied to clipboard

how to convert string to html language

Open PalaChen opened this issue 3 years ago • 2 comments

my string:

ayer.open({
                    type: 1
                    ,title: false 
                    ,closeBtn: false
                    ,area: '300px;'
                    ,shade: 0.8
                    ,id: 'LAY_layuipro' 
                    ,btn: ["admin","index"]
                    ,btnAlign: 'c'
                    ,moveType: 1 
                    ,content: '<div style="padding: 50px; line-height: 22px;font-weight: 300;"> layer.msg(install sucess)</div>'
                    ,success: function(layero){
                        var btn = layero.find('.layui-layer-btn');
                        "btn.find('.layui-layer-btn0').attr({href: '/system/',target: '_blank'});btn.find('.layui-layer-btn1').attr({href: '/',target: '_blank'});"

                    }
                });

html

<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>安企CMS(AnqiCMS)初始化安装</title>
    <style>
        .container {
            padding: 30px;
        }

        .title {
            text-align: center;
            padding: 20px;
        }

        .layui-form {
            max-width: 600px;
            margin: 50px auto;
            padding: 20px;
            max-width: 600px;
            box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3);
            border-radius: 5px;
        }

        .layui-form-item {
            display: flex;
            margin-bottom: 20px;
            align-items: top;
        }

        .layui-form-label {
            padding: 6px 0;
            width: 100px;
        }

        .layui-input-block {
            flex: 1;
        }

        .layui-input {
            box-sizing: border-box;
            width: 100%;
            padding: 2px 10px;
            border: 1px solid #eaeaea;
            border-radius: 4px;
            height: 36px;
            font-size: 15px;
        }

        input:focus,
        textarea:focus {
            outline: 1px solid #29d;
        }

        .layui-form-mid {
            padding: 3px 0;
        }

        .layui-aux-word {
            color: #999;
            font-size: 12px;
        }

        .layui-btn {
            cursor: pointer;
            border-radius: 2px;
            color: #555;
            background-color: #fff;
            padding: 10px 15px;
            margin: 0 5px;
            border: 1px solid #eaeaea;
        }

        .layui-btn.btn-primary {
            color: #fff;
            background-color: #3f90f9;
        }

        .submit-buttons {
            text-align: center;
        }
    </style>
</head>

<body>
<div class="container">
    <h1 class="title">初始化安装</h1>
    <form class="layui-form" action="/install" method="post">
        <div>
            <div class="layui-form-item">
                <label class="layui-form-label">数据库地址</label>
                <div class="layui-input-block">
                    <input type="text" name="host" value="localhost" required placeholder="一般是localhost"
                           autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">数据库端口</label>
                <div class="layui-input-block">
                    <input type="text" name="port" value="3306" required placeholder="一般是3306" autocomplete="off"
                           class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">数据库名称</label>
                <div class="layui-input-block">
                    <input type="text" name="database" value="anqicms" required placeholder="安装到哪个数据库"
                           autocomplete="off" class="layui-input">
                    <div class="layui-form-mid layui-aux-word">如果数据库不存在,程序则会尝试创建它</div>
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">数据库用户</label>
                <div class="layui-input-block">
                    <input type="text" name="user" required placeholder="填写数据库用户名" autocomplete="off"
                           class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">数据库密码</label>
                <div class="layui-input-block">
                    <input type="password" name="password" required placeholder="填写数据库密码" autocomplete="off"
                           class="layui-input">
                </div>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">后台用户名</label>
            <div class="layui-input-block">
                <input type="text" name="admin_user" value="admin" required placeholder="用于登录管理后台"
                       autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">后台密码</label>
            <div class="layui-input-block">
                <input type="password" name="admin_password" minlength="6" maxlength="20" required
                       placeholder="请填写6位以上的密码" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">网站地址</label>
            <div class="layui-input-block">
                <input type="text" name="base_url" value="" autocomplete="off" class="layui-input">
                <div class="layui-form-mid layui-aux-word">
                    指该网站的网址,如:https://www.anqicms.com,用来生成全站的绝对地址
                </div>
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-input-block submit-buttons">
                <button type="reset" class="layui-btn">重置</button>
                <button class="layui-btn btn-primary" type="submit">确认初始化</button>
            </div>
        </div>
    </form>
</div>
</body>
<script src="https://www.layuicdn.com/layui/layui.js"></script>
<script>
    {{ if .message }}
        {{ $length := len .btns }}{{ if eq $length 0 }}
            layer.msg({{.message}})
        {{else}}
            layer.open({
                    type: 1
                    ,title: false //不显示标题栏
                    ,closeBtn: false
                    ,area: '300px;'
                    ,shade: 0.8
                    ,id: 'LAY_layuipro' //设定一个id,防止重复弹出
                    ,btn: {{.btns}}
                    ,btnAlign: 'c'
                    ,moveType: 1 //拖拽模式,0或者1
                    ,content: '<div style="padding: 50px; line-height: 22px;font-weight: 300;"> layer.msg({{.message}})</div>'
                    ,success: function(layero){
                        var btn = layero.find('.layui-layer-btn');
                        {{.links}}

                    }
                });
        {{end}}
    {{ end }}


</script>
</html>

context

type Button struct {
	Name string
	Link string
}

func Install(ctx iris.Context) {
	fmt.Println("........")
	if dao.DB != nil {
		ctx.Redirect("/")
		return
	}

	templateName := "install.html"
	//data := iris.Map{
	//	"message": "",
	//	"bts":     []Button{},
	//}
	button := []Button{
		{Name: "admin", Link: "/system/"},
		{Name: "index", Link: "/"},
	}

	links := ""
	btns := []string{}
	i := 0
	for _, btn := range button {
		links += fmt.Sprintf("btn.find('.layui-layer-btn%v').attr({href: '%v',target: '_blank'});", i, btn.Link)
		btns = append(btns, btn.Name)
		i += 1
	}
	data := iris.Map{
		"message": "install success",
		"btns":    btns,
		"links":   links,
	}
	ctx.View(templateName, data)
	return
}

PalaChen avatar Oct 28 '22 05:10 PalaChen

Hello @PalaChen, this is a general Go question.

Please check the standard html/template's template.HTML, template.URL, template.CSS and template.JS - they are used to pass "unsecure" 3rd-party html contents into templates.

kataras avatar Oct 28 '22 09:10 kataras

Since it's not relevant to Iris and also the issue is stale, it should be closed.

sayem314 avatar May 29 '23 20:05 sayem314