commit sharing note
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
// "github.com/leanote/leanote/app/types"
|
||||
// "io/ioutil"
|
||||
// "fmt"
|
||||
// "time"
|
||||
)
|
||||
|
||||
type Share struct {
|
||||
@@ -204,16 +205,25 @@ func (c Share) QuerySharePass(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["title"] = note.UserId
|
||||
c.RenderArgs["noteId"] = noteId
|
||||
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")
|
||||
}
|
||||
|
||||
//验证分享密码
|
||||
//func (c Share) Verify4ShareNote(noteId string, sharePass int) revel.Result {
|
||||
// ok = shareService.Verify4ShareNote(noteId, sharePass);
|
||||
// re := info.Re{Ok : true, Item : pass}
|
||||
//
|
||||
//}
|
||||
func (c Share) Verify4ShareNote(noteId string, sharePass int) revel.Result {
|
||||
ok, note := shareService.Verify4ShareNote(noteId, sharePass);
|
||||
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) {
|
||||
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}})
|
||||
return pass, ok
|
||||
}
|
||||
@@ -798,3 +795,14 @@ func (this *ShareService) QuerySharePass(noteId string) int {
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
// 得到用户名
|
||||
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
|
||||
func (this *UserService) IsExistsUser(email string) bool {
|
||||
if this.GetUserId(email) == "" {
|
||||
|
||||
@@ -125,18 +125,33 @@
|
||||
Share.dialogIsNote = {{.isNote}};
|
||||
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() {
|
||||
setTimeout(function() {
|
||||
$("#tr1 #friendsEmail").focus();
|
||||
}, 500);
|
||||
|
||||
var host = getHost();
|
||||
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}}';
|
||||
var shareLink = host + '/share/note/{{.noteOrNotebookId}}';
|
||||
$("#shareLink").val(shareLink);
|
||||
$("#sharePass").val(re.Item);
|
||||
}
|
||||
@@ -204,13 +219,13 @@ $("#groupInfo").on("click", ".btn-share-or-not", function() {
|
||||
//生成分享链接和密码
|
||||
$("#genShareLink").on("click", function() {
|
||||
var sharePass = $("#sharePass").val();
|
||||
if (sharePass != '' && sharePass > 1000 ) {
|
||||
if (sharePass != '' && sharePass > 1000 && sharePass < 10000) {
|
||||
$("#showMsg").html("<font color='red'>不能重复生成分享链接和密码</font>");
|
||||
return;
|
||||
}
|
||||
|
||||
var url = "/share/genShareLinkPass";
|
||||
var shareLink = "https://leanote.com/share/note/" + '{{.noteOrNotebookId}}';
|
||||
var shareLink = host + '/share/note/{{.noteOrNotebookId}}';
|
||||
var data = {noteId: Share.dialogNoteOrNotebookId};
|
||||
ajaxPost(url, data, function(re) {
|
||||
if(reIsOk(re)) {
|
||||
|
||||
@@ -1,83 +1,134 @@
|
||||
<!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>
|
||||
{{template "home/header.html" .}}
|
||||
|
||||
<link href="/css/bootstrap.css" rel="stylesheet" />
|
||||
<!-- 先加载, 没有样式, 宽度不定 -->
|
||||
<link rel="stylesheet" href="tinymce/skins/custom/skin.min.css" rel="stylesheet"/>
|
||||
<section>
|
||||
</section>
|
||||
{{$isMarkDown := .isMarkDown}}
|
||||
|
||||
<!-- leanote css -->
|
||||
<link href="css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet" />
|
||||
<link href="css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
|
||||
<div id="queryNote" style="height:300px;padding-top:80px" align="center">
|
||||
{{ .userName }}分享了笔记<br/><br>
|
||||
|
||||
您需要输入分享密码才能查看:<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>
|
||||
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();
|
||||
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() {
|
||||
|
||||
|
||||
$("#showShareNote").on("click", function() {
|
||||
$("#showMsg").html("");
|
||||
var url = "/share/verify4ShareNote";
|
||||
var data = {noteId: noteId};
|
||||
data.sharePass = $("#sharePass").val();
|
||||
|
||||
var sharePass = $("#sharePass").val();
|
||||
var data = {noteId: noteId, sharePass: sharePass};
|
||||
ajaxPost(url, data, function(re) {
|
||||
if(reIsOk(re)) {
|
||||
$("#shareLink").val(shareLink);
|
||||
$("#sharePass").val(re.Item);
|
||||
$("#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 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>
|
||||
{{if $isMarkDown}}
|
||||
<script src="/public/mdeditor/editor/pagedown/Markdown.Converter.js"></script>
|
||||
<script src="/public/mdeditor/editor/pagedown/Markdown.Sanitizer.js"></script>
|
||||
<script src="/public/mdeditor/editor/pagedown/Markdown.Editor.js"></script>
|
||||
<script src="/public/mdeditor/editor/pagedown/local/Markdown.local.zh.js"></script>
|
||||
<script src="/public/mdeditor/editor/Markdown.Extra.js"></script>
|
||||
<script src="/public/mdeditor/editor/editor.js"></script>
|
||||
<script src="/public/js/google-code-prettify/prettify.js"></script>
|
||||
<!--mathjax-->
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]], processEscapes: true }, messageStyle: "none"});
|
||||
</script>
|
||||
<script src="/public/mdeditor/editor/mathJax.js"></script>
|
||||
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
{{end}}
|
||||
Reference in New Issue
Block a user