This commit is contained in:
life committed 2014-11-12 17:32:03 +08:00
1 parent d979a0c3e2
commit 1f45666ec4
119 files changed
+2463 -675

No files matched your search

+37 -2
View File
@@ -128,10 +128,18 @@
</i>
</span>
<span>
Setting
Configuration
</span>
</a>
<ul class="nav lt">
<li>
<a href="/admin/t?t=setting/home_page">
<span>
Home Page
</span>
</a>
</li>
<li>
<a href="/admin/t?t=setting/demo">
<span>
@@ -141,7 +149,7 @@
</li>
<li>
<a href="/admin/t?t=setting/openRegister">
<a href="/admin/t?t=setting/open_register">
<span>
Open Register
</span>
@@ -200,5 +208,32 @@
</li>
</ul>
</li>
<li>
<a href="#">
<i class="fa fa-space-shuttle 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>
Upgrade
</span>
</a>
<ul class="nav lt">
<li>
<a href="/admin/t?t=upgrade/beta2">
<span>
v1.0-beta to v1.0-beta2
</span>
</a>
</li>
</ul>
</li>
</ul>
</nav>
+49
View File
@@ -0,0 +1,49 @@
{{template "admin/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">Home Page</h3></div>
<div class="row">
<div class="col-sm-6">
<form id="form_data">
<section class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label><a href="/blog" target="_blank">Admin's Blog Page</a></label>
<input type="radio" class="form-control" name="homePage" {{if not .str.homePage}}checked="checked"{{end}} value="0">
</div>
<div class="form-group">
<label><a href="/index" target="_blank">Index Page</a></label>
<input type="radio" class="form-control" name="homePage" {{if .str.homePage}}checked="checked"{{end}} value="1">
</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>
$(function() {
$("#submit").click(function(e){
e.preventDefault();
var t = this;
$(t).button('loading');
ajaxPost("/adminSetting/homePage", getFormJsonData("form_data"), function(ret){
$(t).button('reset');
if(!ret.Ok) {
art.alert(ret.Msg);
} else {
art.tips("Success");
}
});
});
});
</script>
{{template "admin/end.html" .}}
+47
View File
@@ -0,0 +1,47 @@
{{template "admin/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">Upgrade v1.0-beta to v1.0-beta2</h3></div>
<div class="row">
<div class="col-sm-6">
<form id="add_user_form">
<section class="panel panel-default">
<div class="panel-body">
Current Version: <span class="label label-success">leanote v{{.version}}</span>
<ul>
<li>Migrate "About me" to single(a single post)</li>
<li>Add some default themes to administrator</li>
<li>Generate "UrlTitle" for all notes. "UrlTitle" is a friendly url for post</li>
<li>Generate "UrlTitle" for all notebooks</li>
<li>Generate "UrlTitle" for all singles</li>
</ul>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="submit" class="btn btn-success btn-s-xs">Upgrade</button>
</footer>
</section>
</form>
</div>
</div>
{{template "admin/footer.html" .}}
<script>
$(function() {
$("#submit").click(function(e){
e.preventDefault();
var t = this;
$(t).button('loading');
ajaxPost("/adminUpgrade/UpgradeBetaToBeta2", {}, function(ret){
$(t).button('reset')
if(!ret.Ok) {
art.alert(ret.Msg)
} else {
art.tips("Success");
}
});
});
});
</script>
{{template "admin/end.html" .}}
+17 -1
View File
@@ -12,6 +12,9 @@
{{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>
<div class="pull-right" style="margin-right: 10px">
固定链接: /cate/<input data-id="{{.NotebookId.Hex}}" class="url-title" type="text" value="{{if .UrlTitle}}{{.UrlTitle|decodeUrlValue}}{{else}}{{.NotebookId.Hex}}{{end}}"/>
</div>
{{.Title}}
</li>
{{end}}
@@ -33,7 +36,7 @@ $(function() {
$(".list-group-item").each(function() {
ids.push($(this).data("id"));
});
ajaxPost("/member/blog/upateCateIds", {cateIds: ids}, function(re){
ajaxPost("/member/blog/", {cateIds: ids}, function(re){
if(reIsOk(re)) {
art.tips("Success");
} else {
@@ -41,6 +44,19 @@ $(function() {
}
});
});
$(".url-title").change(function(){
var $t = $(this);
var url = $t.val();
var cateId = $t.data('id');
ajaxPost("/member/blog/updateCateUrlTitle", {cateId: cateId, urlTitle: url}, function(re){
if(reIsOk(re)) {
$t.val(re.Item);
} else {
art.alert(re.Msg || "error");
}
});
});
});
</script>
+1 -2
View File
@@ -9,8 +9,7 @@
<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">
<div class="col-sm-12">
<label>
<input type="checkbox" id="CanComment" name="CanComment"
{{if .userBlog.CanComment}}checked="checked"{{end}} > {{msg . "openComment"}}
+169
View File
@@ -0,0 +1,169 @@
{{template "member/top.html" .}}
<div class="m-b-md"><h3 class="m-b-none">文章列表</h3></div>
<style>
.url-title {
width: 260px;
}
</style>
<section class="panel panel-default">
<div class="row wrapper">
<div class="col-sm-5 m-b-xs">
</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="Title" id="keywords" value="{{.keywords}}" />
<span class="input-group-btn">
<button class="btn btn-sm btn-default" type="button" data-url="/member/blog/index">Search</button>
</span>
</div>
</div>
</div>
<div class="table-responsive">
<table class="table table-striped b-t b-light">
<thead>
<tr>
{{$url := urlConcat "/member/blog/index" "keywords" .keywords}}
<th style="width: 300px"
{{sorterTh $url "title" .sorter}}
>
Title
<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
style="width: 300px"
{{sorterTh $url "urlTitle" .sorter}}
>
固定链接
<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 "publicTime" .sorter}}
>
发布日期
<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 "updatedTime" .sorter}}
>
更新日期
<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}}
>
创建日期
<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 width="30">
</th>
</tr>
</thead>
<tbody>
{{range .blogs}}
{{if .UrlTitle}}
{{set $ "urlTitle" (decodeUrlValue .UrlTitle)}}
{{else}}
{{set $ "urlTitle" .NoteId.Hex}}
{{end}}
<tr>
<td>
<a href="{{$.userAndBlog.PostUrl}}/{{$.urlTitle}}" class="post" target="_blank">{{.Title|raw}}</a>
</td>
<td>
/post/
<input type="text" data-id="{{.NoteId.Hex}}" class="url-title" value="{{$.urlTitle}}"/>
</td>
<td>
{{.PublicTime|datetime}}
</td>
<td>
{{.UpdatedTime|datetime}}
</td>
<td>
{{.CreatedTime|datetime}}
</td>
<td>
<a
{{if .HasSelfDefined}}
title="已设置"
class="btn btn-sm btn-success"
{{else}}
title="未设置"
class="btn btn-sm btn-default"
{{end}}
href="/member/blog/updateBlogAbstract?noteId={{.NoteId.Hex}}">摘要设置</a>
</td>
</tr>
{{end}}
</tbody>
</table>
</div>
<footer class="panel-footer">
<div class="row">
<div class="col-sm-4 hidden-xs">
</div>
<div class="col-sm-4 text-center">
<small class="text-muted inline m-t-sm m-b-sm">
</small>
</div>
<div class="col-sm-4 text-right text-center-xs">
{{set . "url" (urlConcat "/member/blog/index" "sorter" .sorter "keywords" .keywords)}}
{{template "member/blog/page.html" .}}
</div>
</div>
</footer>
</section>
{{template "member/footer.html" .}}
<script>
$(function() {
var postUrl="{{$.userAndBlog.PostUrl}}";
$(".url-title").change(function(){
var $t = $(this);
var url = $t.val();
var noteId = $t.data('id');
ajaxPost("/member/blog/updateBlogUrlTitle", {noteId: noteId, urlTitle: url}, function(re){
if(reIsOk(re)) {
$t.val(re.Item);
var $a = $t.closest("tr").find(".post");
$a.attr("href", postUrl + "/" + encodeURI(re.Item));
} else {
art.alert(re.Msg || "error");
}
});
});
});
</script>
{{template "member/end.html" .}}
+33
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}}
+17 -1
View File
@@ -12,11 +12,14 @@
<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-left media-xs"><i class="fa fa-sort text-muted fa m-r-sm"></i></span>
<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="pull-right" style="margin-right: 10px">
固定链接: /single/<input data-id="{{.SingleId}}" class="url-title" type="text" value="{{if .UrlTitle}}{{.UrlTitle|decodeUrlValue}}{{else}}{{.SingleId}}{{end}}"/>
</div>
<div class="clear">
{{.Title}}
</div>
@@ -63,6 +66,19 @@ $(function() {
}
});
});
});
$(".url-title").change(function(){
var $t = $(this);
var url = $t.val();
var singleId = $t.data('id');
ajaxPost("/member/blog/updateSingleUrlTitle", {singleId: singleId, urlTitle: url}, function(re){
if(reIsOk(re)) {
$t.val(re.Item);
} else {
art.alert(re.Msg || "error");
}
});
});
});
</script>
+127
View File
@@ -0,0 +1,127 @@
{{template "member/top.html" .}}
<style>
.img-src {
max-height: 200px;
}
</style>
<div class="m-b-md"> <h3 class="m-b-none">
{{.note.Title}} - 摘要设置
</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">
以下内容设置后, 以后修改笔记时将不自动获取. 若将该文章取消为博客后, 以下内容会自动获取.
<hr />
<div class="alert alert-danger" id="baseMsg" style="display: none"></div>
<div class="form-group">
<label>
主图片
<a class="btn btn-default btn-select-img">从笔记中自动获取下一张</a>
</label>
<div>
<img src="{{.note.ImgSrc}}" class="img-src" id="imgSrc"/>
</div>
</div>
<div class="form-group">
<label>描述</label>
<textarea type="text" rows="6" class="form-control" id="desc" name="desc">{{.note.Desc}}</textarea>
</div>
<div class="form-group">
<label for="content1">摘要</label>
<div id="popularToolbar"></div>
<textarea id="content1" name="content">{{.note.Abstract}}</textarea>
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="submitBtn" class="btn btn-success">{{msg . "submit"}}</button>
</footer>
<div class="panel-body">
<p>
原文:
</p>
<div id="rawContent">
{{.note.Content|raw}}
</div>
</div>
</section>
</form>
</div>
</div>
{{template "member/footer.html" .}}
<script type="text/javascript" src="/tinymce/tinymce.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 | leanote_code",
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"
});
// 提交
$("#submitBtn").click(function(e) {
e.preventDefault();
var data = {
noteId: "{{.noteId}}",
imgSrc: $("#imgSrc").attr("src"),
desc : $("#desc").val(),
abstract : getEditorContent()
}
ajaxPost("/member/blog/doUpdateBlogAbstract/", data, function(re) {
if(reIsOk(re)) {
art.tips("Success");
location.href = "/member/blog/index";
} else {
art.alert(re.Msg || "error")
}
});
});
// 选择主图
var $imgs = $("#rawContent").find("img");
var imgLen = $imgs.length;
var imgSeq = 0;
var $imgSrc = $("#imgSrc");
$(".btn-select-img").click(function() {
if(imgLen == 0) {
return;
}
imgSeq++;
imgSeq = imgSeq%imgLen;
$imgSrc.attr("src", $imgs.eq(imgSeq).attr("src"));
});
});
</script>
{{template "member/end.html" .}}
+220
View File
@@ -0,0 +1,220 @@
{{template "member/top.html" .}}
<style>
.group-title {
color: #fff;
background: none;
border: none;
outline: none;
width: 200px;
}
</style>
<div class="m-b-md"> <h3 class="m-b-none">项目/成员</h3></div>
<p>
<a class="btn btn-default btn-add-group"><span class="fa fa-plus"></span> 新建分组</a>
</p>
<script type="text/x-jsrender" id="tUser">
<li class="list-group-item" data-id="[[:UserId]]">
[[:Username]] [[if Email != Username]]([[:Email]])[[/if]]
<span class="fa fa-remove pull-right text-xs m-t-sm"></span>
</li>
</script>
<script type="text/x-jsrender" id="tGroup">
<div class="col-sm-4 each-group" data-id="[[:GroupId]]">
<section class="panel panel-default">
<header class="panel-heading bg-success lt no-border">
<div class="clearfix">
<div class="clear">
<div class="h3 m-t-xs m-b-xs text-white">
<input type="text" data-ever="[[:Title]]" value="[[:Title]]" class="group-title" />
<a title="删除分组" class="delete-group">
<i class="fa fa-remove text-white pull-right text-xs m-t-sm"></i>
</a>
</div>
</div>
</div>
</header>
<ul class="list-group no-radius">
<li class="list-group-item">
<input type="text" class="add-user-input form-control" placeholder="输入用户名或邮箱添加成员" />
</li>
</ul>
</section>
</div>
</script>
<div class="row" id="groups">
{{range .groups}}
<div class="col-sm-4 each-group" data-id="{{.GroupId.Hex}}">
<section class="panel panel-default">
<header class="panel-heading bg-success lt no-border">
<div class="clearfix">
<div class="clear">
<div class="h3 m-t-xs m-b-xs text-white">
<input type="text" data-ever="{{.Title}}" value="{{.Title}}" class="group-title" />
<a title="删除分组" class="delete-group">
<i class="fa fa-remove text-white pull-right text-xs m-t-sm"></i>
</a>
</div>
</div>
</div>
</header>
<ul class="list-group no-radius group-users">
{{range .Users}}
<li class="list-group-item" data-id="{{.UserId.Hex}}">
{{.Username}} {{if not (eq .Email .Username)}}({{.Email}}){{end}}
<a title="删除成员" class="delete-user">
<span class="fa fa-remove pull-right text-xs m-t-sm"></span>
</a>
</li>
{{end}}
<li class="list-group-item">
<input type="text" class="add-user-input form-control" placeholder="输入用户名或邮箱添加成员" />
</li>
</ul>
</section>
</div>
{{end}}
</div>
{{template "member/footer.html" .}}
<script src="http://leanote.com/public/blog/js/jsrender.js"></script>
<script>
var group = {
tGroupO: $("#tGroup"),
groupsO: $("#groups"),
tUserO: $("#tUser"),
init: function() {
var self = this;
self.addGroupEvent();
self.updateGroupEvent();
self.deleteGroupEvent();
self.addUserEvent();
self.deleteUserEvent();
var classes = ["bg-warning", "bg-danger", "bg-success", "bg-dark", "bg-primary"];
var i = 0;
var len = classes.length;
$(".panel-heading").each(function() {
$(this).removeClass("bg-success").addClass(classes[i%len]);
i++;
});
},
// 添加用户分组
addGroupEvent: function() {
var self = this;
$('.btn-add-group').click(function() {
ajaxPost("/member/group/addGroup", {title: "分组名"}, function(re) {
if(reIsOk(re)) {
var group = re.Item;
self.groupsO.prepend(self.tGroupO.render(group))
self.groupsO.find(".group-title").eq(0).focus().select();
}
});
});
},
// 修改
updateGroupEvent: function() {
var self = this;
self.groupsO.on("blur", ".group-title", function() {
var t = $(this);
var ever = t.data('ever');
var val = t.val();
if(ever == val) {
return;
}
console.log($(this).closest(".each-group"));
var groupId = $(this).closest(".each-group").data("id");
ajaxPost("/member/group/updateGroupTitle", {groupId: groupId, title: val}, function(re) {
if(reIsOk(re)) {
art.tips("Success")
t.data('ever', val)
}
})
});
},
// 删除分组
deleteGroupEvent: function() {
var self = this;
self.groupsO.on("click", ".delete-group", function() {
var t = $(this);
art.confirm("Are you sure ?", function() {
var groupId = t.closest(".each-group").data("id");
ajaxPost("/member/group/deleteGroup", {groupId: groupId}, function(re) {
if(reIsOk(re)) {
art.tips("Success");
t.closest(".each-group").remove();
} else {
art.alert(re.Msg);
}
});
});
});
},
// 添加好友分组
addUserEvent: function() {
var self = this;
self.groupsO.on("keydown", ".add-user-input", function(e) {
// enter
if (e.keyCode == 13) {
var t = $(this);
var email = t.val();
if(!email) {
t.focus();
return;
}
// 检查是否是合法的email
if(!isEmail(email)) {
// art.tips("非法的email");
// return;
}
var groupId = t.closest(".each-group").data("id");
var p = t.closest("li");
ajaxPost("/member/group/addUser", {groupId: groupId, email: email}, function(re) {
if(reIsOk(re)) {
art.tips("Success");
var html = self.tUserO.render(re.Item)
p.before(html);
t.val("");
} else {
art.alert(re.Msg);
}
})
}
});
},
// 删除用户
deleteUserEvent: function() {
var self = this;
self.groupsO.on("click", ".delete-user", function() {
var t = $(this);
art.confirm("Are you sure ?", function() {
var groupId = t.closest(".each-group").data("id");
var userId = t.closest("li").data("id");
ajaxPost("/member/group/deleteUser", {groupId: groupId, userId: userId}, function(re) {
if(reIsOk(re)) {
art.tips("Success");
t.closest("li").remove();
} else {
art.alert(re.Msg);
}
});
});
});
},
}
$(function() {
group.init();
});
</script>
{{template "member/end.html" .}}
+21 -1
View File
@@ -89,6 +89,14 @@
</span>
</a>
<ul class="nav lt">
<li>
<a href="/member/blog/index">
<span>
文章列表
</span>
</a>
</li>
<li>
<a href="/member/blog/base">
<span>
@@ -133,5 +141,17 @@
</li>
</ul>
</li>
<li class="active">
<a href="/member/group/index">
<i class="fa fa-users icon">
<b class="bg-success">
</b>
</i>
<span>
项目组/成员
</span>
</a>
</li>
</ul>
</nav>
</nav>
+1 -1
View File
@@ -152,7 +152,7 @@ function log(o) {
<li role="presentation" class="divider"></li>
<li role="presentation">
<a href="/member/blog/base" target="_blank">
<a href="/member/blog/index" target="_blank">
<i class="fa fa-bold"></i>
{{msg . "blogSet"}}
</a>
@@ -7,6 +7,13 @@
{{$noteOrNotebookId := .noteOrNotebookId}}
<div class="modal-body">
<ul id="myTab" class="nav nav-tabs">
<li class="active"><a href="#baseInfo" data-toggle="tab">分享给好友</a></li>
<li class=""><a href="#groupInfo" data-toggle="tab">分享给项目组</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="baseInfo">
<button class="btn btn-default" id="addShareNotebookBtn">{{msg . "addShare"}}</button>
<div id="shareMsg" class="alert alert-danger" style="display: none; margin: 5px 0 0 0;"></div>
<table class="table table-hover" id="shareNotebookTable">
@@ -25,11 +32,11 @@
<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>
<button class="btn btn-success" data-loading-text="..." onclick="addShareNoteOrNotebook(1)">{{msg . "share"}}</button>
<button class="btn btn-warning" onclick="deleteShareNoteOrNotebook(1)">{{msg . "delete"}}</button>
</td>
</tr>
@@ -46,12 +53,50 @@
{{end}}
</td>
<td>
<a href="#" noteOrNotebookId="{{$noteOrNotebookId}}" toUserId="{{$toUserId}}" class="btn btn-warning delete-share">{{msg . "delete"}}</a>
<a href="#" noteOrNotebookId="{{$noteOrNotebookId}}" toUserId="{{$toUserId}}" class="btn btn-warning delete-share">{{msg $ "delete"}}</a>
</td>
</tr>
{{end}}
</tbody>
</table>
</div>
<div class="tab-pane" id="groupInfo">
<p>
将笔记/笔记本分享给项目组后, 该组下的用户便拥有了该笔记/笔记本. <a href="/member/group/index" target="_blank">项目组/成员管理</a>
</p>
<table class="table table-hover">
<thead>
<tr>
<th>分组名</th>
<th>{{msg . "permission"}}</th>
<th width="150px">操作</th>
</tr>
</thead>
<tbody>
{{range $i, $share := .noteOrNotebookShareGroupInfos}}
{{$groupId := $share.ToGroup.GroupId.Hex}}
<tr data-id="{{$groupId}}" data-uid="{{$share.UserId.Hex}}">
<td>
{{$share.ToGroup.Title}}
</td>
<td>
<label><input type="radio" name="perm_{{$groupId}}" {{if not $share.Perm}}checked="checked"{{end}} value="0" class="group-perm"> {{msg $ "readOnly"}}</label>
<label><input type="radio" name="perm_{{$groupId}}" {{if $share.Perm}}checked="checked"{{end}} value="1" class="group-perm"> {{msg $ "writable"}}</label>
</td>
<td> <!-- 有userId 证明已分享 -->
{{if $share.UserId}}
<button class="btn btn-success btn-share-or-not">已分享</button>
{{else}}
<button class="btn btn-default btn-share-or-not">未分享</button>
{{end}}
</td>
</tr>
{{end}}
</table>
</div>
</div>
</div>
<div class="modal-footer">
@@ -64,8 +109,75 @@
Share.dialogIsNote = {{.isNote}};
Share.dialogNoteOrNotebookId = '{{.noteOrNotebookId}}';
$(function() {
setTimeout(function() {
$("#tr1 #friendsEmail").focus();
}, 500);
setTimeout(function() {
$("#tr1 #friendsEmail").focus();
}, 500);
// 分享/删除给分组
$("#groupInfo").on("click", ".btn-share-or-not", function() {
var $t = $(this);
var $ptd = $t.closest("td");
var $ptr = $t.closest("tr");
var hasShared = $ptr.data('uid');
var groupId = $ptr.data('id');
var data = {groupId: groupId};
var url = "";
if(!hasShared) {
var perm = $ptr.find("input:checked").val();
data.perm = perm;
if(Share.dialogIsNote) {
data.noteId = Share.dialogNoteOrNotebookId;
url = "/share/addShareNoteGroup";
} else {
data.notebookId = Share.dialogNoteOrNotebookId;
url = "/share/addShareNotebookGroup";
}
} else {
if(Share.dialogIsNote) {
data.noteId = Share.dialogNoteOrNotebookId;
url = "/share/deleteShareNoteGroup";
} else {
data.notebookId = Share.dialogNoteOrNotebookId;
url = "/share/deleteShareNotebookGroup";
}
}
ajaxPost(url, data, function(re) {
if(reIsOk(re)) {
if(!hasShared) {
var text = '<button class="btn btn-success btn-share-or-not">已分享</button>';
$ptr.data('uid', 'xxxxxx');
} else {
var text = '<button class="btn btn-default btn-share-or-not">未分享</button>';
$ptr.data('uid', '');
}
$ptd.html(text);
}
});
});
$(".group-perm").click(function() {
var $t = $(this);
var $ptr = $t.closest("tr");
var hasShared = $ptr.data('uid');
if(!hasShared) {
return;
}
var groupId = $ptr.data('id');
var data = {groupId: groupId, perm: $t.val()};
var url = ""
if(Share.dialogIsNote) {
data.noteId = Share.dialogNoteOrNotebookId;
url = "/share/updateShareNoteGroupPerm";
} else {
data.notebookId = Share.dialogNoteOrNotebookId;
url = "/share/updateShareNotebookGroupPerm";
}
ajaxPost(url, data, function(re) {
if(!reIsOk(re)) {
alert(re.Msg);
}
});
});
});
</script>