v1.0 beta init
This commit is contained in:
76
app/views/Admin/Email/emailDialog.html
Normal file
76
app/views/Admin/Email/emailDialog.html
Normal file
@@ -0,0 +1,76 @@
|
||||
<div class="row" style="width: 500px;
|
||||
height: 500px;
|
||||
overflow-y: scroll;">
|
||||
|
||||
<div class="col-sm-12">
|
||||
<form id="sendEmailForm">
|
||||
<section class="panel panel-default">
|
||||
<header class="panel-heading font-bold">Email</header>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label>Email List</label>
|
||||
<textarea type="text" rows="10" class="form-control" name="emails">{{.emailsNl}}</textarea>
|
||||
input email line by line
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Select Old Email</label>
|
||||
<select class="form-control old-emails">
|
||||
<option value="">---Select---</option>
|
||||
{{range $subject, $body := .map.oldEmails}}
|
||||
<option>
|
||||
{{$subject}}
|
||||
</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Subject</label>
|
||||
<input type="text" class="form-control" id="latestEmailSubject" name="latestEmailSubject" value="{{$.str.latestEmailSubject}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Body</label>
|
||||
<textarea type="text" rows="10" id="latestEmailBody" class="form-control" name="latestEmailBody">{{$.str.latestEmailBody}}</textarea>
|
||||
</div>
|
||||
<label class="checkbox-inline"> <input type="checkbox" id="saveAsOldEmail" name="saveAsOldEmail" value="1"> Save As Old Email </label>
|
||||
</div>
|
||||
|
||||
<footer class="panel-footer text-right bg-light lter">
|
||||
<button type="submit" id="submitEmail" class="btn btn-success btn-s-xs">Submit</button>
|
||||
</footer>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var oldEmails = eval("(" + {{json .map.oldEmails}} + ")");
|
||||
$(function() {
|
||||
$(".old-emails").change(function() {
|
||||
var subject = $(this).val();
|
||||
var body = oldEmails[subject];
|
||||
if(subject) {
|
||||
$("#latestEmailSubject").val(subject);
|
||||
$("#latestEmailBody").val(body);
|
||||
$("#saveAsOldEmail").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
||||
$("#submitEmail").click(function(e){
|
||||
e.preventDefault();
|
||||
var t = this;
|
||||
$(t).button('loading');
|
||||
ajaxPost("/adminEmail/sendToUsers2", getFormJsonData("sendEmailForm"), function(ret){
|
||||
$(t).button('reset')
|
||||
if(!ret.Ok) {
|
||||
art.alert(ret.Msg)
|
||||
} else {
|
||||
art.tips("Success");
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
191
app/views/Admin/Email/list.html
Normal file
191
app/views/Admin/Email/list.html
Normal file
@@ -0,0 +1,191 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Email Logs</h3></div>
|
||||
|
||||
<section class="panel panel-default">
|
||||
<div class="row wrapper">
|
||||
<div class="col-sm-5 m-b-xs">
|
||||
<button class="btn btn-sm btn-default bulk-send">
|
||||
Send
|
||||
</button>
|
||||
<button class="btn btn-sm btn-default bulk-delete">
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-4 m-b-xs">
|
||||
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<div class="input-group search-group">
|
||||
<input type="text" class="input-sm form-control" placeholder="Email" id="keywords" value="{{.keywords}}" />
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-sm btn-default" type="button" data-url="/adminEmail/list">Search</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped b-t b-light">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="20">
|
||||
<input type="checkbox">
|
||||
</th>
|
||||
{{$url := urlConcat "/adminEmail/list" "keywords" .keywords}}
|
||||
<th
|
||||
{{sorterTh $url "email" .sorter}}
|
||||
>
|
||||
Email
|
||||
<span class="th-sort">
|
||||
<i class="fa fa-sort-down"></i>
|
||||
<i class="fa fa-sort-up"></i>
|
||||
<i class="fa fa-sort"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th
|
||||
{{sorterTh $url "subject" .sorter}}
|
||||
>
|
||||
Subject
|
||||
<span class="th-sort">
|
||||
<i class="fa fa-sort-down"></i>
|
||||
<i class="fa fa-sort-up"></i>
|
||||
<i class="fa fa-sort"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th
|
||||
{{sorterTh $url "ok" .sorter}}
|
||||
>
|
||||
Ok
|
||||
<span class="th-sort">
|
||||
<i class="fa fa-sort-down"></i>
|
||||
<i class="fa fa-sort-up"></i>
|
||||
<i class="fa fa-sort"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th
|
||||
{{sorterTh $url "msg" .sorter}}
|
||||
>
|
||||
Msg
|
||||
<span class="th-sort">
|
||||
<i class="fa fa-sort-down"></i>
|
||||
<i class="fa fa-sort-up"></i>
|
||||
<i class="fa fa-sort"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th
|
||||
{{sorterTh $url "createdTime" .sorter}}
|
||||
>
|
||||
Date
|
||||
<span class="th-sort">
|
||||
<i class="fa fa-sort-down"></i>
|
||||
<i class="fa fa-sort-up"></i>
|
||||
<i class="fa fa-sort"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{range .emails}}
|
||||
<tr id="tr_{{.LogId.Hex}}">
|
||||
<td>
|
||||
<input type="checkbox" class="ck" data-email="{{.Email}}" data-id="{{.LogId.Hex}}">
|
||||
</td>
|
||||
<td>
|
||||
{{.Email}}
|
||||
</td>
|
||||
<td>
|
||||
{{.Subject}}
|
||||
</td>
|
||||
<td>
|
||||
{{.Ok}}
|
||||
</td>
|
||||
<td>
|
||||
{{.Msg}}
|
||||
</td>
|
||||
<td>
|
||||
{{.CreatedTime|datetime}}
|
||||
</td>
|
||||
<td>
|
||||
<a href="#" class="btn btn-default send-email" data-email="{{.Email}}">Send</a>
|
||||
<a href="#" class="btn btn-default delete-email" data-id="{{.LogId.Hex}}">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<footer class="panel-footer">
|
||||
<div class="row">
|
||||
<div class="col-sm-4 hidden-xs">
|
||||
<button class="btn btn-sm btn-default bulk-send">
|
||||
Send
|
||||
</button>
|
||||
<button class="btn btn-sm btn-default bulk-delete">
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-4 text-right text-center-xs">
|
||||
{{set . "url" (urlConcat "/adminEmail/list" "sorter" .sorter "keywords" .keywords)}}
|
||||
{{template "admin/user/page.html" .}}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</section>
|
||||
|
||||
{{template "admin/footer.html" .}}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$(".send-email").click(function() {
|
||||
openSendEmailDialog($(this).data("email"));
|
||||
});
|
||||
$(".bulk-send").click(function() {
|
||||
var emails = [];
|
||||
$(".ck:checked").each(function() {
|
||||
emails.push($(this).data("email"));
|
||||
});
|
||||
if(emails.length == 0) {
|
||||
art.alert("No user");
|
||||
return;
|
||||
}
|
||||
openSendEmailDialog(emails.join(","));
|
||||
});
|
||||
|
||||
function deleteEmails(ids) {
|
||||
if(!isArray(ids)) {
|
||||
ids = [ids];
|
||||
}
|
||||
ajaxPost("/adminEmail/deleteEmails", {ids: ids.join(",")}, function(ret) {
|
||||
if(ret.Ok) {
|
||||
if(ids.length > 8) {
|
||||
location.reload();
|
||||
}
|
||||
for(var i in ids) {
|
||||
$("#tr_" + ids[i]).remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(".delete-email").click(function() {
|
||||
var id = $(this).data('id');
|
||||
deleteEmails(id);
|
||||
});
|
||||
|
||||
$(".bulk-delete").click(function() {
|
||||
var ids = [];
|
||||
$(".ck:checked").each(function() {
|
||||
ids.push($(this).data("id"));
|
||||
});
|
||||
if(ids.length == 0) {
|
||||
art.alert("No email");
|
||||
return;
|
||||
}
|
||||
deleteEmails(ids);
|
||||
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{{template "admin/end.html" .}}
|
||||
33
app/views/Admin/Email/page.html
Normal file
33
app/views/Admin/Email/page.html
Normal file
@@ -0,0 +1,33 @@
|
||||
{{if gt .pageInfo.TotalPage 1}}
|
||||
<ul class="pagination pagination-sm m-t-none m-b-none">
|
||||
<li class="{{if eq $.pageInfo.CurPage 1}}disabled{{end}}" >
|
||||
<a href="{{if eq $.pageInfo.CurPage 1}}javascript:;{{else}}{{sub $.pageInfo.CurPage | urlConcat $.url "page" }}{{end}}">
|
||||
<i class="fa fa-chevron-left">
|
||||
</i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{{range $i := N 1 .pageInfo.TotalPage}}
|
||||
{{if eq $i $.pageInfo.CurPage}}
|
||||
<li class="active">
|
||||
<a href="javascript:;">
|
||||
{{$i}}
|
||||
</a>
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="">
|
||||
<a href="{{urlConcat $.url "page" $i}}">
|
||||
{{$i}}
|
||||
</a>
|
||||
</li>
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
||||
<li class="{{if eq .pageInfo.CurPage .pageInfo.TotalPage}}disabled{{end}}" >
|
||||
<a href="{{if eq .pageInfo.CurPage .pageInfo.TotalPage}}javascript:;{{else}}{{add $.pageInfo.CurPage | urlConcat $.url "page" }}{{end}}">
|
||||
<i class="fa fa-chevron-right">
|
||||
</i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
{{end}}
|
||||
85
app/views/Admin/Email/send.html
Normal file
85
app/views/Admin/Email/send.html
Normal file
@@ -0,0 +1,85 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Send Email</h3></div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-12">
|
||||
<form id="formContainer">
|
||||
<section class="panel panel-default">
|
||||
<header class="panel-heading font-bold">Email</header>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label>Email List</label>
|
||||
<textarea type="text" rows="10" class="form-control" name="sendEmails">{{.str.sendEmails}}</textarea>
|
||||
input email line by line
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Select Old Email</label>
|
||||
<select class="form-control old-emails">
|
||||
<option value="">---Select---</option>
|
||||
{{range $subject, $body := .map.oldEmails}}
|
||||
<option>
|
||||
{{$subject}}
|
||||
</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Subject</label>
|
||||
<input type="text" class="form-control" id="latestEmailSubject" name="latestEmailSubject" value="{{$.str.latestEmailSubject}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Body</label>
|
||||
<textarea type="text" rows="10" id="latestEmailBody" class="form-control" name="latestEmailBody">{{$.str.latestEmailBody}}</textarea>
|
||||
</div>
|
||||
<label class="checkbox-inline"> <input type="checkbox" id="saveAsOldEmail" name="saveAsOldEmail" value="1"> Save As Old Email </label>
|
||||
</div>
|
||||
|
||||
<footer class="panel-footer text-right bg-light lter">
|
||||
<button type="submit" id="submit" class="btn btn-success btn-s-xs">Submit</button>
|
||||
</footer>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{template "admin/footer.html" .}}
|
||||
<script src="/public/admin/js/jquery-validation-1.13.0/jquery.validate.js"></script>
|
||||
<script>
|
||||
var oldEmails = eval("(" + {{json .map.oldEmails}} + ")");
|
||||
$(function() {
|
||||
init_validator("#formContainer");
|
||||
|
||||
$(".old-emails").change(function() {
|
||||
var subject = $(this).val();
|
||||
var body = oldEmails[subject];
|
||||
if(subject) {
|
||||
$("#latestEmailSubject").val(subject);
|
||||
$("#latestEmailBody").val(body);
|
||||
$("#saveAsOldEmail").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
||||
$("#submit").click(function(e){
|
||||
e.preventDefault();
|
||||
var t = this;
|
||||
if($("#formContainer").valid()) {
|
||||
$(t).button('loading');
|
||||
ajaxPost("/adminEmail/sendEmailToEmails", getFormJsonData("formContainer"), function(ret){
|
||||
$(t).button('reset')
|
||||
if(!ret.Ok) {
|
||||
art.alert(ret.Msg)
|
||||
} else {
|
||||
art.tips("Success");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{{template "admin/end.html" .}}
|
||||
105
app/views/Admin/Email/sendToUsers.html
Normal file
105
app/views/Admin/Email/sendToUsers.html
Normal file
@@ -0,0 +1,105 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Send Email to Users</h3></div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-12">
|
||||
<form id="formContainer">
|
||||
<section class="panel panel-default">
|
||||
<header class="panel-heading font-bold">User filter</header>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label>Search Email/Username</label>
|
||||
<input type="text" class="form-control" name="userFilterEmail" value="{{.str.userFilterEmail}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="checkbox-inline"> <input type="checkbox" name="verified" value="1"> Verfied </label>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>White List</label>
|
||||
<textarea type="text" rows="10" class="form-control" name="userFilterWhiteList">{{.str.userFilterWhiteList}}</textarea>
|
||||
input email line by line
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Black List</label>
|
||||
<textarea type="text" rows="10" class="form-control" name="userFilterBlackList">{{.str.userFilterBlackList}}</textarea>
|
||||
input email line by line
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="panel panel-default">
|
||||
<header class="panel-heading font-bold">Email</header>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label>Select Old Email</label>
|
||||
<select class="form-control old-emails">
|
||||
<option value="">---Select---</option>
|
||||
{{range $subject, $body := .map.oldEmails}}
|
||||
<option>
|
||||
{{$subject}}
|
||||
</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Subject</label>
|
||||
<input type="text" class="form-control" id="latestEmailSubject" name="latestEmailSubject" value="{{$.str.latestEmailSubject}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Body</label>
|
||||
<textarea type="text" rows="10" id="latestEmailBody" class="form-control" name="latestEmailBody">{{$.str.latestEmailBody}}</textarea>
|
||||
</div>
|
||||
<label class="checkbox-inline"> <input type="checkbox" id="saveAsOldEmail" name="saveAsOldEmail" value="1"> Save As Old Email </label>
|
||||
</div>
|
||||
|
||||
<footer class="panel-footer text-right bg-light lter">
|
||||
<button type="submit" id="submit" class="btn btn-success btn-s-xs">Submit</button>
|
||||
</footer>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{template "admin/footer.html" .}}
|
||||
<script src="/public/admin/js/jquery-validation-1.13.0/jquery.validate.js"></script>
|
||||
<script>
|
||||
var oldEmails = eval("(" + {{json .map.oldEmails}} + ")");
|
||||
$(function() {
|
||||
init_validator("#formContainer");
|
||||
|
||||
$(".old-emails").change(function() {
|
||||
var subject = $(this).val();
|
||||
var body = oldEmails[subject];
|
||||
if(subject) {
|
||||
$("#latestEmailSubject").val(subject);
|
||||
$("#latestEmailBody").val(body);
|
||||
$("#saveAsOldEmail").prop("checked", false);
|
||||
}
|
||||
});
|
||||
|
||||
$("#submit").click(function(e){
|
||||
e.preventDefault();
|
||||
var t = this;
|
||||
if($("#formContainer").valid()) {
|
||||
$(t).button('loading');
|
||||
ajaxPost("/adminEmail/sendToUsers", getFormJsonData("formContainer"), function(ret){
|
||||
$(t).button('reset')
|
||||
if(!ret.Ok) {
|
||||
art.alert(ret.Msg)
|
||||
} else {
|
||||
art.tips("Success");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{{template "admin/end.html" .}}
|
||||
62
app/views/Admin/Email/set.html
Normal file
62
app/views/Admin/Email/set.html
Normal file
@@ -0,0 +1,62 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Email Configuration</h3></div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-6">
|
||||
<form id="add_user_form">
|
||||
<section class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label>Host</label>
|
||||
<input type="text" class="form-control" name="emailHost" value="{{.str.emailHost}}" placeholder="eg. smtp.ym.163.com">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Port</label>
|
||||
<input type="text" class="form-control" name="emailPort" value="{{.str.emailPort}}" placeholder="eg. 25">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Username</label>
|
||||
<input type="text" class="form-control" name="emailUsername" value="{{.str.emailUsername}}" placeholder="">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Password</label>
|
||||
<input type="text" class="form-control" name="emailPassword" value="{{.str.emailPassword}}" placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="panel-footer text-right bg-light lter">
|
||||
<button type="submit" id="submit" class="btn btn-success btn-s-xs">Submit</button>
|
||||
</footer>
|
||||
</section>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{template "admin/footer.html" .}}
|
||||
<script src="/public/admin/js/jquery-validation-1.13.0/jquery.validate.js"></script>
|
||||
<script>
|
||||
$(function() {
|
||||
init_validator("#add_user_form");
|
||||
|
||||
$("#submit").click(function(e){
|
||||
e.preventDefault();
|
||||
var t = this;
|
||||
if($("#add_user_form").valid()) {
|
||||
$(t).button('loading');
|
||||
ajaxPost("/adminEmail/set", getFormJsonData("add_user_form"), function(ret){
|
||||
$(t).button('reset')
|
||||
if(!ret.Ok) {
|
||||
art.alert(ret.Msg)
|
||||
} else {
|
||||
art.tips("Success");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{{template "admin/end.html" .}}
|
||||
325
app/views/Admin/Email/template.html
Normal file
325
app/views/Admin/Email/template.html
Normal file
@@ -0,0 +1,325 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Email Template</h3></div>
|
||||
|
||||
<style>
|
||||
.preview {
|
||||
overflow: auto;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
label {
|
||||
}
|
||||
</style>
|
||||
|
||||
<form id="add_user_form">
|
||||
<section class="panel panel-default">
|
||||
<header class="panel-heading bg-light">
|
||||
<ul class="nav nav-tabs nav-justified">
|
||||
<li class="active"><a href="#tab1" data-toggle="tab">Layout</a></li>
|
||||
<li class=""><a href="#tab2" data-toggle="tab">Register</a></li>
|
||||
<li class=""><a href="#tab3" data-toggle="tab">Update Email</a></li>
|
||||
<li ><a href="#tab4" data-toggle="tab">Find Passord</a></li>
|
||||
<li ><a href="#tab5" data-toggle="tab">Invite Register</a></li>
|
||||
<li ><a href="#tab6" data-toggle="tab">Blog Comment</a></li>
|
||||
|
||||
</ul>
|
||||
</header>
|
||||
<div class="panel-body">
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="tab1">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<section class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<b>Layout</b>
|
||||
<div>
|
||||
Available tokens:
|
||||
<code>$.subject</code>
|
||||
<code>$.siteUrl</code>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Header</label>
|
||||
<textarea type="text" id="emailHeader" rows="10" class="form-control" name="emailTemplateHeader">{{.str.emailTemplateHeader}}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Footer</label>
|
||||
<textarea type="text" id="emailFooter" rows="10" class="form-control" name="emailTemplateFooter">{{.str.emailTemplateFooter}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="tab2">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<section class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<b>Register Welcome And Email Validation:</b>
|
||||
<div>
|
||||
Available tokens:
|
||||
<code>header</code>
|
||||
<code>footer</code>
|
||||
<code>$.siteUrl</code>
|
||||
<code>$.tokenUrl</code>
|
||||
<code>$.token</code>
|
||||
<code>$.tokenTimeout</code>
|
||||
<code>$.user.userId</code>
|
||||
<code>$.user.email</code>
|
||||
<code>$.user.username</code>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Subject</label>
|
||||
<input type="text" class="form-control" name="emailTemplateRegisterSubject" value="{{.str.emailTemplateRegisterSubject}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Body</label>
|
||||
<textarea type="text" rows="10" class="form-control" name="emailTemplateRegister">{{.str.emailTemplateRegister}}</textarea>
|
||||
</div>
|
||||
<div>
|
||||
Preview
|
||||
<div class="preview">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="tab3">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<section class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<b>Update Email and Send Active Email</b>
|
||||
<div>
|
||||
Available tokens:
|
||||
<code>header</code>
|
||||
<code>footer</code>
|
||||
<code>$.siteUrl</code>
|
||||
<code>$.tokenUrl</code>
|
||||
<code>$.token</code>
|
||||
<code>$.tokenTimeout</code>
|
||||
<code>$.user.userId</code>
|
||||
<code>$.user.email</code>
|
||||
<code>$.user.username</code>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Subject</label>
|
||||
<input type="text" class="form-control" name="emailTemplateUpdateEmailSubject" value="{{.str.emailTemplateUpdateEmailSubject}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Body</label>
|
||||
<textarea type="text" rows="10" class="form-control" name="emailTemplateUpdateEmail">{{.str.emailTemplateUpdateEmail}}</textarea>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Preview
|
||||
<div class="preview">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="tab4">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<section class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<b>Find Passord</b>
|
||||
<div>
|
||||
Available tokens:
|
||||
<code>header</code>
|
||||
<code>footer</code>
|
||||
<code>$.siteUrl</code>
|
||||
<code>$.tokenUrl</code>
|
||||
<code>$.token</code>
|
||||
<code>$.tokenTimeout</code>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Subject</label>
|
||||
<input type="text" class="form-control" name="emailTemplateFindPasswordSubject" value="{{.str.emailTemplateFindPasswordSubject}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Body</label>
|
||||
<textarea type="text" rows="10" class="form-control" name="emailTemplateFindPassword">{{.str.emailTemplateFindPassword}}</textarea>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Preview
|
||||
<div class="preview">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="tab5">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<section class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<b>Invite Register</b>
|
||||
<div>
|
||||
Available tokens:
|
||||
<code>header</code>
|
||||
<code>footer</code>
|
||||
<code>$.siteUrl</code>
|
||||
<code>$.registerUrl</code>
|
||||
<code>$.user.username</code>
|
||||
<code>$.user.email</code>
|
||||
<code>$.content</code>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Subject</label>
|
||||
<input type="text" class="form-control" name="emailTemplateInviteSubject" value="{{.str.emailTemplateInviteSubject}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Body</label>
|
||||
<textarea type="text" rows="10" class="form-control" name="emailTemplateInvite">{{.str.emailTemplateInvite}}</textarea>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Preview
|
||||
<div class="preview">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="tab6">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<section class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<b>Blog Comment</b>
|
||||
<div>
|
||||
Available tokens:
|
||||
<code>header</code>
|
||||
<code>footer</code>
|
||||
<code>$.siteUrl</code>
|
||||
<code>$.blogUrl</code>
|
||||
|
||||
<br />
|
||||
<code>$.commentContent</code>
|
||||
|
||||
<br />
|
||||
<code>$.blog.id</code>
|
||||
<code>$.blog.title</code>
|
||||
<code>$.blog.url</code>
|
||||
|
||||
<br />
|
||||
<code>$.commentUser.userId</code>
|
||||
<code>$.commentUser.username</code>
|
||||
<code>$.commentUser.email</code>
|
||||
<code>$.commentUser.isBlogAuthor</code>
|
||||
|
||||
<br />
|
||||
<code>$.commentedUser.userId</code>
|
||||
<code>$.commentedUser.username</code>
|
||||
<code>$.commentedUser.email</code>
|
||||
<code>$.commentedUser.isBlogAuthor</code>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Subject</label>
|
||||
<input type="text" class="form-control" name="emailTemplateCommentSubject" value="{{.str.emailTemplateCommentSubject}}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Body</label>
|
||||
<textarea type="text" rows="10" class="form-control" name="emailTemplateComment">{{.str.emailTemplateComment}}</textarea>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Preview
|
||||
<div class="preview">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="panel-footer text-right bg-light lter">
|
||||
<button type="submit" id="submit" class="btn btn-success btn-s-xs">Submit</button>
|
||||
</footer>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
{{template "admin/footer.html" .}}
|
||||
<script src="/public/admin/js/jquery-validation-1.13.0/jquery.validate.js"></script>
|
||||
<script>
|
||||
$(function() {
|
||||
$("code").each(function() {
|
||||
var h = $(this).text();
|
||||
$(this).text("{" + "{" + h + "}" + "}");
|
||||
});
|
||||
|
||||
function previewEmail(t) {
|
||||
var $p = $(t).closest(".row");
|
||||
var tpl = $(t).val();
|
||||
var subject = $p.find("input").val() || "";
|
||||
var $preview = $p.find(".preview");
|
||||
|
||||
var header = $("#emailHeader").val();
|
||||
var footer = $("#emailFooter").val();
|
||||
|
||||
header = header.replace("{" + "{$.subject}" + "}", subject);
|
||||
tpl = tpl.replace("{" + "{header}" + "}", header);
|
||||
tpl = tpl.replace("{" + "{footer}" + "}", footer);
|
||||
|
||||
$preview.html(tpl);
|
||||
}
|
||||
|
||||
$("textarea").each(function() {
|
||||
previewEmail(this);
|
||||
});
|
||||
|
||||
$("textarea").keyup(function() {
|
||||
previewEmail(this);
|
||||
});
|
||||
|
||||
init_validator("#add_user_form");
|
||||
|
||||
$("#submit").click(function(e){
|
||||
e.preventDefault();
|
||||
var t = this;
|
||||
if($("#add_user_form").valid()) {
|
||||
$(t).button('loading');
|
||||
ajaxPost("/adminEmail/template", getFormJsonData("add_user_form"), function(ret){
|
||||
$(t).button('reset')
|
||||
if(!ret.Ok) {
|
||||
art.alert(ret.Msg)
|
||||
} else {
|
||||
art.tips("Success");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{{template "admin/end.html" .}}
|
||||
Reference in New Issue
Block a user