diff --git a/models/Blog.go b/models/Blog.go index 2eb0e543..3b9fbf5e 100644 --- a/models/Blog.go +++ b/models/Blog.go @@ -7,6 +7,9 @@ import ( "github.com/astaxie/beego" "github.com/lifei6671/mindoc/cache" "fmt" + "github.com/PuerkitoBio/goquery" + "strings" + "github.com/qiniu/x/bytes.v7" ) //博文表 @@ -224,6 +227,31 @@ func (b *Blog) Save(cols ...string) error { b.Created = time.Now() _,err = o.Insert(b) } + //如果保存成功,则在后台处理文章中存在的外链问题 + if err == nil { + go func(blog *Blog) { + bufio := bytes.NewReader([]byte(b.BlogRelease)) + //解析文档中非本站的链接,并设置为新窗口打开 + if content, err := goquery.NewDocumentFromReader(bufio); err == nil { + + content.Find("a").Each(func(i int, contentSelection *goquery.Selection) { + if src, ok := contentSelection.Attr("href"); ok { + if strings.HasPrefix(src, "http://") || strings.HasPrefix(src, "https://") { + //beego.Info(src,conf.BaseUrl,strings.HasPrefix(src,conf.BaseUrl)) + if conf.BaseUrl != "" && !strings.HasPrefix(src, conf.BaseUrl) { + contentSelection.SetAttr("target", "_blank") + if html, err := content.Html(); err == nil { + b.BlogRelease = html + } + } + } + + } + }) + } + o.Update(blog) + }(b) + } return err } diff --git a/static/css/markdown.preview.css b/static/css/markdown.preview.css index d8cfa7ba..02b18f33 100644 --- a/static/css/markdown.preview.css +++ b/static/css/markdown.preview.css @@ -1,6 +1,8 @@ /*************表格样式****************/ .markdown-body{ - font-family: "Montserrat", sans-serif !important; + -webkit-backface-visibility: hidden; + font-family: Helvetica, -apple-system, BlinkMacSystemFont, "Montserrat","Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Microsoft Yahei","Helvetica Neue",Helvetica; + } .editormd-preview-container table { margin-top: 0; diff --git a/static/js/editor.js b/static/js/editor.js index 070763c7..f1ae629c 100644 --- a/static/js/editor.js +++ b/static/js/editor.js @@ -248,53 +248,64 @@ function formatBytes($size) { function uploadImage($id,$callback) { /** 粘贴上传图片 **/ document.getElementById($id).addEventListener('paste', function(e) { + if(e.clipboardData && e.clipboardData.items) { + var clipboard = e.clipboardData; + for (var i = 0, len = clipboard.items.length; i < len; i++) { + if (clipboard.items[i].kind === 'file' || clipboard.items[i].type.indexOf('image') > -1) { - var clipboard = e.clipboardData; - for (var i = 0, len = clipboard.items.length; i < len; i++) { - if (clipboard.items[i].kind === 'file' || clipboard.items[i].type.indexOf('image') > -1) { + var imageFile = clipboard.items[i].getAsFile(); - var imageFile = clipboard.items[i].getAsFile(); - - var fileName = Date.parse(new Date()); - - switch (imageFile.type){ - case "image/png" : fileName += ".png";break; - case "image/jpg" : fileName += ".jpg";break - case "image/jpeg" : fileName += ".jpeg";break; - case "image/gif" : fileName += ".gif";break; - default : layer.msg("不支持的图片格式");return; - } - var form = new FormData(); - - form.append('editormd-image-file', imageFile, fileName); - - var layerIndex = 0; - - $.ajax({ - url: window.imageUploadURL, - type: "POST", - dataType: "json", - data: form, - processData: false, - contentType: false, - beforeSend: function() { - layerIndex = $callback('before'); - }, - error: function() { - layer.close(layerIndex); - $callback('error'); - layer.msg("图片上传失败"); - }, - success: function(data) { - layer.close(layerIndex); - $callback('success', data); - if(data.errcode !== 0){ - layer.msg(data.message); - } + var fileName = String((new Date()).valueOf()); + switch (imageFile.type) { + case "image/png" : + fileName += ".png"; + break; + case "image/jpg" : + fileName += ".jpg"; + break; + case "image/jpeg" : + fileName += ".jpeg"; + break; + case "image/gif" : + fileName += ".gif"; + break; + default : + layer.msg("不支持的图片格式"); + return; } - }); - e.preventDefault(); + var form = new FormData(); + + form.append('editormd-image-file', imageFile, fileName); + + var layerIndex = 0; + + $.ajax({ + url: window.imageUploadURL, + type: "POST", + dataType: "json", + data: form, + processData: false, + contentType: false, + beforeSend: function () { + layerIndex = $callback('before'); + }, + error: function () { + layer.close(layerIndex); + $callback('error'); + layer.msg("图片上传失败"); + }, + success: function (data) { + layer.close(layerIndex); + $callback('success', data); + if (data.errcode !== 0) { + layer.msg(data.message); + } + + } + }); + e.preventDefault(); + } } } }); diff --git a/views/blog/index.tpl b/views/blog/index.tpl index cf6f4303..a0746be4 100644 --- a/views/blog/index.tpl +++ b/views/blog/index.tpl @@ -49,6 +49,7 @@ color: #666666; vertical-align: middle; } + .blog-footer{ margin: 25px auto; /*border-top: 1px solid #E5E5E5;*/