member center, blog redesign

This commit is contained in:
life committed 2014-11-09 16:24:19 +08:00
1 parent 5f186f4455
commit 274782b89e
428 files changed
+23054 -480

No files matched your search

+101
View File
@@ -0,0 +1,101 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">
{{if .page}}
修改页面
{{else}}
添加页面
{{end}}
</h3></div>
<link rel="stylesheet" href="/tinymce/skins/custom/skin.min.css" type="text/css">
<div class="row">
<div class="col-sm-10">
<form id="formData">
<section class="panel panel-default">
<div class="panel-body">
<div class="alert alert-danger" id="baseMsg" style="display: none"></div>
<input type="hidden" id="singleId" value="{{.single.SingleId.Hex}}" />
<div class="form-group">
<label>标题</label>
<input type="text" class="form-control" id="title" name="title"
value="{{.single.Title}}"
data-rules='[
{rule: "required", msg: "请输入页面标题"},
]'
data-msg_target="#baseMsg"
/>
</div>
<div class="form-group">
<label for="content1">内容</label>
<div id="popularToolbar"></div>
<textarea id="content1" name="content">{{.single.Content}}</textarea>
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="baseBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
</section>
</form>
</div>
</div>
{{template "member/footer.html" .}}
<script type="text/javascript" src="/tinymce/tinymce.min.js"></script>
<script>
var urlPrefix = "{{.siteUrl}}";
$(function() {
tinymce.init({
selector : "#content1",
content_css : [ "/css/bootstrap.css", "/css/editor/editor.css" ],
skin : "custom",
language : "{{.locale}}",
height : 300,
width : "100%",
skin : "custom",
plugins : [
"advlist autolink link leanote_image lists charmap hr ",
"searchreplace visualblocks visualchars leanote_code tabfocus",
"table contextmenu directionality textcolor paste fullpage textcolor"],
toolbar1 : "formatselect |fontselect fontsizeselect| forecolor backcolor | bold italic underline strikethrough | bullist numlist |",
menubar : false,
statusbar : false,
font_formats : "Arial=arial,helvetica,sans-serif;"
+ "Arial Black=arial black,avant garde;"
+ "Times New Roman=times new roman,times;"
+ "Courier New=courier new,courier;"
+ "Tahoma=tahoma,arial,helvetica,sans-serif;"
+ "Verdana=verdana,geneva;" + "宋体=SimSun;"
+ "新宋体=NSimSun;" + "黑体=SimHei;"
+ "微软雅黑=Microsoft YaHei",
block_formats : "Header 1=h1;Header 2=h2;Header 3=h3; Header 4=h4;Pre=pre;Paragraph=p"
});
// 基本设置
var vdPage = new vd.init("#formData");
$("#baseBtn").click(function(e) {
e.preventDefault();
if(!vdPage.valid()) {
return;
}
var data = {
singleId: $("#singleId").val(),
title : $("#title").val(),
content : getEditorContent()
}
ajaxPost("/member/blog/doAddOrUpdateSingle/", data, function(re) {
if(reIsOk(re)) {
// 添加成功后, 跳转之
art.tips("Success")
if(!data.pageId) {
location.href = "/member/blog/single";
}
} else {
art.alert(re.Msg || "error")
}
});
});
});
</script>
{{template "member/end.html" .}}
+115
View File
@@ -0,0 +1,115 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "baseInfoSet"}}</h3></div>
<div class="row">
<div class="col-sm-10">
<div id="formData">
<section class="panel panel-default">
<div class="panel-body">
<div class="alert alert-danger" id="baseMsg" style="display: none"></div>
<div class="form-horizontal" role="form" id="userBlogForm">
<div class="form-group">
<label for="title" class="col-sm-2 control-label">{{msg . "blogName"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="Title" name="Title"
placeholder="eg: leanote's blog"
value="{{if .userBlog.Title}}{{.userBlog.Title}}{{else}}{{.userInfo.Email}} 's blog{{end}}">
</div>
</div>
<div class="form-group">
<label for="logo" class="col-sm-2 control-label">{{msg . "blogLogo"}}</label>
<div class="col-sm-10">
<input type="hidden" name="Logo" id="Logo"
value="{{.userBlog.Logo}}" />
<form id="formLogo" action="{{$.siteUrl}}/file/uploadBlogLogo" method="post"
enctype="multipart/form-data" target="logoTarget">
<input type="file" class="form-control" id="logo2" name="file"
onChange='$("#formLogo").submit();' />
<div id="logoImg"
{{if .userBlog.Logo }}
{{else}}
style="display: none"{{end}}
>
<img src="{{.userBlog.Logo}}" style="height: 40px" /> <a
href="#" id="deleteLogo">{{msg . "delete"}}</a>
</div>
</form>
<iframe id="logoTarget" name="logoTarget" src="#" style="display: none"></iframe>
</div>
</div>
<div class="form-group">
<label for="subTitle" class="col-sm-2 control-label">{{msg . "blogDesc"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="SubTitle"
name="SubTitle" value="{{.userBlog.SubTitle}}"
placeholder="eg: leanote, Not Just A Notebook">
</div>
</div>
<div class="form-group">
<label for="aboutMe" class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<div id="popularToolbar"></div>
</div>
</div>
<!--
<div class="form-group">
<label for="aboutMe" class="col-sm-2 control-label">{{msg . "aboutMe"}}</label>
<div class="col-sm-10">
<textarea id="AboutMe" name="AboutMe">{{.userBlog.AboutMe}}</textarea>
</div>
</div>
-->
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="baseBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
</section>
</div>
</div>
</div>
{{template "member/footer.html" .}}
<script type="text/javascript" src="/tinymce/tinymce.min.js"></script>
<script>
var urlPrefix = "{{.siteUrl}}";
$(function() {
$("#deleteLogo").click(function() {
$("#Logo").val("");
$("#logoImg").hide();
});
// 基本设置
$("#baseBtn").click(function() {
var data = {
Title : $("#Title").val(),
SubTitle : $("#SubTitle").val(),
Logo : $("#Logo").val()
}
post("/member/blog/setUserBlogBase", data, function(ret) {
showAlert("#baseMsg", "{{msg . "saveSuccess"}}", "success");
}, this);
});
});
// filename, result, resultCode
function uploadFinish(ret) {
if (ret) {
if (ret.resultCode == '1') {
$("#logoImg img").attr("src", urlPrefix + "/" + ret.filename).parent().show();
$("#Logo").val(ret.filename);
return;
}
alert(ret.result);
return;
}
// 上传出错
alert("error");
}
</script>
{{template "member/end.html" .}}
+47
View File
@@ -0,0 +1,47 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">(笔记本)分类</h3></div>
<div class="row">
<div class="col-sm-8">
<section class="panel panel-default">
<div class="panel-body">
分类是公开为博客的笔记本
<br />
拖动可排序
<ul class="list-group gutter list-group-lg list-group-sp sortable">
{{range .notebooks}}
<li class="list-group-item" draggable="true" data-id="{{.NotebookId.Hex}}">
<span class="pull-left media-xs"><i class="fa fa-sort text-muted fa m-r-sm"></i></span>
{{.Title}}
</li>
{{end}}
</ul>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="baseBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
</section>
</div>
</div>
{{template "member/footer.html" .}}
<script type="text/javascript" src="/public/member/js/jquery.sortable.js"></script>
<script>
$(function() {
$("#baseBtn").click(function(){
var ids = [];
$(".list-group-item").each(function() {
ids.push($(this).data("id"));
});
ajaxPost("/member/blog/upateCateIds", {cateIds: ids}, function(re){
if(reIsOk(re)) {
art.tips("Success");
} else {
art.alert(re.Msg || "error");
}
});
});
});
</script>
{{template "member/end.html" .}}
+92
View File
@@ -0,0 +1,92 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">{{msg . "commentSet"}}</h3></div>
<div class="row">
<div class="col-sm-8">
<div id="formData">
<section class="panel panel-default">
<div class="panel-body">
<div class="alert alert-danger" id="baseMsg" style="display: none"></div>
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="subTitle" class="col-sm-3 control-label">{{msg . "chooseComment"}}</label>
<div class="col-sm-9">
<label>
<input type="checkbox" id="CanComment" name="CanComment"
{{if .userBlog.CanComment}}checked="checked"{{end}} > {{msg . "openComment"}}
</label>
<br />
<div id="commentSet" {{if not .userBlog.CanComment}}style="display: none"{{end}}>
<label>
<input type="radio"
name="commentType"
value="default"
{{if or (not .userBlog.CommentType) (eq .userBlog.CommentType "default")}}checked="checked"{{end}} > Default
</label>
<label>
<input type="radio" name="commentType" id="disqus"
value="disqus"
{{if eq .userBlog.CommentType "disqus"}}checked="checked"{{end}} > Disqus
</label>
<div id="disqusSet" {{if not (eq .userBlog.CommentType "disqus")}}style="display: none"{{end}}>
<label for="DisqusId">Disqus Id</label> <input type="text"
class="form-control" style="display: inline; width: 50%"
id="DisqusId" name="DisqusId"
value="{{if .userBlog.DisqusId}}{{.userBlog.DisqusId}}{{else}}leanote{{end}}">
<br />
{{msg . "disqusHelp"}}
<a target="_blank" href="http://leanote.com/blog/view/52db8463e01c530ef8000001">{{msg . "needHelp"}}</a>
</div>
</div>
</div>
</div>
</form>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="baseBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
</section>
</div>
</div>
</div>
{{template "member/footer.html" .}}
<script>
var urlPrefix = "{{.siteUrl}}";
$(function() {
// 评论
$("#baseBtn").click(function(e) {
e.preventDefault();
var data = {
CanComment : $("#CanComment").is(":checked"),
CommentType: $("input[name='commentType']:checked").val(),
DisqusId : $("#DisqusId").val(),
}
post("/member/blog/setUserBlogComment", data, function(ret) {
showAlert("#baseMsg", "{{msg . "saveSuccess"}}", "success");
}, this);
});
$("#CanComment").click(function() {
if ($(this).is(":checked")) {
$("#commentSet").show();
} else {
$("#commentSet").hide();
}
});
$("input[name='commentType']").click(function() {
if ($("input[name='commentType']:checked").val() == "disqus") {
$("#disqusSet").show();
} else {
$("#disqusSet").hide();
}
});
});
</script>
{{template "member/end.html" .}}
+76
View File
@@ -0,0 +1,76 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">分页与排序设置</h3></div>
<div class="row">
<div class="col-sm-8">
<div id="formData">
<section class="panel panel-default">
<div class="panel-body">
<div class="alert alert-danger" id="domainMsg" style="display: none"></div>
<form class="form-horizontal" role="form" id="dataFrom">
<div class="form-group">
<label for="perPageSize" class="col-sm-2 control-label">每页记录数</label>
<div class="col-sm-10">
<input type="text" class="form-control"
placeholder="10"
id="perPageSize"
name="perPageSize"
value="{{.userBlog.PerPageSize}}" />
</div>
</div>
<div class="form-group">
<label for="perPageSize" class="col-sm-2 control-label">排序字段</label>
<div class="col-sm-10">
<select class="form-control"
id="sortField"
name="sortField"
value="">
<option value="PublicTime" {{if eq $.userBlog.SortField "PublicTime"}}selected{{end}}>公开为博客时间</option>
<option value="CreatedTime" {{if eq $.userBlog.SortField "CreatedTimeTime"}}selected{{end}}>创建时间</option>
<option value="UpdatedTime" {{if eq $.userBlog.SortField "UpdatedTime"}}selected{{end}}>更新时间</option>
<option value="Title" {{if eq $.userBlog.SortField "Title"}}selected{{end}}>标题</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">排序类型</label>
<div class="col-sm-10" style="margin-top: 5px;">
<label><input type="radio" name="isAsc" value="0" {{if not .userBlog.IsAsc}}checked{{end}}> 降序</label>
<label><input type="radio" name="isAsc" value="1" {{if .userBlog.IsAsc}}checked{{end}}> 升序</label>
</div>
</div>
</form>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="baseBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
</section>
</div>
</div>
</div>
{{template "member/footer.html" .}}
<script>
var urlPrefix = "{{.siteUrl}}";
$(function() {
// domain
$("#baseBtn").click(function(e) {
e.preventDefault();
var data = $("#dataFrom").serialize();
post("/member/blog/setUserBlogPaging", data, function(re) {
if(re.Ok) {
showAlert("#domainMsg", "{{msg . "saveSuccess"}}", "success");
} else {
showAlert("#domainMsg", re.Msg, "danger");
}
}, this);
});
});
</script>
{{template "member/end.html" .}}
+70
View File
@@ -0,0 +1,70 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">页面</h3></div>
<div class="row">
<div class="col-sm-8">
<section class="panel panel-default">
<div class="panel-body">
<p>
您可以添加多个单页面
<a href="/member/blog/addOrUpdateSingle" id="addBtn" class="btn btn-success">添加页面</a>
</p>
<ul class="list-group gutter list-group-lg list-group-sp sortable">
{{range .singles}}
<li class="list-group-item" draggable="true" data-id="{{.SingleId}}">
<span class="pull-right">
<a href="/member/blog/addOrUpdateSingle?singleId={{.SingleId}}"><i class="fa fa-pencil icon-muted fa-fw m-r-xs page-edit" data-id="{{.SingleId}}"></i></a>
<a href="#"><i class="fa fa-times icon-muted fa-fw page-delete" data-id="{{.SingleId}}"></i></a>
</span>
<span class="pull-left media-xs"><i class="fa fa-sort text-muted fa m-r-sm"></i></span>
<div class="clear">
{{.Title}}
</div>
</li>
{{end}}
</ul>
</div>
{{if .singles}}
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="baseBtn" class="btn btn-success">保存排序</button>
</footer>
{{end}}
</section>
</div>
</div>
{{template "member/footer.html" .}}
<script type="text/javascript" src="{{.siteUrl}}/public/member/js/jquery.sortable.js"></script>
<script>
$(function() {
$("#baseBtn").click(function(){
var ids = [];
$(".list-group-item").each(function() {
ids.push($(this).data("id"));
});
ajaxPost("/member/blog/sortSingles", {singleIds: ids}, function(re){
if(reIsOk(re)) {
art.tips("Success");
} else {
art.alert(re.Msg || "error");
}
});
});
$(".page-delete").click(function() {
var singleId = $(this).data('id');
art.confirm("Are you sure ?", function() {
ajaxPost("/member/blog/deleteSingle", {singleId: singleId}, function(re){
if(reIsOk(re)) {
art.tips("Success");
location.reload();
} else {
art.alert(re.Msg || "error");
}
});
});
});
});
</script>
{{template "member/end.html" .}}
+221
View File
@@ -0,0 +1,221 @@
{{template "member/top.html" .}}
<div class="m-b-md clearfix">
<h3 class="m-b-none">
{{msg . "themeSet"}}
<small>(<a href="http://blog.leanote.com/post/545f1a5c380782565e000000" target="_blank">{{msg . "needHelp"}}</a>)</small>
</h3>
</div>
<div class="row">
<div class="col-sm-12 theme-container">
<section class="panel panel-default">
<div class="panel-body">
<div>
<form id="uploadAvatar" method="post" action="/member/blog/importTheme" enctype="multipart/form-data">
<div id="dropAvatar" class="dropzone">
<a class="btn btn-default btn-new" href="/member/blog/newTheme"><span class="fa fa-plus"></span> 新建主题</a>
<a class="btn btn-success btn-choose-file">
<span class="fa fa-upload"></span> 导入主题(.zip)
</a>
<input type="file" name="file" multiple/>
<div id="avatarUploadMsg"></div>
</div>
</form>
</div>
<p>
当前主题:
</p>
<ul class="themes">
<li class="theme">
<a class="choose-theme" data-method="put" href="#" rel="nofollow">
<div class="theme-thumb thumb active-theme">
<img src="/{{.activeTheme.Path}}/images/screenshot.png" alt="preview">
</div>
<span class="theme-title">{{.activeTheme.Name}}</span>
</a>
<span class="theme-author">
By: <a href="{{.activeTheme.AuthorUrl}}" target="_blank">{{.activeTheme.Author}}</a>
</span>
<div class="theme-btns">
<div class="btn-group" data-id="{{.activeTheme.ThemeId.Hex}}">
<a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> 导出</a>
<a class="btn btn-default btn-sm" href="{{$.siteUrl}}/preview?themeId={{.activeTheme.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> 预览</a>
<a class="btn btn-primary btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{if .activeTheme.ThemeId}}{{.activeTheme.ThemeId.Hex}}{{end}}"><span class="fa fa-pencil"></span> 编辑</a>
</div>
</div>
</li>
</ul>
<hr />
<p>
我的其它主题:
</p>
<ul class="themes">
{{range $.otherThemes}}
{{if .ThemeId}}
<li class="theme">
<a class="choose-theme" data-method="put" href="#" rel="nofollow">
<div class="theme-thumb thumb">
<img src="/{{.Path}}/images/screenshot.png" alt="preview">
</div>
<span class="theme-title">{{.Name}}</span>
</a>
<span class="theme-author">
By: <a href="{{.AuthorUrl}}" target="_blank">{{.Author}}</a>
</span>
<div class="theme-btns">
<div class="btn-group" data-id="{{.ThemeId.Hex}}">
<a class="btn btn-default btn-sm btn-delete" data-loading-text="..."><span class="fa fa-remove"></span> 删除</a>
<a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> 导出</a>
<a class="btn btn-default btn-sm" href="{{$.siteUrl}}/preview?themeId={{.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> 预览</a>
<a class="btn btn-default btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{.ThemeId.Hex}}"><span class="fa fa-pencil"></span> 编辑</a>
<a class="btn btn-primary btn-sm btn-active" data-loading-text="..."><span class="fa fa-check"></span> 使用</a>
{{if $.isAdmin}}
<a class="btn btn-default btn-sm btn-public" data-loading-text="...">
{{if .IsDefault}}
公开
{{else}}
私有
{{end}}
</a>
{{end}}
</div>
</div>
</li>
{{end}}
{{else}}
无
{{end}}
</ul>
<hr />
<p>
leanote主题市场:
</p>
<ul class="themes">
{{range $.optionThemes}}
<li class="theme">
<a class="choose-theme" data-method="put" href="#" rel="nofollow">
<div class="theme-thumb thumb">
<img src="/{{.Path}}/images/screenshot.png" alt="preview">
</div>
<span class="theme-title">{{.Name}}</span>
</a>
<span class="theme-author">
By: <a href="{{.AuthorUrl}}" target="_blank">{{.Author}}</a>
</span>
<p class="theme-btns" data-id="{{.ThemeId.Hex}}">
<a class="btn btn-primary btn-sm btn-install"><span class="fa fa-gear"></span> 安装</a>
</p>
</li>
{{end}}
</ul>
</div>
</section>
</div>
</div>
{{template "member/footer.html" .}}
<script src="/js/require.js"></script>
<script>
var urlPrefix = "{{.siteUrl}}";
$(function() {
// 使用主题
$(".btn-active").click(function() {
var id = $(this).parent().data('id');
var t = $(this);
t.button("loading");
ajaxPost("/member/blog/activeTheme", {themeId: id}, function(re) {
t.button("reset");
if(reIsOk(re)) {
art.tips("Success");
location.reload();
} else {
art.alert("Error");
}
});
});
// 导出主题
$(".btn-export").click(function() {
var id = $(this).parent().data('id');
var t = $(this);
window.open("/member/blog/exportTheme?themeId=" + id);
});
// 删除主题
$(".btn-delete").click(function() {
var id = $(this).parent().data('id');
var t = $(this);
art.confirm("Are you sure ?", function() {
t.button("loading");
ajaxPost("/member/blog/deleteTheme", {themeId: id}, function(re) {
t.button("reset");
if(reIsOk(re)) {
art.tips("Success");
location.reload();
} else {
art.alert("Error");
}
});
});
});
// 安装主题
$(".btn-install").click(function() {
var id = $(this).parent().data('id');
var t = $(this);
art.confirm("Are you sure ?", function() {
t.button("loading");
ajaxPost("/member/blog/installTheme", {themeId: id}, function(re) {
t.button("reset");
if(reIsOk(re)) {
art.tips("Success");
location.reload();
} else {
art.alert("Error");
}
});
});
});
{{if .isAdmin}}
// 只有管理员才有公开主题
$(".btn-public").click(function() {
var id = $(this).parent().data('id');
var t = $(this);
art.confirm("Are you sure ?", function() {
t.button("loading");
ajaxPost("/member/blog/publicTheme", {themeId: id}, function(re) {
t.button("reset");
if(reIsOk(re)) {
art.tips("Success");
location.reload();
} else {
art.alert("Error");
}
});
});
});
{{end}}
});
// 导入主题
require.config({
baseUrl: '/public',
paths: {
'import_theme': 'js/app/import_theme',
'jquery.ui.widget': 'tinymce/plugins/leaui_image/public/js/jquery.ui.widget',
'fileupload': '/tinymce/plugins/leaui_image/public/js/jquery.fileupload',
'iframe-transport': '/tinymce/plugins/leaui_image/public/js/jquery.iframe-transport'
},
shim: {
'fileupload': {deps: ['jquery.ui.widget', 'iframe-transport']}
}
});
$(function() {
require(['import_theme'], function(import_theme) {});
});
</script>
{{template "member/end.html" .}}
+334
View File
@@ -0,0 +1,334 @@
{{template "member/top.html" .}}
<div class="m-b-md">
<h3 class="m-b-none">
{{if .isNew}}
新建主题
{{else}}
编辑主题
-
{{.theme.Name}}
{{end}}
<a class="btn btn-default" href="{{$.siteUrl}}/preview?themeId={{.themeId}}" target="_blank"><span class="fa fa-eye"></span> 预览</a>
</h3>
</div>
<style>
#tplContent * {
font-family: Monaco, Menlo, 'Ubuntu Mono', Consolas, source-code-pro, monospace;
}
.image-list {
list-style: none;
padding: 0;
}
.image-list li {
display: inline-block;
margin-right: 5px;
text-align: center;
}
.image-list li .thumb {
width: 100px;
height: 100px;
line-height: 100px;
overflow: hidden;
border: 1px solid #ccc;
padding: 3px;
border-radius: 5px;
}
.op {
text-align: center;
}
</style>
<div class="row">
<div class="col-sm-3">
<section class="panel panel-default">
<header class="panel-heading">
模板, 样式, 脚本:
</header>
<div class="panel-body" style="height:430px;overflow: auto;">
<div class="list-group bg-white file-list">
{{range .myTpls}}
<a href="#" class="list-group-item " data-file="{{.}}">
<i class="fa fa-remove icon-muted remove-file" title="delete file" ></i>
{{.}}
<span class="badge"></span>
</a>
{{end}}
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<a class="btn btn-default" id="newFile">新建文件</a>
</footer>
</section>
</div>
<div class="col-sm-9">
<section class="panel panel-default">
<header class="panel-heading">
当前文件: <span id="curTpl">header.html</span>
<span id="msg"></span>
</header>
<div class="panel-body">
<div id="tplContent" class="form-control" style="width: 100%; height: 400px;"></div>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="saveBtn" class="btn btn-success">{{msg . "save"}}</button>
</footer>
</section>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<section class="panel panel-default">
<header class="panel-heading">
图片: images/
</header>
<div class="panel-body">
<ul class="image-list" id="imageList">
</ul>
</div>
<footer class="panel-footer text-right bg-light lter">
<form id="formLogo" action="/member/blog/uploadThemeImage" method="post"
enctype="multipart/form-data" target="logoTarget">
<input type="hidden" name="themeId" value="{{.themeId}}" />
<input type="file" class="form-control" id="logo2" name="file"
onChange='$("#formLogo").submit();' />
</form>
<iframe id="logoTarget" name="logoTarget" src="#" style="display: none"></iframe>
</footer>
</section>
</div>
</div>
{{template "member/footer.html" .}}
<script src="/public/member/js/ace/ace.js" type="text/javascript"></script>
<script>
var editor = ace.edit("tplContent");
editor.setTheme("ace/theme/tomorrow");
var urlPrefix = "{{.siteUrl}}";
var userId = "{{.userInfo.UserId.Hex}}";
var themeId = "{{.themeId}}";
var themeBasePath = "/{{$.theme.Path}}";
var theme = {
cache: {}, // filename => content
curTplO: $("#curTpl"),
tplContentO: $("#tplContent"),
saveBtnO: $("#saveBtn"),
newFileO: $("#newFile"),
curTpl: "",
tplInfos: {"header.html": "头部", "footer.html": "底部", "index.html": "首页", "cate.html": "分类页", "search.html": "搜索页", "single.html": "单页", "archive.html": "归档页", "view.html": "详情页", "tags.html": "标签页", "tag_posts.html": "标签博客", "comment.html": "分享评论", "404.html":"404", "theme.json": "主题配置"},
init: function() {
var self = this;
self.showTplInfo();
$(".file-list").on("click", "a", function() {
$(".file-list a").removeClass("active");
var filename = $(this).data('file');
self.saveCurContent(); // 保存当前的
self.renderTpl(filename); // 再渲染
$(this).addClass("active");
});
self.renderTpl("header.html");
$(".file-list a").eq(0).addClass("active");
self.saveBtnO.click(function(){
self.saveCurContent($(this));
});
self.removeFile();
self.newFile();
self.initImage();
},
removeFile: function() {
var self = this;
$(".file-list").on("click", ".remove-file", function(e) {
e.stopPropagation();
var $a = $(this).closest("a");
var file = $a.data('file');
art.confirm("Are you sure to delete " + file + " ?", function() {
ajaxPost("/member/blog/deleteTpl", {themeId: themeId, filename: file}, function(re) {
if(reIsOk(re)) {
art.tips("Success");
$a.remove();
if(self.curTpl == file) {
$(".file-list a").eq(0).trigger("click");
}
} else {
art.alert(re.Msg);
}
})
});
});
},
newFile: function() {
var self = this;
self.newFileO.click(function() {
art.prompt("文件名", function(file){
if(!file) {
return;
}
var t = '<a href="#" class="list-group-item " data-file="' + file + '"> <i class="fa fa-remove icon-muted remove-file" title="delete file" ></i> ' + file + '<span class="badge"></span></a>';
$(".file-list").append(t);
});
});
},
showTplInfo: function() {
var self = this;
$(".file-list a").each(function() {
var file = $(this).data("file");
var info = "";
info = self.tplInfos[file];
if(!info) {
if(file.indexOf(".css") > 0) {
info = "样式";
} else if(file.indexOf(".js") > 0) {
info = "脚本";
} else if(file.indexOf(".html") > 0) {
info = "模板";
}
} else {
$(this).find(".remove-file").remove();
}
$(this).find(".badge").text(info);
});
},
msgO: $("#msg"),
saveCurContent: function(t) {
var self = this;
var content = editor.getValue()
var filename = self.curTpl;
// 之前的内容是否有改动
if(self.cache[filename] == content) {
return;
}
if(t) {
t.button("loading");
}
self.msgO.html("正在保存...");
ajaxPost("/member/blog/updateTplContent", {themeId: themeId, filename: self.curTpl, content: content}, function(re) {
if(t) {
t.button("reset");
}
if(reIsOk(re)) {
self.cache[filename] = content;
// art.tips("Success");
self.msgO.html("保存成功")
setTimeout(function() {
self.msgO.html("");
}, 3000);
} else {
art.alert(re.Msg);
}
});
},
renderContent: function(name, content) {
var self = this;
self.curTplO.html(name);
self.curTpl = name; // 这里设计
var lang = "html";
if(name.indexOf(".js") > 0 || name.indexOf(".json") > 0) {
lang = "javascript";
} else if(name.indexOf(".css") > 0) {
lang = "css";
}
editor.setValue(content);
editor.session.setMode("ace/mode/" + lang);
editor.gotoLine(1);
setTimeout(function() {
editor.gotoLine(1);
}, 200);
},
renderTpl: function(name) {
var self = this;
var content = "";
self.curTpl = name; // 这里设置
if(self.cache[name]) {
content = self.cache[name];
self.renderContent(name, content);
return;
}
ajaxGet("/member/blog/getTplContent", {themeId: themeId, filename: name}, function(re){
if(reIsOk(re)) {
self.cache[name] = re.Item;
self.renderContent(name, re.Item);
}
});
},
//-----------------
// theme images
imageListO: $("#imageList"),
initImage: function() {
var self = this;
self.reRenderImages();
self.imageListO.on("click", ".delete-image", function(re) {
var file = $(this).data('image');
var t = this;
art.confirm("Are you sure to delete it " + file + " ?", function() {
ajaxPost("/member/blog/deleteThemeImage", {themeId: themeId, filename: file}, function(re) {
if(reIsOk(re)) {
art.tips("Success");
$(t).closest("li").remove();
} else {
art.alert(re.Msg);
}
});
});
});
},
renderImages: function(images) {
var self = this;
if(!images || images.length == 0) {
self.imageListO.html("无图片");
return;
}
var html = "";
for(var i = 0; i < images.length; ++i) {
var image = images[i];
var path = themeBasePath + "/images/" + image;
html += '<li><div class="thumb"><img src="' + path + '"></div><div class="op"><span>' + image + '</span><br /><a class="btn btn-xs btn-warning delete-image" data-image="' + image + '"><span class="fa fa-remove"></span></a></div></li>';
}
self.imageListO.html(html);
},
reRenderImages: function() {
var self = this;
ajaxGet("/member/blog/listThemeImages", {themeId: themeId}, function(re) {
if(reIsOk(re)) {
var images = re.List;
self.renderImages(images);
}
});
},
}
$(function() {
theme.init();
$(window).keydown(function(e) {
if (e.keyCode == 83 && (e.ctrlKey || e.metaKey)) {
e.preventDefault();
theme.saveBtnO.trigger("click");
}
});
});
// filename, result, resultCode
function uploadFinish(ret) {
if (ret) {
if (ret.resultCode == '1') {
theme.reRenderImages();
art.tips(ret.result)
return;
}
art.alert(ret.result);
return;
}
// 上传出错
art.alert("error");
}
</script>
{{template "member/end.html" .}}
+3
View File
@@ -0,0 +1,3 @@
</body>
</html>
+35
View File
@@ -0,0 +1,35 @@
</div>
</section>
</section>
</section>
</section>
</section>
</section>
<script src="/js/jquery-1.9.0.min.js"></script>
<script src="/js/bootstrap.js"></script>
<script src="/js/i18n/msg.{{.locale}}.js"></script>
<script src="/public/admin/js/artDialog/jquery.artDialog.js?skin=default"></script>
<script src="/public/js/common.js"></script>
<script src="/public/member/js/member.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
}
if(fullPath == "/member/index") {
fullPath = "/member";
}
$("#nav > li").removeClass("active");
// alert(fullPath);
// 自己
var $thisLi = $('#nav a[href="' + fullPath + '"]').parent();
$thisLi.addClass("active");
// 父也active
$thisLi.parent().parent().addClass('active');
});
</script>
+81
View File
@@ -0,0 +1,81 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">{{.userInfo.Username}}, 欢迎来到leanote</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-warning"></i>
<i class="fa fa-file-o fa-stack-1x text-white"></i>
</span>
<a class="clear" href="javascript:;">
<span class="h3 block m-t-xs"><strong>{{.countNote}}</strong></span>
<small class="text-muted text-uc">{{msg . "note"}}</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="javascript:;">
<span class="h3 block m-t-xs"><strong>{{.countBlog}}</strong></span>
<small class="text-muted text-uc">{{msg . "blog"}}</small>
</a>
</div>
</div>
</section>
<!-- 最新动态 -->
<section class="panel panel-default">
<h4 class="font-thin padder">
Leanote 动态
</h4>
<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>
</form>
<footer class="panel-footer bg-light lter">
<button class="btn btn-info pull-right btn-sm">
POST
</button>
<ul class="nav nav-pills nav-sm">
</footer>
</section>
-->
{{template "member/footer.html" .}}
<script>
$(function() {
// leanote动态
var url = "https://leanote.com/blog/listCateLatest/5446753cfacfaa4f56000000";
function renderItem(item) {
return '<li class="list-group-item"><p><a target="_blank" href="http://leanote.com/blog/post/' + item.NoteId + '">' + item.Title + '</a></p><small class="block text-muted"><i class="fa fa-clock-o"></i> ' + goNowToDatetime(item.PublicTime) + '</small></li>';
}
$.ajax({
dataType: "jsonp",//跨域访问 dataType 必须是jsonp 类型。
url: url,
type: "GET",
jsonp: "callback",
jsonpCallback: "jsonpCallback",
success: function(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 "member/end.html" .}}
+137
View File
@@ -0,0 +1,137 @@
<nav class="nav-primary hidden-xs">
<ul class="nav" id="nav">
<li class="active">
<a href="/member">
<i class="fa fa-dashboard icon">
<b class="bg-success">
</b>
</i>
<span>
{{msg . "memberCenter"}}
</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-user icon">
<b class="bg-danger">
</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>
帐户信息
</span>
</a>
<!-- 导航列表 -->
<ul class="nav lt">
{{if $.userInfo.Email}}
<li>
<a href="/member/user/username">
<span>
用户名
</span>
</a>
</li>
<li>
<a href="/member/user/avatar">
<span>
头像
</span>
</a>
</li>
<li>
<a href="/member/user/email">
<span>
邮箱
</span>
</a>
</li>
<li>
<a href="/member/user/password">
<span>
密码
</span>
</a>
</li>
{{else}}
<li>
<a href="/member/user/add_account">
<span>
添加leanote帐户
</span>
</a>
</li>
{{end}}
</ul>
</li>
<li id="adminEmailNav">
<a href="#layout">
<i class="fa fa-bold 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>
博客
</span>
</a>
<ul class="nav lt">
<li>
<a href="/member/blog/base">
<span>
基本信息
</span>
</a>
</li>
<li>
<a href="/member/blog/comment">
<span>
评论
</span>
</a>
</li>
<li>
<a href="/member/blog/cate">
<span>
分类
</span>
</a>
</li>
<li>
<a href="/member/blog/single">
<span>
单页面
</span>
</a>
</li>
<li>
<a href="/member/blog/paging">
<span>
分页与排序设置
</span>
</a>
</li>
<li>
<a href="/member/blog/theme">
<span>
主题
</span>
</a>
</li>
</ul>
</li>
</ul>
</nav>
+118
View File
@@ -0,0 +1,118 @@
<!DOCTYPE html>
<html lang="en" class="app">
<head>
<meta charset="utf-8" />
<title>
{{.title}}
</title>
<meta name="description" content="leanote member center"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<link href="/css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet">
<link href="/public/admin/css/bootstrap.3.2.0.min.css" rel="stylesheet">
<link href="/public/member/css/member.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="/public/admin/js/ie/html5shiv.js"></script>
<script src="/public/admin/js/ie/respond.min.js"></script>
<script src="/public/admin/js/ie/excanvas.js"></script>
<![endif]-->
</head>
<body class="">
<section class="vbox">
<header class="bg-dark dk header navbar navbar-fixed-top-xs">
<div class="navbar-header aside-md" id="logo">
<a href="/member" class="navbar-brand clearfix" data-toggle="fullscreen">
<span class="logo-icon"></span>
<span class="logo-title">{{msg . "memberCenter"}}</span>
</a>
</div>
<ul class="nav navbar-nav navbar-right m-n hidden-xs nav-user">
<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">
{{msg . "myNote"}}
</a>
</li>
<li class="hidden-xs">
<a href="/blog/{{$.session.Username}}" class="dk" target="_blank">
{{msg . "myBlog"}}
</a>
</li>
<li class="hidden-xs">
<a href="/logout" class="dk">
{{msg . "logout"}}
</a>
</li>
<li class="hidden-xs">
<img alt="{{.userInfo.Username}}" title="{{.userInfo.Username}}" src="{{if .userInfo.Logo}}{{.userInfo.Logo}}{{else}}/images/blog/default_avatar.png{{end}}" id="myAvatar"/>
</li>
</ul>
</header>
<section>
<section class="hbox stretch">
<!-- .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">
<a class="btn btn-sm btn-primary">
Welcome, admin!
</a>
</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">
<!-- nav -->
{{template "member/nav.html" .}}
<!-- / nav -->
</div>
</section>
<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>
<!-- /.aside -->
<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">
<i class="fa fa-home">
</i>
Home
</a>
</li>
<li>
<a href="#">
Elements
</a>
</li>
<li class="active">
Components
</li>
</ul>
-->
<!-- 主要内容区 -->
+80
View File
@@ -0,0 +1,80 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">用户名设置</h3></div>
<div class="row">
<div class="col-sm-6">
<form id="formData">
<section class="panel panel-default">
<div class="panel-body">
<div class="alert alert-danger" id="thirdAccountMsg" style="display: none"></div>
{{msg . "thirdCreateAcountTips"}}
<div class="form-group">
<label class="control-label" for="thirdEmail">{{msg . "email"}}</label>
<input type="text" class="form-control" id="thirdEmail" name="email"
data-rules='[
{rule: "required", msg: "inputEmail"},
{rule: "email", msg: "errorEmail"}
]'
data-msg_target="#thirdAccountMsg"
>
</div>
<div class="form-group">
<label class="control-label" for="thirdPwd">{{msg . "password"}}</label>
<input type="password" class="form-control" id="thirdPwd" name="pwd"
data-rules='[
{rule: "required", msg: "inputPassword"},
{rule: "password", msg: "errorPassword"}
]'
data-msg_target="#thirdAccountMsg"
/>
{{msg . "passwordTips"}}
</div>
<div class="form-group">
<label class="control-label" for="thirdPwd2">{{msg . "password2"}}</label>
<input type="password" class="form-control" id="thirdPwd2" name="pwd2"
data-rules='[
{rule: "required", msg: "inputPassword2"},
{rule: "equalTo", data:"#thirdPwd", msg: "confirmPassword"}
]'
data-msg_target="#thirdAccountMsg"
>
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="accountBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
</section>
</form>
</div>
</div>
{{template "member/footer.html" .}}
<script>
$(function() {
// 第三方账号设置
var acountVd = new vd.init("#formData");
$("#accountBtn").click(function(e) {
e.preventDefault();
if(!acountVd.valid()) {
return;
}
var email = $("#thirdEmail").val();
var pwd = $("#thirdPwd").val();
var pwd2 = $("#thirdPwd2").val();
post("/user/addAccount", {email: email, pwd: pwd}, function(ret) {
if(ret.Ok) {
showAlert("#thirdAccountMsg", getMsg("createAccountSuccess"), "success");
setTimeout(function() {
location.reload();
}, 1000);
} else {
showAlert("#thirdAccountMsg", ret.Msg || getMsg("createAccountFailed"), "danger");
}
}, this);
});
});
</script>
{{template "member/end.html" .}}
+53
View File
@@ -0,0 +1,53 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">头像设置</h3></div>
<div class="row">
<div class="col-sm-6">
<form id="uploadAvatar" method="post" action="/file/uploadAvatar" enctype="multipart/form-data">
<section class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<div id="dropAvatar" class="dropzone">
<div>
<img src="{{if .userInfo.Logo}}{{.userInfo.Logo}}{{else}}/images/blog/default_avatar.png{{end}}" id="avatar"/>
</div>
<a class="btn btn-success btn-choose-file">
<span class="fa fa-upload"></span> Choose Image
</a>
<input type="file" name="file" multiple/>
</div>
<div id="avatarUploadMsg">
</div>
</div>
</div>
</section>
</form>
</div>
</div>
{{template "member/footer.html" .}}
<script src="/js/require.js"></script>
<script>
var UrlPrefix = "{{.siteUrl}}"; // 为了发weibo
require.config({
baseUrl: '/public',
paths: {
// ajax upload image/attach
'attachment_upload': 'js/app/attachment_upload',
'jquery.ui.widget': 'tinymce/plugins/leaui_image/public/js/jquery.ui.widget',
'fileupload': '/tinymce/plugins/leaui_image/public/js/jquery.fileupload',
'iframe-transport': '/tinymce/plugins/leaui_image/public/js/jquery.iframe-transport'
},
shim: {
'fileupload': {deps: ['jquery.ui.widget', 'iframe-transport']}
}
});
$(function() {
require(['attachment_upload'], function(attachment_upload) {});
});
</script>
{{template "member/end.html" .}}
+117
View File
@@ -0,0 +1,117 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">邮箱设置</h3></div>
<div class="row">
<div class="col-sm-6">
<form id="formData">
<section class="panel panel-default">
<div class="panel-body">
{{msg . "currentEmail" .userInfo.Email}}
<br />
{{if .userInfo.Verified}}
<span class="label label-green">{{msg . "verified"}}</span>
{{else}}
<span class="label label-red">{{msg . "unVerified"}}</span>
<a class="raw nowToActive">{{msg . "verifiedNow"}}</a>
{{msg . "or"}}
<a class="raw reSendActiveEmail">{{msg . "resendVerifiedEmail"}}</a>
{{end}}
<div class="alert alert-danger" id="emailMsg" style="display: none"></div>
<div class="form-group">
<label>{{msg . "email"}}</label>
<input type="text" class="form-control"
id="email"
data-rules='[
{rule: "required", msg: "inputEmail"},
{rule: "email", msg: "errorEmail"}
]'
data-msg_target="#emailMsg"
/>
{{msg . "updateEmailTips"}}
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="emailBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
</section>
</form>
</div>
<!-- 激活邮件 -->
<div class="modal fade bs-modal-sm" id="reSendActiveEmailDialog" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" class="modalTitle">{{msg . "sendVerifiedEmail"}}</h4>
</div>
<div class="modal-body">
<div style="max-height: 300px; padding: 5px 0; text-align: center; overflow-y: auto; overflow-x: hidden" class="weibo">
<span class="text">
<img src="/images/loading-24.gif"/>
{{msg . "emailInSending"}} {{.userInfo.Email}}...
</span>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{msg . "close"}}</button>
<button type="button" class="btn btn-success viewEmailBtn disabled">{{msg . "checkEmail"}}</button>
</div>
</div>
</div>
</div>
</div>
{{template "member/footer.html" .}}
<script>
$(function() {
// 修改邮箱
var emailVd = new vd.init("#formData");
$("#emailBtn").click(function(e) {
e.preventDefault();
if(!emailVd.valid()) {
return;
}
var email = $("#email").val();
post("/user/updateEmailSendActiveEmail", {email: email}, function(e) {
if(e.Ok) {
var url = getEmailLoginAddress(email);
showAlert("#emailMsg", getMsg("verifiedEmaiHasSent") +" <a href='" + url + "' target='_blank'>" + getMsg("checkEmail") + "</a>", "success");
} else {
showAlert("#emailMsg", e.Msg || getMsg("emailSendFailed"), "danger");
}
}, "#emailBtn");
});
// 重新发送
$(".reSendActiveEmail").click(function() {
// 弹框出来
showDialog2("#reSendActiveEmailDialog", {postShow: function() {
ajaxGet("/user/reSendActiveEmail", {}, function(ret) {
if (typeof ret == "object" && ret.Ok) {
$("#reSendActiveEmailDialog .text").html(getMsg("sendSuccess"))
$("#reSendActiveEmailDialog .viewEmailBtn").removeClass("disabled");
$("#reSendActiveEmailDialog .viewEmailBtn").click(function() {
hideDialog();
var url = getEmailLoginAddress("{{.userInfo.Email}}");
window.open(url, "_blank");
});
} else {
$("#reSendActiveEmailDialog .text").html(getMsg("sendFailed"))
}
});
}});
});
// 现在去验证
$(".nowToActive").click(function() {
var url = getEmailLoginAddress("{{.userInfo.Email}}");
window.open(url, "_blank");
});
});
</script>
{{template "member/end.html" .}}
+74
View File
@@ -0,0 +1,74 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">用户名设置</h3></div>
<div class="row">
<div class="col-sm-6">
<form id="formData">
<section class="panel panel-default">
<div class="panel-body">
<div class="alert alert-danger" id="pwdMsg" style="display: none"></div>
<div class="form-group">
<label class="control-label" for="oldPwd">{{msg . "oldPassword"}}</label>
<input type="password" class="form-control" id="oldPwd" name="oldPwd"
data-rules='[
{rule: "required", msg: "inputPassword"}
]'
data-msg_target="#pwdMsg"
/>
</div>
<div class="form-group">
<label class="control-label" for="pwd">{{msg . "newPassword"}}</label>
<input type="password" class="form-control" id="pwd" name="pwd"
data-rules='[
{rule: "required", msg: "inputNewPassword"},
{rule: "password", msg: "errorPassword"}
]'
data-msg_target="#pwdMsg"
>
{{msg . "passwordTips"}}
</div>
<div class="form-group">
<label class="control-label" for="pwd2">{{msg . "password2"}}</label>
<input type="password" class="form-control" id="pwd2" name="pwd2"
data-rules='[
{rule: "required", msg: "inputPassword2"},
{rule: "equalTo", data:"#pwd", msg: "confirmPassword"}
]'
data-msg_target="#pwdMsg"
/>
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="pwdBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
</section>
</form>
</div>
</div>
{{template "member/footer.html" .}}
<script>
$(function() {
// 修改密码
var updatePwdVd = new vd.init("#formData");
$("#pwdBtn").click(function(e) {
e.preventDefault();
if(!updatePwdVd.valid()) {
return;
}
var oldPwd = $("#oldPwd").val();
var pwd = $("#pwd").val();
post("/user/updatePwd", {oldPwd: oldPwd, pwd: pwd}, function(e) {
if(e.Ok) {
showAlert("#pwdMsg", getMsg("updatePasswordSuccess"), "success");
} else {
showAlert("#pwdMsg", e.Msg, "danger");
}
}, "#pwdBtn");
});
});
</script>
{{template "member/end.html" .}}
+57
View File
@@ -0,0 +1,57 @@
{{template "member/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">用户名设置</h3></div>
<div class="row">
<div class="col-sm-6">
<form id="formData">
<section class="panel panel-default">
<div class="panel-body">
<div class="alert alert-danger" id="usernameMsg" style="display: none"></div>
<div class="form-group">
<label>{{msg . "username"}}</label>
<input type="text" class="form-control" id="username"
value="{{.userInfo.Username}}"
data-rules='[
{rule: "required", msg: "inputUsername"},
{rule: "noSpecialChars", msg: "noSpecialChars"},
{rule: "minLength", data: 4, msg: "minLength", msgData: 4}
]'
data-msg_target="#usernameMsg"
/>
{{msg . "setUsernameTips" .userInfo.Email}}
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="usernameBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
</section>
</form>
</div>
</div>
{{template "member/footer.html" .}}
<script>
$(function() {
//-------------
var usernameVd = new vd.init("#formData");
$("#usernameBtn").click(function(e) {
e.preventDefault();
if(!usernameVd.valid()) {
return;
}
var username = $("#username").val();
post("/user/updateUsername", {username: username}, function(ret) {
if(ret.Ok) {
showAlert('#usernameMsg', getMsg("updateUsernameSuccess"), "success");
} else {
showAlert('#usernameMsg', ret.Msg || getMsg("usernameIsExisted"), "danger");
}
}, "#usernameBtn");
});
});
</script>
{{template "member/end.html" .}}
View File
Whitespace-only changes.
+13 -15
View File
@@ -136,30 +136,28 @@ function log(o) {
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu li-a" role="menu">
<li role="presentation" id="setInfo">
<a>
<i class="fa fa-info"></i>
{{msg . "accountSetting"}}
</a>
</li>
<li role="presentation" id="setAvatarMenu">
<a>
<i class="fa fa-smile-o"></i>
{{msg . "setAvatar"}}
<li role="presentation">
<a href="/member" target="_blank">
<i class="fa fa-user"></i>
{{msg . "memberCenter"}}
</a>
</li>
<li role="presentation" id="setTheme">
<a>
<i class="fa fa-sun-o"></i>
{{msg . "themeSetting"}}
</a>
</li>
<!--
<li role="presentation" id="yourSuggestions">
<i class="fa fa-comment-o"></i>
{{msg . "yourSuggestions"}}
<li role="presentation" class="divider"></li>
<li role="presentation">
<a href="/member/blog/base" target="_blank">
<i class="fa fa-bold"></i>
{{msg . "blogSet"}}
</a>
</li>
-->
<li role="presentation" class="my-link" >
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
<i class="fa fa-bold"></i>
+13 -15
View File
@@ -136,30 +136,28 @@ function log(o) {
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu li-a" role="menu">
<li role="presentation" id="setInfo">
<a>
<i class="fa fa-info"></i>
{{msg . "accountSetting"}}
</a>
</li>
<li role="presentation" id="setAvatarMenu">
<a>
<i class="fa fa-smile-o"></i>
{{msg . "setAvatar"}}
<li role="presentation">
<a href="/member" target="_blank">
<i class="fa fa-user"></i>
{{msg . "memberCenter"}}
</a>
</li>
<li role="presentation" id="setTheme">
<a>
<i class="fa fa-sun-o"></i>
{{msg . "themeSetting"}}
</a>
</li>
<!--
<li role="presentation" id="yourSuggestions">
<i class="fa fa-comment-o"></i>
{{msg . "yourSuggestions"}}
<li role="presentation" class="divider"></li>
<li role="presentation">
<a href="/member/blog/base" target="_blank">
<i class="fa fa-bold"></i>
{{msg . "blogSet"}}
</a>
</li>
-->
<li role="presentation" class="my-link" >
<a target="_blank" href="{{$.blogUrl}}/{{.userInfo.Username}}">
<i class="fa fa-bold"></i>
@@ -25,8 +25,8 @@
<input id="friendsEmail" type="text" class="form-control" placeholder="{{msg . "friendEmail"}}">
</td>
<td>
<label for="readPerm1"><input type="radio" name="perm1" checked="checked" value="0" id="readPerm1"> {{msg . "readOnly"}}</label>
<label for="writePerm1"><input type="radio" name="perm1" value="1" id="writePerm1"> {{msg . "writable"}}</label>
<label for="readPerm1"><input type="radio" name="perm1" checked="checked" value="0" id="readPerm1"> {{msg $ "readOnly"}}</label>
<label for="writePerm1"><input type="radio" name="perm1" value="1" id="writePerm1"> {{msg $ "writable"}}</label>
</td>
<td>
<button class="btn btn-success" onclick="addShareNoteOrNotebook(1)">{{msg . "share"}}</button>
@@ -40,9 +40,9 @@
<td>{{$v.Email}}</td>
<td>
{{if eq $v.Perm 0}}
<a href="#" noteOrNotebookId="{{$noteOrNotebookId}}" perm="{{$v.Perm}}" toUserId="{{$toUserId}}" title="点击改变权限" class="btn btn-default change-perm">{{msg . "readOnly"}}</a>
<a href="#" noteOrNotebookId="{{$noteOrNotebookId}}" perm="{{$v.Perm}}" toUserId="{{$toUserId}}" title="点击改变权限" class="btn btn-default change-perm">{{msg $ "readOnly"}}</a>
{{else}}
<a href="#" noteOrNotebookId="{{$noteOrNotebookId}}" perm="{{$v.Perm}}" toUserId="{{$toUserId}}" title="点击改变权限" class="btn btn-default change-perm">{{msg . "writable"}}</a>
<a href="#" noteOrNotebookId="{{$noteOrNotebookId}}" perm="{{$v.Perm}}" toUserId="{{$toUserId}}" title="点击改变权限" class="btn btn-default change-perm">{{msg $ "writable"}}</a>
{{end}}
</td>
<td>