v1.0 beta init
This commit is contained in:
@@ -4,22 +4,11 @@
|
||||
<section class="panel panel-default">
|
||||
<div class="row wrapper">
|
||||
<div class="col-sm-5 m-b-xs">
|
||||
<select class="input-sm form-control input-s-sm inline v-middle">
|
||||
<option value="0">
|
||||
Bulk action
|
||||
</option>
|
||||
<option value="1">
|
||||
Delete selected
|
||||
</option>
|
||||
<option value="2">
|
||||
Bulk edit
|
||||
</option>
|
||||
<option value="3">
|
||||
Export
|
||||
</option>
|
||||
</select>
|
||||
<button class="btn btn-sm btn-default">
|
||||
Apply
|
||||
Action1
|
||||
</button>
|
||||
<button class="btn btn-sm btn-default">
|
||||
Action2
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-4 m-b-xs">
|
||||
@@ -62,16 +51,7 @@
|
||||
<i class="fa fa-sort"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th
|
||||
{{sorterTh $url "isRecommend" .sorter}}
|
||||
>
|
||||
isRecommend
|
||||
<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}}
|
||||
>
|
||||
@@ -82,8 +62,6 @@
|
||||
<i class="fa fa-sort"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th width="30">
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -100,21 +78,9 @@
|
||||
{{.User.Username}}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<button data-loading-text="..." class="btn btn-default change-recommend" data-id="{{.NoteId.Hex}}" data-recommend="{{if .IsRecommend}}1{{else}}0{{end}}">
|
||||
{{if .IsRecommend}}
|
||||
Y
|
||||
{{else}}
|
||||
N
|
||||
{{end}}
|
||||
</button>
|
||||
</td>
|
||||
<td>
|
||||
{{.CreatedTime|datetime}}
|
||||
</td>
|
||||
<td>
|
||||
<a href="#" class="btn btn-default">Send Email</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
@@ -123,22 +89,11 @@
|
||||
<footer class="panel-footer">
|
||||
<div class="row">
|
||||
<div class="col-sm-4 hidden-xs">
|
||||
<select class="input-sm form-control input-s-sm inline v-middle">
|
||||
<option value="0">
|
||||
Bulk action
|
||||
</option>
|
||||
<option value="1">
|
||||
Delete selected
|
||||
</option>
|
||||
<option value="2">
|
||||
Bulk edit
|
||||
</option>
|
||||
<option value="3">
|
||||
Export
|
||||
</option>
|
||||
</select>
|
||||
<button class="btn btn-sm btn-default">
|
||||
Apply
|
||||
Action1
|
||||
</button>
|
||||
<button class="btn btn-sm btn-default">
|
||||
Action2
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-4 text-center">
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Blog</h3></div>
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Mongodb Tool Configuration</h3></div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-6">
|
||||
<form id="add_user_form">
|
||||
<form id="data_form">
|
||||
<section class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label>Recommend Tags</label>
|
||||
<input type="text" class="form-control" name="recommendTags" value="{{.recommendTags}}">
|
||||
Split by ','
|
||||
<label>mongodump path</label>
|
||||
<input type="text" class="form-control" name="mongodumpPath" value="{{.str.mongodumpPath}}" placeholder="">
|
||||
Please input the bin mongodump's absolute path
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>New Tags</label>
|
||||
<input type="text" class="form-control" name="newTags" value="{{.newTags}}">
|
||||
Split by ','
|
||||
<label>mongorestore path</label>
|
||||
<input type="text" class="form-control" name="mongorestorePath" value="{{.str.mongorestorePath}}" placeholder="">
|
||||
Please input the bin mongorestore's absolute path
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -32,14 +32,14 @@
|
||||
<script src="/public/admin/js/jquery-validation-1.13.0/jquery.validate.js"></script>
|
||||
<script>
|
||||
$(function() {
|
||||
init_validator("#add_user_form");
|
||||
init_validator("#data_form");
|
||||
|
||||
$("#submit").click(function(e){
|
||||
e.preventDefault();
|
||||
var t = this;
|
||||
if($("#add_user_form").valid()) {
|
||||
if($("#data_form").valid()) {
|
||||
$(t).button('loading');
|
||||
ajaxPost("/adminSetting/doBlogTag", getFormJsonData("add_user_form"), function(ret){
|
||||
ajaxPost("/adminSetting/mongodb", getFormJsonData("data_form"), function(ret){
|
||||
$(t).button('reset')
|
||||
if(!ret.Ok) {
|
||||
art.alert(ret.Msg)
|
||||
115
app/views/Admin/Data/index.html
Normal file
115
app/views/Admin/Data/index.html
Normal file
@@ -0,0 +1,115 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Backup & Restore</h3></div>
|
||||
|
||||
<style>
|
||||
.break-all {
|
||||
word-break:break-all; /*支持IE,chrome,FF不支持*/
|
||||
word-wrap:break-word;/*支持IE,chrome,FF*/
|
||||
}
|
||||
</style>
|
||||
<section class="panel panel-default">
|
||||
|
||||
<div class="row wrapper">
|
||||
<div class="col-sm-5 m-b-xs">
|
||||
<button class="btn btn-primary backup-btn">Backup</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped b-t b-light">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="136px">
|
||||
Date
|
||||
</th>
|
||||
<th width="">
|
||||
Remark
|
||||
</th>
|
||||
<th>
|
||||
Path
|
||||
</th>
|
||||
<th width="170px">
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{range $each := .backups}}
|
||||
<tr>
|
||||
<td>
|
||||
{{$each.createdTime|unixDatetime}}
|
||||
</td>
|
||||
<td>
|
||||
<textarea class="remark" data-id="{{$each.createdTime}}">{{$each.remark}}</textarea>
|
||||
</td>
|
||||
<td class="break-all">
|
||||
{{$each.path}}
|
||||
</td>
|
||||
<td>
|
||||
<button href="#" class="btn btn-sm btn-danger restore-btn" data-id="{{$each.createdTime}}">Restore</button>
|
||||
<a class="btn btn-sm btn-default download-attach" href="/adminData/download?createdTime={{$each.createdTime}}" target="_blank" title="Download" data-id=""><i class="fa fa-download"></i></a>
|
||||
<button class="btn btn-sm btn-warning delete-btn" title="Delete" data-id="{{$each.createdTime}}"><i class="fa fa-trash-o"></i></button>
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{template "admin/footer.html" .}}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$(".backup-btn").click(function(){
|
||||
ajaxGet("/adminData/backup", {}, function(ret) {
|
||||
if(ret.Ok) {
|
||||
art.tips("Success");
|
||||
location.reload();
|
||||
} else {
|
||||
art.alert(ret.Msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
// 还原
|
||||
$(".restore-btn").click(function() {
|
||||
var createdTime = $(this).data("id");
|
||||
art.confirm("Are you sure? <br />Note. Leanote will do the following steps: <br />1)Backup the current database first. <br />2) And then delete the database. <br />3) Restore database from the selected version.", function() {
|
||||
ajaxGet("/adminData/restore", {createdTime: createdTime}, function(ret) {
|
||||
if(ret.Ok) {
|
||||
art.tips("Success");
|
||||
location.reload();
|
||||
} else {
|
||||
art.alert(ret.Msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
$(".delete-btn").click(function() {
|
||||
var createdTime = $(this).data("id");
|
||||
art.confirm("Are you sure?", function() {
|
||||
ajaxGet("/adminData/delete", {createdTime: createdTime}, function(ret) {
|
||||
if(ret.Ok) {
|
||||
art.tips("Success");
|
||||
location.reload();
|
||||
} else {
|
||||
art.alert(ret.Msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
$(".remark").change(function() {
|
||||
var createdTime = $(this).data("id");
|
||||
var remark = $(this).val();
|
||||
ajaxPost("/adminData/updateRemark", {createdTime: createdTime, remark: remark}, function(ret) {
|
||||
if(ret.Ok) {
|
||||
art.tips("Update Remark Success");
|
||||
} else {
|
||||
art.alert(ret.Msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{{template "admin/end.html" .}}
|
||||
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" .}}
|
||||
@@ -9,11 +9,11 @@
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label>Demo Username</label>
|
||||
<input type="text" class="form-control" name="demoUsername" value="{{.demoUsername}}">
|
||||
<input type="text" class="form-control" name="demoUsername" value="{{.str.demoUsername}}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Demo Password</label>
|
||||
<input type="text" class="form-control" name="demoPassword" value="{{.demoPassword}}">
|
||||
<input type="text" class="form-control" name="demoPassword" value="{{.str.demoPassword}}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
173
app/views/Admin/Setting/shareNote.html
Normal file
173
app/views/Admin/Setting/shareNote.html
Normal file
@@ -0,0 +1,173 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Register Share Note</h3></div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-6">
|
||||
<form id="formContainer">
|
||||
<section class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label>Shared UserId</label>
|
||||
<input type="text" class="form-control" name="registerSharedUserId" value="{{.str.registerSharedUserId}}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Shared Notebooks</label>
|
||||
<div class="clearfix" id="notebooks">
|
||||
{{range $notebook := .arrMap.registerSharedNotebooks}}
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" placeholder="notebookId" name="registerSharedNotebookIds[]"
|
||||
value="{{$notebook.notebookId}}"
|
||||
>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<select class="form-control" name="registerSharedNotebookPerms[]">
|
||||
<option value="0" {{if eq $notebook.perm "0"}}selected{{end}}>Read Only</option>
|
||||
<option value="1" {{if eq $notebook.perm "1"}}selected{{end}}>Writable</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" placeholder="notebookId" name="registerSharedNotebookIds[]">
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<select class="form-control" name="registerSharedNotebookPerms[]">
|
||||
<option value="0">Read Only</option>
|
||||
<option value="1">Writable</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" placeholder="notebookId" name="registerSharedNotebookIds[]">
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<select class="form-control" name="registerSharedNotebookPerms[]">
|
||||
<option value="0">Read Only</option>
|
||||
<option value="1">Writable</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
The notebooks will shared to register user
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Shared Notes</label>
|
||||
<div class="clearfix" id="notebooks">
|
||||
{{range $note := .arrMap.registerSharedNotes}}
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" name="registerSharedNoteIds[]"
|
||||
value="{{$note.noteId}}"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<select class="form-control" name="registerSharedNotePerms[]">
|
||||
<option value="0" {{if eq $note.perm "0"}}selected{{end}}>Read Only</option>
|
||||
<option value="1" {{if eq $note.perm "1"}}selected{{end}}>Writable</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" placeholder="noteId" name="registerSharedNoteIds[]">
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<select class="form-control" name="registerSharedNotePerms[]">
|
||||
<option value="0">Read Only</option>
|
||||
<option value="1">Writable</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<input type="text" class="form-control" placeholder="noteId" name="registerSharedNoteIds[]">
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<select class="form-control" name="registerSharedNotePerms[]">
|
||||
<option value="0">Read Only</option>
|
||||
<option value="1">Writable</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
The notes will shared to register user
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Copy Notes</label>
|
||||
<div class="clearfix" id="notebooks">
|
||||
{{range $noteId := .arr.registerCopyNoteIds}}
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<input type="text" class="form-control" name="registerCopyNoteIds[]"
|
||||
value="{{$noteId}}"
|
||||
placeholder="noteId"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<input type="text" class="form-control" name="registerCopyNoteIds[]" placeholder="noteId"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<input type="text" class="form-control" name="registerCopyNoteIds[]" placeholder="noteId"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
The notes will copy to register user
|
||||
</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>
|
||||
var a = "{{json .arrMap}}"
|
||||
|
||||
|
||||
$(function() {
|
||||
|
||||
init_validator("#formContainer");
|
||||
|
||||
$("#submit").click(function(e){
|
||||
e.preventDefault();
|
||||
var t = this;
|
||||
if($("#formContainer").valid()) {
|
||||
$(t).button('loading');
|
||||
ajaxPost("/adminSetting/shareNote", getFormJsonData("formContainer"), function(ret){
|
||||
$(t).button('reset')
|
||||
if(!ret.Ok) {
|
||||
art.alert(ret.Msg)
|
||||
} else {
|
||||
art.tips(ret.Msg || "Success");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{{template "admin/end.html" .}}
|
||||
@@ -45,7 +45,7 @@ $(function() {
|
||||
ajaxPost("/auth/doRegister", getFormJsonData("add_user_form"), function(ret){
|
||||
$(t).button('reset')
|
||||
if(!ret.Ok) {
|
||||
art.alert(ret.Msg)
|
||||
art.alert(ret.Msg);
|
||||
} else {
|
||||
art.tips("Success");
|
||||
}
|
||||
|
||||
@@ -1,24 +1,18 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">User</h3></div>
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Users</h3></div>
|
||||
|
||||
<section class="panel panel-default">
|
||||
<div class="row wrapper">
|
||||
<div class="col-sm-5 m-b-xs">
|
||||
<select class="input-sm form-control input-s-sm inline v-middle">
|
||||
<option value="0">
|
||||
<option value="">
|
||||
Bulk action
|
||||
</option>
|
||||
<option value="1">
|
||||
Delete selected
|
||||
</option>
|
||||
<option value="2">
|
||||
Bulk edit
|
||||
</option>
|
||||
<option value="3">
|
||||
Export
|
||||
Send Email
|
||||
</option>
|
||||
</select>
|
||||
<button class="btn btn-sm btn-default">
|
||||
<button class="btn btn-sm btn-default bulk-btn">
|
||||
Apply
|
||||
</button>
|
||||
</div>
|
||||
@@ -90,7 +84,7 @@
|
||||
{{range .users}}
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="post[]" value="2">
|
||||
<input type="checkbox" class="ck" data-email="{{.Email}}" value="2">
|
||||
</td>
|
||||
<td>
|
||||
{{.Email}}
|
||||
@@ -103,15 +97,9 @@
|
||||
</td>
|
||||
<td>
|
||||
{{.CreatedTime|datetime}}
|
||||
<a href="#" class="active" data-toggle="class">
|
||||
<i class="fa fa-check text-success text-active">
|
||||
</i>
|
||||
<i class="fa fa-times text-danger text">
|
||||
</i>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#" class="btn btn-default">Send Email</a>
|
||||
<a href="#" class="btn btn-default send-email" data-email="{{.Email}}">Send Email</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
@@ -122,32 +110,21 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-4 hidden-xs">
|
||||
<select class="input-sm form-control input-s-sm inline v-middle">
|
||||
<option value="0">
|
||||
<option value="">
|
||||
Bulk action
|
||||
</option>
|
||||
<option value="1">
|
||||
Delete selected
|
||||
</option>
|
||||
<option value="2">
|
||||
Bulk edit
|
||||
</option>
|
||||
<option value="3">
|
||||
Export
|
||||
Send Email
|
||||
</option>
|
||||
</select>
|
||||
<button class="btn btn-sm btn-default">
|
||||
<button class="btn btn-sm btn-default bulk-btn">
|
||||
Apply
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-sm-4 text-center">
|
||||
<small class="text-muted inline m-t-sm m-b-sm">
|
||||
showing 20-30 of 50 items
|
||||
</small>
|
||||
</div>
|
||||
<div class="col-sm-4 text-right text-center-xs">
|
||||
|
||||
<div class="col-sm-8 text-right text-center-xs">
|
||||
{{set . "url" (urlConcat "/adminUser/index" "sorter" .sorter "keywords" .keywords)}}
|
||||
{{template "admin/user/page.html" .}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -157,6 +134,23 @@
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$(".send-email").click(function() {
|
||||
openSendEmailDialog($(this).data("email"));
|
||||
});
|
||||
$(".bulk-btn").click(function() {
|
||||
// email
|
||||
if($(this).prev().val() == "1") {
|
||||
var emails = [];
|
||||
$(".ck:checked").each(function() {
|
||||
emails.push($(this).data("email"));
|
||||
});
|
||||
if(emails.length == 0) {
|
||||
art.alert("No user");
|
||||
return;
|
||||
}
|
||||
openSendEmailDialog(emails.join(","));
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -5,32 +5,26 @@
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<!-- Bootstrap -->
|
||||
<!-- App -->
|
||||
<script src="/js/jquery-1.9.0.min.js"></script>
|
||||
<script src="/js/bootstrap.js"></script>
|
||||
<script src="/public/admin/js/artDialog/jquery.artDialog.js?skin=default"></script>
|
||||
<script src="/public/js/common.js"></script>
|
||||
<script src="/public/admin/js/admin.js"></script>
|
||||
<script>
|
||||
$(function(){
|
||||
var pathname = location.pathname;
|
||||
var arr = pathname.split("/");
|
||||
if(arr.length == 0){
|
||||
return;
|
||||
}
|
||||
var controller = "";
|
||||
var action = "";
|
||||
if(arr[0] == "") {
|
||||
arr = arr.slice(1);
|
||||
}
|
||||
controller = arr[0];
|
||||
if(arr.length > 1) {
|
||||
action = arr[1];
|
||||
}
|
||||
$("#nav > li").removeClass("active");
|
||||
$("#" + controller + "Nav").addClass("active");
|
||||
|
||||
$('a[href="' + pathname + '"]').parent().addClass("active");
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="/js/jquery-1.9.0.min.js"></script>
|
||||
<script src="/js/bootstrap.js"></script>
|
||||
<script src="/public/admin/js/artDialog/jquery.artDialog.js?skin=default"></script>
|
||||
<script src="/public/js/common.js"></script>
|
||||
<script src="/public/admin/js/admin.js"></script>
|
||||
<script>
|
||||
$(function() {
|
||||
var pathname = location.pathname; // admin/t
|
||||
var search = location.search; // ?t=xxx, 如果有?page呢
|
||||
var fullPath = pathname;
|
||||
if(search.indexOf("?t=") >= 0) {
|
||||
var fullPath = pathname + search; // /admin/t?t=xxx
|
||||
}
|
||||
|
||||
$("#nav > li").removeClass("active");
|
||||
// 自己
|
||||
var $thisLi = $('#nav a[href^="' + fullPath + '"]').parent();
|
||||
$thisLi.addClass("active");
|
||||
// 父也active
|
||||
$thisLi.parent().parent().addClass('active');
|
||||
});
|
||||
</script>
|
||||
@@ -1,15 +1,15 @@
|
||||
{{template "admin/top.html" .}}
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Workset</h3> <small>Welcome you!</small> </div>
|
||||
<div class="m-b-md"> <h3 class="m-b-none">Dashboard</h3></div>
|
||||
<section class="panel panel-default">
|
||||
<div class="row m-l-none m-r-none bg-light lter">
|
||||
<div class="col-sm-6 col-md-3 padder-v b-r b-light">
|
||||
<span class="fa-stack fa-2x pull-left m-r-sm">
|
||||
<i class="fa fa-circle fa-stack-2x text-info"></i>
|
||||
<i class="fa fa-male fa-stack-1x text-white"></i>
|
||||
<i class="fa fa-users fa-stack-1x text-white"></i>
|
||||
</span>
|
||||
<a class="clear" href="#">
|
||||
<span class="h3 block m-t-xs"><strong>52,000</strong></span>
|
||||
<small class="text-muted text-uc">users</small>
|
||||
<a class="clear" href="/adminUser/index">
|
||||
<span class="h3 block m-t-xs"><strong>{{.countUser}}</strong></span>
|
||||
<small class="text-muted text-uc">Users</small>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-3 padder-v b-r b-light lt">
|
||||
@@ -17,11 +17,21 @@
|
||||
<i class="fa fa-circle fa-stack-2x text-warning"></i>
|
||||
<i class="fa fa-file-o fa-stack-1x text-white"></i>
|
||||
</span>
|
||||
<a class="clear" href="#">
|
||||
<span class="h3 block m-t-xs"><strong>1312,000</strong></span>
|
||||
<small class="text-muted text-uc">notes</small>
|
||||
<a class="clear" href="javascript:;">
|
||||
<span class="h3 block m-t-xs"><strong>{{.countNote}}</strong></span>
|
||||
<small class="text-muted text-uc">Notes</small>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-3 padder-v b-r b-light">
|
||||
<span class="fa-stack fa-2x pull-left m-r-sm">
|
||||
<i class="fa fa-circle fa-stack-2x text-info"></i>
|
||||
<i class="fa fa-bold fa-stack-1x text-white"></i>
|
||||
</span>
|
||||
<a class="clear" href="/adminBlog/index">
|
||||
<span class="h3 block m-t-xs"><strong>{{.countBlog}}</strong></span>
|
||||
<small class="text-muted text-uc">Blogs</small>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -30,51 +40,10 @@
|
||||
<h4 class="font-thin padder">
|
||||
Leanote Events
|
||||
</h4>
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item">
|
||||
<p>
|
||||
Wellcome
|
||||
<a href="#" class="text-info">
|
||||
@Drew Wllon
|
||||
</a>
|
||||
and play this web application template, have fun1
|
||||
</p>
|
||||
<small class="block text-muted">
|
||||
<i class="fa fa-clock-o">
|
||||
</i>
|
||||
2 minuts ago
|
||||
</small>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<p>
|
||||
Morbi nec
|
||||
<a href="#" class="text-info">
|
||||
@Jonathan George
|
||||
</a>
|
||||
nunc condimentum ipsum dolor sit amet, consectetur
|
||||
</p>
|
||||
<small class="block text-muted">
|
||||
<i class="fa fa-clock-o">
|
||||
</i>
|
||||
1 hour ago
|
||||
</small>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<p>
|
||||
<a href="#" class="text-info">
|
||||
@Josh Long
|
||||
</a>
|
||||
Vestibulum ullamcorper sodales nisi nec adipiscing elit.
|
||||
</p>
|
||||
<small class="block text-muted">
|
||||
<i class="fa fa-clock-o">
|
||||
</i>
|
||||
2 hours ago
|
||||
</small>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="list-group" id="eventsList"></ul>
|
||||
</section>
|
||||
|
||||
<!--
|
||||
<section class="panel panel-default">
|
||||
<form>
|
||||
<textarea class="form-control no-border" rows="3" placeholder="Suggestions to leanote"></textarea>
|
||||
@@ -84,23 +53,32 @@
|
||||
POST
|
||||
</button>
|
||||
<ul class="nav nav-pills nav-sm">
|
||||
<!--
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="fa fa-camera text-muted">
|
||||
</i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="fa fa-video-camera text-muted">
|
||||
</i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
-->
|
||||
</footer>
|
||||
</section>
|
||||
-->
|
||||
|
||||
{{template "admin/footer.html" .}}
|
||||
<script>
|
||||
$(function() {
|
||||
// leanote动态
|
||||
// http://leanote.com/blog/cate/5446753cfacfaa4f56000000
|
||||
var url = "http://localhost:9000/blog/listCateLatest/54269c83e5276724ac000000";
|
||||
function renderItem(item) {
|
||||
return '<li class="list-group-item"><p><a target="_blank" href="http://leanote.com/blog/view/' + item.NoteId + '">' + item.Title + '</a></p><small class="block text-muted"><i class="fa fa-clock-o"></i> ' + goNowToDatetime(item.PublicTime) + '</small></li>';
|
||||
}
|
||||
$.getJSON(url, function(data) {
|
||||
log(data);
|
||||
if(typeof data == "object" && data.Ok) {
|
||||
var list = data.List;
|
||||
var html = "";
|
||||
for(var i = 0; i < list.length; ++i) {
|
||||
var item = list[i];
|
||||
html += renderItem(item);
|
||||
}
|
||||
$("#eventsList").html(html);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{{template "admin/end.html" .}}
|
||||
@@ -1,8 +1,21 @@
|
||||
<nav class="nav-primary hidden-xs">
|
||||
<ul class="nav" id="nav">
|
||||
|
||||
<li class="active" id="adminUserNav">
|
||||
<a href="index.html">
|
||||
<li class="active">
|
||||
<a href="/admin/index">
|
||||
<i class="fa fa-dashboard icon">
|
||||
<b class="bg-success">
|
||||
</b>
|
||||
</i>
|
||||
<span>
|
||||
Dashboard
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<li id="adminUserNav">
|
||||
<a href="#">
|
||||
<i class="fa fa-users icon">
|
||||
<b class="bg-danger">
|
||||
</b>
|
||||
@@ -22,7 +35,7 @@
|
||||
<li>
|
||||
<a href="/adminUser/index">
|
||||
<span>
|
||||
List
|
||||
Users
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
@@ -47,11 +60,65 @@
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li id="adminEmailNav">
|
||||
<a href="#layout">
|
||||
<i class="fa fa-envelope-o icon">
|
||||
<b class="bg-warning">
|
||||
</b>
|
||||
</i>
|
||||
<span class="pull-right">
|
||||
<i class="fa fa-angle-down text">
|
||||
</i>
|
||||
<i class="fa fa-angle-up text-active">
|
||||
</i>
|
||||
</span>
|
||||
<span>
|
||||
Email
|
||||
</span>
|
||||
</a>
|
||||
<ul class="nav lt">
|
||||
<li>
|
||||
<a href="/admin/t?t=email/set">
|
||||
<span>
|
||||
Configuration
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/admin/t?t=email/template">
|
||||
<span>
|
||||
Template
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/admin/t?t=email/sendToUsers">
|
||||
<span>
|
||||
Send Email to Users
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/admin/t?t=email/send">
|
||||
<span>
|
||||
Send Email
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/adminEmail/list">
|
||||
<span>
|
||||
Email Logs
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li id="adminSettingNav">
|
||||
<a href="#layout">
|
||||
<i class="fa fa-cog icon">
|
||||
<b class="bg-warning">
|
||||
<b class="bg-info">
|
||||
</b>
|
||||
</i>
|
||||
<span class="pull-right">
|
||||
@@ -66,60 +133,56 @@
|
||||
</a>
|
||||
<ul class="nav lt">
|
||||
<li>
|
||||
<a href="layout-c.html">
|
||||
<span>
|
||||
Register
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="layout-c.html">
|
||||
<span>
|
||||
Login
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="layout-r.html">
|
||||
<span>
|
||||
Email
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="layout-h.html">
|
||||
<span>
|
||||
Share
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/adminSetting/blog">
|
||||
<span>
|
||||
Blog
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/adminSetting/demo">
|
||||
<a href="/admin/t?t=setting/demo">
|
||||
<span>
|
||||
Demo User
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/admin/t?t=setting/shareNote">
|
||||
<span>
|
||||
Register Share Note
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<a href="#layout">
|
||||
<a href="#">
|
||||
<i class="fa fa-columns icon">
|
||||
<b class="bg-warning">
|
||||
<b class="bg-success">
|
||||
</b>
|
||||
</i>
|
||||
<span class="pull-right">
|
||||
<i class="fa fa-angle-down text">
|
||||
</i>
|
||||
<i class="fa fa-angle-up text-active">
|
||||
</i>
|
||||
</span>
|
||||
|
||||
<span>
|
||||
Others
|
||||
Data
|
||||
</span>
|
||||
</a>
|
||||
<ul class="nav lt">
|
||||
<li>
|
||||
<a href="/admin/t?t=data/configuration">
|
||||
<span>
|
||||
Mongodb Tool Configuration
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/adminData/index">
|
||||
<span>
|
||||
Backup & Restore
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
@@ -26,18 +26,28 @@
|
||||
|
||||
<ul class="nav navbar-nav navbar-right m-n hidden-xs nav-user">
|
||||
<li class="hidden-xs">
|
||||
<a href="/index" class="dk">
|
||||
Index
|
||||
<a href="http://leanote.com" class="dk" target="_blank">
|
||||
Leanote Home
|
||||
</a>
|
||||
</li>
|
||||
<li class="hidden-xs">
|
||||
<a href="/note" class="dk">
|
||||
<a href="https://github.com/leanote/leanote" class="dk" target="_blank">
|
||||
Leanote Github
|
||||
</a>
|
||||
</li>
|
||||
<li class="hidden-xs">
|
||||
<a href="http://lea.leanote.com" class="dk" target="_blank">
|
||||
lea++
|
||||
</a>
|
||||
</li>
|
||||
<li class="hidden-xs">
|
||||
<a href="/note" class="dk" target="_blank">
|
||||
My Note
|
||||
</a>
|
||||
</li>
|
||||
<li class="hidden-xs">
|
||||
<a href="/blog/admin" class="dk">
|
||||
Blog
|
||||
<a href="/blog/admin" class="dk" target="_blank">
|
||||
My Blog
|
||||
</a>
|
||||
</li>
|
||||
<li class="hidden-xs">
|
||||
@@ -52,6 +62,7 @@
|
||||
<!-- .aside -->
|
||||
<aside class="bg-light lter b-r aside-md hidden-print hidden-xs" id="nav">
|
||||
<section class="vbox">
|
||||
<!--
|
||||
<header class="header bg-primary lter text-center clearfix">
|
||||
<div class="btn-group">
|
||||
<div class="hidden-nav-xs">
|
||||
@@ -61,6 +72,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
-->
|
||||
|
||||
<section class="w-f scrollable">
|
||||
<div class="slim-scroll" data-height="auto" data-disable-fade-out="true"
|
||||
data-distance="0" data-size="5px" data-color="#333333">
|
||||
@@ -69,14 +82,17 @@
|
||||
<!-- / nav -->
|
||||
</div>
|
||||
</section>
|
||||
<footer class="footer lt hidden-xs b-t b-light">
|
||||
<footer class="footer lt hidden-xs b-t b-light" style="min-height: initial;
|
||||
padding: 10px 15px;text-align:center;">
|
||||
<a href="http://leanote.com" target="_blank">leanote</a> © 2014
|
||||
<!--
|
||||
<a href="#nav" data-toggle="class:nav-xs" class="pull-right btn btn-sm btn-default btn-icon">
|
||||
<i class="fa fa-angle-left text">
|
||||
</i>
|
||||
<i class="fa fa-angle-right text-active">
|
||||
</i>
|
||||
</a>
|
||||
|
||||
-->
|
||||
</footer>
|
||||
</section>
|
||||
</aside>
|
||||
@@ -84,7 +100,7 @@
|
||||
<section id="content">
|
||||
<section class="vbox">
|
||||
<section class="scrollable padder">
|
||||
<!-- 导航 -->
|
||||
<!-- 导航
|
||||
<ul class="breadcrumb no-border no-radius b-b b-light pull-in">
|
||||
<li>
|
||||
<a href="index.html">
|
||||
@@ -102,5 +118,6 @@
|
||||
Components
|
||||
</li>
|
||||
</ul>
|
||||
-->
|
||||
<!-- 主要内容区 -->
|
||||
|
||||
Reference in New Issue
Block a user