commit sharing note
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
|||||||
// "github.com/leanote/leanote/app/types"
|
// "github.com/leanote/leanote/app/types"
|
||||||
// "io/ioutil"
|
// "io/ioutil"
|
||||||
// "fmt"
|
// "fmt"
|
||||||
|
// "time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Share struct {
|
type Share struct {
|
||||||
@@ -204,16 +205,25 @@ func (c Share) QuerySharePass(noteId string) revel.Result {
|
|||||||
|
|
||||||
//展示分享笔记
|
//展示分享笔记
|
||||||
func (c Share) ShowShareNote(noteId string) revel.Result {
|
func (c Share) ShowShareNote(noteId string) revel.Result {
|
||||||
// note := noteService.GetNote(noteId, c.GetUserId())
|
note := noteService.GetNote(noteId, c.GetUserId())
|
||||||
//
|
//
|
||||||
// c.RenderArgs["title"] = note.UserId
|
c.RenderArgs["noteId"] = noteId
|
||||||
// c.RenderArgs["title"] = note.UserId
|
username := userService.GetUsernameById(note.UserId)
|
||||||
|
|
||||||
|
c.RenderArgs["userName"] = username
|
||||||
|
c.RenderArgs["isMarkDown"] = note.IsMarkdown
|
||||||
|
// c.RenderArgs["timestamp"] = time.Now().Unix()
|
||||||
|
c.SetLocale()
|
||||||
return c.RenderTemplate("share/show_share_note.html")
|
return c.RenderTemplate("share/show_share_note.html")
|
||||||
}
|
}
|
||||||
|
|
||||||
//验证分享密码
|
//验证分享密码
|
||||||
//func (c Share) Verify4ShareNote(noteId string, sharePass int) revel.Result {
|
func (c Share) Verify4ShareNote(noteId string, sharePass int) revel.Result {
|
||||||
// ok = shareService.Verify4ShareNote(noteId, sharePass);
|
ok, note := shareService.Verify4ShareNote(noteId, sharePass);
|
||||||
// re := info.Re{Ok : true, Item : pass}
|
attaches := []info.Attach{}
|
||||||
//
|
if (ok == true && note.AttachNum > 0) {
|
||||||
//}
|
attaches = attachService.ListAttachs(noteId, c.GetUserId())
|
||||||
|
}
|
||||||
|
re := info.Re{Ok : ok, Item: note, List: attaches}
|
||||||
|
return c.RenderJson(re)
|
||||||
|
}
|
||||||
@@ -783,11 +783,8 @@ func (this *ShareService) DeleteShareNotebookGroup(userId, notebookId, groupId s
|
|||||||
|
|
||||||
func (this *ShareService) GenSharePass(noteId string) (int, bool) {
|
func (this *ShareService) GenSharePass(noteId string) (int, bool) {
|
||||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
pass := 1000 + r.Intn(10000)
|
pass := 1000 + r.Intn(9000)
|
||||||
|
|
||||||
if pass >= 10000 {
|
|
||||||
pass -= 1000
|
|
||||||
}
|
|
||||||
ok := db.Update(db.Notes, bson.M{"_id": bson.ObjectIdHex(noteId)}, bson.M{"$set": bson.M{"SharePass": pass}})
|
ok := db.Update(db.Notes, bson.M{"_id": bson.ObjectIdHex(noteId)}, bson.M{"$set": bson.M{"SharePass": pass}})
|
||||||
return pass, ok
|
return pass, ok
|
||||||
}
|
}
|
||||||
@@ -798,3 +795,14 @@ func (this *ShareService) QuerySharePass(noteId string) int {
|
|||||||
|
|
||||||
return note.SharePass
|
return note.SharePass
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *ShareService) Verify4ShareNote(noteId string, sharePass int) (bool, *info.Note) {
|
||||||
|
note := &info.Note{}
|
||||||
|
db.Get(db.Notes, noteId, note)
|
||||||
|
if note.SharePass == sharePass {
|
||||||
|
return true, note
|
||||||
|
} else {
|
||||||
|
note := &info.Note{}
|
||||||
|
return false, note
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -48,6 +48,13 @@ func (this *UserService) GetUsername(userId string) string {
|
|||||||
return user.Username
|
return user.Username
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 得到用户名
|
||||||
|
func (this *UserService) GetUsernameById(userId bson.ObjectId) string {
|
||||||
|
user := info.User{}
|
||||||
|
db.GetByQWithFields(db.Users, bson.M{"_id": userId}, []string{"Username"}, &user)
|
||||||
|
return user.Username
|
||||||
|
}
|
||||||
|
|
||||||
// 是否存在该用户 email
|
// 是否存在该用户 email
|
||||||
func (this *UserService) IsExistsUser(email string) bool {
|
func (this *UserService) IsExistsUser(email string) bool {
|
||||||
if this.GetUserId(email) == "" {
|
if this.GetUserId(email) == "" {
|
||||||
|
|||||||
@@ -125,18 +125,33 @@
|
|||||||
Share.dialogIsNote = {{.isNote}};
|
Share.dialogIsNote = {{.isNote}};
|
||||||
Share.dialogNoteOrNotebookId = '{{.noteOrNotebookId}}';
|
Share.dialogNoteOrNotebookId = '{{.noteOrNotebookId}}';
|
||||||
|
|
||||||
|
var getHost = function(url) {
|
||||||
|
var host = "null";
|
||||||
|
if(typeof url == "undefined"
|
||||||
|
|| null == url)
|
||||||
|
url = window.location.href;
|
||||||
|
var regex = /.*\:\/\/([^\/]*).*/;
|
||||||
|
var match = url.match(regex);
|
||||||
|
if(typeof match != "undefined"
|
||||||
|
&& null != match)
|
||||||
|
host = match[1];
|
||||||
|
return host;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
$("#tr1 #friendsEmail").focus();
|
$("#tr1 #friendsEmail").focus();
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
|
var host = getHost();
|
||||||
if (Share.dialogIsNote) {
|
if (Share.dialogIsNote) {
|
||||||
var url = "/share/querySharePass";
|
var url = "/share/querySharePass";
|
||||||
var data = {noteId: Share.dialogNoteOrNotebookId};
|
var data = {noteId: Share.dialogNoteOrNotebookId};
|
||||||
ajaxPost(url, data, function(re) {
|
ajaxPost(url, data, function(re) {
|
||||||
if(reIsOk(re)) {
|
if(reIsOk(re)) {
|
||||||
if (re.Item >= 1000 && re.Item < 10000) {
|
if (re.Item >= 1000 && re.Item < 10000) {
|
||||||
var shareLink = "https://leanote.com/share/" + '{{.noteOrNotebookId}}';
|
var shareLink = host + '/share/note/{{.noteOrNotebookId}}';
|
||||||
$("#shareLink").val(shareLink);
|
$("#shareLink").val(shareLink);
|
||||||
$("#sharePass").val(re.Item);
|
$("#sharePass").val(re.Item);
|
||||||
}
|
}
|
||||||
@@ -204,13 +219,13 @@ $("#groupInfo").on("click", ".btn-share-or-not", function() {
|
|||||||
//生成分享链接和密码
|
//生成分享链接和密码
|
||||||
$("#genShareLink").on("click", function() {
|
$("#genShareLink").on("click", function() {
|
||||||
var sharePass = $("#sharePass").val();
|
var sharePass = $("#sharePass").val();
|
||||||
if (sharePass != '' && sharePass > 1000 ) {
|
if (sharePass != '' && sharePass > 1000 && sharePass < 10000) {
|
||||||
$("#showMsg").html("<font color='red'>不能重复生成分享链接和密码</font>");
|
$("#showMsg").html("<font color='red'>不能重复生成分享链接和密码</font>");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = "/share/genShareLinkPass";
|
var url = "/share/genShareLinkPass";
|
||||||
var shareLink = "https://leanote.com/share/note/" + '{{.noteOrNotebookId}}';
|
var shareLink = host + '/share/note/{{.noteOrNotebookId}}';
|
||||||
var data = {noteId: Share.dialogNoteOrNotebookId};
|
var data = {noteId: Share.dialogNoteOrNotebookId};
|
||||||
ajaxPost(url, data, function(re) {
|
ajaxPost(url, data, function(re) {
|
||||||
if(reIsOk(re)) {
|
if(reIsOk(re)) {
|
||||||
|
|||||||
@@ -1,83 +1,134 @@
|
|||||||
<!DOCTYPE html>
|
{{template "home/header.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" />
|
<section>
|
||||||
<!-- 先加载, 没有样式, 宽度不定 -->
|
</section>
|
||||||
<link rel="stylesheet" href="tinymce/skins/custom/skin.min.css" rel="stylesheet"/>
|
{{$isMarkDown := .isMarkDown}}
|
||||||
|
|
||||||
<!-- leanote css -->
|
<div id="queryNote" style="height:300px;padding-top:80px" align="center">
|
||||||
<link href="css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet" />
|
{{ .userName }}分享了笔记<br/><br>
|
||||||
<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
|
|
||||||
|
您需要输入分享密码才能查看:<br><br>
|
||||||
|
<input type="password" id="sharePass" />
|
||||||
|
<button id="showShareNote">点击查看</button><br/><br/>
|
||||||
|
<span id="showMsg"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="noteContainer"></div>
|
||||||
|
|
||||||
|
|
||||||
|
{{template "home/footer.html"}}
|
||||||
|
|
||||||
|
<script src="/js/jquery-1.9.0.min.js"></script>
|
||||||
|
<script src="/js/bootstrap.js"></script>
|
||||||
|
<script src="/js/common-min.js"></script>
|
||||||
<script>
|
<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 noteId = {{ .noteId }};
|
||||||
var sharePass = $("#sharePass").val();
|
var isMarkDown = {{ .isMarkDown}}
|
||||||
|
|
||||||
|
String.prototype.format = function() {
|
||||||
|
var s = this,
|
||||||
|
i = arguments.length;
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), arguments[i]);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
var getHost = function(url) {
|
||||||
|
var host = "null";
|
||||||
|
if(typeof url == "undefined"
|
||||||
|
|| null == url)
|
||||||
|
url = window.location.href;
|
||||||
|
var regex = /.*\:\/\/([^\/]*).*/;
|
||||||
|
var match = url.match(regex);
|
||||||
|
if(typeof match != "undefined"
|
||||||
|
&& null != match)
|
||||||
|
host = match[1];
|
||||||
|
return host;
|
||||||
|
}
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
|
|
||||||
|
|
||||||
$("#showShareNote").on("click", function() {
|
$("#showShareNote").on("click", function() {
|
||||||
var url = "/share/verify4ShareNote";
|
$("#showMsg").html("");
|
||||||
var data = {noteId: noteId};
|
var url = "/share/verify4ShareNote";
|
||||||
data.sharePass = $("#sharePass").val();
|
|
||||||
ajaxPost(url, data, function(re) {
|
var sharePass = $("#sharePass").val();
|
||||||
if(reIsOk(re)) {
|
var data = {noteId: noteId, sharePass: sharePass};
|
||||||
$("#shareLink").val(shareLink);
|
ajaxPost(url, data, function(re) {
|
||||||
$("#sharePass").val(re.Item);
|
if(reIsOk(re)) {
|
||||||
}
|
$("#queryNote").css("display", "none");
|
||||||
});
|
var title = re.Item.Title;
|
||||||
|
var desc = re.Item.Desc;
|
||||||
|
var imgSrc = re.Item.ImgSrc;
|
||||||
|
var htmlContent = "<div><h1 height='50px'>{0}</h1></div><hr/><div style='vertical-align:center'><p height='auto'>{1}<br>{2}</p>";
|
||||||
|
|
||||||
|
if (re.Item.ImgSrc != "") {
|
||||||
|
htmlContent += "<img src=" + imgSrc + "></img>";
|
||||||
|
}
|
||||||
|
|
||||||
|
var attaches = re.List;
|
||||||
|
var attachesHtml = "";
|
||||||
|
if (attaches.length > 0) {
|
||||||
|
for (var i=0; i<attaches.length; i++) {
|
||||||
|
var linkUrl = getHost() + "/attach/download?attachId=" + attaches[i].AttachId;
|
||||||
|
attachesHtml += "<a href='{0}' target='_blank' data-mce-href='{1}' >附件{2}</a><br/>".format(linkUrl, linkUrl, i+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
htmlContent = htmlContent.format(title, desc, attachesHtml) + "</div>";
|
||||||
|
|
||||||
|
|
||||||
|
/* if (isMarkDown) {
|
||||||
|
var converter = Markdown.getSanitizingConverter();
|
||||||
|
Markdown.Extra.init(converter, {extensions: ["tables", "fenced_code_gfm", "def_list"]});
|
||||||
|
var mdDesc = converter.makeHtml(desc);
|
||||||
|
$("pre").addClass("prettyprint linenums");
|
||||||
|
prettyPrint();
|
||||||
|
MathJax.Hub.Queue(["Typeset",MathJax.Hub,"wmd-preview"]);
|
||||||
|
htmlContent = "<div><h1 height='50px'>"+title+"</h1></div><hr/><div style='vertical-align:center'><p height='auto'>"
|
||||||
|
+mdDesc+"</p></div>";
|
||||||
|
} else {
|
||||||
|
htmlContent = "<div><h1 height='50px'>"+title+"</h1></div><hr/><div style='vertical-align:center'><p height='auto'>"
|
||||||
|
+desc+"</p></div>";
|
||||||
|
} */
|
||||||
|
|
||||||
|
|
||||||
|
$("#noteContainer").css("display", "block").css("height", "auto")
|
||||||
|
.css("padding-top", "20px").css("text-align", "center")
|
||||||
|
.css("margin-left", "auto").css("margin-right", "auto");
|
||||||
|
|
||||||
|
$("#noteContainer").html(htmlContent);
|
||||||
|
} else {
|
||||||
|
$("#showMsg").html("<font color='red'>密码错误</font>");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 平滑滚动
|
||||||
|
$(".smooth-scroll").click(function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var t = $(this).attr("target");
|
||||||
|
var targetOffset = $(t).offset().top - 80;
|
||||||
|
$('html,body').animate({scrollTop: targetOffset}, 300);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script src="js/jquery-1.9.0.min.js"></script>
|
{{if $isMarkDown}}
|
||||||
<script src="js/jquery.ztree.all-3.5.js"></script>
|
<script src="/public/mdeditor/editor/pagedown/Markdown.Converter.js"></script>
|
||||||
<script src="js/i18n/msg.{{.locale}}.js"></script>
|
<script src="/public/mdeditor/editor/pagedown/Markdown.Sanitizer.js"></script>
|
||||||
<script src="js/common-min.js"></script>
|
<script src="/public/mdeditor/editor/pagedown/Markdown.Editor.js"></script>
|
||||||
<script src="tinymce/tinymce.js"></script>
|
<script src="/public/mdeditor/editor/pagedown/local/Markdown.local.zh.js"></script>
|
||||||
<script src="js/app/page-min.js"></script>
|
<script src="/public/mdeditor/editor/Markdown.Extra.js"></script>
|
||||||
<script src="/js/jQuery-slimScroll-1.3.0/jquery.slimscroll.js"></script>
|
<script src="/public/mdeditor/editor/editor.js"></script>
|
||||||
<script src="/js/contextmenu/jquery.contextmenu-min.js"></script>
|
<script src="/public/js/google-code-prettify/prettify.js"></script>
|
||||||
<script src="js/jquery-cookie.js"></script>
|
<!--mathjax-->
|
||||||
<script src="js/bootstrap-min.js"></script>
|
<script type="text/x-mathjax-config">
|
||||||
<script src="js/app/note-min.js"></script>
|
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]], processEscapes: true }, messageStyle: "none"});
|
||||||
<script src="js/app/tag-min.js"></script>
|
</script>
|
||||||
<script src="js/app/notebook-min.js"></script>
|
<script src="/public/mdeditor/editor/mathJax.js"></script>
|
||||||
<script src="js/app/share-min.js"></script>
|
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||||
<script src="js/object_id-min.js"></script>
|
{{end}}
|
||||||
<script src="js/ZeroClipboard/ZeroClipboard-min.js"></script>
|
|
||||||
Reference in New Issue
Block a user