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)
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 添加共享notebook
|
||||
func (c Share) AddShareNotebook(notebookId string, emails []string, perm int) revel.Result {
|
||||
status := make(map[string]info.Re, len(emails))
|
||||
@@ -186,3 +188,32 @@ func (c Share) DeleteShareNotebookGroup(notebookId, groupId string) revel.Result
|
||||
func (c Share) UpdateShareNotebookGroupPerm(notebookId, groupId string, perm int) revel.Result {
|
||||
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` // 推荐时间
|
||||
PublicTime time.Time `PublicTime,omitempty` // 发表时间, 公开为博客则设置
|
||||
UpdatedUserId bson.ObjectId `bson:"UpdatedUserId"` // 如果共享了, 并可写, 那么可能是其它他修改了
|
||||
|
||||
SharePass int `SharePass` //分享笔记的密码
|
||||
}
|
||||
|
||||
// 内容
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"gopkg.in/mgo.v2/bson"
|
||||
"time"
|
||||
"sort"
|
||||
"math/rand"
|
||||
)
|
||||
|
||||
// 共享Notebook, Note服务
|
||||
@@ -336,12 +337,14 @@ func (this *ShareService) AddShareNote(noteId string, perm int, userId, email st
|
||||
"ToUserId": bson.ObjectIdHex(toUserId),
|
||||
});
|
||||
|
||||
|
||||
shareNote := info.ShareNote{NoteId: bson.ObjectIdHex(noteId),
|
||||
UserId: bson.ObjectIdHex(userId),
|
||||
ToUserId: bson.ObjectIdHex(toUserId),
|
||||
Perm: perm,
|
||||
CreatedTime: time.Now(),
|
||||
}
|
||||
|
||||
return db.Insert(db.ShareNotes, shareNote), "", toUserId
|
||||
}
|
||||
|
||||
@@ -776,3 +779,22 @@ func (this *ShareService) DeleteShareNotebookGroup(userId, notebookId, groupId s
|
||||
"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>
|
||||
</div>
|
||||
{{$noteOrNotebookId := .noteOrNotebookId}}
|
||||
|
||||
{{$isNote := .isNote}}
|
||||
<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>
|
||||
{{if $isNote}}
|
||||
<li class=""><a href="#shareInfo" data-toggle="tab">分享给未注册好友</a></li>
|
||||
{{end}}
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
@@ -95,6 +98,19 @@
|
||||
{{end}}
|
||||
</table>
|
||||
</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>
|
||||
@@ -108,11 +124,40 @@
|
||||
<script>
|
||||
Share.dialogIsNote = {{.isNote}};
|
||||
Share.dialogNoteOrNotebookId = '{{.noteOrNotebookId}}';
|
||||
|
||||
$(function() {
|
||||
setTimeout(function() {
|
||||
$("#tr1 #friendsEmail").focus();
|
||||
}, 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() {
|
||||
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() {
|
||||
var $t = $(this);
|
||||
var $ptr = $t.closest("tr");
|
||||
@@ -179,5 +246,6 @@ $(".group-perm").click(function() {
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
</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