share note to unregistered users
share note to unregistered users
This commit is contained in:
@@ -36,6 +36,8 @@ func (c Share) AddShareNote(noteId string, emails []string, perm int) revel.Resu
|
|||||||
return c.RenderJson(status)
|
return c.RenderJson(status)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 添加共享notebook
|
// 添加共享notebook
|
||||||
func (c Share) AddShareNotebook(notebookId string, emails []string, perm int) revel.Result {
|
func (c Share) AddShareNotebook(notebookId string, emails []string, perm int) revel.Result {
|
||||||
status := make(map[string]info.Re, len(emails))
|
status := make(map[string]info.Re, len(emails))
|
||||||
@@ -185,4 +187,33 @@ func (c Share) DeleteShareNotebookGroup(notebookId, groupId string) revel.Result
|
|||||||
// 更新, 也是一样, 先删后加
|
// 更新, 也是一样, 先删后加
|
||||||
func (c Share) UpdateShareNotebookGroupPerm(notebookId, groupId string, perm int) revel.Result {
|
func (c Share) UpdateShareNotebookGroupPerm(notebookId, groupId string, perm int) revel.Result {
|
||||||
return c.AddShareNotebookGroup(notebookId, groupId, perm)
|
return c.AddShareNotebookGroup(notebookId, groupId, perm)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//生成笔记分享密码及更新到db
|
||||||
|
func (c Share) GenShareLinkPass(noteId string) revel.Result {
|
||||||
|
pass, ok := shareService.GenSharePass(noteId)
|
||||||
|
re := info.Re{Ok : true, Item : pass, List: ok}
|
||||||
|
return c.RenderJson(re);
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Share) QuerySharePass(noteId string) revel.Result {
|
||||||
|
pass := shareService.QuerySharePass(noteId)
|
||||||
|
re := info.Re{Ok : true, Item : pass}
|
||||||
|
return c.RenderJson(re);
|
||||||
|
}
|
||||||
|
|
||||||
|
//展示分享笔记
|
||||||
|
func (c Share) ShowShareNote(noteId string) revel.Result {
|
||||||
|
// note := noteService.GetNote(noteId, c.GetUserId())
|
||||||
|
//
|
||||||
|
// c.RenderArgs["title"] = note.UserId
|
||||||
|
// c.RenderArgs["title"] = note.UserId
|
||||||
|
return c.RenderTemplate("share/show_share_note.html")
|
||||||
|
}
|
||||||
|
|
||||||
|
//验证分享密码
|
||||||
|
//func (c Share) Verify4ShareNote(noteId string, sharePass int) revel.Result {
|
||||||
|
// ok = shareService.Verify4ShareNote(noteId, sharePass);
|
||||||
|
// re := info.Re{Ok : true, Item : pass}
|
||||||
|
//
|
||||||
|
//}
|
||||||
@@ -40,6 +40,8 @@ type Note struct {
|
|||||||
RecommendTime time.Time `RecommendTime,omitempty` // 推荐时间
|
RecommendTime time.Time `RecommendTime,omitempty` // 推荐时间
|
||||||
PublicTime time.Time `PublicTime,omitempty` // 发表时间, 公开为博客则设置
|
PublicTime time.Time `PublicTime,omitempty` // 发表时间, 公开为博客则设置
|
||||||
UpdatedUserId bson.ObjectId `bson:"UpdatedUserId"` // 如果共享了, 并可写, 那么可能是其它他修改了
|
UpdatedUserId bson.ObjectId `bson:"UpdatedUserId"` // 如果共享了, 并可写, 那么可能是其它他修改了
|
||||||
|
|
||||||
|
SharePass int `SharePass` //分享笔记的密码
|
||||||
}
|
}
|
||||||
|
|
||||||
// 内容
|
// 内容
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"time"
|
"time"
|
||||||
"sort"
|
"sort"
|
||||||
|
"math/rand"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 共享Notebook, Note服务
|
// 共享Notebook, Note服务
|
||||||
@@ -336,12 +337,14 @@ func (this *ShareService) AddShareNote(noteId string, perm int, userId, email st
|
|||||||
"ToUserId": bson.ObjectIdHex(toUserId),
|
"ToUserId": bson.ObjectIdHex(toUserId),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
shareNote := info.ShareNote{NoteId: bson.ObjectIdHex(noteId),
|
shareNote := info.ShareNote{NoteId: bson.ObjectIdHex(noteId),
|
||||||
UserId: bson.ObjectIdHex(userId),
|
UserId: bson.ObjectIdHex(userId),
|
||||||
ToUserId: bson.ObjectIdHex(toUserId),
|
ToUserId: bson.ObjectIdHex(toUserId),
|
||||||
Perm: perm,
|
Perm: perm,
|
||||||
CreatedTime: time.Now(),
|
CreatedTime: time.Now(),
|
||||||
}
|
}
|
||||||
|
|
||||||
return db.Insert(db.ShareNotes, shareNote), "", toUserId
|
return db.Insert(db.ShareNotes, shareNote), "", toUserId
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -776,3 +779,22 @@ func (this *ShareService) DeleteShareNotebookGroup(userId, notebookId, groupId s
|
|||||||
"ToGroupId": bson.ObjectIdHex(groupId),
|
"ToGroupId": bson.ObjectIdHex(groupId),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func (this *ShareService) GenSharePass(noteId string) (int, bool) {
|
||||||
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
|
pass := 1000 + r.Intn(10000)
|
||||||
|
|
||||||
|
if pass >= 10000 {
|
||||||
|
pass -= 1000
|
||||||
|
}
|
||||||
|
ok := db.Update(db.Notes, bson.M{"_id": bson.ObjectIdHex(noteId)}, bson.M{"$set": bson.M{"SharePass": pass}})
|
||||||
|
return pass, ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *ShareService) QuerySharePass(noteId string) int {
|
||||||
|
note := &info.Note{}
|
||||||
|
db.Get(db.Notes, noteId, note)
|
||||||
|
|
||||||
|
return note.SharePass
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,11 +5,14 @@
|
|||||||
<h4 class="modal-title" id="modalTitle">{{msg . "share"}} <b>{{.title}}</b></h4>
|
<h4 class="modal-title" id="modalTitle">{{msg . "share"}} <b>{{.title}}</b></h4>
|
||||||
</div>
|
</div>
|
||||||
{{$noteOrNotebookId := .noteOrNotebookId}}
|
{{$noteOrNotebookId := .noteOrNotebookId}}
|
||||||
|
{{$isNote := .isNote}}
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<ul id="myTab" class="nav nav-tabs">
|
<ul id="myTab" class="nav nav-tabs">
|
||||||
<li class="active"><a href="#baseInfo" data-toggle="tab">分享给好友</a></li>
|
<li class="active"><a href="#baseInfo" data-toggle="tab">分享给好友</a></li>
|
||||||
<li class=""><a href="#groupInfo" data-toggle="tab">分享给项目组</a></li>
|
<li class=""><a href="#groupInfo" data-toggle="tab">分享给项目组</a></li>
|
||||||
|
{{if $isNote}}
|
||||||
|
<li class=""><a href="#shareInfo" data-toggle="tab">分享给未注册好友</a></li>
|
||||||
|
{{end}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
@@ -95,6 +98,19 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="tab-pane" id="shareInfo">
|
||||||
|
<p>
|
||||||
|
<button class="btn btn-default" id="genShareLink">生成该笔记的分享链接和密码</button>
|
||||||
|
<span id="showMsg"></span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
分享链接:<input type="text" id="shareLink" value="" size=50> <br/><br/>
|
||||||
|
查看密码:<input type="text" id="sharePass" value="" />
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -108,11 +124,40 @@
|
|||||||
<script>
|
<script>
|
||||||
Share.dialogIsNote = {{.isNote}};
|
Share.dialogIsNote = {{.isNote}};
|
||||||
Share.dialogNoteOrNotebookId = '{{.noteOrNotebookId}}';
|
Share.dialogNoteOrNotebookId = '{{.noteOrNotebookId}}';
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
$("#tr1 #friendsEmail").focus();
|
$("#tr1 #friendsEmail").focus();
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
|
if (Share.dialogIsNote) {
|
||||||
|
var url = "/share/querySharePass";
|
||||||
|
var data = {noteId: Share.dialogNoteOrNotebookId};
|
||||||
|
ajaxPost(url, data, function(re) {
|
||||||
|
if(reIsOk(re)) {
|
||||||
|
if (re.Item >= 1000 && re.Item < 10000) {
|
||||||
|
var shareLink = "https://leanote.com/share/" + '{{.noteOrNotebookId}}';
|
||||||
|
$("#shareLink").val(shareLink);
|
||||||
|
$("#sharePass").val(re.Item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#shareLink").hover(function() {
|
||||||
|
$("#shareLink").focus(function(){
|
||||||
|
$(this).css({'background-color' : '#f5f5dc'});
|
||||||
|
}).select();
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
$("#sharePass").hover(function() {
|
||||||
|
$("#sharePass").focus(function(){
|
||||||
|
$(this).css({'background-color' : '#f5f5dc'});
|
||||||
|
}).select();
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
// 分享/删除给分组
|
// 分享/删除给分组
|
||||||
$("#groupInfo").on("click", ".btn-share-or-not", function() {
|
$("#groupInfo").on("click", ".btn-share-or-not", function() {
|
||||||
var $t = $(this);
|
var $t = $(this);
|
||||||
@@ -155,6 +200,28 @@ $("#groupInfo").on("click", ".btn-share-or-not", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//生成分享链接和密码
|
||||||
|
$("#genShareLink").on("click", function() {
|
||||||
|
var sharePass = $("#sharePass").val();
|
||||||
|
if (sharePass != '' && sharePass > 1000 ) {
|
||||||
|
$("#showMsg").html("<font color='red'>不能重复生成分享链接和密码</font>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var url = "/share/genShareLinkPass";
|
||||||
|
var shareLink = "https://leanote.com/share/note/" + '{{.noteOrNotebookId}}';
|
||||||
|
var data = {noteId: Share.dialogNoteOrNotebookId};
|
||||||
|
ajaxPost(url, data, function(re) {
|
||||||
|
if(reIsOk(re)) {
|
||||||
|
$("#shareLink").val(shareLink);
|
||||||
|
$("#sharePass").val(re.Item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$(".group-perm").click(function() {
|
$(".group-perm").click(function() {
|
||||||
var $t = $(this);
|
var $t = $(this);
|
||||||
var $ptr = $t.closest("tr");
|
var $ptr = $t.closest("tr");
|
||||||
@@ -179,5 +246,6 @@ $(".group-perm").click(function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
83
app/views/share/show_share_note.html
Normal file
83
app/views/share/show_share_note.html
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
|
||||||
|
<meta name="apple-touch-fullscreen" content="yes">
|
||||||
|
<meta name=”apple-mobile-web-app-capable” content=”yes” />
|
||||||
|
<meta name="keywords" content="leanote,leanote.com">
|
||||||
|
<meta name="description" content="leanote, Not Just A Notebook">
|
||||||
|
<title>leanote, Not Just A Notebook</title>
|
||||||
|
|
||||||
|
<link href="/css/bootstrap.css" rel="stylesheet" />
|
||||||
|
<!-- 先加载, 没有样式, 宽度不定 -->
|
||||||
|
<link rel="stylesheet" href="tinymce/skins/custom/skin.min.css" rel="stylesheet"/>
|
||||||
|
|
||||||
|
<!-- leanote css -->
|
||||||
|
<link href="css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet" />
|
||||||
|
<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
|
||||||
|
<script>
|
||||||
|
var hash = location.hash;
|
||||||
|
if(hash == "#writing") {
|
||||||
|
var files = '<link rel="stylesheet" href="css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
|
||||||
|
} else {
|
||||||
|
var files ='<link rel="stylesheet" href="css/theme/{{if .userInfo.Theme}}{{.userInfo.Theme}}{{else}}default{{end}}.css" type="text/css" id="themeLink" />';
|
||||||
|
}
|
||||||
|
document.write(files);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- For Develop writting mod -->
|
||||||
|
<script>
|
||||||
|
function log(o) {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
查看分享笔记{{.noteId}}
|
||||||
|
|
||||||
|
您需要输入分享密码才能查看:<br/>
|
||||||
|
<input type="password" id="sharePass" /><br/>
|
||||||
|
<button id="showShareNote">点击查看</button>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var noteId = {{ .noteId }};
|
||||||
|
var sharePass = $("#sharePass").val();
|
||||||
|
$(function() {
|
||||||
|
|
||||||
|
|
||||||
|
$("#showShareNote").on("click", function() {
|
||||||
|
var url = "/share/verify4ShareNote";
|
||||||
|
var data = {noteId: noteId};
|
||||||
|
data.sharePass = $("#sharePass").val();
|
||||||
|
ajaxPost(url, data, function(re) {
|
||||||
|
if(reIsOk(re)) {
|
||||||
|
$("#shareLink").val(shareLink);
|
||||||
|
$("#sharePass").val(re.Item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script src="js/jquery-1.9.0.min.js"></script>
|
||||||
|
<script src="js/jquery.ztree.all-3.5.js"></script>
|
||||||
|
<script src="js/i18n/msg.{{.locale}}.js"></script>
|
||||||
|
<script src="js/common-min.js"></script>
|
||||||
|
<script src="tinymce/tinymce.js"></script>
|
||||||
|
<script src="js/app/page-min.js"></script>
|
||||||
|
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
|
||||||
|
<script src="/js/contextmenu/jquery.contextmenu-min.js"></script>
|
||||||
|
<script src="js/jquery-cookie.js"></script>
|
||||||
|
<script src="js/bootstrap-min.js"></script>
|
||||||
|
<script src="js/app/note-min.js"></script>
|
||||||
|
<script src="js/app/tag-min.js"></script>
|
||||||
|
<script src="js/app/notebook-min.js"></script>
|
||||||
|
<script src="js/app/share-min.js"></script>
|
||||||
|
<script src="js/object_id-min.js"></script>
|
||||||
|
<script src="js/ZeroClipboard/ZeroClipboard-min.js"></script>
|
||||||
Reference in New Issue
Block a user