v1.0 beta init

This commit is contained in:
life
2014-10-22 16:20:45 +08:00
parent 8ae438272b
commit 593d2c2965
225 changed files with 27217 additions and 3675 deletions

View File

@@ -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">

View File

@@ -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)

View 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; /*支持IEchromeFF不支持*/
word-wrap:break-word;/*支持IEchromeFF*/
}
</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" .}}

View 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>

View 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" .}}

View 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}}

View 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" .}}

View 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" .}}

View 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" .}}

View 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" .}}

View File

@@ -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>

View 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" .}}

View File

@@ -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");
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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" .}}

View File

@@ -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>

View File

@@ -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>
-->
<!-- 主要内容区 -->