Compare commits

..
60 Commits
Author SHA1 Message Date
lealife 290772b437 init index 2016-05-30 11:51:41 +08:00
lealife 6ebedf94f0 app.conf 2016-05-25 17:33:38 +08:00
lealife a07bb25128 remove unused codes and add site'url configuration on admin 2016-05-25 16:05:47 +08:00
lealife a007b89ebb v2.0 2016-05-25 14:46:40 +08:00
lealife cc4b003503 markdown vim cursor fixed 2016-05-25 09:51:53 +08:00
lealife 091922175a box leanote logo 2016-05-22 16:12:51 +08:00
lealife 371c93912d build 2016-05-22 10:36:36 +08:00
lealife 27221acda7 new logo 2016-05-22 10:34:40 +08:00
lealife 5db724e80b new logo 2016-05-21 23:05:50 +08:00
lealife 5c9e95ed60 build 2016-04-16 14:53:30 +08:00
lealife 2fc97ed42d markdown editor prettify add linenums 2016-04-16 14:51:54 +08:00
lealife 45cca30cec lea++ -> Explore 2016-04-16 12:09:48 +08:00
lealife 31167b6aaf recount tags 2016-04-16 11:58:39 +08:00
lealife 139906b9d6 recount tags when public note 2016-04-16 11:31:27 +08:00
lealife a9d49369e2 upgrade markdown mathjax 2016-04-12 22:02:36 +08:00
life 303e0da5c0 Update README.md 2016-04-09 10:12:46 +08:00
life ff5523bfaa Merge pull request #340 from eric2100/patch-15
Update blog.conf
2016-04-08 17:07:20 +08:00
Tsunghan,Tsai 063dd0140d Update blog.conf
部分口語修改
2016-04-08 12:31:41 +08:00
life c52d388d5d Merge pull request #337 from eric2100/patch-14
Update msg.conf
2016-04-07 17:31:04 +08:00
eric2100 18bcdb48af Update msg.conf 2016-04-07 12:29:03 +08:00
life db8f132507 Merge pull request #333 from eric2100/patch-9
Update blog.conf
2016-04-05 10:14:31 +08:00
life 439d5212b0 Merge pull request #334 from eric2100/patch-10
Update markdown.conf
2016-04-05 10:13:40 +08:00
life 88e2320027 Merge pull request #335 from eric2100/patch-11
Update member.conf
2016-04-05 10:13:09 +08:00
life 659a4e590a Merge pull request #336 from eric2100/patch-12
Update tinymce_editor.conf
2016-04-05 10:12:19 +08:00
eric2100 ab7f2386e0 Update tinymce_editor.conf 2016-04-05 00:24:21 +08:00
eric2100 ec82ff18f2 Update member.conf 2016-04-05 00:16:00 +08:00
eric2100 f3f00626e6 Update markdown.conf 2016-04-05 00:03:27 +08:00
eric2100 80fbb56426 Update blog.conf 2016-04-05 00:01:46 +08:00
life a5c952882f Merge pull request #332 from eric2100/patch-8
Update album.conf
2016-04-03 21:30:30 +08:00
eric2100 973b452a7e Update album.conf 2016-04-02 21:12:30 +08:00
lealife 25bcd21ea9 overwrite revel.Message 2016-03-19 23:00:41 +08:00
lealife 09de5e1e83 Gulp js i18n generator 2016-03-19 15:46:41 +08:00
lealife 15b0ef21ff restructure messages 2016-03-19 15:37:36 +08:00
lealife 9cf9ded855 remove config langs. Gulp will get all langs by messages/ 2016-03-19 15:17:15 +08:00
lealife 7af433ebaf build 2016-03-19 14:36:47 +08:00
lealife 67b608b324 set langs to config and modify gulp build to support langs 2016-03-19 14:30:07 +08:00
lealife 2aa3f5a654 support 中文繁体 2016-03-19 14:05:09 +08:00
lealife f5538218bd remove baidu statistics Code
https://github.com/leanote/leanote/issues/318
2016-03-04 22:23:53 +08:00
lealife 0e3bdd177c md resize when toggle 2016-02-27 15:30:01 +08:00
lealife 12520cc09d mathjax 2.6.1 2016-02-27 14:20:31 +08:00
life cb67892124 Merge pull request #309 from alexsourcerer/patch-8
Update msg.fr
2016-02-18 14:55:17 +08:00
alexsourcerer 45c09c9a26 Update msg.fr
I updated the msg.fr file (note that the website isn't it french at all anymore for french users)
2016-02-03 23:10:50 +01:00
lealife 20951ea2dd build release 2015-12-25 23:59:57 +08:00
lealife 530f2368da v1.4.2 released 2015-12-25 23:45:38 +08:00
lealife e685a99628 member css for multi lang 2015-12-25 23:45:19 +08:00
lealife bfc5acc3ee 1.4.2 released 2015-12-25 11:50:34 +08:00
lealife 551e3d965e markdown todo-list style 2015-12-25 11:50:34 +08:00
lealife 7c479b5595 fix ace editor hide the last line part section text 2015-12-25 11:50:34 +08:00
lealife b135f9717f fix gen desc 2015-12-25 11:50:34 +08:00
lealife 08ae37cae0 markdown add todo-list feature 2015-12-25 11:50:34 +08:00
Yingbo CUI 315a7bbe62 Update README.md 2015-12-24 16:47:31 +08:00
life e173b18ddc Merge pull request #285 from eurafa/master
Portuguese (Brazil) language added
2015-12-17 10:29:10 +08:00
Rafael Andrade de Oliveira dcc25df679 Chinese translations 2015-12-13 09:09:02 -02:00
Rafael Andrade de Oliveira c561dec14c Portuguese (Brazil) language added 2015-12-13 09:03:50 -02:00
lealife 43e8f2e701 markdown editor inited 2015-12-06 15:48:05 +08:00
lealife dd9952c453 fix export pdf error 2015-12-04 17:50:14 +08:00
lealife 19517dd634 fix export pdf error 2015-12-04 17:37:57 +08:00
lealife a5b006aae7 添加全局 toggle modify with readonly; 发布1.4.1 2015-12-02 20:56:03 +08:00
lealife 90bd07cdcc * markdown v2, 修复笔记内容覆盖 2015-12-02 20:55:34 +08:00
lealife 92576e9239 arm run script 2015-11-29 13:05:26 +08:00
905 changed files with 6661 additions and 3663 deletions

No files matched your search

+33 -15
View File
@@ -15,6 +15,8 @@ var base = leanoteBase + '/public'; // public base
var noteDev = leanoteBase + '/app/views/note/note-dev.html'; var noteDev = leanoteBase + '/app/views/note/note-dev.html';
var noteProBase = leanoteBase + '/app/views/note'; var noteProBase = leanoteBase + '/app/views/note';
var messagesPath = leanoteBase + 'messages';
// 合并Js, 这些js都是不怎么修改, 且是依赖 // 合并Js, 这些js都是不怎么修改, 且是依赖
// 840kb, 非常耗时!! // 840kb, 非常耗时!!
gulp.task('concatDepJs', function() { gulp.task('concatDepJs', function() {
@@ -205,6 +207,7 @@ gulp.task('i18n', function() {
ls(leanoteBase + '/app/views'); ls(leanoteBase + '/app/views');
console.log('parsed'); console.log('parsed');
var langs = {}; // zh-cn: 1
// msg.zh // msg.zh
function getAllMsgs(fname) { function getAllMsgs(fname) {
@@ -229,14 +232,25 @@ gulp.task('i18n', function() {
return msg; return msg;
} }
// 得到所有的语言的后缀
// 返回{en-us: 1, }
function getAllLangs() {
var langs = {};
var files = fs.readdirSync(messagesPath);
for(fn in files) {
var fname = files[fn];
if (fname.indexOf('-') > 0) {
langs[fname] = 1;
}
}
return langs;
}
// msg.zh, msg.js // msg.zh, msg.js
function genI18nJsFile(fromFilename, otherNames, keys) { function genI18nJsFile(targetFilename, lang, fromFilenames, keys) {
var msgs = {}; var msgs = {};
otherNames.unshift(fromFilename); fromFilenames.forEach(function (name) {
// console.log(fromFilename); var tmpMsgs = getAllMsgs(leanoteBase + '/messages/' + lang + '/' + name + '.conf');
// console.log(otherNames);
otherNames.forEach(function (name) {
var tmpMsgs = getAllMsgs(leanoteBase + '/messages/' + name);
for (var i in tmpMsgs) { for (var i in tmpMsgs) {
msgs[i] = tmpMsgs[i]; msgs[i] = tmpMsgs[i];
} }
@@ -261,20 +275,24 @@ gulp.task('i18n', function() {
'}'; '}';
// 写入到文件中 // 写入到文件中
var toFilename = fromFilename + '.js'; var toFilename = targetFilename + '.' + lang + '.js';
fs.writeFile(base + '/js/i18n/' + toFilename, str); fs.writeFile(base + '/js/i18n/' + toFilename, str);
} }
// 必须要的 function genTinymceLang(lang) {
// keys.push(); var msgs = getAllMsgs(leanoteBase + 'messages/' + lang + '/tinymce_editor.conf');
var str = 'tinymce.addI18n("' + lang + '",' + JSON.stringify(msgs) + ');';
fs.writeFile(base + '/tinymce/langs/' + lang + '.js', str);
}
genI18nJsFile('blog.zh', [], keys); var langs = getAllLangs();
genI18nJsFile('blog.en', [], keys); for (var lang in langs) {
genI18nJsFile('blog.fr', [], keys); genI18nJsFile('blog', lang, ['blog'], keys);
genI18nJsFile('msg', lang, ['msg', 'member', 'markdown', 'album'], keys);
genTinymceLang(lang);
}
genI18nJsFile('msg.fr', ['member.fr', 'markdown.fr', 'album.fr'], keys);
genI18nJsFile('msg.zh', ['member.zh', 'markdown.zh', 'album.zh'], keys);
genI18nJsFile('msg.en', ['member.en', 'markdown.en', 'album.en'], keys);
}); });
// 合并album需要的js // 合并album需要的js
+3 -3
View File
@@ -72,14 +72,14 @@ Support us, [donate us](http://leanote.org/#donate). And thanks [donators](http:
* [Leanote iOS](https://github.com/leanote/leanote-ios), [Download From App Store](https://itunes.apple.com/en/app/leanote/id1022302858?mt=8) * [Leanote iOS](https://github.com/leanote/leanote-ios), [Download From App Store](https://itunes.apple.com/en/app/leanote/id1022302858?mt=8)
* [Leanote Android](https://github.com/leanote/leanote-android), development phase * [Leanote Android](https://github.com/leanote/leanote-android), development phase
Yare are welcome to join us. You are welcome to join us.
## 9. Support & Join us ## 9. Support & Join us
* Email: leanote@leanote.com * Email: leanote@leanote.com
* [Leanote BBS](http://bbs.leanote.com) * [Leanote BBS](http://bbs.leanote.com)
* [Leanote Google Group](https://groups.google.com/forum/#!forum/leanote) * [Leanote Google Group](https://groups.google.com/forum/#!forum/leanote)
* QQ Group: 256076853, 158716820 * QQ Group: 326073529, 256076853, 158716820
----------------------------------------------------------------------- -----------------------------------------------------------------------
@@ -160,6 +160,6 @@ Leanote还有很多问题, 如果你喜欢它, 欢迎加入我们一起完善Lea
## 联系&加入我们 ## 联系&加入我们
* Email: leanote@leanote.com * Email: leanote@leanote.com
* [Leanote 社区](http://bbs.leanote.com) * [Leanote 社区](http://bbs.leanote.com)
* QQ群: 256076853, 158716820(已满) * QQ群: 326073529, 256076853, 158716820
* [Leanote Google Group](https://groups.google.com/forum/#!forum/leanote) * [Leanote Google Group](https://groups.google.com/forum/#!forum/leanote)
+16 -6
View File
@@ -3,6 +3,7 @@ package controllers
import ( import (
"encoding/json" "encoding/json"
"github.com/leanote/leanote/app/info" "github.com/leanote/leanote/app/info"
"github.com/leanote/leanote/app/lea/i18n"
"github.com/revel/revel" "github.com/revel/revel"
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
// . "github.com/leanote/leanote/app/lea" // . "github.com/leanote/leanote/app/lea"
@@ -19,6 +20,11 @@ type BaseController struct {
*revel.Controller *revel.Controller
} }
// 覆盖revel.Message
func (c *BaseController) Message(message string, args ...interface{}) (value string) {
return i18n.Message(c.Request.Locale, message, args...)
}
func (c BaseController) GetUserId() string { func (c BaseController) GetUserId() string {
if userId, ok := c.Session["UserId"]; ok { if userId, ok := c.Session["UserId"]; ok {
return userId return userId
@@ -181,13 +187,17 @@ func (c BaseController) E404() revel.Result {
// 设置本地 // 设置本地
func (c BaseController) SetLocale() string { func (c BaseController) SetLocale() string {
locale := string(c.Request.Locale) // zh-CN locale := string(c.Request.Locale) // zh-CN
// lang := locale
// if strings.Contains(locale, "-") {
// pos := strings.Index(locale, "-")
// lang = locale[0:pos]
// }
// if lang != "zh" && lang != "en" {
// lang = "en"
// }
lang := locale lang := locale
if strings.Contains(locale, "-") { if !i18n.HasLang(locale) {
pos := strings.Index(locale, "-") lang = i18n.GetDefaultLang()
lang = locale[0:pos]
}
if lang != "zh" && lang != "en" {
lang = "en"
} }
c.RenderArgs["locale"] = lang c.RenderArgs["locale"] = lang
c.RenderArgs["siteUrl"] = configService.GetSiteUrl() c.RenderArgs["siteUrl"] = configService.GetSiteUrl()
+13 -13
View File
@@ -113,8 +113,8 @@ func (c Blog) setPreviewUrl() {
themeId := c.Session["themeId"] themeId := c.Session["themeId"]
theme := themeService.GetTheme(userId, themeId) theme := themeService.GetTheme(userId, themeId)
siteUrl := configService.GetSiteUrl() // siteUrl := configService.GetSiteUrl()
blogUrl := siteUrl + "/preview" // blog.leanote.com blogUrl := "/preview" // blog.leanote.com
indexUrl = blogUrl + "/" + userIdOrEmail indexUrl = blogUrl + "/" + userIdOrEmail
cateUrl = blogUrl + "/cate/" + userIdOrEmail // /notebookId cateUrl = blogUrl + "/cate/" + userIdOrEmail // /notebookId
@@ -143,8 +143,8 @@ func (c Blog) setPreviewUrl() {
// 各种地址设置 // 各种地址设置
func (c Blog) setUrl(userBlog info.UserBlog, userInfo info.User) { func (c Blog) setUrl(userBlog info.UserBlog, userInfo info.User) {
// 主页 http://leanote.com/blog/life or http://blog.leanote.com/life or http:// xxxx.leanote.com or aa.com // 主页 http://leanote.com/blog/life or http://blog.leanote.com/life or http:// xxxx.leanote.com or aa.com
host := c.Request.Request.Host // host := c.Request.Request.Host
var staticUrl = configService.GetUserUrl(strings.Split(host, ":")[0]) // var staticUrl = configService.GetUserUrl(strings.Split(host, ":")[0])
// staticUrl == host, 为保证同源!!! 只有host, http://leanote.com, http://blog/leanote.com // staticUrl == host, 为保证同源!!! 只有host, http://leanote.com, http://blog/leanote.com
// life.leanote.com, lealife.com // life.leanote.com, lealife.com
siteUrl := configService.GetSiteUrl() siteUrl := configService.GetSiteUrl()
@@ -168,20 +168,20 @@ func (c Blog) setUrl(userBlog info.UserBlog, userInfo info.User) {
c.RenderArgs["themeBaseUrl"] = "/" + userBlog.ThemePath c.RenderArgs["themeBaseUrl"] = "/" + userBlog.ThemePath
// 其它static js // 其它static js
c.RenderArgs["jQueryUrl"] = siteUrl + "/js/jquery-1.9.0.min.js" c.RenderArgs["jQueryUrl"] = "/js/jquery-1.9.0.min.js"
c.RenderArgs["prettifyJsUrl"] = siteUrl + "/js/google-code-prettify/prettify.js" c.RenderArgs["prettifyJsUrl"] = "/js/google-code-prettify/prettify.js"
c.RenderArgs["prettifyCssUrl"] = siteUrl + "/js/google-code-prettify/prettify.css" c.RenderArgs["prettifyCssUrl"] = "/js/google-code-prettify/prettify.css"
c.RenderArgs["blogCommonJsUrl"] = siteUrl + "/public/blog/js/common.js" c.RenderArgs["blogCommonJsUrl"] = "/public/blog/js/common.js"
c.RenderArgs["shareCommentCssUrl"] = siteUrl + "/public/blog/css/share_comment.css" c.RenderArgs["shareCommentCssUrl"] = "/public/blog/css/share_comment.css"
c.RenderArgs["shareCommentJsUrl"] = siteUrl + "/public/blog/js/share_comment.js" c.RenderArgs["shareCommentJsUrl"] = "/public/blog/js/share_comment.js"
c.RenderArgs["fontAwesomeUrl"] = staticUrl + "/css/font-awesome-4.2.0/css/font-awesome.css" c.RenderArgs["fontAwesomeUrl"] = "/css/font-awesome-4.2.0/css/font-awesome.css"
c.RenderArgs["bootstrapCssUrl"] = siteUrl + "/css/bootstrap.css" c.RenderArgs["bootstrapCssUrl"] = "/css/bootstrap.css"
c.RenderArgs["bootstrapJsUrl"] = siteUrl + "/js/bootstrap-min.js" c.RenderArgs["bootstrapJsUrl"] = "/js/bootstrap-min.js"
} }
// 笔记本分类 // 笔记本分类
@@ -79,6 +79,12 @@ func (c AdminSetting) ExportPdf(path string) revel.Result {
return c.RenderJson(re) return c.RenderJson(re)
} }
func (c AdminSetting) DoSiteUrl(siteUrl string) revel.Result {
re := info.NewRe()
re.Ok = configService.UpdateGlobalStringConfig(c.GetUserId(), "siteUrl", siteUrl)
return c.RenderJson(re)
}
// SubDomain // SubDomain
func (c AdminSetting) SubDomain() revel.Result { func (c AdminSetting) SubDomain() revel.Result {
c.RenderArgs["str"] = configService.GlobalStringConfigs c.RenderArgs["str"] = configService.GlobalStringConfigs
+210
View File
@@ -166,6 +166,216 @@ func Init(url, dbname string) {
// session // session
Sessions = Session.DB(dbname).C("sessions") Sessions = Session.DB(dbname).C("sessions")
collectionNames, err := Session.DB(dbname).CollectionNames()
// 如果没有表, 则表示是第一次安装
if (err != nil || len(collectionNames) == 0) {
Log("init db index")
initIndex(dbname)
}
}
func initIndex(dbname string) {
// 索引
indexes := map[string][]mgo.Index{
"notebooks": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"notes": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
mgo.Index{
Key: []string{"IsTrash"},
Background: true,
},
mgo.Index{
Key: []string{"UrlTitle"},
Background: true,
},
mgo.Index{
Key: []string{"IsBlog"},
Background: true,
},
mgo.Index{
Key: []string{"CreatedTime"},
Background: true,
},
mgo.Index{
Key: []string{"UpdatedTime"},
Background: true,
},
mgo.Index{
Key: []string{"PublicTime"},
Background: true,
},
mgo.Index{
Key: []string{"RecommendTime"},
Background: true,
},
mgo.Index{
Key: []string{"NotebookId"},
Background: true,
},
mgo.Index{
Key: []string{"UserId", "IsBlog"},
Background: true,
},
},
"note_contents": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"note_content_histories": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"share_notes": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
mgo.Index{
Key: []string{"ToUserId"},
Background: true,
},
},
"share_notebooks": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
mgo.Index{
Key: []string{"ToUserId"},
Background: true,
},
},
"has_share_notes": []mgo.Index{
mgo.Index{
Key: []string{"UserId", "ToUserId"},
Background: true,
Unique: true,
},
},
"users": []mgo.Index{
mgo.Index{
Key: []string{"Email"},
Background: true,
},
mgo.Index{
Key: []string{"Username"},
Background: true,
},
},
"groups": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"group_users": []mgo.Index{
mgo.Index{
Key: []string{"GroupId"},
Background: true,
},
},
"tags": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"note_tags": []mgo.Index{
mgo.Index{
Key: []string{"UserId", "TagId"},
Background: true,
},
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"tag_count": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"blog_singles": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"blog_likes": []mgo.Index{
mgo.Index{
Key: []string{"NoteId"},
Background: true,
},
},
"blog_comments": []mgo.Index{
mgo.Index{
Key: []string{"NoteId"},
Background: true,
},
},
"themes": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"note_images": []mgo.Index{
mgo.Index{
Key: []string{"ImageId"},
Background: true,
},
mgo.Index{
Key: []string{"NoteId"},
Background: true,
},
},
"albums": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"files": []mgo.Index{
mgo.Index{
Key: []string{"UserId"},
Background: true,
},
},
"attachs": []mgo.Index{
mgo.Index{
Key: []string{"NoteId"},
Background: true,
},
},
"sessions": []mgo.Index{
mgo.Index{
Key: []string{"SessionId"},
Background: true,
},
},
}
for collection, ins := range indexes {
col := Session.DB(dbname).C(collection)
for _, in := range ins {
col.EnsureIndex(in)
}
}
} }
func close() { func close() {
-92
View File
@@ -1,92 +0,0 @@
package main
import (
"bufio"
"encoding/json"
"fmt"
"os"
"strings"
)
// convert revel msg to js msg
var msgBasePath = "/Users/life/Documents/Go/package2/src/github.com/leanote/leanote/messages/"
var targetBasePath = "/Users/life/Documents/Go/package2/src/github.com/leanote/leanote/public/js/i18n/"
func parse(filename string) {
file, err := os.Open(msgBasePath + filename)
reader := bufio.NewReader(file)
msg := map[string]string{}
if err != nil {
fmt.Println(err)
return
}
for true {
line, _, err := reader.ReadLine()
if err != nil {
break
}
if len(line) == 0 {
continue
}
// 对每一行进行处理
if line[0] == '#' || line[1] == '#' {
continue
}
lineStr := string(line)
// 找到第一个=位置
pos := strings.Index(lineStr, "=")
if pos < 0 {
continue
}
key := string(line[0:pos])
value := string(line[pos+1:])
// fmt.Println(lineStr)
// fmt.Println(value)
msg[key] = value
}
// JSON
b, _ := json.Marshal(msg)
str := string(b)
fmt.Println(str)
targetName := targetBasePath + filename + ".js"
file2, err2 := os.OpenFile(targetName, os.O_RDWR|os.O_CREATE, 0644)
if err2 != nil {
file2, err2 = os.Create(targetName)
}
file2.WriteString("var MSG = " + str + ";" + `
function getMsg(key, data) {
var msg = MSG[key]
if(msg) {
if(data) {
if(!isArray(data)) {
data = [data];
}
for(var i = 0; i < data.length; ++i) {
msg = msg.replace("%s", data[i]);
}
}
return msg;
}
return key;
}`)
}
// 生成js的i18n文件
func main() {
parse("msg.en")
parse("msg.zh")
parse("msg.fr")
parse("blog.zh")
parse("blog.en")
parse("blog.fr")
}
+17 -7
View File
@@ -10,6 +10,7 @@ import (
"github.com/leanote/leanote/app/db" "github.com/leanote/leanote/app/db"
. "github.com/leanote/leanote/app/lea" . "github.com/leanote/leanote/app/lea"
_ "github.com/leanote/leanote/app/lea/binder" _ "github.com/leanote/leanote/app/lea/binder"
"github.com/leanote/leanote/app/lea/i18n"
"github.com/leanote/leanote/app/lea/route" "github.com/leanote/leanote/app/lea/route"
"github.com/leanote/leanote/app/service" "github.com/leanote/leanote/app/service"
"github.com/revel/revel" "github.com/revel/revel"
@@ -38,9 +39,10 @@ func init() {
// session.SessionFilter, // leanote session // session.SessionFilter, // leanote session
// session.MSessionFilter, // leanote memcache session // session.MSessionFilter, // leanote memcache session
revel.FlashFilter, // Restore and write the flash cookie. revel.FlashFilter, // Restore and write the flash cookie.
revel.ValidationFilter, // Restore kept validation errors and save new ones from cookie. revel.ValidationFilter, // Restore kept validation errors and save new ones from cookie.
revel.I18nFilter, // Resolve the requested language // revel.I18nFilter, // Resolve the requested language
i18n.I18nFilter, // Resolve the requested language by leanote
revel.InterceptorFilter, // Run interceptors around the action. revel.InterceptorFilter, // Run interceptors around the action.
revel.CompressFilter, // Compress the result. revel.CompressFilter, // Compress the result.
revel.ActionInvoker, // Invoke the action. revel.ActionInvoker, // Invoke the action.
@@ -180,10 +182,18 @@ func init() {
return template.HTML(tagStr) return template.HTML(tagStr)
} }
revel.TemplateFuncs["msg"] = func(renderArgs map[string]interface{}, message string, args ...interface{}) template.HTML {
str, ok := renderArgs[revel.CurrentLocaleRenderArg].(string)
if !ok {
return ""
}
return template.HTML(i18n.Message(str, message, args...))
}
// 不用revel的msg // 不用revel的msg
revel.TemplateFuncs["leaMsg"] = func(renderArgs map[string]interface{}, key string) template.HTML { revel.TemplateFuncs["leaMsg"] = func(renderArgs map[string]interface{}, key string) template.HTML {
locale, _ := renderArgs[revel.CurrentLocaleRenderArg].(string) locale, _ := renderArgs[revel.CurrentLocaleRenderArg].(string)
str := revel.Message(locale, key) str := i18n.Message(locale, key)
if strings.HasPrefix(str, "???") { if strings.HasPrefix(str, "???") {
str = key str = key
} }
@@ -392,9 +402,9 @@ func init() {
*/ */
/* /*
{{range $i := N 1 10}} {{range $i := N 1 10}}
<div>{{$i}}</div> <div>{{$i}}</div>
{{end}} {{end}}
*/ */
revel.TemplateFuncs["N"] = func(start, end int) (stream chan int) { revel.TemplateFuncs["N"] = func(start, end int) (stream chan int) {
stream = make(chan int) stream = make(chan int)
+223
View File
@@ -0,0 +1,223 @@
package i18n
import (
"fmt"
"github.com/revel/revel"
"github.com/robfig/config"
"os"
"path/filepath"
"regexp"
"strings"
)
const (
CurrentLocaleRenderArg = "currentLocale" // The key for the current locale render arg value
messageFilesDirectory = "messages"
messageFilePattern = `^\w+\.conf$`
unknownValueFormat = "??? %s ???"
defaultLanguageOption = "i18n.default_language"
localeCookieConfigKey = "i18n.cookie"
)
var (
// All currently loaded message configs.
// en-us, zh-cn, zh-hk ->
messages map[string]*config.Config
)
func GetAllLangMessages() map[string]*config.Config {
return messages
}
func HasLang(lang string) bool {
_, ok := messages[lang]
return ok
}
func GetDefaultLang() string {
lang, _ := revel.Config.String(defaultLanguageOption)
return lang
}
// Return all currently loaded message languages.
func MessageLanguages() []string {
languages := make([]string, len(messages))
i := 0
for language, _ := range messages {
languages[i] = language
i++
}
return languages
}
// Perform a message look-up for the given locale and message using the given arguments.
//
// When either an unknown locale or message is detected, a specially formatted string is returned.
func Message(locale, message string, args ...interface{}) string {
language, region := parseLocale(locale)
langAndRegion := language + "-" + region
// revel.TRACE.Println(langAndRegion + " 怎么回事")
messageConfig, knownLanguage := messages[langAndRegion]
if !knownLanguage {
// revel.TRACE.Printf("Unsupported language for locale '%s' and message '%s', trying default language", locale, message)
if defaultLanguage, found := revel.Config.String(defaultLanguageOption); found {
// revel.TRACE.Printf("Using default language '%s'", defaultLanguage)
messageConfig, knownLanguage = messages[defaultLanguage]
if !knownLanguage {
// WARN.Printf("Unsupported default language for locale '%s' and message '%s'", defaultLanguage, message)
return fmt.Sprintf(unknownValueFormat, message)
}
} else {
// WARN.Printf("Unable to find default language option (%s); messages for unsupported locales will never be translated", defaultLanguageOption)
return fmt.Sprintf(unknownValueFormat, message)
}
}
// This works because unlike the goconfig documentation suggests it will actually
// try to resolve message in DEFAULT if it did not find it in the given section.
value, error := messageConfig.String(region, message)
if error != nil {
// WARN.Printf("Unknown message '%s' for locale '%s'", message, locale)
return fmt.Sprintf(unknownValueFormat, message)
}
if len(args) > 0 {
// revel.TRACE.Printf("Arguments detected, formatting '%s' with %v", value, args)
value = fmt.Sprintf(value, args...)
}
return value
}
func parseLocale(locale string) (language, region string) {
if strings.Contains(locale, "-") {
languageAndRegion := strings.Split(locale, "-")
return languageAndRegion[0], languageAndRegion[1]
}
return locale, ""
}
// Recursively read and cache all available messages from all message files on the given path.
func loadMessages(path string) {
messages = make(map[string]*config.Config)
if error := filepath.Walk(path, loadEachMessageLang); error != nil && !os.IsNotExist(error) {
// ERROR.Println("Error reading messages files:", error)
}
}
// 加载每一个文件夹
func loadEachMessageLang(parentPath string, parentInfo os.FileInfo, osError error) (err error) {
if !parentInfo.IsDir() {
return nil
}
if err := filepath.Walk(parentPath, func(path string, info os.FileInfo, osError error) error {
return loadMessageFile(parentInfo.Name(), path, info, osError)
}); err != nil && !os.IsNotExist(err) {
// ERROR.Println("Error reading messages files:", error)
}
return err
}
// Load a single message file
func loadMessageFile(locale string, path string, info os.FileInfo, osError error) error {
if osError != nil {
return osError
}
if info.IsDir() {
return nil
}
if matched, _ := regexp.MatchString(messageFilePattern, info.Name()); matched {
if config, error := parseMessagesFile(path); error != nil {
return error
} else {
// locale := parseLocaleFromFileName(info.Name())
// revel.TRACE.Print(locale + "----locale")
// If we have already parsed a message file for this locale, merge both
if _, exists := messages[locale]; exists {
messages[locale].Merge(config)
revel.TRACE.Printf("Successfully merged messages for locale '%s'", locale)
} else {
messages[locale] = config
}
revel.TRACE.Println("Successfully loaded messages from file", info.Name())
}
} else {
revel.TRACE.Printf("Ignoring file %s because it did not have a valid extension", info.Name())
}
return nil
}
func parseMessagesFile(path string) (messageConfig *config.Config, error error) {
messageConfig, error = config.ReadDefault(path)
return
}
func parseLocaleFromFileName(file string) string {
extension := filepath.Ext(file)[1:]
return strings.ToLower(extension)
}
func init() {
revel.OnAppStart(func() {
loadMessages(filepath.Join(revel.BasePath, messageFilesDirectory))
})
}
func I18nFilter(c *revel.Controller, fc []revel.Filter) {
if foundCookie, cookieValue := hasLocaleCookie(c.Request); foundCookie {
revel.TRACE.Printf("Found locale cookie value: %s", cookieValue)
setCurrentLocaleControllerArguments(c, cookieValue)
} else if foundHeader, headerValue := hasAcceptLanguageHeader(c.Request); foundHeader {
revel.TRACE.Printf("Found Accept-Language header value: %s", headerValue)
setCurrentLocaleControllerArguments(c, headerValue)
} else {
revel.TRACE.Println("Unable to find locale in cookie or header, using empty string")
setCurrentLocaleControllerArguments(c, "")
}
fc[0](c, fc[1:])
}
// Set the current locale controller argument (CurrentLocaleControllerArg) with the given locale.
func setCurrentLocaleControllerArguments(c *revel.Controller, locale string) {
c.Request.Locale = locale
c.RenderArgs[CurrentLocaleRenderArg] = locale
}
// Determine whether the given request has valid Accept-Language value.
//
// Assumes that the accept languages stored in the request are sorted according to quality, with top
// quality first in the slice.
func hasAcceptLanguageHeader(request *revel.Request) (bool, string) {
if request.AcceptLanguages != nil && len(request.AcceptLanguages) > 0 {
return true, request.AcceptLanguages[0].Language
}
return false, ""
}
// Determine whether the given request has a valid language cookie value.
func hasLocaleCookie(request *revel.Request) (bool, string) {
if request != nil && request.Cookies() != nil {
name := revel.Config.StringDefault(localeCookieConfigKey, revel.CookiePrefix+"_LANG")
if cookie, error := request.Cookie(name); error == nil {
return true, cookie.Value
} else {
revel.TRACE.Printf("Unable to read locale cookie with name '%s': %s", name, error.Error())
}
}
return false, ""
}
+7 -2
View File
@@ -518,7 +518,7 @@ func (this *BlogService) fixUserBlog(userBlog *info.UserBlog) {
// Logo路径问题, 有些有http: 有些没有 // Logo路径问题, 有些有http: 有些没有
if userBlog.Logo != "" && !strings.HasPrefix(userBlog.Logo, "http") { if userBlog.Logo != "" && !strings.HasPrefix(userBlog.Logo, "http") {
userBlog.Logo = strings.Trim(userBlog.Logo, "/") userBlog.Logo = strings.Trim(userBlog.Logo, "/")
userBlog.Logo = configService.GetSiteUrl() + "/" + userBlog.Logo userBlog.Logo = "/" + userBlog.Logo
} }
if userBlog.SortField == "" { if userBlog.SortField == "" {
@@ -1108,6 +1108,7 @@ func (this *BlogService) SortSingles(userId string, singleIds []string) (ok bool
// 得到用户的博客url // 得到用户的博客url
func (this *BlogService) GetUserBlogUrl(userBlog *info.UserBlog, username string) string { func (this *BlogService) GetUserBlogUrl(userBlog *info.UserBlog, username string) string {
/*
if userBlog != nil { if userBlog != nil {
if userBlog.Domain != "" && configService.AllowCustomDomain() { if userBlog.Domain != "" && configService.AllowCustomDomain() {
return configService.GetUserUrl(userBlog.Domain) return configService.GetUserUrl(userBlog.Domain)
@@ -1118,12 +1119,15 @@ func (this *BlogService) GetUserBlogUrl(userBlog *info.UserBlog, username string
username = userBlog.UserId.Hex() username = userBlog.UserId.Hex()
} }
} }
*/
return configService.GetBlogUrl() + "/" + username return configService.GetBlogUrl() + "/" + username
} }
// 得到所有url // 得到所有url
func (this *BlogService) GetBlogUrls(userBlog *info.UserBlog, userInfo *info.User) info.BlogUrls { func (this *BlogService) GetBlogUrls(userBlog *info.UserBlog, userInfo *info.User) info.BlogUrls {
var indexUrl, postUrl, searchUrl, cateUrl, singleUrl, tagsUrl, archiveUrl, tagPostsUrl string var indexUrl, postUrl, searchUrl, cateUrl, singleUrl, tagsUrl, archiveUrl, tagPostsUrl string
/*
if userBlog.Domain != "" && configService.AllowCustomDomain() { // http://demo.com if userBlog.Domain != "" && configService.AllowCustomDomain() { // http://demo.com
// ok // ok
indexUrl = configService.GetUserUrl(userBlog.Domain) indexUrl = configService.GetUserUrl(userBlog.Domain)
@@ -1144,6 +1148,7 @@ func (this *BlogService) GetBlogUrls(userBlog *info.UserBlog, userInfo *info.Use
tagsUrl = indexUrl + "/tags" tagsUrl = indexUrl + "/tags"
tagPostsUrl = indexUrl + "/tag" tagPostsUrl = indexUrl + "/tag"
} else { } else {
*/
// ok // ok
blogUrl := configService.GetBlogUrl() // blog.leanote.com blogUrl := configService.GetBlogUrl() // blog.leanote.com
userIdOrEmail := "" userIdOrEmail := ""
@@ -1162,7 +1167,7 @@ func (this *BlogService) GetBlogUrls(userBlog *info.UserBlog, userInfo *info.Use
archiveUrl = blogUrl + "/archives/" + userIdOrEmail // blog.leanote.com/archive/username archiveUrl = blogUrl + "/archives/" + userIdOrEmail // blog.leanote.com/archive/username
tagsUrl = blogUrl + "/tags/" + userIdOrEmail tagsUrl = blogUrl + "/tags/" + userIdOrEmail
tagPostsUrl = blogUrl + "/tag/" + userIdOrEmail // blog.leanote.com/archive/username tagPostsUrl = blogUrl + "/tag/" + userIdOrEmail // blog.leanote.com/archive/username
} // }
return info.BlogUrls{ return info.BlogUrls{
IndexUrl: indexUrl, IndexUrl: indexUrl,
+16 -23
View File
@@ -67,10 +67,20 @@ func (this *ConfigService) InitGlobalConfigs() bool {
} }
} }
// site URL
if s, ok := this.GlobalStringConfigs["siteUrl"]; !ok || s != "" {
this.GlobalStringConfigs["siteUrl"] = this.siteUrl
}
return true return true
} }
func (this *ConfigService) GetSiteUrl() string { func (this *ConfigService) GetSiteUrl() string {
s := this.GetGlobalStringConfig("siteUrl")
if s != "" {
return s
}
return this.siteUrl return this.siteUrl
} }
func (this *ConfigService) GetAdminUsername() string { func (this *ConfigService) GetAdminUsername() string {
@@ -498,42 +508,25 @@ func (this *ConfigService) GetDefaultDomain() string {
return defaultDomain return defaultDomain
} }
// 包含http://
func (this *ConfigService) GetDefaultUrl() string {
return schema + defaultDomain
}
// note // note
func (this *ConfigService) GetNoteDomain() string { func (this *ConfigService) GetNoteDomain() string {
subDomain := this.GetGlobalStringConfig("noteSubDomain") return "/note"
if subDomain != "" {
return subDomain + port
}
return this.GetDefaultDomain() + "/note"
} }
func (this *ConfigService) GetNoteUrl() string { func (this *ConfigService) GetNoteUrl() string {
return schema + this.GetNoteDomain() return this.GetNoteDomain()
} }
// blog // blog
func (this *ConfigService) GetBlogDomain() string { func (this *ConfigService) GetBlogDomain() string {
subDomain := this.GetGlobalStringConfig("blogSubDomain") return "/blog"
if subDomain != "" {
return subDomain + port
}
return this.GetDefaultDomain() + "/blog"
} }
func (this *ConfigService) GetBlogUrl() string { func (this *ConfigService) GetBlogUrl() string {
return schema + this.GetBlogDomain() return this.GetBlogDomain()
} }
// lea // lea
func (this *ConfigService) GetLeaDomain() string { func (this *ConfigService) GetLeaDomain() string {
subDomain := this.GetGlobalStringConfig("leaSubDomain") return "/lea"
if subDomain != "" {
return subDomain + port
}
return this.GetDefaultDomain() + "/lea"
} }
func (this *ConfigService) GetLeaUrl() string { func (this *ConfigService) GetLeaUrl() string {
return schema + this.GetLeaDomain() return schema + this.GetLeaDomain()
@@ -611,5 +604,5 @@ func (this *ConfigService) HomePageIsAdminsBlog() bool {
} }
func (this *ConfigService) GetVersion() string { func (this *ConfigService) GetVersion() string {
return "1.4" return "2.0"
} }
+21 -5
View File
@@ -438,11 +438,7 @@ func (this *NoteService) UpdateNote(updatedUserId, noteId string, needUpdate bso
afterUsn := userService.IncrUsn(userId) afterUsn := userService.IncrUsn(userId)
needUpdate["Usn"] = afterUsn needUpdate["Usn"] = afterUsn
// 添加tag2 needRecountTags := false
// TODO 这个tag去掉, 添加tag另外添加, 不要这个
if tags, ok := needUpdate["Tags"]; ok {
tagService.AddTagsI(userId, tags)
}
// 是否修改了isBlog // 是否修改了isBlog
// 也要修改noteContents的IsBlog // 也要修改noteContents的IsBlog
@@ -455,6 +451,19 @@ func (this *NoteService) UpdateNote(updatedUserId, noteId string, needUpdate bso
if !note.IsBlog { if !note.IsBlog {
needUpdate["PublicTime"] = needUpdate["UpdatedTime"] needUpdate["PublicTime"] = needUpdate["UpdatedTime"]
} }
needRecountTags = true
}
}
// 添加tag2
// TODO 这个tag去掉, 添加tag另外添加, 不要这个
if tags, ok := needUpdate["Tags"]; ok {
tagService.AddTagsI(userId, tags)
// 如果是博客, 标签改了, 那么重新计算
if note.IsBlog {
needRecountTags = true
} }
} }
@@ -463,6 +472,13 @@ func (this *NoteService) UpdateNote(updatedUserId, noteId string, needUpdate bso
return ok, "", 0 return ok, "", 0
} }
if needRecountTags {
// 重新计算tags
go (func() {
blogService.ReCountBlogTags(userId)
})()
}
// 重新获取之 // 重新获取之
note = this.GetNoteById(noteId) note = this.GetNoteById(noteId)
+1 -1
View File
@@ -110,7 +110,7 @@ func (this *UserService) setUserLogo(user *info.User) {
} }
if user.Logo != "" && !strings.HasPrefix(user.Logo, "http") { if user.Logo != "" && !strings.HasPrefix(user.Logo, "http") {
user.Logo = strings.Trim(user.Logo, "/") user.Logo = strings.Trim(user.Logo, "/")
user.Logo = configService.GetSiteUrl() + "/" + user.Logo user.Logo = "/" + user.Logo
} }
} }
+9
View File
@@ -131,6 +131,15 @@
</span> </span>
</a> </a>
<ul class="nav lt"> <ul class="nav lt">
<li>
<a href="/admin/t?t=setting/site_url">
<span>
Site's URL
</span>
</a>
</li>
<li> <li>
<a href="/admin/t?t=setting/home_page"> <a href="/admin/t?t=setting/home_page">
<span> <span>
+51
View File
@@ -0,0 +1,51 @@
{{template "admin/top.html" .}}
<div class="m-b-md"> <h3 class="m-b-none">Site's URL</h3></div>
<div class="row">
<div class="col-sm-6">
<form id="add_user_form">
<section class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label>Site's URL</label>
<input type="text" class="form-control" name="siteUrl" value="{{.str.siteUrl}}" placeholder="http://localhost:9000">
Please note that if the value isn't blank, it will override the "siteUrl" configuration on app.conf.
<br>
Site's URL will be used to upload images, find password, and send email...
</div>
</div>
<footer class="panel-footer text-right bg-light lter">
<button type="submit" id="submit" class="btn btn-success btn-s-xs">Submit</button>
</footer>
</section>
</form>
</div>
</div>
{{template "admin/footer.html" .}}
<script src="/public/admin/js/jquery-validation-1.13.0/jquery.validate.js"></script>
<script>
$(function() {
init_validator("#add_user_form");
$("#submit").click(function(e){
e.preventDefault();
var t = this;
if($("#add_user_form").valid()) {
$(t).button('loading');
ajaxPost("/adminSetting/doSiteUrl", getFormJsonData("add_user_form"), function(ret){
$(t).button('reset');
if(!ret.Ok) {
art.alert(ret.Msg);
} else {
art.tips("Success");
}
});
}
});
});
</script>
{{template "admin/end.html" .}}
+10 -7
View File
@@ -16,12 +16,15 @@
<script src="/public/admin/js/ie/excanvas.js"></script> <script src="/public/admin/js/ie/excanvas.js"></script>
<![endif]--> <![endif]-->
</head> </head>
<body class=""> <body class="lang-{{$.locale}}">
<section class="vbox"> <section class="vbox">
<header class="bg-dark dk header navbar navbar-fixed-top-xs"> <header class="bg-dark dk header navbar navbar-fixed-top-xs">
<div class="navbar-header aside-md clearfix" id="logo">
<a href="/admin/index" class="navbar-brand" data-toggle="fullscreen"></a> <div class="navbar-header logo-ctn">
<div>Admin</div> <a href="/admin/index" class="navbar-brand clearfix" data-toggle="fullscreen">
<span id="logo"></span>
<span class="logo-title">Admin</span>
</a>
</div> </div>
<ul class="nav navbar-nav navbar-right m-n hidden-xs nav-user"> <ul class="nav navbar-nav navbar-right m-n hidden-xs nav-user">
@@ -37,16 +40,16 @@
</li> </li>
<li class="hidden-xs"> <li class="hidden-xs">
<a href="http://lea.leanote.com" class="dk" target="_blank"> <a href="http://lea.leanote.com" class="dk" target="_blank">
lea++ Leanote Explore
</a> </a>
</li> </li>
<li class="hidden-xs"> <li class="hidden-xs">
<a href="/note" class="dk" target="_blank"> <a href="/note" class="dk">
My Note My Note
</a> </a>
</li> </li>
<li class="hidden-xs"> <li class="hidden-xs">
<a href="/blog" class="dk" target="_blank"> <a href="/blog" class="dk">
My Blog My Blog
</a> </a>
</li> </li>
-19
View File
@@ -1,19 +0,0 @@
{{template "blog/header.html" .}}
<div id="postsContainer">
<div id="posts">
<div class="each-post">
<div class="title">
{{msg . "aboutMe"}}
</div>
<div class="created-time">
</div>
<div class="desc">
{{.userBlog.AboutMe | raw}}
</div>
</div>
</div>
</div>
{{template "blog/footer.html" .}}
-204
View File
@@ -1,204 +0,0 @@
<!-- 赞 -->
<div class="entry-controls clearfix">
<div class="vote-section-wrapper clearfix">
<button class="btn btn-default btn-zan" id="likeBtn"><i class="fa fa-thumbs-o-up"></i> <span id="likeNum">{{.blog.LikeNum}}</span> {{msg . "like"}}</button>
<span class="control-item read-counts"><i class="fa fa-eye"></i> {{if .blog.ReadNum}}{{.blog.ReadNum}}{{else}}1{{end}} {{msg . "viewers"}}</span>
</div>
<div class="right-section">
<div id="weixinQRCode"></div>
<!-- google+
<g:plusone size=”medium”></g:plusone>
-->
<button class="btn btn-share btn-default btn-weibo"><i class="fa fa-weibo"></i> {{msg . "sinaWeibo"}}</button>
<button class="btn btn-share btn-default btn-weixin"><i class="fa fa-wechat"></i> {{msg . "weixin"}}</button>
<div class="dropdown" style="display: inline-block; cursor: pointer; padding: 5px 10px;">
<!-- open -->
<div class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown">
<i class="fa fa-share-square-o"></i>
{{msg . "moreShare"}}
</div>
<ul class="dropdown-menu" role="menu">
<li><a href="#" class="btn-share tencent-weibo"><i class="fa fa-tencent-weibo"></i> {{msg . "tencentWeibo"}}</a></li>
<li><a href="#" class="btn-share qq"><i class="fa fa-qq"></i> {{msg . "qqZone"}}</a></li>
<li><a href="#" class="btn-share renren"><i class="fa fa-renren"></i> {{msg . "renren"}}</a></li>
</ul>
</div>
<!-- 举报 -->
{{if eq .locale "zh"}}
<div style="display: inline-block">
<a id="reportBtn"><i class="fa fa-flag-o"></i> {{msg . "report"}}</a>
</div>
{{end}}
</div>
<div class="voters clearfix" id="likers">
</div>
</div>
<script type="text/x-jsrender" id="tLikers">
[[for users]]
<a id="liker_[[:UserId]]" href="[[:~root.blogUrl]]/[[:Username]]" target="_blank" class="voter">
[[if Logo]]
<img alt="avatar" class="avatar-small" src="[[:Logo]]">
[[else]]
<img alt="avatar" class="avatar-small" src="/images/blog/default_avatar.png">
[[/if]]
</a>
[[/for]]
</script>
{{if and .userBlog.CanComment (not (eq .userBlog.CommentType "disqus"))}}
<script type="text/x-jsrender" id="tComments">
[[for comments]]
<li class="comment-item">
<!-- 头像 -->
<a ui-hovercard="" target="_blank" class="avatar-link" title="[[:UserInfo.Username]]" href="[[:~root.blogUrl]]/[[:UserInfo.Username]]">
<img class="avatar" src="[[:UserInfo.Logo]]">
</a>
<!-- 评论 -->
<div class="comment-body">
<div class="comment-hd">
<a href="[[:~root.blogUrl]]/[[:UserInfo.Username]]" target="_blank" >[[:UserInfo.Username]]</a>
[[if IsAuthorComment]]
<span>({{msg . "author"}})</span>
[[/if]]
<!-- 回复其它人 -->
[[if ToUserInfo]]
<span class="in-reply-to">
{{rawMsg . "reply"}}
<a href="[[:~root.blogUrl]]/[[:ToUserInfo.Username]]">[[:ToUserInfo.Username]]</a>
</span>
[[if ToUserIsAuthor]]
<span>({{msg . "author"}})</span>
[[/if]]
[[/if]]
</div>
<div class="comment-content ng-binding" ng-bind-html="comment.content">
[[html:Content]]
</div>
<div class="comment-ft clearfix" data-comment-id="[[:CommentId]]" >
<span title="" ui-time="" class="date">[[:PublishDate]] </span>
<span class="like-num [[if !LikeNum]]hide[[/if]]" title="[[:LikeNum]] {{rawMsg . "like"}}"><span class="like-num-i">[[:LikeNum]]</span> {{rawMsg . "like"}}</span></span>
[[if ~root.visitUserInfo.UserId]]
[[if IsMyNote && !IsMyComment]]
<a href="javascript:;" class="comment-trash op-link "><i class="fa fa-trash"></i> {{rawMsg . "delete"}}</a>
[[/if]]
[[if !IsMyComment]]
<a href="javascript:;" class="comment-reply op-link ">
<i class="fa fa-reply"></i>
{{rawMsg . "reply"}}
</a>
<a href="javascript:;" class="comment-like op-link"><i class="fa fa-thumbs-o-up"></i> <span class="like-text">[[if IsILikeIt]]{{rawMsg . "unlike"}}[[else]]{{rawMsg . "like"}}[[/if]]</span></a>
{{if eq .locale "zh"}}
<a href="javascript:;" class="comment-report op-link "><i class="fa fa-flag-o"></i> {{rawMsg . "report"}}</a>
{{end}}
[[else]]
<a href="javascript:;" class="comment-trash op-link "><i class="fa fa-trash"></i> {{rawMsg . "delete"}}</a>
[[/if]]
[[/if]]
</div>
<!-- 回复该评论 -->
[[if ~root.visitUserInfo.UserId]]
<form class="comment-form comment-box-ft">
<div class="clearfix">
<div class="avatar-wrap">
<img class="avatar" src="[[:~root.visitUserInfo.Logo]]">
</div>
<div class="editor-wrap">
<textarea class="editable" id="commentContent" name="commentContent" placeholder="{{rawMsg . "reply"}}"></textarea>
</div>
</div>
<div class="command clearfix" style="display: block;">
<button class="reply-comment-btn save btn btn-primary" data-comment-id="[[:CommentId]]">{{rawMsg . "comment"}}</button>
<a class="cancel reply-cancel btn-link">{{rawMsg . "cancel"}}</a>
</div>
</form>
[[/if]]
</div>
</li>
[[/for]]
</script>
<!-- 评论 -->
<div class="comment-box hide">
{{if .visitUserInfo.UserId}}
<form class="comment-form comment-box-ft" id="commentForm">
<div class="clearfix">
<div class="avatar-wrap">
<img class="avatar" src="{{.visitUserInfo.Logo}}">
</div>
<div class="editor-wrap">
<textarea class="editable" id="commentContent" name="commentContent" placeholder="{{msg . "comment"}}" style="height: 100px;"></textarea>
</div>
</div>
<div class="command clearfix" style="display: block;">
<button id="commentBtn" class="reply-comment-btn save btn btn-primary">{{msg . "comment"}}</button>
</div>
</form>
{{else}}
<div class="needLogin">
<a onclick="goLogin()">{{msg . "signIn"}}</a>, {{msg . "submitComment"}}.
<br />
没有帐号? <a onclick="goRegister()">{{msg . "signUp"}}</a>
</div>
{{end}}
<div class="box-header">
<span class="counter">
<i class="icon icon-comment"></i><span id="commentNum">{{.blog.CommentNum}}</span> {{msg . "comments"}}
</span>
</div>
<ul id="comments">
</ul>
</div>
<div id="moreComments">
<div class="hide comments-more">
<a>More...</a>
</div>
<div class="comments-loading">
<img src="/images/loading-32.gif" />
</div>
</div>
{{if eq .locale "zh"}}
<div id="reportMsg" class="hide">
<form class="report-form" name="reportForm">
<ul class="options clearfix">
<li><label><input required="" value="{{msg . "reportReason1"}}" name="reason" type="radio">{{msg . "reportReason1"}}</label></li>
<li><label><input required="" value="{{msg . "reportReason2"}}" name="reason" type="radio">{{msg . "reportReason2"}}</label></li>
<li><label><input required="" value="{{msg . "reportReason3"}}" name="reason" type="radio">{{msg . "reportReason3"}}</label></li>
<li><label><input required="" value="{{msg . "reportReason4"}}" name="reason" type="radio">{{msg . "reportReason4"}}</label></li>
<li><label><input required="" value="" name="reason" type="radio">{{msg . "other"}}</label></li>
</ul>
<p class="input-container" style="display: none">
<input placeholder="{{msg . "reportReason"}}" type="text" name="detail" class="form-control reason-text basic-input" />
</p>
<p class="footnote"></p>
</form>
</div>
{{end}}
{{end}}
{{if and .userBlog.CanComment (eq .userBlog.CommentType "disqus")}}
<div id="disqus_thread"></div>
<!-- comment -->
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = '{{.userBlog.DisqusId}}'; // required: replace example with your forum shortname
var disqus_identifier = '{{.userBlog.UserId.Hex}}/{{.blog.NoteId.Hex}}/{{.blog.Title}}'; // 博客链接
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
{{end}}
-56
View File
@@ -1,56 +0,0 @@
<div id="footerContainer">
{{$userId := .userBlog.UserId.Hex}}
<div class="container" id="footer">
<div class="col-md-4">
<h3>{{msg . "blogNavs"}}</h3>
<ul>
<li><a href="{{$.blogUrl}}/{{$.userInfo.Username}}">{{msg . "home"}}</a></li>
{{range .notebooks}}
<li>
<a href="{{$.cateUrl}}/{{.NotebookId.Hex}}">{{.Title}}</a>
</li>
{{end}}
<li><a href="{{$.aboutMeUrl}}">{{msg . "aboutMe"}}</a></li>
</ul>
</div>
<div class="col-md-4">
<h3>{{msg . "latestPosts"}}</h3>
<ul>
{{range .recentBlogs}}
<li title="{{.Title}}"><a href="{{$.blogUrl}}/view/{{.NoteId.Hex}}/">{{.Title}}</a></li>
{{end}}
</ul>
</div>
<div class="col-md-4">
<h3>{{msg . "quickLinks"}}</h3>
<ul>
<li><a href="{{$.noteUrl}}">{{msg . "myNote"}}</a></li>
<li><a href="{{$.siteUrl}}/login">leanote {{msg . "login"}}</a></li>
<li><a href="http://leanote.com" target="_blank">leanote {{msg . "home"}}</a></li>
<li><a href="http://lea.leanote.com" target="_blank">lea++</a></li>
<li><a href="http://bbs.leanote.com" target="_blank">leanote {{msg . "community"}}</a></li>
<li><a href="https://github.com/leanote/leanote" target="_blank">leanote github</a></li>
</ul>
</div>
</div>
</div>
<script src="{{$.siteUrl}}/js/jquery-1.9.0.min.js"></script>
<script src="{{$.siteUrl}}/js/bootstrap-min.js"></script>
<script src="{{$.siteUrl}}/js/bootstrap-hover-dropdown.js"></script>
<script src="{{$.siteUrl}}/js/i18n/blog.{{.locale}}.js"></script>
{{if not .isMe}}
<script src="{{$.siteUrl}}/blog/isMe.js?userId={{.userBlog.UserId.Hex}}"></script>
{{end}}
<script>
// 搜索
function search(e) {
var key = $("#searchInput").val();
if(!key) {
location.href = "{{$.searchUrl}}";
} else {
var tpl = '<form action="{{$.searchUrl}}" method="get">';
tpl += '<input name="key" value="' + key + '" />';
tpl += "</form";
$(tpl).submit();
}
}␍</script>
-104
View File
@@ -1,104 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<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">
<meta name="keywords" content="leanote,leanote.com">
<meta name="description" content="leanote, {{msg $ "moto"}}">
<meta name="author" content="leanote">
<title>{{.title}}</title>
<!-- Bootstrap core CSS -->
<link href="{{.siteUrl}}/css/bootstrap.css" rel="stylesheet">
<!-- 字体必须同一域 -->
{{if .set}}
<link href="{{.siteUrl}}/css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet">
{{else}}
<link href="{{$.staticUrl}}/css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet">
{{end}}
<link id="styleLink" href="{{.siteUrl}}/css/blog/{{if .userBlog.Style}}{{.userBlog.Style}}{{else}}blog_default{{end}}.css" rel="stylesheet">
<link href="{{.siteUrl}}/css/blog/comment.css" rel="stylesheet">
<script>
function log(o) {
}
</script>
<style>
</style>
</head>
<body>
<div id="headerAndNav" >
<div id="headerContainer" class="container">
<!-- 头部可放博客名, 导航 -->
<div id="header">
{{$userId := .userBlog.UserId.Hex}} <!-- 可不要了 -->
{{$username := .userInfo.Username}}
<h1>
<a href="{{.indexUrl}}" id="logo">
{{if .userBlog.Logo}}
<img src="{{.userBlog.Logo}}" title="{{.userBlog.Title}}"/>
{{else}}
{{.userBlog.Title | raw}}
{{end}}
</a>
</h1>
<div id="blogDesc">
{{.userBlog.SubTitle | raw}}
</div>
</div>
</div>
<!-- Static navbar -->
<div class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{{.indexUrl}}">
{{if .userBlog.Logo}}
<img src="{{.userBlog.Logo}}" title="{{.userBlog.Title}}"/>
{{else}}
{{.userBlog.Title | raw}}
{{end}}
</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
{{$navNotebookId := .notebookId}}
<li class="{{if .index}}active{{end}}"><a href="{{.indexUrl}}">{{msg . "home"}}</a></li>
{{range .notebooks}}
{{$notebookId := .NotebookId.Hex}}
<li class="{{if $navNotebookId}}{{if eq $navNotebookId $notebookId}}active{{else}}{{end}}{{end}}">
<a href="{{$.cateUrl}}/{{$notebookId}}"
>{{.Title}}</a>
</li>
{{end}}
<li class="{{if .aboutMe}}active{{end}}"><a href="{{.aboutMeUrl}}">{{msg . "aboutMe"}}</a></li>
<!-- 同源上传logo -->
<li class="is-me {{if .set}}active{{end}} {{if not .isMe}}hide{{end}}" ><a href="{{$.siteUrl}}/blog/set/">{{msg . "blogSet"}}</a></li>
<li><a href="{{$.noteUrl}}" class="is-me {{if not .isMe}}hide{{end}}">{{msg . "myNote"}}</a></li>
</ul>
<form class="navbar-form navbar-right" id="search" onsubmit="search(event);return false;">
<div class="input-group">
<span class="input-group-addon" id="searchIcon" onclick="search(event);"><i class="fa fa-search"></i></span>
<input type="text" placeholder="search" id="searchInput" class="form-control" value="{{.key}}">
</div>
</form>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<script>
var UserInfo = {UserId: "{{$userId}}", Email: "{{.userInfo.Email}}", Username: "{{.userInfo.Username}}"};
var UserBlogInfo={CanComment: {{.userBlog.CanComment}}, CommentType: "{{.userBlog.CommentType}}"};
var indexUrl = "{{$.indexUrl}}";
var viewUrl = "{{$.viewUrl}}";
var blogUrl = "{{$.blogUrl}}";
var staticUrl = "{{$.staticUrl}}"; // blog.leanote.com, life.leanote.com, aaa.com
</script>
-73
View File
@@ -1,73 +0,0 @@
<!-- This file is Depreciated -->
<link href="/public/mdeditor/editor/google-code-prettify/prettify.css" type="text/css" rel="stylesheet">
<script src="/public/mdeditor/editor/google-code-prettify/prettify.js"></script>
<script>
$("pre").addClass("prettyprint linenums");
prettyPrint();
</script>
<!--
<script type="text/javascript" src="/js/syntaxhighlighter/scripts/shCore.js"></script>
<link href="/js/syntaxhighlighter/styles/shCore.css" rel="stylesheet" type="text/css" />
<link href="/js/syntaxhighlighter/styles/shThemeDefault.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
    $(function () {
var pathPrefix = "/js/syntaxhighlighter/scripts/";
        var map = {
"brush: jscript": "shBrushJScript.js",
         "brush: c#": "shBrushCSharp.js",
        "brush: css": "shBrushCss.js",
        "brush: cpp": "shBrushCpp.js",
        "brush: java": "shBrushJava.js",
        "brush: xml": "shBrushXml.js",
        "brush: php": "shBrushPhp.js",
        "brush: perl": "shBrushPerl.js",
        "brush: python": "shBrushPython.js",
        "brush: ruby": "shBrushRuby.js",
        "brush: sql": "shBrushSql.js"}
        var needLoadCount = 0;
        var alreadyLoadCount = 0;
$('pre[class]').each(function() {
var brush = $(this).attr("class");
var js = map[brush]
if (js) {
                needLoadCount++;
map[brush] = null; // 不要重复加载
loadJS(pathPrefix + js, function () {
                    alreadyLoadCount++;
                    if (alreadyLoadCount == needLoadCount) {
//setTimeout(function() {
                        SyntaxHighlighter.highlight();
//}, 500);
                    }
                });
}
});
    });
function loadJS(url, callback) {
$.getScript(url, function() {
callback();
});
}
 
/*
function loadJS(url, callback, charset) {
    var script = document.createElement('script');
    script.onload = script.onreadystatechange = function () {
        if (script && script.readyState && /^(?!(?:loaded|complete)$)/.test(script.readyState)) return;
        script.onload = script.onreadystatechange = null;
        script.src = '';
        script.parentNode.removeChild(script);
        script = null;
        if (callback) callback();
    };
    script.charset = charset || document.charset || document.characterSet;
    script.src = url;
    try { document.getElementsByTagName("head")[0].appendChild(script); } catch (e) { }
}
*/
</script>
-->
-50
View File
@@ -1,50 +0,0 @@
{{template "blog/header.html" .}}
<div id="postsContainer">
<div class="container">
{{if .notebookId}}
<h2>{{msg . "blogClass"}} - {{.notebook.Title}}</h2>
{{end}}
</div>
<div id="posts">
{{$G := .}}
{{range .blogs}}
<div class="each-post">
<div class="title">
<a href="{{$.viewUrl}}/{{.NoteId.Hex}}" title="{{msg $ "fullBlog"}}">
{{.Title}}
</a>
</div>
<div class="created-time">
<i class="fa fa-bookmark-o"></i>
{{if .Tags}}
{{blogTags $ .Tags}}
{{else}}
{{msg $ "noTag"}}
{{end}}
|
<i class="fa fa-calendar"></i> {{msg $ "updatedTime"}} {{.UpdatedTime | datetime}} |
<i class="fa fa-calendar"></i> {{msg $ "createdTime"}} {{.CreatedTime | datetime}}
</div>
<div class="desc">
{{.Content | raw}}
</div>
<a class="more" href="{{$.viewUrl}}/{{.NoteId.Hex}}" title="{{msg $ "fullBlog"}}">{{msg $ "more"}}.</a>
</div>
{{end}}
<!-- 分页 -->
<ul class="pager">
{{if .notebookId}}
{{set $ "pageUrl" (concatStr $.cateUrl "/" .notebookId)}}
{{else}}
{{set $ "pageUrl" $.indexUrl}}
{{end}}
{{page $.pageUrl .page .pageSize .count}}
</ul>
</div>
</div>
{{template "blog/footer.html" .}}
{{template "blog/highlight.html"}}
</body>
</html>
-45
View File
@@ -1,45 +0,0 @@
{{template "blog/header.html" .}}
<div id="postsContainer">
<div class="container">
<h2>{{msg . "search"}} - {{.key}} </h2>
</div>
<div id="posts">
{{range .blogs}}
<div class="each-post">
<div class="title">
<a href="{{$.viewUrl}}/{{.NoteId.Hex}}" title="{{msg $ "fullBlog"}}">
{{.Title}}
</a>
</div>
<div class="created-time">
<i class="fa fa-bookmark-o"></i>
{{if .Tags}}
{{blogTags $ .Tags}}
{{else}}
{{msg $ "noTag"}}
{{end}}
|
<i class="fa fa-calendar"></i> {{msg $ "updatedTime"}} {{.UpdatedTime | datetime}} |
<i class="fa fa-calendar"></i> {{msg $ "createdTime"}} {{.CreatedTime | datetime}}
</div>
<div class="desc">
{{.Content | raw}}
</div>
<a class="more" href="{{$.viewUrl}}/{{.NoteId.Hex}}" title="{{msg $ "fullBlog"}}">{{msg $ "more"}}</a>
</div>
{{end}}
{{if not .blogs }}
<div class="each-post">
{{msg . "none"}}
</div>
{{end}}
</div>
</div>
{{template "blog/footer.html" .}}
{{template "blog/highlight.html"}}
</body>
</html>
-323
View File
@@ -1,323 +0,0 @@
{{template "blog/header.html" .}}
<!-- set页面不是自定义域名和二级域名页 -->
<link rel="stylesheet" href="{{.siteUrl}}/tinymce/skins/custom/skin.min.css" type="text/css">
<style>
.tab-pane {
padding-top: 10px;
}
</style>
<div id="postsContainer">
<div id="posts">
<ul id="myTab" class="nav nav-tabs">
<li class="active"><a href="#baseInfo" data-toggle="tab">{{msg . "baseInfoSet"}}</a></li>
<li class=""><a href="#commentInfo" data-toggle="tab">{{msg . "commentSet"}}</a></li>
<li class=""><a href="#styleInfo" data-toggle="tab">{{msg . "themeSet"}}</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane" id="styleInfo">
<form class="form-horizontal" role="form">
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<div class="alert alert-success" id="styleMsg" style="display: none; margin-bottom: 3px;"></div>
</div>
</div>
<div class="form-group">
<label for="Style" class="col-sm-2 control-label">{{msg . "theme"}}</label>
<div class="col-sm-10" style="margin-top: 6px;" id="themeList">
<label>
<img class="preview" src="{{$.siteUrl}}/images/blog/theme/default.png" />
<input type="radio" name="Style"
value="blog_default"
{{if not .userBlog.Style}}
checked="checked"
{{else}}
{{if eq .userBlog.Style "blog_default"}}
checked="checked"
{{end}}
{{end}}>
{{msg . "default"}}
</label>
<label>
<img class="preview" src="{{$.siteUrl}}/images/blog/theme/elegent.png" />
<input type="radio" name="Style"
value="blog_daqi"
{{if eq .userBlog.Style "blog_daqi"}}checked="checked"{{end}}>
{{msg . "elegant"}}
</label>
<label>
<img class="preview" src="{{$.siteUrl}}/images/blog/theme/left_nav_fix.png" />
<input type="radio" name="Style"
value="blog_left_fixed"
{{if eq .userBlog.Style "blog_left_fixed"}}checked="checked"{{end}}>
{{msg . "navFixed"}}
</label>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-success">{{msg . "save"}}</button>
<span class="msg"></span>
</div>
</div>
</form>
</div>
<div class="tab-pane" id="commentInfo">
<form class="form-horizontal" role="form">
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<div class="alert alert-success" id="commentMsg" style="display: none; margin-bottom: 3px;"></div>
</div>
</div>
<div class="form-group">
<label for="subTitle" class="col-sm-2 control-label">{{msg . "chooseComment"}}</label>
<div class="col-sm-10">
<label>
<input type="checkbox" id="CanComment" name="CanComment"
{{if .userBlog.CanComment}}checked="checked"{{end}} > {{msg . "openComment"}}
</label>
<br />
<div id="commentSet" {{if not .userBlog.CanComment}}style="display: none"{{end}}>
<label>
<input type="radio"
name="commentType"
value="default"
{{if or (not .userBlog.CommentType) (eq .userBlog.CommentType "default")}}checked="checked"{{end}} > Default
</label>
<label>
<input type="radio" name="commentType" id="disqus"
value="disqus"
{{if eq .userBlog.CommentType "disqus"}}checked="checked"{{end}} > Disqus
</label>
<div id="disqusSet" {{if not (eq .userBlog.CommentType "disqus")}}style="display: none"{{end}}>
<label for="DisqusId">Disqus Id</label> <input type="text"
class="form-control" style="display: inline; width: 50%"
id="DisqusId" name="DisqusId"
value="{{if .userBlog.DisqusId}}{{.userBlog.DisqusId}}{{else}}leanote{{end}}">
<br />
{{msg . "disqusHelp"}}
<a target="_blank" href="http://leanote.com/blog/view/52db8463e01c530ef8000001">{{msg . "needHelp"}}</a>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-success">{{msg . "save"}}</button>
<span class="msg"></span>
</div>
</div>
</form>
</div>
<div class="tab-pane active" id="baseInfo">
<div class="form-horizontal" role="form" id="userBlogForm">
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<div class="alert alert-success" id="msg"
style="display: none; margin-bottom: 3px;"></div>
</div>
</div>
<div class="form-group">
<label for="title" class="col-sm-2 control-label">{{msg . "blogName"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="Title" name="Title"
placeholder="eg: leanote's blog"
value="{{if .userBlog.Title}}{{.userBlog.Title}}{{else}}{{.userInfo.Email}} 's blog{{end}}">
</div>
</div>
<div class="form-group">
<label for="logo" class="col-sm-2 control-label">{{msg . "blogLogo"}}</label>
<div class="col-sm-10">
<input type="hidden" name="Logo" id="Logo"
value="{{.userBlog.Logo}}" />
<form id="formLogo" action="{{$.siteUrl}}/file/uploadBlogLogo" method="post"
enctype="multipart/form-data" target="logoTarget"
onsubmit="inProgress()">
<input type="file" class="form-control" id="logo2" name="file"
onChange='$("#formLogo").submit();' />
{{msg . "blogLogoTips"}}
<div id="logoImg"
{{if .userBlog.Logo }}
{{else}}
style="display: none"{{end}}
>
<img src="{{.userBlog.Logo}}" style="height: 40px" /> <a
href="#" id="deleteLogo">{{msg . "delete"}}</a>
</div>
</form>
<iframe id="logoTarget" name="logoTarget" src="#"
style="display: none"></iframe>
</div>
</div>
<div class="form-group">
<label for="subTitle" class="col-sm-2 control-label">{{msg . "blogDesc"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="SubTitle"
name="SubTitle" value="{{.userBlog.SubTitle}}"
placeholder="eg: leanote, Not Just A Notebook">
</div>
</div>
<div class="form-group">
<label for="aboutMe" class="col-sm-2 control-label"></label>
<div class="col-sm-10">
<div id="popularToolbar"></div>
</div>
</div>
<div class="form-group">
<label for="aboutMe" class="col-sm-2 control-label">{{msg . "aboutMe"}}</label>
<div class="col-sm-10">
<textarea id="AboutMe" name="AboutMe">{{.userBlog.AboutMe}}</textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-success">{{msg . "save"}}</button>
<span class="msg"></span>
</div>
</div>
</div>
</div>
</div>
</div>
{{template "blog/footer.html" .}}
<script src="{{.siteUrl}}/js/common-min.js"></script>
<script type="text/javascript" src="{{.siteUrl}}/tinymce/tinymce.min.js"></script>
<script>
var urlPrefix = "{{.siteUrl}}";
$(function() {
tinymce.init({
selector : "#AboutMe",
content_css : [ "/css/bootstrap.css", "/css/editor/editor.css" ],
skin : "custom",
language : "{{.locale}}",
height : 300,
width : "100%",
skin : "custom",
plugins : [
"advlist autolink link leanote_image lists charmap hr ",
"searchreplace visualblocks visualchars leanote_code tabfocus",
"table contextmenu directionality textcolor paste fullpage textcolor"],
toolbar1 : "formatselect |fontselect fontsizeselect| forecolor backcolor | bold italic underline strikethrough | bullist numlist |",
menubar : false,
toolbar_items_size : 'small',
statusbar : false,
font_formats : "Arial=arial,helvetica,sans-serif;"
+ "Arial Black=arial black,avant garde;"
+ "Times New Roman=times new roman,times;"
+ "Courier New=courier new,courier;"
+ "Tahoma=tahoma,arial,helvetica,sans-serif;"
+ "Verdana=verdana,geneva;" + "宋体=SimSun;"
+ "新宋体=NSimSun;" + "黑体=SimHei;"
+ "微软雅黑=Microsoft YaHei",
block_formats : "Header 1=h1;Header 2=h2;Header 3=h3; Header 4=h4;Pre=pre;Paragraph=p"
});
$("#deleteLogo").click(function() {
$("#Logo").val("");
$("#logoImg").hide();
});
$("#CanComment").click(function() {
if ($(this).is(":checked")) {
$("#commentSet").show();
} else {
$("#commentSet").hide();
}
});
$("input[name='commentType']").click(function() {
if ($("input[name='commentType']:checked").val() == "disqus") {
$("#disqusSet").show();
} else {
$("#disqusSet").hide();
}
});
// 基本设置
$("#baseInfo .btn-success").click(function() {
var data = {
Title : $("#Title").val(),
SubTitle : $("#SubTitle").val(),
Logo : $("#Logo").val(),
AboutMe : getEditorContent()
}
post("/blog/setUserBlogBase", data, function(ret) {
showMsg2($("#baseInfo .msg"), "{{msg . "saveSuccess"}}", 2000);
$("#blogDesc").html(data.SubTitle);
$("#logo").html(data.Title);
if(data.Logo) {
$("#logo").html(t('<img src="?" />', urlPrefix + "/" + data.Logo));
}
}, this);
});
// 评论
$("#commentInfo .btn-success").click(function(e) {
e.preventDefault();
var data = {
CanComment : $("#CanComment").is(":checked"),
CommentType: $("input[name='commentType']:checked").val(),
DisqusId : $("#DisqusId").val(),
}
post("/blog/setUserBlogComment", data, function(ret) {
showMsg2($("#commentInfo .msg"), "{{msg . "saveSuccess"}}", 2000);
}, this);
});
// 主题
$("#styleInfo .btn-success").click(function(e) {
e.preventDefault();
var data = {
Style : $("input[name='Style']:checked").val()
}
post("/blog/setUserBlogStyle", data, function(ret) {
showMsg2($("#styleInfo .msg"), "{{msg . "saveSuccess"}}", 2000);
}, this);
});
$("input[name='Style']").click(function() {
$("#styleLink").attr("href", "/css/blog/" + $(this).val() + ".css");
});
});
function inProgress() {
}
// filename, result, resultCode
function uploadFinish(ret) {
if (ret) {
if (ret.resultCode == '1') {
$("#logoImg img").attr("src", urlPrefix + "/" + ret.filename).parent().show();
$("#Logo").val(ret.filename);
return;
}
alert(ret.result);
return;
}
// 上传出错
alert("上传出错");
}
</script>
</div>
</body>
</html>
-125
View File
@@ -1,125 +0,0 @@
{{template "blog/header.html" .}}
<div id="postsContainer">
<div id="posts">
<div class="each-post">
<div class="title">
{{.blog.Title}}
</div>
<div class="created-time">
<i class="fa fa-bookmark-o"></i>
{{if .blog.Tags}}
{{blogTags $ .blog.Tags}}
{{else}}
{{msg . "noTag"}}
{{end}}
|
<i class="fa fa-calendar"></i> {{msg . "updatedTime"}} {{.blog.UpdatedTime | datetime}} |
<i class="fa fa-calendar"></i> {{msg . "createdTime"}} {{.blog.CreatedTime | datetime}}
</div>
<div class="mobile-created-time">
{{ if .userInfo.Logo}}
<img src="{{.userInfo.Logo}}" id="userLogo">
{{else}}
<img src="{{$.siteUrl}}/images/blog/default_avatar.png" id="userLogo">
{{end}}
{{.userInfo.Username}}
{{if .blog.Tags}}
&nbsp;
<i class="fa fa-bookmark-o" style="color: #666"></i>
{{blogTags $ .blog.Tags}}
{{end}}
</div>
<div class="desc" id="content">
{{if .blog.IsMarkdown }}
<div id="markdownContent" style="display: none">
<!-- 用textarea装html, 防止得到的值失真 -->
<textarea>
{{.blog.Content | raw}}
</textarea>
</div>
<div style="padding: 20px; text-align: center">
<img src="/images/loading-32.gif" />
</div>
{{else}}
{{.blog.Content | raw}}
{{end}}
<div id="desc" class="hide">{{.blog.Desc}}</div>
</div>
<!-- comment -->
{{template "blog/comment.html" .}}
</div>
</div>
</div>
{{template "blog/footer.html" .}}
{{template "blog/highlight.html"}}
<div id="blogNav">
<div id="blogNavNav">
<i class="fa fa-align-justify" title="文档导航"></i>
<span>{{msg . "blogNav"}}</span>
</div>
<div id="blogNavContent">
</div>
</div>
<script>
var visitUserInfo = eval("(" + {{.visitUserInfoJson}} + ")");
var urlPrefix = "{{.siteUrl}}";
var noteId = "{{.blog.NoteId.Hex}}";
var preLikeNum = +"{{.blog.LikeNum}}";
var commentNum = +"{{.blog.CommentNum}}";
</script>
<script src="/js/app/blog/common.js"></script>
<script src="/js/jsrender.js"></script>
<script src="/js/jquery-cookie-min.js"></script>
<script src="/js/bootstrap-dialog.min.js"></script>
<script src="/js/jquery.qrcode.min.js"></script>
<script src="/js/app/blog/view.js"></script>
{{if .blog.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>
<!--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>
<script>
var content = $.trim($("#markdownContent textarea").val());
// $("#markdownContent").html("");
var converter = Markdown.getSanitizingConverter();
Markdown.Extra.init(converter, {extensions: ["tables", "fenced_code_gfm", "def_list"]});
var html = converter.makeHtml(content);
$("#content").html(html);
$("pre").addClass("prettyprint linenums");
prettyPrint();
MathJax.Hub.Queue(["Typeset",MathJax.Hub,"wmd-preview"]);
initNav();
weixin();
</script>
{{else}}
<script>
$(function() {
initNav();
weixin();
});
</script>
{{end}}
<!--google+
<script type="text/javascript" src="https://apis.google.com/js/plusone.js"> {lang: 'zh-CN'} </script>
-->
</body>
</html>
+6 -6
View File
@@ -50,12 +50,12 @@ table tr:nth-child(2n) {
{{ if .userBlog.Logo}} {{ if .userBlog.Logo}}
<img src="{{.userBlog.Logo}}" id="logo"> <img src="{{.userBlog.Logo}}" id="logo">
{{else}} {{else}}
<img src="{{$.siteUrl}}/images/blog/default_avatar.png" id="logo"> <img src="/images/blog/default_avatar.png" id="logo">
{{end}} {{end}}
{{.userInfo.Username}} {{.userInfo.Username}}
--> -->
{{if .blog.Tags}} {{if .blog.Tags}}
<img src="{{$.siteUrl}}/images/blog/tag.png" id="tag"> <img src="/images/blog/tag.png" id="tag">
{{blogTagsForExport $ .blog.Tags}} {{blogTagsForExport $ .blog.Tags}}
{{end}} {{end}}
</div> </div>
@@ -79,7 +79,7 @@ table tr:nth-child(2n) {
<!-- <!--
<div id="footer"> <div id="footer">
<p class="split"></p> <p class="split"></p>
<a href="http://leanote.com"><img src="{{.siteUrl}}/images/logo/leanote_icon_blue.png" id="leanote_logo"/></a> <a href="http://leanote.com"><img src="/images/logo/leanote_icon_blue.png" id="leanote_logo"/></a>
<p> <p>
<a href="http://leanote.com">Leanote</a> <a href="http://leanote.com">Leanote</a>
<br /> <br />
@@ -88,10 +88,10 @@ table tr:nth-child(2n) {
</div> </div>
--> -->
<script src="{{.siteUrl}}/js/jquery-1.9.0.min.js"></script> <script src="/js/jquery-1.9.0.min.js"></script>
<link href="{{.siteUrl}}/public/mdeditor/editor/google-code-prettify/prettify.css" type="text/css" rel="stylesheet"> <link href="/public/js/google-code-prettify/prettify.css" type="text/css" rel="stylesheet">
<script src="{{.siteUrl}}/public/mdeditor/editor/google-code-prettify/prettify.js"></script> <script src="/public/js/google-code-prettify/prettify.js"></script>
<script> <script>
function ok() { function ok() {
+2 -2
View File
@@ -2,7 +2,7 @@
<section id="box" class="animated fadeInUp"> <section id="box" class="animated fadeInUp">
<div> <div>
<h1 id="logo">Leanote</h1> <h1 id="logo"></h1>
<div id="boxForm"> <div id="boxForm">
<div id="boxHeader">{{msg . "findPassword"}}</div> <div id="boxHeader">{{msg . "findPassword"}}</div>
<form> <form>
@@ -27,7 +27,7 @@
<a href="/index">{{msg . "home"}}</a> <a href="/index">{{msg . "home"}}</a>
</p> </p>
<p> <p>
<a href="/index">leanote</a> © 2014-2015 <a href="https://leanote.com">Leanote</a> © 2014-2016
</p> </p>
</div> </div>
+2 -2
View File
@@ -2,7 +2,7 @@
<section id="box" class="animated fadeInUp"> <section id="box" class="animated fadeInUp">
<div> <div>
<h1 id="logo">Leanote</h1> <h1 id="logo"></h1>
<div id="boxForm"> <div id="boxForm">
<div id="boxHeader">{{msg . "updatePassword"}}</div> <div id="boxHeader">{{msg . "updatePassword"}}</div>
<form> <form>
@@ -36,7 +36,7 @@
<a href="/index">{{msg . "home"}}</a> <a href="/index">{{msg . "home"}}</a>
</p> </p>
<p> <p>
<a href="/index">leanote</a> © 2014-2015 <a href="https://leanote.com">Leanote</a> © 2014-2016
</p> </p>
</div> </div>
+2 -2
View File
@@ -2,7 +2,7 @@
<section id="box" class="animated fadeInUp"> <section id="box" class="animated fadeInUp">
<div> <div>
<h1 id="logo">Leanote</h1> <h1 id="logo"></h1>
<div id="boxForm"> <div id="boxForm">
<div id="boxHeader">{{msg . "findPasswordTimeout"}}</div> <div id="boxHeader">{{msg . "findPasswordTimeout"}}</div>
<form> <form>
@@ -21,7 +21,7 @@
<a href="/index">{{msg . "home"}}</a> <a href="/index">{{msg . "home"}}</a>
</p> </p>
<p> <p>
<a href="/index">leanote</a> © 2014-2015 <a href="https://leanote.com">Leanote</a> © 2014-2016
</p> </p>
</div> </div>
+2 -2
View File
@@ -8,14 +8,14 @@
<br /> <br />
leanote@leanote.com leanote@leanote.com
<br /> <br />
Copyright © 2014-2015 <a href="https://leanote.com">Leanote</a> Copyright © 2014-2016 <a href="https://leanote.com">Leanote</a>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<i class="fa fa-globe fa-3x icon-muted"></i> <i class="fa fa-globe fa-3x icon-muted"></i>
<h2>Join Us</h2> <h2>Join Us</h2>
<a href="https://github.com/leanote/leanote">Github Leanote</a> <a href="https://github.com/leanote/leanote">Github Leanote</a>
<br /> <br />
QQ Group: <span id="qqGrup">256076853, <s>158716820</s></span> QQ Group: <span id="qqGrup">326073529, 256076853, 158716820</span>
</div> </div>
</div> </div>
</div> </div>
+9 -9
View File
@@ -4,16 +4,14 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="leanote,leanote.com"> <meta name="keywords" content="leanote,leanote.com,蚂蚁笔记">
<meta name="description" content="Leanote, {{msg $ "moto"}}"> <meta name="description" content="Leanote,蚂蚁笔记, {{msg $ "moto"}}">
<meta name="author" content="leanote"> <meta name="author" content="leanote,蚂蚁笔记">
<title>{{.title}}</title> <title>{{.title}}</title>
<link href="/css/bootstrap.css" rel="stylesheet"> <link href="/css/bootstrap.css" rel="stylesheet">
<link href="/css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet"> <link href="/css/font-awesome-4.2.0/css/font-awesome.css" rel="stylesheet">
<link href="/css/index.css" rel="stylesheet"> <link href="/css/index.css" rel="stylesheet">
<style>
</style>
<script> <script>
function log(o) { function log(o) {
@@ -21,7 +19,7 @@ function log(o) {
</script> </script>
</head> </head>
<body> <body class="lang-{{$.locale}}">
<nav id="headerContainer" style="background-color:#fff" class="navbar navbar-default navbar-fixed-top" role="navigation"> <nav id="headerContainer" style="background-color:#fff" class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container-fluid"> <div class="container-fluid">
<div class="navbar-header"> <div class="navbar-header">
@@ -31,8 +29,8 @@ function log(o) {
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a class="navbar-brand" href="/index"> <a class="navbar-brand" href="/index" id="logo">
<img src="/images/logo/leanote_black.png" id="" title="leanote, {{msg $ "moto"}}"/> <img src="/images/logo/leanote_black.png" class="hide" title="leanote, {{msg $ "moto"}}"/>
</a> </a>
</div> </div>
@@ -41,6 +39,8 @@ function log(o) {
<a data-lang="en-us">English</a> <a data-lang="en-us">English</a>
<a data-lang="fr-fr">Français</a> <a data-lang="fr-fr">Français</a>
<a data-lang="zh-cn">简体中文</a> <a data-lang="zh-cn">简体中文</a>
<a data-lang="zh-hk">繁体中文</a>
<a data-lang="pt-pt">Portugu&ecirc;s</a>
</div> </div>
<ul class="nav navbar-nav navbar-left"> <ul class="nav navbar-nav navbar-left">
@@ -49,7 +49,7 @@ function log(o) {
<a href="http://bbs.leanote.com" target="_blank" class="">{{msg . "discussion"}}</a> <a href="http://bbs.leanote.com" target="_blank" class="">{{msg . "discussion"}}</a>
</li> </li>
<li><a id="leanoteBlog" href="http://lea.leanote.com" target="_blank" title="Lea++, leanote blog platform" class="">Lea++</a></li> <li><a id="leanoteBlog" href="http://lea.leanote.com" target="_blank" title="Leanote explore, leanote blog platform" class="">{{leaMsg . "Leanote Explore"}}</a></li>
<li><a id="leanoteApp" href="http://app.leanote.com" target="_blank" title="Leanote App" class="">{{msg . "desktopApp"}}</a></li> <li><a id="leanoteApp" href="http://app.leanote.com" target="_blank" title="Leanote App" class="">{{msg . "desktopApp"}}</a></li>
<li> <li>
<a href="http://leanote.org#donate" target="_blank" class="">{{msg . "donate"}}</a> <a href="http://leanote.org#donate" target="_blank" class="">{{msg . "donate"}}</a>
+3 -3
View File
@@ -4,9 +4,9 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="leanote,leanote.com"> <meta name="keywords" content="leanote,蚂蚁笔记,leanote.com">
<meta name="description" content="leanote, {{msg $ "moto"}}"> <meta name="description" content="leanote, 蚂蚁笔记, {{msg $ "moto"}}">
<meta name="author" content="leanote"> <meta name="author" content="leanote,蚂蚁笔记">
<title>{{.title}}</title> <title>{{.title}}</title>
<link href="/css/bootstrap.css" rel="stylesheet"> <link href="/css/bootstrap.css" rel="stylesheet">
-10
View File
@@ -77,15 +77,5 @@ var lang = '{{.locale}}';
<script src="/js/home/index.js"></script> <script src="/js/home/index.js"></script>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?d0c988e37b452b3bf1220d45b30f2de2";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body> </body>
</html> </html>
+3 -3
View File
@@ -15,7 +15,7 @@
</div> </div>
--> -->
<div> <div>
<h1 id="logo">Leanote</h1> <h1 id="logo"></h1>
<div id="boxForm"> <div id="boxForm">
<div id="boxHeader">{{msg . "login"}}</div> <div id="boxHeader">{{msg . "login"}}</div>
<form> <form>
@@ -61,10 +61,10 @@
<div id="boxFooter"> <div id="boxFooter">
<p> <p>
<a href="/index">{{msg . "home"}}</a> <a href="/">{{msg . "home"}}</a>
</p> </p>
<p> <p>
<a href="/index">leanote</a> © 2014-2015 <a href="https://leanote.com">Leanote</a> © 2014-2016
</p> </p>
</div> </div>
+2 -2
View File
@@ -6,7 +6,7 @@
</div> </div>
--> -->
<div> <div>
<h1 id="logo">Leanote</h1> <h1 id="logo"></h1>
<div id="boxForm"> <div id="boxForm">
<div id="boxHeader">{{msg . "register"}}</div> <div id="boxHeader">{{msg . "register"}}</div>
<form> <form>
@@ -43,7 +43,7 @@
<a href="/index">{{msg . "home"}}</a> <a href="/index">{{msg . "home"}}</a>
</p> </p>
<p> <p>
<a href="/index">leanote</a> © 2014-2015 <a href="https://leanote.com">Leanote</a> © 2014-2016
</p> </p>
</div> </div>
+2 -2
View File
@@ -44,7 +44,7 @@
<a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> {{msg $ "export"}}</a> <a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> {{msg $ "export"}}</a>
<!-- 必须是自己的主题 --> <!-- 必须是自己的主题 -->
{{if .activeTheme.ThemeId}} {{if .activeTheme.ThemeId}}
<a class="btn btn-default btn-sm" href="{{$.siteUrl}}/preview?themeId={{.activeTheme.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> {{msg $ "preview"}}</a> <a class="btn btn-default btn-sm" href="/preview?themeId={{.activeTheme.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> {{msg $ "preview"}}</a>
{{end}} {{end}}
<a class="btn btn-primary btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{if .activeTheme.ThemeId}}{{.activeTheme.ThemeId.Hex}}{{end}}"><span class="fa fa-pencil"></span> {{msg $ "edit"}}</a> <a class="btn btn-primary btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{if .activeTheme.ThemeId}}{{.activeTheme.ThemeId.Hex}}{{end}}"><span class="fa fa-pencil"></span> {{msg $ "edit"}}</a>
</div> </div>
@@ -84,7 +84,7 @@
<div class="btn-group" data-id="{{.ThemeId.Hex}}"> <div class="btn-group" data-id="{{.ThemeId.Hex}}">
<a class="btn btn-default btn-sm btn-delete" data-loading-text="..."><span class="fa fa-remove"></span> {{msg $ "delete"}}</a> <a class="btn btn-default btn-sm btn-delete" data-loading-text="..."><span class="fa fa-remove"></span> {{msg $ "delete"}}</a>
<a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> {{msg $ "export"}}</a> <a class="btn btn-default btn-sm btn-export"><span class="fa fa-download"></span> {{msg $ "export"}}</a>
<a class="btn btn-default btn-sm" href="{{$.siteUrl}}/preview?themeId={{.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> {{msg $ "preview"}}</a> <a class="btn btn-default btn-sm" href="/preview?themeId={{.ThemeId.Hex}}" target="_blank"><span class="fa fa-eye"></span> {{msg $ "preview"}}</a>
<a class="btn btn-default btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{.ThemeId.Hex}}"><span class="fa fa-pencil"></span> {{msg $ "edit"}}</a> <a class="btn btn-default btn-sm" target="_blank" href="/member/blog/updateTheme?themeId={{.ThemeId.Hex}}"><span class="fa fa-pencil"></span> {{msg $ "edit"}}</a>
<a class="btn btn-primary btn-sm btn-active" data-loading-text="..."><span class="fa fa-check"></span> {{msg $ "use"}}</a> <a class="btn btn-primary btn-sm btn-active" data-loading-text="..."><span class="fa fa-check"></span> {{msg $ "use"}}</a>
{{if $.isAdmin}} {{if $.isAdmin}}
+1 -1
View File
@@ -8,7 +8,7 @@
- -
{{.theme.Name}} {{.theme.Name}}
{{end}} {{end}}
<a class="btn btn-default" href="{{$.siteUrl}}/preview?themeId={{.themeId}}" target="_blank"><span class="fa fa-eye"></span> {{msg . "preview"}}</a> <a class="btn btn-default" href="/preview?themeId={{.themeId}}" target="_blank"><span class="fa fa-eye"></span> {{msg . "preview"}}</a>
<small> <small>
+4 -4
View File
@@ -7,7 +7,7 @@
<b class="bg-success"> <b class="bg-success">
</b> </b>
</i> </i>
<span> <span class="nav-h1">
{{msg . "memberCenter"}} {{msg . "memberCenter"}}
</span> </span>
</a> </a>
@@ -25,7 +25,7 @@
<i class="fa fa-angle-up text-active"> <i class="fa fa-angle-up text-active">
</i> </i>
</span> </span>
<span> <span class="nav-h1">
{{msg . "accountInfo"}} {{msg . "accountInfo"}}
</span> </span>
</a> </a>
@@ -77,7 +77,7 @@
<i class="fa fa-angle-up text-active"> <i class="fa fa-angle-up text-active">
</i> </i>
</span> </span>
<span> <span class="nav-h1">
{{msg . "blog"}} {{msg . "blog"}}
</span> </span>
</a> </a>
@@ -141,7 +141,7 @@
<b class="bg-success"> <b class="bg-success">
</b> </b>
</i> </i>
<span> <span class="nav-h1">
{{msg . "group"}} {{msg . "group"}}
</span> </span>
</a> </a>
+5 -5
View File
@@ -16,24 +16,24 @@
<script src="/public/admin/js/ie/excanvas.js"></script> <script src="/public/admin/js/ie/excanvas.js"></script>
<![endif]--> <![endif]-->
</head> </head>
<body class=""> <body class="lang-{{$.locale}}">
<section class="vbox"> <section class="vbox">
<header class="bg-dark dk header navbar navbar-fixed-top-xs"> <header class="bg-dark dk header navbar navbar-fixed-top-xs">
<div class="navbar-header aside-md" id="logo"> <div class="navbar-header aside-md logo-ctn">
<a href="/member" class="navbar-brand clearfix" data-toggle="fullscreen"> <a href="/member" class="navbar-brand clearfix" data-toggle="fullscreen">
<span class="logo-icon"></span> <span id="logo"></span>
<span class="logo-title">{{msg . "memberCenter"}}</span> <span class="logo-title">{{msg . "memberCenter"}}</span>
</a> </a>
</div> </div>
<ul class="nav navbar-nav navbar-right m-n hidden-xs nav-user"> <ul class="nav navbar-nav navbar-right m-n hidden-xs nav-user">
<li class="hidden-xs"> <li class="hidden-xs">
<a href="/note" class="dk" target="_blank"> <a href="/note" class="dk">
{{msg . "myNote"}} {{msg . "myNote"}}
</a> </a>
</li> </li>
<li class="hidden-xs"> <li class="hidden-xs">
<a href="/blog/{{$.session.Username}}" class="dk" target="_blank"> <a href="/blog/{{$.session.Username}}" class="dk">
{{msg . "myBlog"}} {{msg . "myBlog"}}
</a> </a>
</li> </li>
+18 -22
View File
@@ -6,8 +6,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <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-touch-fullscreen" content="yes">
<meta name=”apple-mobile-web-app-capable” content=”yes” /> <meta name=”apple-mobile-web-app-capable” content=”yes” />
<meta name="keywords" content="leanote,leanote.com"> <meta name="keywords" content="leanote,leanote.com,蚂蚁笔记">
<meta name="description" content="Leanote, {{msg $ "moto"}}"> <meta name="description" content="Leanote, 蚂蚁笔记, {{msg $ "moto"}}">
<title>Leanote, {{msg $ "moto"}}</title> <title>Leanote, {{msg $ "moto"}}</title>
<link href="/css/bootstrap-min.css" rel="stylesheet" /> <link href="/css/bootstrap-min.css" rel="stylesheet" />
@@ -39,7 +39,7 @@ function log(o) {
} }
</script> </script>
</head> </head>
<body> <body class="leanote-plugin lang-{{$.locale}}">
<div id="page"> <div id="page">
<div id="pageInner"> <div id="pageInner">
@@ -47,17 +47,10 @@ function log(o) {
<!-- <div id="headerContainer"> --> <!-- <div id="headerContainer"> -->
<div id="header"> <div id="header">
<!-- <a id="logo" href="/" title="Leanote {{msg . "home"}}" class="pull-left"></a>
<div id="headerLeft" class="pull-left">
</div>
-->
<div id="logo" class="pull-left">
<!--<span>lea</span>note -->
<!--<img style="height: 45px;" src="/images/logo/leanote_white.png" title="leanote, 不一样的笔记" alt="leanote">-->
</div>
<div id="switcher" class="pull-left"> <div id="switcher" class="pull-left">
<i class="fa fa-align-justify" id="leftSwitcher" title="{{msg . "leftHidden"}}"></i> <i class="fa fa-dedent" id="leftSwitcher" title="{{msg . "leftHidden"}}"></i>
<span id="leftSwitcher2" title="{{msg . "leftShow"}}"></span> <span id="leftSwitcher2" class="fa fa-indent" title="{{msg . "leftShow"}}"></span>
</div> </div>
<!-- search --> <!-- search -->
<div class="pull-left" id="searchWrap"> <div class="pull-left" id="searchWrap">
@@ -134,9 +127,9 @@ function log(o) {
</span> </span>
</div> </div>
<div class="pull-right" style="margin: 0 10px" id="myProfile"> <div class="pull-right" id="myProfile">
<div class="dropdown"> <div class="dropdown">
<a class="dropdown-toggle" title="{{.userInfo.Username}}" data-toggle="dropdown" style="line-height: 60px;"> <a class="dropdown-toggle profile-img" title="{{.userInfo.Username}}" data-toggle="dropdown">
<img alt="{{.userInfo.Username}}" title="{{.userInfo.Username}}" src="{{if .userInfo.Logo}}{{.userInfo.Logo}}{{else}}/images/blog/default_avatar.png{{end}}" id="myAvatar"/> <img alt="{{.userInfo.Username}}" title="{{.userInfo.Username}}" src="{{if .userInfo.Logo}}{{.userInfo.Logo}}{{else}}/images/blog/default_avatar.png{{end}}" id="myAvatar"/>
<span class="username"> <span class="username">
{{.userInfo.Username}} {{.userInfo.Username}}
@@ -198,7 +191,7 @@ function log(o) {
<div class="pull-right top-nav writting-hide lea-blog"> <div class="pull-right top-nav writting-hide lea-blog">
<a target="_blank" href="http://lea.leanote.com"> <a target="_blank" href="http://lea.leanote.com">
Lea++ {{msg . "Explore"}}
</a> </a>
</div> </div>
@@ -208,13 +201,13 @@ function log(o) {
</a> </a>
</div> </div>
<div class="pull-right toggle-editor-mode" style="line-height: 60px; margin-right:10px" id="toggleEditorMode"> <div class="pull-right toggle-editor-mode top-nav" id="toggleEditorMode">
<a href="#writing"><span>{{msg . "writingMode"}}</span></a> <a href="#writing"><span>{{msg . "writingMode"}}</span></a>
</div> </div>
{{if eq .userInfo.Email "demo@leanote.com"}} {{if eq .userInfo.Email "demo@leanote.com"}}
{{if .openRegister}} {{if .openRegister}}
<div class="pull-right" style="line-height: 60px; margin-right:10px" id="demoRegister"> <div class="pull-right top-nav" id="demoRegister">
<span> <span>
{{msg . "demoRegister"}} {{msg . "demoRegister"}}
</span> </span>
@@ -423,7 +416,7 @@ function log(o) {
<div class="noteSplit" id="noteSplitter"></div> <div class="noteSplit" id="noteSplitter"></div>
<div id="note"> <div id="note" class="read-only-editor">
<!-- 遮罩, 为了resize3Columns用 --> <!-- 遮罩, 为了resize3Columns用 -->
<div id="noteMask" class="note-mask"></div> <div id="noteMask" class="note-mask"></div>
@@ -494,8 +487,12 @@ function log(o) {
</div> </div>
<ul class="pull-right" id="editorTool"> <ul class="pull-right" id="editorTool">
<li><a class="ios7-a " id="editBtn"
data-toggle="dropdown" title="ctrl/cmd+e {{leaMsg . "Toggle Modify with Readonly"}}">
<span class="fa"></span></a></li>
<li><a class="ios7-a " id="saveBtn" <li><a class="ios7-a " id="saveBtn"
data-toggle="dropdown" title="ctrl+s {{msg . "save"}}"> data-toggle="dropdown" title="ctrl/cmd+s {{msg . "save"}}">
<span class="fa fa-save"></span></a></li> <span class="fa fa-save"></span></a></li>
<li class="dropdown" id="noteInfoDropdown"> <li class="dropdown" id="noteInfoDropdown">
@@ -572,7 +569,7 @@ function log(o) {
</div> </div>
<!-- 查看信息 --> <!-- 查看信息 -->
<div id="infoToolbar" class="info-toolbar invisible"> <div id="infoToolbar" class="info-toolbar invisible">
<a class="toolbar-update" title="{{msg . "modify"}} ctrl/cmd+e"><i class="fa fa-pencil"></i> <span class="lang">{{msg . "modify"}}</span></a>
<span class="lang">{{msg . "created"}}</span>: <span class="created-time"></span> <span class="lang">{{msg . "created"}}</span>: <span class="created-time"></span>
<span class="lang">{{msg . "updated"}}</span>: <span class="updated-time"></span> <span class="lang">{{msg . "updated"}}</span>: <span class="updated-time"></span>
</div> </div>
@@ -607,7 +604,6 @@ function log(o) {
<div class="navbar navbar-default"> <div class="navbar navbar-default">
<div class="navbar-inner" id="wmd-button-bar"> <div class="navbar-inner" id="wmd-button-bar">
<div id="mdInfoToolbar" class="info-toolbar invisible"> <div id="mdInfoToolbar" class="info-toolbar invisible">
<a class="toolbar-update" title="{{msg . "modify"}} ctrl/cmd+e"><i class="fa fa-pencil"></i> <span class="lang">{{msg . "modify"}}</span></a>
<span class="lang">{{msg . "created"}}</span>: <span class="created-time"></span> <span class="lang">{{msg . "created"}}</span>: <span class="created-time"></span>
<span class="lang">{{msg . "updated"}}</span>: <span class="updated-time"></span> <span class="lang">{{msg . "updated"}}</span>: <span class="updated-time"></span>
</div> </div>
+17 -22
View File
@@ -6,8 +6,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <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-touch-fullscreen" content="yes">
<meta name=”apple-mobile-web-app-capable” content=”yes” /> <meta name=”apple-mobile-web-app-capable” content=”yes” />
<meta name="keywords" content="leanote,leanote.com"> <meta name="keywords" content="leanote,leanote.com,蚂蚁笔记">
<meta name="description" content="Leanote, {{msg $ "moto"}}"> <meta name="description" content="Leanote, 蚂蚁笔记, {{msg $ "moto"}}">
<title>Leanote, {{msg $ "moto"}}</title> <title>Leanote, {{msg $ "moto"}}</title>
<link href="/css/bootstrap-min.css" rel="stylesheet" /> <link href="/css/bootstrap-min.css" rel="stylesheet" />
<!-- 先加载, 没有样式, 宽度不定 --> <!-- 先加载, 没有样式, 宽度不定 -->
@@ -35,23 +35,16 @@ function log(o) {
} }
</script> </script>
</head> </head>
<body> <body class="leanote-plugin lang-{{$.locale}}">
<div id="page"> <div id="page">
<div id="pageInner"> <div id="pageInner">
<!-- 头部 --> <!-- 头部 -->
<!-- <div id="headerContainer"> --> <!-- <div id="headerContainer"> -->
<div id="header"> <div id="header">
<!-- <a id="logo" href="/" title="Leanote {{msg . "home"}}" class="pull-left"></a>
<div id="headerLeft" class="pull-left">
</div>
-->
<div id="logo" class="pull-left">
<!--<span>lea</span>note -->
<!--<img style="height: 45px;" src="/images/logo/leanote_white.png" title="leanote, 不一样的笔记" alt="leanote">-->
</div>
<div id="switcher" class="pull-left"> <div id="switcher" class="pull-left">
<i class="fa fa-align-justify" id="leftSwitcher" title="{{msg . "leftHidden"}}"></i> <i class="fa fa-dedent" id="leftSwitcher" title="{{msg . "leftHidden"}}"></i>
<span id="leftSwitcher2" title="{{msg . "leftShow"}}"></span> <span id="leftSwitcher2" class="fa fa-indent" title="{{msg . "leftShow"}}"></span>
</div> </div>
<!-- search --> <!-- search -->
<div class="pull-left" id="searchWrap"> <div class="pull-left" id="searchWrap">
@@ -124,9 +117,9 @@ function log(o) {
</span> </span>
</div> </div>
<div class="pull-right" style="margin: 0 10px" id="myProfile"> <div class="pull-right" id="myProfile">
<div class="dropdown"> <div class="dropdown">
<a class="dropdown-toggle" title="{{.userInfo.Username}}" data-toggle="dropdown" style="line-height: 60px;"> <a class="dropdown-toggle profile-img" title="{{.userInfo.Username}}" data-toggle="dropdown">
<img alt="{{.userInfo.Username}}" title="{{.userInfo.Username}}" src="{{if .userInfo.Logo}}{{.userInfo.Logo}}{{else}}/images/blog/default_avatar.png{{end}}" id="myAvatar"/> <img alt="{{.userInfo.Username}}" title="{{.userInfo.Username}}" src="{{if .userInfo.Logo}}{{.userInfo.Logo}}{{else}}/images/blog/default_avatar.png{{end}}" id="myAvatar"/>
<span class="username"> <span class="username">
{{.userInfo.Username}} {{.userInfo.Username}}
@@ -187,7 +180,7 @@ function log(o) {
</div> </div>
<div class="pull-right top-nav writting-hide lea-blog"> <div class="pull-right top-nav writting-hide lea-blog">
<a target="_blank" href="http://lea.leanote.com"> <a target="_blank" href="http://lea.leanote.com">
Lea++ {{msg . "Explore"}}
</a> </a>
</div> </div>
@@ -196,13 +189,13 @@ function log(o) {
{{msg . "myBlog"}} {{msg . "myBlog"}}
</a> </a>
</div> </div>
<div class="pull-right toggle-editor-mode" style="line-height: 60px; margin-right:10px" id="toggleEditorMode"> <div class="pull-right toggle-editor-mode top-nav" id="toggleEditorMode">
<a href="#writing"><span>{{msg . "writingMode"}}</span></a> <a href="#writing"><span>{{msg . "writingMode"}}</span></a>
</div> </div>
{{if eq .userInfo.Email "demo@leanote.com"}} {{if eq .userInfo.Email "demo@leanote.com"}}
{{if .openRegister}} {{if .openRegister}}
<div class="pull-right" style="line-height: 60px; margin-right:10px" id="demoRegister"> <div class="pull-right top-nav" id="demoRegister">
<span> <span>
{{msg . "demoRegister"}} {{msg . "demoRegister"}}
</span> </span>
@@ -405,7 +398,7 @@ function log(o) {
<div class="noteSplit" id="noteSplitter"></div> <div class="noteSplit" id="noteSplitter"></div>
<div id="note"> <div id="note" class="read-only-editor">
<!-- 遮罩, 为了resize3Columns用 --> <!-- 遮罩, 为了resize3Columns用 -->
<div id="noteMask" class="note-mask"></div> <div id="noteMask" class="note-mask"></div>
@@ -473,8 +466,11 @@ function log(o) {
</div> </div>
<ul class="pull-right" id="editorTool"> <ul class="pull-right" id="editorTool">
<li><a class="ios7-a " id="editBtn"
data-toggle="dropdown" title="ctrl/cmd+e {{leaMsg . "Toggle Modify with Readonly"}}">
<span class="fa"></span></a></li>
<li><a class="ios7-a " id="saveBtn" <li><a class="ios7-a " id="saveBtn"
data-toggle="dropdown" title="ctrl+s {{msg . "save"}}"> data-toggle="dropdown" title="ctrl/cmd+s {{msg . "save"}}">
<span class="fa fa-save"></span></a></li> <span class="fa fa-save"></span></a></li>
<li class="dropdown" id="noteInfoDropdown"> <li class="dropdown" id="noteInfoDropdown">
<a class="ios7-a dropdown-toggle" data-toggle="dropdown" title="{{msg . "Information"}}"> <a class="ios7-a dropdown-toggle" data-toggle="dropdown" title="{{msg . "Information"}}">
@@ -547,7 +543,7 @@ function log(o) {
</div> </div>
<!-- 查看信息 --> <!-- 查看信息 -->
<div id="infoToolbar" class="info-toolbar invisible"> <div id="infoToolbar" class="info-toolbar invisible">
<a class="toolbar-update" title="{{msg . "modify"}} ctrl/cmd+e"><i class="fa fa-pencil"></i> <span class="lang">{{msg . "modify"}}</span></a>
<span class="lang">{{msg . "created"}}</span>: <span class="created-time"></span> <span class="lang">{{msg . "created"}}</span>: <span class="created-time"></span>
<span class="lang">{{msg . "updated"}}</span>: <span class="updated-time"></span> <span class="lang">{{msg . "updated"}}</span>: <span class="updated-time"></span>
</div> </div>
@@ -582,7 +578,6 @@ function log(o) {
<div class="navbar navbar-default"> <div class="navbar navbar-default">
<div class="navbar-inner" id="wmd-button-bar"> <div class="navbar-inner" id="wmd-button-bar">
<div id="mdInfoToolbar" class="info-toolbar invisible"> <div id="mdInfoToolbar" class="info-toolbar invisible">
<a class="toolbar-update" title="{{msg . "modify"}} ctrl/cmd+e"><i class="fa fa-pencil"></i> <span class="lang">{{msg . "modify"}}</span></a>
<span class="lang">{{msg . "created"}}</span>: <span class="created-time"></span> <span class="lang">{{msg . "created"}}</span>: <span class="created-time"></span>
<span class="lang">{{msg . "updated"}}</span>: <span class="updated-time"></span> <span class="lang">{{msg . "updated"}}</span>: <span class="updated-time"></span>
</div> </div>
+7 -2
View File
@@ -9,7 +9,7 @@ SP=$(cd "$(dirname "$0")"; pwd)
tmp="/Users/life/Desktop/leanote_release" tmp="/Users/life/Desktop/leanote_release"
# version # version
V="v1.4" V="v2.0"
##================================= ##=================================
# 1. 先build 成 3个平台, 2种bit = 6种 # 1. 先build 成 3个平台, 2种bit = 6种
@@ -122,7 +122,12 @@ function tarRelease()
if [ $1 = "linux" -o $1 = "darwin" ] if [ $1 = "linux" -o $1 = "darwin" ]
then then
suffix="" suffix=""
cp ./bin/run.sh $tmp/leanote/bin/ if [ $2 = "arm" ]
then
cp ./bin/run-arm.sh $tmp/leanote/bin/run.sh
else
cp ./bin/run-$1-$2.sh $tmp/leanote/bin/run.sh
fi
else else
cp ./bin/run.bat $tmp/leanote/bin/ cp ./bin/run.bat $tmp/leanote/bin/
suffix=".exe" suffix=".exe"
+1 -12
View File
@@ -13,17 +13,6 @@ ln -s ../../../../ $SCRIPTPATH/src/github.com/leanote/leanote
# set GOPATH # set GOPATH
export GOPATH=$SCRIPTPATH export GOPATH=$SCRIPTPATH
# run script="$SCRIPTPATH/leanote-linux-arm"
osName=`uname` # Darwin or Linux
osName=`tr '[A-Z]' '[a-z]' <<<"$osName"` # toLowerCase
bit=`getconf LONG_BIT` # 32, 64
if [ $bit = "64" ]
then
bit="amd64"
else
bit="386"
fi
script="$SCRIPTPATH/leanote-$osName-$bit"
chmod 777 $script chmod 777 $script
$script -importPath github.com/leanote/leanote $script -importPath github.com/leanote/leanote
+18
View File
@@ -0,0 +1,18 @@
#!/bin/sh
SCRIPTPATH=$(cd "$(dirname "$0")"; pwd)
# set link
path="$SCRIPTPATH/src/github.com/leanote"
if [ ! -d "$path" ]; then
mkdir -p "$path"
fi
rm -rf $SCRIPTPATH/src/github.com/leanote/leanote # 先删除
ln -s ../../../../ $SCRIPTPATH/src/github.com/leanote/leanote
# set GOPATH
export GOPATH=$SCRIPTPATH
script="$SCRIPTPATH/leanote-darwin-amd64"
chmod 777 $script
$script -importPath github.com/leanote/leanote
+18
View File
@@ -0,0 +1,18 @@
#!/bin/sh
SCRIPTPATH=$(cd "$(dirname "$0")"; pwd)
# set link
path="$SCRIPTPATH/src/github.com/leanote"
if [ ! -d "$path" ]; then
mkdir -p "$path"
fi
rm -rf $SCRIPTPATH/src/github.com/leanote/leanote # 先删除
ln -s ../../../../ $SCRIPTPATH/src/github.com/leanote/leanote
# set GOPATH
export GOPATH=$SCRIPTPATH
script="$SCRIPTPATH/leanote-linux-386"
chmod 777 $script
$script -importPath github.com/leanote/leanote
+18
View File
@@ -0,0 +1,18 @@
#!/bin/sh
SCRIPTPATH=$(cd "$(dirname "$0")"; pwd)
# set link
path="$SCRIPTPATH/src/github.com/leanote"
if [ ! -d "$path" ]; then
mkdir -p "$path"
fi
rm -rf $SCRIPTPATH/src/github.com/leanote/leanote # 先删除
ln -s ../../../../ $SCRIPTPATH/src/github.com/leanote/leanote
# set GOPATH
export GOPATH=$SCRIPTPATH
script="$SCRIPTPATH/leanote-linux-amd64"
chmod 777 $script
$script -importPath github.com/leanote/leanote
+5 -5
View File
@@ -1,5 +1,5 @@
#------------------------ #------------------------
# leanote config # Leanote config
#------------------------ #------------------------
http.port=9000 http.port=9000
@@ -12,16 +12,16 @@ adminUsername=admin
# mongdb # mongdb
db.host=127.0.0.1 db.host=127.0.0.1
db.port=27017 db.port=27017
db.dbname=leanote # required db.dbname=leanote2 # required
db.username= # if not exists, please leave it blank db.username= # if not exists, please leave it blank
db.password= # if not exists, please leave it blank db.password= # if not exists, please leave it blank
# or you can set the mongodb url for more complex needs the format is: # or you can set the mongodb url for more complex needs the format is:
# mongodb://myuser:mypass@localhost:40001,otherhost:40001/mydb # mongodb://myuser:mypass@localhost:40001,otherhost:40001/mydb
# db.url=mongodb://root:root123@localhost:27017/leanote # db.url=mongodb://root:root123@localhost:27017/leanote
# db.urlEnv=${MONGODB_URL} # set url from env. eg. mongodb://root:root123@localhost:27017/leanote db.urlEnv=${MONGODB_URL} # set url from env, for docker. eg. mongodb://root:root123@localhost:27017/leanote
# You Must Change It !! About Security!! # You Must Change It !! About Security!!
app.secret=V85ZzBeTnzpsHyjQX4zukbQ8qqtju9y2aDM55VWxAH9Qop19poekx3xkcDVvrD0y app.secret=V85ZzBeTnzpsHyjQX4zukbQ8qqtju9y2aDM55VWxAH9Qop19poekx3xkcDVvrD0y #
#-------------------------------- #--------------------------------
# revel config # revel config
@@ -44,7 +44,7 @@ log.warn.prefix = "WARN "
log.error.prefix = "ERROR " log.error.prefix = "ERROR "
# The default language of this application. # The default language of this application.
i18n.default_language=en i18n.default_language=en-us
module.static=github.com/revel/modules/static module.static=github.com/revel/modules/static
+74
View File
@@ -0,0 +1,74 @@
#------------------------
# leanote config
#------------------------
http.port=9000
site.url=http://localhost:9000 # or http://x.com:8080, http://www.xx.com:9000
# admin username
adminUsername=admin
# mongdb
db.host=127.0.0.1
db.port=27017
db.dbname=leanote # required
db.username= # if not exists, please leave it blank
db.password= # if not exists, please leave it blank
# or you can set the mongodb url for more complex needs the format is:
# mongodb://myuser:mypass@localhost:40001,otherhost:40001/mydb
# db.url=mongodb://root:root123@localhost:27017/leanote
# db.urlEnv=${MONGODB_URL} # set url from env. eg.
# mongodb://root:root123@localhost:27017/leanote
# You Must Change It !! About Security!!
app.secret=V85ZzBeTnzpsHyjQX4zukbQ8qqtju9y2aDM55VWxAH9Qop19poekx3xkcDVvrD0y
#--------------------------------
# revel config
# for dev
#--------------------------------
app.name=leanote
http.addr=
http.ssl=false
cookie.httponly=false
cookie.prefix=LEANOTE
cookie.domain= # for share cookie with sub-domain
cookie.secure=false
format.date=2006-01-02
format.datetime=2006-01-02 15:04:05 # 必须这样配置
results.chunked=false
log.trace.prefix = "TRACE "
log.info.prefix = "INFO "
log.warn.prefix = "WARN "
log.error.prefix = "ERROR "
# The default language of this application.
i18n.default_language=en-us
module.static=github.com/revel/modules/static
[dev]
mode.dev=true
results.pretty=true
watch=true
module.testrunner = # github.com/revel/modules/testrunner
log.trace.output = stderr
log.info.output = stderr
log.warn.output = stderr
log.error.output = stderr
[prod]
mode.dev=false
results.pretty=false
watch=false
module.testrunner =
log.trace.output = off
log.info.output = off
log.warn.output = %(app.name)s.log
log.error.output = %(app.name)s.log
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -83,6 +83,7 @@ notGoodPassword=Tt's not a good password, the length is at least 6
# note # note
myBlog=Blog myBlog=Blog
Explore=Explore
history=Histories history=Histories
save=Save save=Save
editorTips=Tips editorTips=Tips
@@ -118,6 +119,8 @@ Choose File=Choose File
Download All=Download All Download All=Download All
Information=Information Information=Information
Toggle Modify with Readonly=Toggle Modify with Readonly
update=Update update=Update
create=Create create=Create
+179
View File
@@ -0,0 +1,179 @@
Cut=Cut
Header 2=Header 2
Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.=Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.
Div=Div
Paste=Paste
Close=Close
Font Family=Font Family
Pre=Pre
Align right=Align right
New document=New document
Blockquote=Blockquote
Numbered list=Numbered list
Increase indent=Increase indent
Formats=Formats
Headers=Headers
Select all=Select all
Header 3=Header 3
Blocks=Blocks
Undo=Undo
Strikethrough=Strike-through
Bullet list=Bullet list
Header 1=Header 1
Superscript=Superscript
Clear formatting=Clear formatting
Font Sizes=Font Sizes
Subscript=Subscript
Header 6=Header 6
Redo=Redo
Paragraph=Paragraph
Ok=Ok
Bold=Bold
Code=Code
Italic=Italic
Align center=Align centre
Header 5=Header 5
Decrease indent=Decrease indent
Header 4=Header 4
Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.=Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.
Underline=Underline
Cancel=Cancel
Justify=Justify
Inline=Inline
Copy=Copy
Align left=Align left
Visual aids=Visual aids
Lower Greek=Lower Greek
Square=Square
Default=Default
Lower Alpha=Lower Alpha
Circle=Circle
Disc=Disc
Upper Alpha=Upper Alpha
Upper Roman=Upper Roman
Lower Roman=Lower Roman
Name=Name
Anchor=Anchor
You have unsaved changes are you sure you want to navigate away?=You have unsaved changes are you sure you want to navigate away?
Restore last draft=Restore last draft
Special character=Special character
Source code=Source code
Right to left=Right to left
Left to right=Left to right
Emoticons=Emoticons
Robots=Robots
Document properties=Document properties
Title=Title
Keywords=Keywords
Encoding=Encoding
Description=Description
Author=Author
Language=Language
`ctrl/cmd+shift+c` toggle code=`ctrl/cmd+shift+c` toggle code
Fullscreen=Full-screen
Horizontal line=Horizontal line
Horizontal space=Horizontal space
Insert\/edit image=Insert\/edit image
General=General
Advanced=Advanced
Source=Source
Border=Border
Constrain proportions=Constrain proportions
Vertical space=Vertical space
Image description=Image description
Style=Style
Dimensions=Dimensions
Insert image=Insert image
Insert date\/time=Insert date\/time
Remove link=Remove link
Url=URL
Text to display=Text to display
Anchors=Anchors
Insert link=Insert link
New window=New window
None=None
The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?=The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?
Target=Target
The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?=The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?
Insert\/edit link=Insert\/edit link
Insert\/edit video=Insert\/edit video
Poster=Poster
Alternative source=Alternative source
Paste your embed code below:=Paste your embed code below:
Insert video=Insert video
Embed=Embed
Nonbreaking space=Non-breaking space
Page break=Page break
Paste as text=Paste as text
Preview=Preview
Print=Print
Save=Save
Could not find the specified string.=Could not find the specified string.
Replace=Replace
Next=Next
Whole words=Whole words
Find and replace=Find and replace
Replace with=Replace with
Find=Find
Replace all=Replace all
Match case=Match case
Prev=Prev
Spellcheck=Spell-check
Finish=Finish
Ignore all=Ignore all
Ignore=Ignore
Insert row before=Insert row before
Rows=Rows
Height=Height
Paste row after=Paste row after
Alignment=Alignment
Column group=Column group
Row=Row
Insert column before=Insert column before
Split cell=Split cell
Cell padding=Cell padding
Cell spacing=Cell spacing
Row type=Row type
Insert table=Insert table
Body=Body
Caption=Caption
Footer=Footer
Delete row=Delete row
Paste row before=Paste row before
Scope=Scope
Delete table=Delete table
Header cell=Header cell
Column=Column
Cell=Cell
Header=Header
Cell type=Cell type
Copy row=Copy row
Row properties=Row properties
Table properties=Table properties
Row group=Row group
Right=Right
Insert column after=Insert column after
Cols=Cols
Insert row after=Insert row after
Width=Width
Cell properties=Cell properties
Left=Left
Cut row=Cut row
Delete column=Delete column
Center=Centre
Merge cells=Merge cells
Insert template=Insert template
Templates=Templates
Background color=Background colour
Text color=Text colour
Show blocks=Show blocks
Show invisible characters=Show invisible characters
Words: {0}=Words: {0}
Insert=Insert
File=File
Edit=Edit
Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help=Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help
Tools=Tools
View=View
Table=Table
Format=Format
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+21 -19
View File
@@ -80,6 +80,7 @@ notGoodPassword=Le mot de passe est incorrect, il doit comporter au moins 6 cara
# note # note
myBlog=Blog myBlog=Blog
Explore=Explore
history=Historique history=Historique
save=Sauvegarder save=Sauvegarder
editorTips=Astuces editorTips=Astuces
@@ -111,6 +112,7 @@ saving=Sauvegarde
saveSuccess=Sauvegarde réussie saveSuccess=Sauvegarde réussie
SearchNote=Chercher une note SearchNote=Chercher une note
SearchNotebook=Chercher un bloc-note SearchNotebook=Chercher un bloc-note
Toggle Modify with Readonly=Passer d'écriture à lecture seule
update=Mettre à jour update=Mettre à jour
create=Créer create=Créer
@@ -244,30 +246,30 @@ themeValidHasRoundInclude=WARNING: Les modèles ont des références circulaires
# share # share
tokenExpired=Token Expired tokenExpired=Token Expired
Share=Share Share=Partager
hasSharedThisNote=has shared this note hasSharedThisNote=a partagé cette note
inputSharePwd=Please input password inputSharePwd=Veuillez entrer le mot de passe
shareToGroup=Share to group shareToGroup=Partager avec le groupe
shareByPwd=Share by password shareByPwd=Partager via un mot de passe
groupName=Group Name groupName=Nom du groupe
operation=Operation operation=Opération
groupAndMemberManage=Manage group/member groupAndMemberManage=Gérer le groupe/les membres
shareToGroupTips=If you share your note to group, the member belongs to group will have the right to access the note shareToGroupTips=Si vous partagez cette note avec le groupe, les membres auront le droit d'y accéder.
shared=Shared shared=Partagé
notShared=Not shared notShared=Non partagé
shareLink=Share link shareLink=Partager le lien
sharePwd=Access password sharePwd=Accès au mot de passe
cancelShare=Cancel cancelShare=Annuler
getShareLinkAndPwd=Get link and password getShareLinkAndPwd=Obtenir le lien et le mot de passe
# Common # Common
created=Créé created=Créé
updated=Mis à jour updated=Mis à jour
modify=Modifier modify=Modifier
Search=Search Search=Chercher
Save Success=Save Success Save Success=Sauvegardé avec succès
Please save note firstly!=Please save note firstly! Please save note firstly!=Veuillez d'abord enregistrer votre note!
Please sign in firstly!=Please sign in firstly! Please sign in firstly!=Veuillez d'abord vous enregistrer!
# error # error
notFound=Page introuvable. notFound=Page introuvable.
+179
View File
@@ -0,0 +1,179 @@
Cut=Cut
Header 2=Header 2
Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.=Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.
Div=Div
Paste=Paste
Close=Close
Font Family=Font Family
Pre=Pre
Align right=Align right
New document=New document
Blockquote=Blockquote
Numbered list=Numbered list
Increase indent=Increase indent
Formats=Formats
Headers=Headers
Select all=Select all
Header 3=Header 3
Blocks=Blocks
Undo=Undo
Strikethrough=Strike-through
Bullet list=Bullet list
Header 1=Header 1
Superscript=Superscript
Clear formatting=Clear formatting
Font Sizes=Font Sizes
Subscript=Subscript
Header 6=Header 6
Redo=Redo
Paragraph=Paragraph
Ok=Ok
Bold=Bold
Code=Code
Italic=Italic
Align center=Align centre
Header 5=Header 5
Decrease indent=Decrease indent
Header 4=Header 4
Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.=Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.
Underline=Underline
Cancel=Cancel
Justify=Justify
Inline=Inline
Copy=Copy
Align left=Align left
Visual aids=Visual aids
Lower Greek=Lower Greek
Square=Square
Default=Default
Lower Alpha=Lower Alpha
Circle=Circle
Disc=Disc
Upper Alpha=Upper Alpha
Upper Roman=Upper Roman
Lower Roman=Lower Roman
Name=Name
Anchor=Anchor
You have unsaved changes are you sure you want to navigate away?=You have unsaved changes are you sure you want to navigate away?
Restore last draft=Restore last draft
Special character=Special character
Source code=Source code
Right to left=Right to left
Left to right=Left to right
Emoticons=Emoticons
Robots=Robots
Document properties=Document properties
Title=Title
Keywords=Keywords
Encoding=Encoding
Description=Description
Author=Author
Language=Language
`ctrl/cmd+shift+c` toggle code=`ctrl/cmd+shift+c` toggle code
Fullscreen=Full-screen
Horizontal line=Horizontal line
Horizontal space=Horizontal space
Insert\/edit image=Insert\/edit image
General=General
Advanced=Advanced
Source=Source
Border=Border
Constrain proportions=Constrain proportions
Vertical space=Vertical space
Image description=Image description
Style=Style
Dimensions=Dimensions
Insert image=Insert image
Insert date\/time=Insert date\/time
Remove link=Remove link
Url=URL
Text to display=Text to display
Anchors=Anchors
Insert link=Insert link
New window=New window
None=None
The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?=The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?
Target=Target
The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?=The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?
Insert\/edit link=Insert\/edit link
Insert\/edit video=Insert\/edit video
Poster=Poster
Alternative source=Alternative source
Paste your embed code below:=Paste your embed code below:
Insert video=Insert video
Embed=Embed
Nonbreaking space=Non-breaking space
Page break=Page break
Paste as text=Paste as text
Preview=Preview
Print=Print
Save=Save
Could not find the specified string.=Could not find the specified string.
Replace=Replace
Next=Next
Whole words=Whole words
Find and replace=Find and replace
Replace with=Replace with
Find=Find
Replace all=Replace all
Match case=Match case
Prev=Prev
Spellcheck=Spell-check
Finish=Finish
Ignore all=Ignore all
Ignore=Ignore
Insert row before=Insert row before
Rows=Rows
Height=Height
Paste row after=Paste row after
Alignment=Alignment
Column group=Column group
Row=Row
Insert column before=Insert column before
Split cell=Split cell
Cell padding=Cell padding
Cell spacing=Cell spacing
Row type=Row type
Insert table=Insert table
Body=Body
Caption=Caption
Footer=Footer
Delete row=Delete row
Paste row before=Paste row before
Scope=Scope
Delete table=Delete table
Header cell=Header cell
Column=Column
Cell=Cell
Header=Header
Cell type=Cell type
Copy row=Copy row
Row properties=Row properties
Table properties=Table properties
Row group=Row group
Right=Right
Insert column after=Insert column after
Cols=Cols
Insert row after=Insert row after
Width=Width
Cell properties=Cell properties
Left=Left
Cut row=Cut row
Delete column=Delete column
Center=Centre
Merge cells=Merge cells
Insert template=Insert template
Templates=Templates
Background color=Background colour
Text color=Text colour
Show blocks=Show blocks
Show invisible characters=Show invisible characters
Words: {0}=Words: {0}
Insert=Insert
File=File
Edit=Edit
Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help=Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help
Tools=Tools
View=View
Table=Table
Format=Format
+31
View File
@@ -0,0 +1,31 @@
# album image
Images=Imagens
Upload=Enviar
Image URL=Imagem URL
Albums=Álbuns
Default=Padrão
File title search=Busca pelo título do arquivo
Go to upload images=Ir para envio de imagens
Rename=Renomear
Add=Incluir
Add Album=Incluir álbum
Add Image=Incluir imagem
Can't load this url=Não é possível carregar esta URL
No Images=Sem imagens
Click to upload images Or Drop images to here=Clique para fazer o envio de imagens or arraste imagens aqui
Cannot delete default album=Não é possível excluir o álbum padrão
Cannot rename default album=Não é possível renomear o álbum padrão
This album has images, please delete it's images at first.=Este álbum tem imagens, favor excluir elas antes.
Rename Album=Renomear Álbum
Add Success!=Incluído com sucesso!
Rename Success!=Renomeado com sucesso!
Delete Success!=Excluído com sucesso!
Are you sure to delete this image ?=Vocês tem certeza que deseja excluir esta imagem ?
click to remove this image=clique para excluir esta imagem
error=erro
Error=Erro
Prev=Anterior
Next=Próxima
+91
View File
@@ -0,0 +1,91 @@
# blog
blogNavs=Navegação
quickLinks=Links rápidos
latestPosts=Últimas postagens
noBlog=Sem blog
noTag=Sem tag
blogClass=Categoria
updatedTime=Enviado em
createdTime=Criado em
fullBlog=Blog completo
blogNav=Navegação do blog
more=Mais...
previous=Anterior
next=Próximo
#
# set blog
#
blogSet=Configuração do blog
baseInfoSet=Informações básicas
commentSet=Comentário
themeSet=Tema
theme=Tema
blogName=Título
blogLogo=Logo
blogDesc=Descrição
aboutMe=Sobre mim
#domain
domainSet=Domímio
subDomain=Subdomínio
domain=Domain personalizado
# theme
elegant=Elegante
navFixed=Navegação fixada à esquerda
openComment=Abrir commentário?
chooseComment=Sistema de comentário
disqusHelp=Favor insira seu Disqus Id
needHelp=Precisa de ajuda?
blogLogoTips=Envie uma imagem para substituir o título do blog
saveSuccess=Gravado com sucesso
community=Comunidade
home=Home
none=Nada
moreShare=Mais
sinaWeibo=Weibo
weixin=Weichat
tencentWeibo=Tencent Weibo
qqZone=QQ Zone
renren=Renren
report=Relatório
like=Gostei
unlike=Não gostei
viewers=Visualizadores
author=Autor
delete=Excluir
reply=Responder
comment=Comentar
comments=Comentários
cancel=Cancelar
confirm=Confirmar
signIn=Sign In
signUp=Sign Up
submitComment=Submeter
reportReason1=Conteúdos hostis
reportReason2=Publicidade de spam
reportReason3=Conteúdos ilegais
reportReason4=Não deve abrir a discussão de conteúdo político
other=Outro
reportReason=Razão
chooseReason=Por favor selecione a razão do relatório
reportSuccess=Relatório enviado com sucesso, iremos notificar o acordo com o autor, obrigado pela supervisão
error=Erro
reportComment?=Denunciar este comentário?
reportBlog?=Denunciar este blog?
confirmDeleteComment=Você tem certeza?
scanQRCode=Abrir weichat e escanear o código QR
justNow=Agota
minutesAgo=minutos atrás
hoursAgo=horás atrás
daysAgo=dias atrás
weeksAgo=semanas atrás
monthsAgo=meses atrás
a=a
+35
View File
@@ -0,0 +1,35 @@
# markdown editor
Hyperlink=Hyperlink
Please provide the link URL and an optional title=Favor informar a URL e um título opcional
optional title=título opcional
Ok=Ok
Cancel=Cancelar
Strong=Negrito
strong text=texto em negrito
Emphasis=Itálico
emphasized text=texto em itálido
Blockquote=Avanço
Code Sample=Código de exemplo
enter code here=Insira o código aqui
Image=Imagem
Heading=Cabeçalho
Numbered List=Lista numerada
Bulleted List=Lista não-numerada
List item=Item de lista
Horizontal Rule=Linha horizontal
Markdown syntax=Syntaxe Markdown
Undo=Desfazer
Redo=Refazer
enter image description here=Inserir a descrição da imagem aqui
enter link description here=Inserir a descrição do link aqui
Edit mode=Modo Edit
Vim mode=Movo Vim
Emacs mode=Modo Emacs
Normal mode=Modo Normal
Normal=Normal
Light=Light
Light editor=Editor light
Insert Image=Inserir Imagem
+136
View File
@@ -0,0 +1,136 @@
####################
# Member Center
####################
memberCenter=Membro Central
userNotExists=Usuário inexistente
hasUsers=O usuário já existe
Leanote Blog Theme Api=Tema da API do Blog do Leanote
My Group=Meu grupo
# post abstract
Abstract=Resumo
Description=Descrição
Once the abstract has been updated, it will not set the abstract automatically other than you cancel it.=Uma vez que o resumo seja atualizado, ele não será definido automaticamente exceto se você cancelá-lo.
Main Image=Imagem principal
Get next image as main image from content=Usar a próxima imagem do conteúdo como imagem principal
Raw Content=Conteúdo original
#memeber
welcomeToLeanote=Bem-vindo
accountInfo=Informações da conta
accountType=Tipo da conta
premiumAccountType=Premium
normalAccountType=Normal
imageSize=Tamanho de imagem
attachSize=Tamanho de anexo
totalTraffic=Tráfego de Internet
upgrade=Evoluir minha conta
leanoteEvents=Novidade da Leanote
addLeanoteAccount=Nova conta Leanote
defaultComment=Sistema padrão de comentário Leanote
upgradeAccountTips=Quero utilizar um domínio personalizado para o meu blog, <a class="btn btn-default" href="/service">Evoluir minha conta</a>
cateIsPublicNotebook=Categoria são notas publicadas
dragAndSort=Arraste para ordenar
permanentLink=Link permanente
cate=Categoria
noCates=Sem categoria
single=Página simples
singleTips=Você pode incluir diversas páginas simples
addSingle=Nova página simples
updateSingle=Atualizar página simples
inputSingleTitle=O título é obrigatório
saveSort=Ordenação gravada
pagingAndSort=Configurações de paginação e ordenação
perPageSize=Itens por página
sortField=Campo de ordenação
sortType=Tipo de ordenação
publicTime=Data/hora da publicação
createdTime=Data de criação
updatedTime=Data de atualização
desc=Desc
asc=Asc
postList=Lista de postagens
hasSelfDefined=Definido
noSelfDefined=Não definido
setAbstract=Configurações do resumo
title=Título
content=Conteúdo
addTheme=Novo tema
importTheme=Importar tema
exportTheme=Exportar tema
export=Exportar
preview=Pré-visualização
edit=Editar
use=Usar
install=Instalar
currentTheme=Tema atual
myOtherThemes=Meus outros tema
leanoteThemeMarket=Venda de temas da Leanote
updateTheme=Atualizar tema
tplStyleScript=template, style, script
newFile=Novo arquivo
image=Imagem
currentFile=Arquivo atual
tpl=Template
style=Style
script=Script
header=Cabeçalho
footer=Rodapé
index=Início
cate=Categoria
search=Pesquisa
single=Página simples
archive=Arquivo
post=Post
tags=Tags
tag_posts=Postagens de tags
share_comment=Comentários
themeJson=Configurações de tema
paging=Paginação
highlight=Realce de código
# member title
Leanote Member Center=Membro Central Leanote
Username=Usuário
Email=E-mail
Password=Senha
Avatar=Avatar
Add Account=Incluir conta
Update Post Abstract=Atualizar resumo da postagem
Blog Base Info=Informações básicas do blog
Comment=Comentário
Posts=Postagens
Domain=Domínio
Paging=Paginação
Category=Categoria
Add Single=Incluir página simples
Update Single=Atualizar página simples
Single=Página simples
Theme=Tema
Upate Theme=Atualizar tema
group=Grupo
newGroup=Novo grupo
deleteGroup=Excluir grupo
addMemberTips=Informar nome de usuário ou e-mail para incluir o membro
deleteMember=Excluir membro
forbiddenNotMyGroup=Você não possui autorização de acesso porque você não é o dono do grupo
userExistsInGroup=O membro já está neste grupo
notMyGroup=Você não é o dono do grupo
# view js
Are you sure ?=Você tem certeza ?
Are you sure to install it ?=Você tem certeza que deseja instalar ?
Are you sure to delete=Você tem certeza que deseja excluir
Success=Sucesso
Error=Erro
File exists=Arquivo existente
Delete file=Excluir arquivo
No images=Sem imagens
Filename=Arquivo
Group Title=Título do grupo
+282
View File
@@ -0,0 +1,282 @@
# leanote
app=Leanote
moto=Mais que um bloco de notas!
moto2=Conhecimento, Blog, Compartilhamento, Cooperação... tudo em Leanote
moto3=Breve mas não simples
fork github=Fork Leanote no Github
# Home
openSource=leanote.org
forgetPassword = Esqueceu sua senha?
or=ou
try=Tente isso
3th=Contas de terceiros
usernameOrEmail=Nome de usuário ou e-mail
password=Senha
home=Página inicial
desktopApp=Aplicativo
aboutLeanote=Sobre Leanote
suggestions=Sugestões
yourSuggestions=Sugestões
leanoteBlog=Blog
knowledge=Conhecimento
knowledgeInfo=Use Leanote como uma nota, gerencie seu conhecimento no Leanote.
share=Compartilhamento
shareInfo=Compartilhe seu conhecimento com amigos no Leanote.
cooperation=Cooperação
cooperationInfo=Coopere com amigos para aprimorar o conhecimento deles.
blog=Blog
blogInfo=Você pode publicar seu conhecimento e leanote no seu blog!
suggestionsInfo=Ajude-nos a melhorar nosso serviço
yourContact=Seu contato
emailOrOthers=E-mail ou outra forma de contato
captcha=Captcha
reloadCaptcha=Recarregar Captcha
captchaError=Captcha inválido
inputCaptcha=Captcha é obrigatório
noTag=Sem Tags
hi=Hi
welcomeUseLeanote=Bem-vindo!
myNote=Minha nota
curUser=E-mail
# form
submit=submeter
Submit=Submeter
register=Sign up
login=Sign in
Password=Senha
password2=Confirmação de senha
email=E-mail
inputUsername=Nome de usuário (e-mail) é obrigatório
inputEmail=E-mail é obrigatório
wrongEmail=E-mail inválido
wrongUsernameOrPassword=Nome de usuário ou senha inválida
inputPassword=Senha é obrigatória
inputLoginPasswordTips=Favor informar a senha
wrongPassword=Senha inválida
logining=Sign in
loginSuccess=Login com sucesso
ing=Processando
use = Use
hadAcount = Já possui uma conta?
hasAcount = Não possui uma conta?
signInWithThird=Entrar com outra conta
# sign in
registerSuccessAndRdirectToNote=Registro com sucesso, redirecionando...
userHasBeenRegistered=%s já está registrado
# find password
passwordTips=O tamanho deve ser de pelo menos 6 caracteres
findPassword=Recuperar senha
findPasswordSendEmailOver=Nós já enviamos o link de recuperação de senha para o seu e-mail, por favor verifique o seu e-mail
checkEmai=Verificar e-mail
findPasswordTimeout=prazo
reFindPassword=Recuperar senha novamente
updatePassword=Alterar a senha
updatePasswordSuccessRedirectToLogin=Senha alterada com sucesso e redirecionado para a página de login...
inputPassword2=Favor informar sua senha novamente
confirmPassword=Favor confirmar a seua senha
notGoodPassword=Esta não é uma boa senha, o tamanho deve ser de pelo menos 6 caracteres
# note
myBlog=Blog
Explore=Explore
history=Histórico
save=Salvar
editorTips=Dicas
editorTipsInfo=<h4>1. Atalhos</h4>ctrl+shift+c Alternar código<h4>2. shift+enter Sair do bloco atual</h4> ex.: <img src="/images/outofcode.png" style="width: 90px"/> neste caso você pode usar shift+enter para sair do bloco atual.
newNote=Nova nota
newMarkdownNote=Nova nota em Markdown
noNoteNewNoteTips=O bloco de notas está vazio porque não...
canntNewNoteTips=Desculpe, não é possível uma nova nota aqui, favor escolher um caderno primeiro.
new=Novo
newMarkdown=Nova nota em markdown
clickAddTag=Clique para incluir uma tag
notebook=Bloco de notas
note=Nota
myNotebook=Meu bloco de notas
addNotebook=Incluir bloco de notas
search=Pesquisar
clearSearch=Limpar pesquisa
all=Recentes
trash=Lixo
delete=Excluir
unTitled=Sem título
defaultShare=Compartilhamento padrão
leftHidden=Ocultar barra deslizante
leftShow=Mostrar barra deslizante
nav=Navegação da nota
writingMode=Modo de escrita
normalMode=Modo normal
saving=Salvando
saveSuccess=Salvo com sucesso
SearchNote=Pequisar nota
SearchNotebook=Pesquisar bloco de notas
Choose File=Escolher arquivo
Download All=Download de tudo
Information=Informação
Toggle Modify with Readonly=Alternar modificação somente leitura
update=Alterar
create=Criar
demoRegister=<a href="/register">Registrar</a>
close=Fechar
cancel=Cancelar
send=Enviar
# tag
tag=Tag
myTag=Minha tag
red=vermelho
yellow=amarelo
blue=azul
green=verde
# setting
accountSetting=Conta
logout=Logout
basicInfo=Básico
basicInfoSet=Configurações básicad do blog
updateEmail=Alterar e-mail
usernameSetting=Alterar nome de usuário
chooseImage=Escolher imagem
oldPassword=Senha anterior
newPassword=Nova senha
admin=Administrador
# theme
default=Padrõa
simple=Simples
# tinymce
uploadImage=Enviar imagem
# blog
aboutMe=Sobre mim
blogSet=Configurações do Blog
# index
discussion=Discussão
download=Download
howToInstallLeanote=Como instalar o leanote
#
attachments = Anexos
donate = Doação
# contextmenu
shareToFriends=Compartilhar com amigos
publicAsBlog=Publicar como blog
cancelPublic=Cancelar publicação
move=Mover
copy=Copiar
rename=Renomear
exportPdf=Exportar PDF
addChildNotebook=Incluir bloco de notas filho
deleteAllShared=Excluir usuário compartilhad
deleteSharedNotebook=Excluir bloco de notas compartilhado
copyToMyNotebook=Copiar para meu bloco de notas
# note-dev
emailInSending=Enviando para
checkEmail=Verificar e-mail
setUsername=Configurar nome de usuário
setUsernameTips=Seu e-mail atual é: <code>%s</code>. Você pode configurar um nome de usuário único. <br />O tamanho do nome de usuário deve ser de pelo menos 4 caracteres e não pode conter caracteres especiais.
currentEmail=Seu e-mail atual é: <code>%s</code>
updateEmail=Alterar e-mail
updateEmailTips=Você deve verificar o e-mail antes de alterar o e-mail. O e-mail verificado será sua nova conta.
sendVerifiedEmail=Enviar e-mail de verificação
verified=Verificado
unVerified=Não verificado
verifiedNow=Verificar agora
resendVerifiedEmail=Reenviar e-mail de verificação
# share
defaulthhare=Padrão
addShare=Adicionar amigo
friendEmail=E-mail do amigo
permission=Permissão
readOnly=Somente leitura
writable=Escrita
inputFriendEmail=O e-mail do amigo é obrigatório
clickToChangePermission=Clique para alterar a permissão
sendInviteEmailToYourFriend=Enviar convite por e-mail para seu amigo
copySuccess=Copiado com sucesso
copyFailed=Falha ao copiar
friendNotExits=Seu amigo não possui uma conta, link para o registro: %s
emailBodyRequired=Corpo do e-mail body é obrigatório
clickToCopy=Clique para copiar
sendSuccess=sucesso
inviteEmailBody=Olá, eu sou %s, %s é incrível, vamos lá!
# history
historiesNum=Nós gravamos pelo menos os <b>10</b> últimas históricos de cada nota
noHistories=Sem histórico
datetime=Data/hora
restoreFromThisVersion=Restaurar a partir desta versão
confirmBackup=Você tem certeza que deseja restaurar a partir desta versão? Nós faremos backup da nota atual.
createAccount=Criar conta
createAccountSuccess=Conta criada com sucesso
createAccountFailed=Falha na criação da conta
thirdCreateAcountTips=Você está usando conta de terceiros para login %(app)s, você pode criar uma %(app)s conta também. <br />Depois de criar %(app)s conta, você pode usar a conta e a conta de terceiros para fazer login %(app)s.
# valid msg
inputUsername=Informe o nome de usuário
updateUsernameSuccess=Alteração do nome de usuário com sucesso
usernameIsExisted=Nome de usuário existente
noSpecialChars=Nome de usuário não pode conter caracteres especiais
minLength=O tamanho mínimo é %s
errorEmail=Favor informar o e-mail corretamente
verifiedEmaiHasSent=O e-mail de verificação foi enviado, favor verificar o seu e-mail.
emailSendFailed=Falha ao enviar o e-mail
inputPassword=A senha é obrigatória
inputNewPassword=A nova senha é obrigatória
inputPassword2=Favor informar a nova senha novamene
errorPassword=O tamanho da senha deve ser de pelo menos 6 caracteres e uma senha segura
oldPasswordError=A senha antiga não confere
confirmPassword=Senha não confere
updatePasswordSuccess=Alteração de senha com sucesso
errorDomain=O domínio personalizado é inválido, ex.: www.myblog.com
domainExisted=O domínio personalizado já existe
errorSubDomain=Favor informar um subdomínio válido, o tamanho deve ser de pelo menos 4 caracteres e não deve conter caracteres especiais
subDomainExisted=O subdomínio já existe
domainNotPointToLeanote=O domínio personalizado não pode ser d.leanote.com
errorPerPageSize=Tamanho de página está errado
errorSortField=Campo de ordenação está errado
themeValidHasRoundInclude=ALERTA: Templates tem referência circular!
# share
tokenExpired=Token Expirado
Share=Compartilhar
hasSharedThisNote=compartilhou esta nota
inputSharePwd=Favor informar a senha
shareToGroup=Compartilhar para o grupo
shareByPwd=Compartilhar pela senha
groupName=Nome do grupo
operation=Operação
groupAndMemberManage=Gereciar grupos/membros
shareToGroupTips=Se você compartilhar esta nota com o grupo, o membro pertencente ao grupo irá ter direito de acesso a esta nota
shared=Compartilhado
notShared=Não compartilhado
shareLink=Link compartilhado
sharePwd=Senha de acesso
cancelShare=Cancelar
getShareLinkAndPwd=Pegar link e senha
# Common
created=Criado
updated=Alterado
modify=Modificar
Search=Pesquisar
Save Success=Salvo com sucesso
Please save note firstly!=Favor salvar a nota primeiro!
Please sign in firstly!=Favor entrar primento!
# error
notFound=Esta página não pode ser encontrada.
+179
View File
@@ -0,0 +1,179 @@
Cut=Cut
Header 2=Header 2
Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.=Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.
Div=Div
Paste=Paste
Close=Close
Font Family=Font Family
Pre=Pre
Align right=Align right
New document=New document
Blockquote=Blockquote
Numbered list=Numbered list
Increase indent=Increase indent
Formats=Formats
Headers=Headers
Select all=Select all
Header 3=Header 3
Blocks=Blocks
Undo=Undo
Strikethrough=Strike-through
Bullet list=Bullet list
Header 1=Header 1
Superscript=Superscript
Clear formatting=Clear formatting
Font Sizes=Font Sizes
Subscript=Subscript
Header 6=Header 6
Redo=Redo
Paragraph=Paragraph
Ok=Ok
Bold=Bold
Code=Code
Italic=Italic
Align center=Align centre
Header 5=Header 5
Decrease indent=Decrease indent
Header 4=Header 4
Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.=Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.
Underline=Underline
Cancel=Cancel
Justify=Justify
Inline=Inline
Copy=Copy
Align left=Align left
Visual aids=Visual aids
Lower Greek=Lower Greek
Square=Square
Default=Default
Lower Alpha=Lower Alpha
Circle=Circle
Disc=Disc
Upper Alpha=Upper Alpha
Upper Roman=Upper Roman
Lower Roman=Lower Roman
Name=Name
Anchor=Anchor
You have unsaved changes are you sure you want to navigate away?=You have unsaved changes are you sure you want to navigate away?
Restore last draft=Restore last draft
Special character=Special character
Source code=Source code
Right to left=Right to left
Left to right=Left to right
Emoticons=Emoticons
Robots=Robots
Document properties=Document properties
Title=Title
Keywords=Keywords
Encoding=Encoding
Description=Description
Author=Author
Language=Language
`ctrl/cmd+shift+c` toggle code=`ctrl/cmd+shift+c` toggle code
Fullscreen=Full-screen
Horizontal line=Horizontal line
Horizontal space=Horizontal space
Insert\/edit image=Insert\/edit image
General=General
Advanced=Advanced
Source=Source
Border=Border
Constrain proportions=Constrain proportions
Vertical space=Vertical space
Image description=Image description
Style=Style
Dimensions=Dimensions
Insert image=Insert image
Insert date\/time=Insert date\/time
Remove link=Remove link
Url=URL
Text to display=Text to display
Anchors=Anchors
Insert link=Insert link
New window=New window
None=None
The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?=The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?
Target=Target
The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?=The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?
Insert\/edit link=Insert\/edit link
Insert\/edit video=Insert\/edit video
Poster=Poster
Alternative source=Alternative source
Paste your embed code below:=Paste your embed code below:
Insert video=Insert video
Embed=Embed
Nonbreaking space=Non-breaking space
Page break=Page break
Paste as text=Paste as text
Preview=Preview
Print=Print
Save=Save
Could not find the specified string.=Could not find the specified string.
Replace=Replace
Next=Next
Whole words=Whole words
Find and replace=Find and replace
Replace with=Replace with
Find=Find
Replace all=Replace all
Match case=Match case
Prev=Prev
Spellcheck=Spell-check
Finish=Finish
Ignore all=Ignore all
Ignore=Ignore
Insert row before=Insert row before
Rows=Rows
Height=Height
Paste row after=Paste row after
Alignment=Alignment
Column group=Column group
Row=Row
Insert column before=Insert column before
Split cell=Split cell
Cell padding=Cell padding
Cell spacing=Cell spacing
Row type=Row type
Insert table=Insert table
Body=Body
Caption=Caption
Footer=Footer
Delete row=Delete row
Paste row before=Paste row before
Scope=Scope
Delete table=Delete table
Header cell=Header cell
Column=Column
Cell=Cell
Header=Header
Cell type=Cell type
Copy row=Copy row
Row properties=Row properties
Table properties=Table properties
Row group=Row group
Right=Right
Insert column after=Insert column after
Cols=Cols
Insert row after=Insert row after
Width=Width
Cell properties=Cell properties
Left=Left
Cut row=Cut row
Delete column=Delete column
Center=Centre
Merge cells=Merge cells
Insert template=Insert template
Templates=Templates
Background color=Background colour
Text color=Text colour
Show blocks=Show blocks
Show invisible characters=Show invisible characters
Words: {0}=Words: {0}
Insert=Insert
File=File
Edit=Edit
Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help=Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help
Tools=Tools
View=View
Table=Table
Format=Format
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -15,6 +15,7 @@ try=体验一下
usernameOrEmail=用户名或Email usernameOrEmail=用户名或Email
password=密码 password=密码
home=主页 home=主页
Leanote Explore=Leanote探索
desktopApp=客户端 desktopApp=客户端
aboutLeanote=关于Leanote aboutLeanote=关于Leanote
suggestions=建议 suggestions=建议
@@ -105,6 +106,7 @@ notGoodPassword=密码至少6位
# 笔记主页 # 笔记主页
myBlog=我的博客 myBlog=我的博客
Explore=探索
history=历史记录 history=历史记录
save=保存 save=保存
editorTips=帮助 editorTips=帮助
@@ -144,6 +146,7 @@ Insert link into content=将附件链接插入到内容中
Download=下载 Download=下载
Delete=删除 Delete=删除
Drop images to here=将图片拖动至此 Drop images to here=将图片拖动至此
Toggle Modify with Readonly=编辑与只读切换
update=更新 update=更新
create=创建 create=创建
+186
View File
@@ -0,0 +1,186 @@
Cut=剪切
Header 2=标题2
Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.=你的浏览器不支持对剪贴板的访问,请使用Ctrl+X\/C\/V键进行复制粘贴。
Div=Div区块
Paste=粘贴
Close=关闭
Font Family=字体
Pre=预格式文本
Align right=右对齐
New document=新文档
Blockquote=引用
Numbered list=编号列表
Increase indent=增加缩进
Formats=格式
Headers=标题
Select all=全选
Header 3=标题3
Blocks=区块
Undo=撤消
Strikethrough=删除线
Bullet list=项目符号
Header 1=标题1
Superscript=上标
Clear formatting=清除格式
Font Sizes=字号
Subscript=下标
Header 6=标题6
Redo=重复
Paragraph=段落
Ok=确定
Bold=粗体
Code=代码
Italic=斜体
Align center=居中
Header 5=标题5
Decrease indent=减少缩进
Header 4=标题4
Convert Code=转换成文本
toggleCode=ctrl+shift+c 切换代码
Language=代码语言
`ctrl/cmd+shift+c` toggle code=`ctrl/cmd+shift+c` 切换代码
Toggle ace with raw html=Ace代码与普通Pre代码切换
Inline Code=<code>
Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.=当前为纯文本粘贴模式,再次点击可以回到普通粘贴模式。
Underline=下划线
Cancel=取消
Justify=两端对齐
Inline=文本
Copy=复制
Align left=左对齐
Visual aids=网格线
Lower Greek=小写希腊字母
Square=方块
Default=默认
Lower Alpha=小写英文字母
Circle=空心圆
Disc=实心圆
Upper Alpha=大写英文字母
Upper Roman=大写罗马字母
Lower Roman=小写罗马字母
Name=名称
Anchor=锚点
You have unsaved changes are you sure you want to navigate away?=你还有文档尚未保存,确定要离开?
Restore last draft=恢复上次的草稿
Special character=特殊符号
Source code=源代码
Right to left=从右到左
Left to right=从左到右
Emoticons=表情
Robots=机器人
Document properties=文档属性
Title=标题
Keywords=关键词
Encoding=编码
Description=描述
Author=作者
Fullscreen=全屏
Horizontal line=水平分割线
Horizontal space=水平边距
Insert\/edit image=上传/插入图片
Insert\/edit mind map=新建/编辑思维导图
Insert Mind Map=插入思维导图
Mind Map=思维导图
Image=图片
Insert Image=插入
General=普通
Advanced=高级
Source=地址
Border=边框
Constrain proportions=保持纵横比
Vertical space=垂直边距
Image description=图片描述
Style=样式
Dimensions=大小
Insert image=插入图片
Insert date\/time=插入日期\/时间
Remove link=删除链接
Url=地址
Text to display=显示文字
Anchors=锚点
Insert link=插入链接
New window=在新窗口打开
None=无
Target=打开方式
Insert\/edit link=插入\/编辑链接
Insert\/edit video=插入\/编辑视频
Poster=封面
Alternative source=镜像
Paste your embed code below:=将内嵌代码粘贴在下面:
Insert video=插入视频
Embed=内嵌
Nonbreaking space=不间断空格
Page break=分页符
Paste as text=粘贴为文本
Preview=预览
Print=打印
Save=保存
Could not find the specified string.=未找到搜索内容.
Replace=替换
Next=下一个
Whole words=全字匹配
Find and replace=查找和替换
Replace with=替换为
Find=查找
Replace all=全部替换
Match case=区分大小写
Prev=上一个
Spellcheck=拼写检查
Finish=完成
Ignore all=全部忽略
Ignore=忽略
Insert row before=在上方插入
Rows=行
Height=高
Paste row after=粘贴到下方
Alignment=对齐方式
Column group=列组
Row=行
Insert column before=在左侧插入
Split cell=拆分单元格
Cell padding=单元格内边距
Cell spacing=单元格外间距
Row type=行类型
Insert table=插入表格
Body=表体
Caption=标题
Footer=表尾
Delete row=删除行
Paste row before=粘贴到上方
Scope=范围
Delete table=删除表格
Header cell=表头单元格
Column=列
Cell=单元格
Header=表头
Cell type=单元格类型
Copy row=复制行
Row properties=行属性
Table properties=表格属性
Row group=行组
Right=右对齐
Insert column after=在右侧插入
Cols=列
Insert row after=在下方插入
Width=宽
Cell properties=单元格属性
Left=左对齐
Cut row=剪切行
Delete column=删除列
Center=居中
Merge cells=合并单元格
Insert template=插入模板
Templates=模板
Background color=背景色
Text color=文字颜色
Show blocks=显示区块边框
Show invisible characters=显示不可见字符
Words: {0}=字数:{0}
Insert=插入
File=文件
Edit=编辑
Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help=在编辑区按ALT-F9打开菜单,按ALT-F10打开工具栏,按ALT-0查看帮助
Tools=工具
View=视图
Table=表格
Format=格式
+31
View File
@@ -0,0 +1,31 @@
# album image
Images=圖片
Upload=上傳
Image URL=圖片地址
Albums=相冊
Default=預設
File title search=通過標題搜索
Go to upload images=去上傳圖片
Rename=重新命名
Add=新增
Add Album=新增相簿
Add Image=新增圖片
Can't load this url=不能載入該圖片
No Images=無圖片
Click to upload images Or Drop images to here=點擊上傳圖片或將圖片拖至此
Cannot delete default album=不能刪除預設相簿
Cannot rename default album=不能重命名預設相簿
This album has images, please delete it's images at first.=相簿內有圖片, 不能刪除
Rename Album=重新命名
Add Success!=新增成功!
Rename Success!=重新命名成功!
Delete Success!=刪除成功
Are you sure to delete this image ?=確定刪除該圖片?
click to remove this image=刪除圖片
error=錯誤
Error=錯誤
Prev=上一頁
Next=下一頁
+97
View File
@@ -0,0 +1,97 @@
# blog
blog=部落格
aboutMe=關於我
blogSet=部落格設定
blogNavs=導航
quickLinks=快速連結
latestPosts=最近發表
noBlog=無部落格
noTag=無
blogClass=分類
updatedTime=更新
createdTime=建立
fullBlog=全文
blogNav=導航
more=更多...
previous=上一頁
next=下一頁
#
# set blog
#
blogSet=部落格設定
baseInfoSet=基本設定
commentSet=評論設定
themeSet=主題設定
theme=主題
blogName=部落格標題
blogLogo=部落格Logo
blogDesc=部落格描述
aboutMe=關於我
#domain
domainSet=域名設定
subDomain=部落格子域名
domain=自定義域名
# theme
elegant=大氣
navFixed=導航左側固定
openComment=開啟評論?
chooseComment=選擇評論系統
disqusHelp=請填寫您申請的Disqus唯一url前綴. 建議您申請Disqus帳號, 這樣可以自己管理評論. 或使用leanote的預設Disqus Id.
needHelp=需要幫助?
blogLogoTips=上傳logo將顯示logo(替代部落格標題)
saveSuccess=保存成功
community=社區
home=主頁
none=無
moreShare=更多分享
sinaWeibo=新浪微博
weixin=微信
tencentWeibo=騰訊微博
qqZone=QQ空間
renren=人人網
report=檢舉
like=讚
unlike=取消讚
viewers=人讀過
author=作者
delete=刪除
reply=回復
comment=評論
comments=條評論
cancel=取消
confirm=確認
signIn=登錄
signUp=註冊
submitComment=發表評論
reportReason1=不友善內容
reportReason2=廣告等垃圾信息
reportReason3=違法違規內容
reportReason4=不宜公開討論的政治內容
other=其它
reportReason=檢舉理由
chooseReason=請選擇檢舉理由
reportSuccess=檢舉成功, 我們處理後會通知作者, 感謝您的監督
error=錯誤
reportComment?=檢舉該評論?
reportBlog?=檢舉該部落格?
confirmDeleteComment=確定刪除該評論?
scanQRCode=打開微信掃一掃二維碼
justNow=剛剛
minutesAgo=分鐘前
hoursAgo=個小時前
daysAgo=天前
weeksAgo=周前
monthsAgo=個月前
a=a
+35
View File
@@ -0,0 +1,35 @@
# markdown editor
Hyperlink=超連結
Please provide the link URL and an optional title=請填寫連結和一個可選的標題
optional title=可選標題
Ok=確定
Cancel=取消
Strong=粗體
strong text=粗體
Emphasis=斜體
emphasized text=斜體
Blockquote=引用
Code Sample=代碼
enter code here=代碼
Image=圖片
Heading=標題
Numbered List=有序列表
Bulleted List=無序列表
List item=項目
Horizontal Rule=水平線
Markdown syntax=Markdown 語法
Undo=還原
Redo=重作
enter image description here=圖片標題
enter link description here=連結標題
Edit mode=編輯模式
Vim mode=Vim模式
Emacs mode=Emacs模式
Normal mode=普通模式
Normal=普通
Light=輕量
Light editor=輕量編輯器
Insert Image=插入
+137
View File
@@ -0,0 +1,137 @@
####################
# 個人中心
####################
memberCenter=個人中心
userNotExists=使用者尚未註冊
hasUsers=使用者已存在
Leanote Blog Theme Api=Leanote博客主題API
My Group=我的群組
group=群組
newGroup=新增群組
deleteGroup=刪除群組
addMemberTips=輸入使用者名稱或電子郵件建立使用者
deleteMember=刪除使用者
forbiddenNotMyGroup=無權限操作, 非該群組的所有者
userExistsInGroup=已存在該使用者
notMyGroup=非該組組的所有者
# 博客列表
# 博客摘要設定
Abstract=摘要
Description=描述
Once the abstract has been updated, it will not set the abstract automatically other than you cancel it.=以下內容設定後, 以後修改筆記時將不自動獲取. 若將該文章取消為博客後, 以下內容會自動獲取.
Main Image=主要圖片
Get next image as main image from content=從筆記中自動取得一張
Raw Content=原文
# member title
Leanote Member Center=Leanote 個人中心
Username=使用者名稱
Email=Email
Password=密碼
Avatar=頭像
Add Account=新增Leanote帳號
Update Post Abstract=更新博文摘要
Blog Base Info=博客基本設定
Comment=評論設定
Posts=博文管理
Domain=域名
Paging=分頁
Category=分類管理
Add Single=添加單頁
Update Single=修改單頁
Single=單頁管理
Theme=主題
Update Theme=修改主題
#memeber
welcomeToLeanote=歡迎來到leanote
accountInfo=帳戶資訊
accountType=帳戶類型
premiumAccountType=旗艦套餐
normalAccountType=共享套餐
imageSize=圖片空間
attachSize=附件空間
totalTraffic=流量
upgrade=升級套餐
leanoteEvents=Leanote動態
addLeanoteAccount=新增Leanote帳號
defaultComment=預設leanote評論系統
upgradeAccountTips=Leanote支持綁定自己的域名到博客上, 請 <a class="btn btn-default" href="/service">升級您的帳戶</a>
cateIsPublicNotebook=分類是公開為博客的記事本
dragAndSort=拖動可排序
permanentLink=固定連結
cate=分類
noCates=無分類
single=單頁面
singleTips=您可以添加多個單頁面
addSingle=添加單頁面
updateSingle=修改單頁面
inputSingleTitle=請輸入單頁面標題
saveSort=保存排序
pagingAndSort=分頁與排序設定
perPageSize=每頁記錄數
sortField=排序字段
sortType=排序類型
publicTime=發表時間
createdTime=建立時間
updatedTime=更新時間
desc=降序
asc=升序
postList=文章列表
hasSelfDefined=已設定
noSelfDefined=未設定
setAbstract=摘要設定
title=標題
content=內容
addTheme=新增主題
importTheme=匯入主題
exportTheme=匯出主題
export=匯出
preview=預覽
edit=編輯
use=使用
install=安裝
currentTheme=當前主題
myOtherThemes=我的其它主題
leanoteThemeMarket=Leanote主題市場
updateTheme=編輯主題
tplStyleScript=模板, 樣式, 腳本
newFile=新文件
image=圖片
currentFile=當前文件
tpl=模板
style=樣式
script=腳本
header=頭部
footer=底部
index=首頁
cate=分類
search=搜索頁
single=單頁
archive=歸檔頁
post=文章頁
tags=標簽頁
tag_posts=標簽文章頁
share_comment=分享評論
themeJson=主題配置
paging=分頁
highlight=高亮
# view js
Are you sure ?=你確定執行該操作?
Are you sure to install it ?=你確定安裝該主題?
Are you sure to delete=你確定刪除
Success=成功
Error=錯誤
File exists=檔案已存在
Delete file=刪除檔案
No images=無圖片
Filename=文件名
Group Title=群組標題
+319
View File
@@ -0,0 +1,319 @@
# leanote
app=Leanote
moto=不只是筆記!
moto2=知識管理, 博客, 分享, 協作... 盡在Leanote
moto3=簡約而不簡單
fork github=Github 源碼
# 首頁
openSource=開源
Desktop App=桌面客戶端
forgetPassword = 忘記密碼?
or=或
try=體驗一下
3th=第三方登入
usernameOrEmail=使用者名稱或Email
password=密碼
home=首頁
Leanote Explore=Leanote探索
desktopApp=客戶端
aboutLeanote=關於Leanote
suggestions=建議
yourSuggestions=說明完善Leanote
leanoteBlog=官方博客
knowledge=知識
knowledgeInfo=leanote是一個筆記, 你可以用它來管理自己的知識.
share=分享
shareInfo=你也可以將知識分享給你的好友.
cooperation=協作
cooperationInfo=分享給好友的同時也可以讓你的好友和你一起來完善它.
blog=博客
blogInfo=將筆記公開, 讓知識傳播的更遠!
suggestionsInfo=說明我們完善leanote
yourContact=您的聯絡方式
emailOrOthers=Email或其它聯絡方式
captcha=驗證碼
reloadCaptcha=刷新驗證碼
captchaError=驗證碼錯誤
inputCaptcha=請輸入驗證碼
noTag=無標簽
hi=Hi
welcomeUseLeanote=Welcome!
myNote=My note
curUser=Email
# form
submit=送出
Submit=送出
register=註冊
login=登入
Password=密碼
password2=請確認密碼
email=Email
inputUsername=請輸入使用者名稱或Email
inputEmail=請輸入Email
wrongEmail=Email錯誤
wrongUsernameOrPassword=使用者名稱或密碼錯誤
inputPassword=請輸入密碼
inputLoginPasswordTips=請輸入登入密碼
wrongPassword=密碼錯誤
logining=登入
loginSuccess=登入成功
hi=Hi
welcomeUseLeanote=歡迎使用leanote
myNote=我的筆記
curUser=當前登入帳戶
# form
submit=送出
login=登入
register=註冊
password2=確認密碼
email=Email
inputUsername=請輸入使用者名稱或Email
inputEmail=請輸入Email
wrongEmail=Email格式有誤
wrongUsernameOrPassword=使用者名稱或密碼錯誤
inputPassword=請輸入密碼
wrongPassword=密碼錯誤
logining=正在登入
loginSuccess=登入成功, 正在跳轉
ing=正在處理
use = 使用
hadAcount = 已有帳戶?
hasAcount = 還無帳戶?
signInWithThird=使用第三方帳號登入
# 註冊
registerSuccessAndRdirectToNote=註冊成功, 正在跳轉...
userHasBeenRegistered=%s已被註冊
# 找回密碼
passwordTips=密碼至少6位
findPassword=找回密碼
findPasswordSendEmailOver=已經將修改密碼的連結傳送到您的郵箱, 請查收郵件.
checkEmai=查收郵箱
updatePassword=修改密碼
findPasswordTimeout=連結已過期
reFindPassword=重新找回密碼
updatePassword=修改密碼
updatePasswordSuccessRedirectToLogin=修改成功, 正在跳轉到登入頁
inputPassword2=請再次輸入密碼
confirmPassword=兩次密碼輸入不一致
notGoodPassword=密碼至少6位
# 筆記首頁
myBlog=我的博客
Explore=探索
history=歷史記錄
save=儲存
editorTips=說明
editorTipsInfo=<h4>1. 快捷鍵</h4>ctrl+shift+c 代碼塊切換 <h4>2. shift+enter 跳出當前區域</h4>比如在代碼塊中<img src="/images/outofcode.png" style="width: 90px"/>按shift+enter可跳出當前代碼塊.
newNote=新記事
newMarkdownNote=新Markdown記事
noNoteNewNoteTips=該記事本下空空如也...何不
canntNewNoteTips=Sorry, 這裏不能新增筆記的. 你需要先選擇一個記事本.
new=新建
newMarkdown=新Markdown記事
clickAddTag=點擊新增標簽
notebook=記事本
note=筆記
myNotebook=我的記事本
addNotebook=新增記事本
search=搜尋
clearSearch=清除搜尋
all=最新
trash=垃圾桶
delete=刪除
unTitled=無標題
defaultShare=預設分享
leftHidden=隱藏左側
leftShow=展開左側
nav=文檔導航
writingMode=寫作模式
normalMode=普通模式
saving=正在儲存
saveSuccess=儲存成功
SearchNote=搜尋筆記
SearchNotebook=搜尋記事本
Choose File=選擇文件
Download All=下載全部
Information=信息
Are you sure to delete it ?=確認刪除?
Insert link into content=將附件連結插入到內容中
Download=下載
Delete=刪除
Drop images to here=將圖片拖動至此
Toggle Modify with Readonly=編輯與只讀切換
update=更新
create=建立
Update Time=更新時間
Create Time=建立時間
Post Url=博文連結
demoRegister=<a href="/register">立即註冊</a>
close=關閉
cancel=取消
send=傳送
# 標簽
tag=標簽
myTag=我的標簽
red=紅色
yellow=黃色
blue=藍色
green=綠色
# 設定
accountSetting=帳戶設定
logout=退出
basicInfo=基本信息
basicInfoSet=博客基本設定
updateEmail=修改Email
usernameSetting=使用者名稱設定
chooseImage=選擇圖片
oldPassword=舊密碼
newPassword=新密碼
admin=後台管理
default=預設
simple=簡約
# tinymce
uploadImage=上傳圖片
# blog
aboutMe=關於我
blogSet=博客設定
# error
notFound=該頁面不存在
# index
discussion=社區討論
download=下載
howToInstallLeanote=leanote安裝步驟
#
attachments = 附件
donate = 捐贈
# contextmenu
shareToFriends=分享給好友
publicAsBlog=公開為博客
cancelPublic=取消公開為博客
move=移動
copy=複製
rename=重命名
exportPdf=匯出PDF
addChildNotebook=新增子記事本
deleteAllShared=刪除所有分享
deleteSharedNotebook=刪除分享記事本
copyToMyNotebook=複製到我的記事本
####note-dev
emailInSending=正在傳送郵件到
checkEmail=查看郵件
setUsername=使用者名稱設定
setUsernameTips=你的郵箱是 <code>%s</code>, 可以再設定一個唯一的使用者名稱.<br />使用者名稱至少4位, 不可含特殊字符.
currentEmail=當前郵箱為: <code>%s</code>
updateEmail=修改郵箱
updateEmailTips=郵箱修改後, 驗證之後才有效, 驗證之後新的郵箱地址將會作為登入帳號使用.
sendVerifiedEmail=傳送驗證郵箱
sendSuccess=傳送成功
sendFailed=傳送失敗
verified=已驗證
unVerified=未驗證
verifiedNow=現在去驗證
resendVerifiedEmail=重新傳送驗證郵件
# 分享
defaultShare=預設分享
addShare=新增分享
friendEmail=好友郵箱
permission=權限
readOnly=只讀
writable=可寫
inputFriendEmail=請輸入好友郵箱
clickToChangePermission=點擊改變權限
sendInviteEmailToYourFriend=傳送邀請email給Ta
copySuccess=複製成功
copyFailed=對不起, 複製失敗, 請自行複製
friendNotExits=該用戶還沒有註冊%s, 複製邀請連結傳送給Ta, 邀請連結: %s
emailBodyRequired=郵件內容不能為空
clickToCopy=點擊複製
sendSuccess=傳送成功
inviteEmailBody=Hi, 你好, 我是%s, %s非常好用, 快來註冊吧!
<span></span> notes selected=當前選中了 <span></span> 篇筆記
# 歷史記錄
historiesNum=leanote會儲存筆記的最近<b>10</b>份歷史記錄
noHistories=無歷史記錄
datetime=日期
restoreFromThisVersion=從該版本還原
confirmBackup=確定要從該版還原? 還原前leanote會備份當前版本到歷史記錄中.
createAccount=建立帳號
createAccountSuccess=帳號建立成功
createAccountFailed=帳號建立失敗
thirdCreateAcountTips=您現在使用的是第三方帳號登入%(app)s, 您也可以註冊%(app)s帳號登入, 趕緊註冊一個吧. <br />註冊成功後仍可以使用第三方帳號登入leanote並管理您現有的筆記.
## valid msg
cannotUpdateDemo=抱歉, Demo用戶不允許修改
inputUsername=請輸入使用者名稱
updateUsernameSuccess=使用者名稱修改成功
usernameIsExisted=使用者名稱已存在
noSpecialChars=不能包含特殊字符
minLength=長度至少為%s
errorEmail=請輸入正確的email
verifiedEmaiHasSent=驗證郵件已傳送, 請及時查閱郵件並驗證.
emailSendFailed=郵件傳送失敗
inputPassword=請輸入密碼
inputNewPassword=請輸入新密碼
inputPassword2=請輸入確認密碼
errorPassword=請輸入長度不少於6位的密碼, 盡量復雜
oldPasswordError=舊密碼錯誤
confirmPassword=兩次密碼輸入不正確
updatePasswordSuccess=修改密碼成功
errorDomain=請輸入正確的網域名稱, 如www.myblog.com
domainExisted=網域名稱已存在
errorSubDomain=請輸入正確的博客子網域名稱, 長度至少為4, 不能包含特殊字符
subDomainExisted=博客子網域名稱已存在
domainNotPointToLeanote=該網域名稱還未指向 d.leanote.com, 請稍後再試
errorPerPageSize=每頁記錄數至少為1
errorSortField=排序類型錯誤
themeValidHasRoundInclude=警告: 模板存在循環引用問題!
#share
tokenExpired = 會話已過期
Share=分享
hasSharedThisNote=分享了筆記
inputSharePwd=您需要輸入分享密碼才能查看
shareToGroup=分享給項目組
shareByPwd=通過密碼分享
groupName=分組名
operation=操作
groupAndMemberManage=項目組/成員管理
shareToGroupTips=將筆記/記事本分享給項目組後, 該組下的用戶便擁有了該筆記/記事本
shared=已分享
notShared=未分享
shareLink=分享連結
sharePwd=查看密碼
cancelShare=取消分享
getShareLinkAndPwd=生成該筆記的分享連結和密碼
#############
# 通用
#############
created=建立
updated=更新
modify=修改
Search=搜尋
Save Success=儲存成功
Please save note firstly!=請先儲存筆記!
Please sign in firstly!=你還沒有登入, 請先登入!
# 必須要加這個, 奇怪
[CN]
+186
View File
@@ -0,0 +1,186 @@
Cut=剪切
Header 2=標題2
Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.=你的瀏覽器不支持對剪貼簿的訪問,請使用Ctrl+X\/C\/V鍵進行複製貼上。
Div=Div區塊
Paste=貼上
Close=關閉
Font Family=字體
Pre=預格式文本
Align right=靠右對齊
New document=新文件
Blockquote=引用
Numbered list=編號列表
Increase indent=增加縮進
Formats=格式
Headers=標題
Select all=全選
Header 3=標題3
Blocks=區塊
Undo=撤消
Strikethrough=刪除線
Bullet list=項目符號
Header 1=標題1
Superscript=上標
Clear formatting=清除格式
Font Sizes=字體大小
Subscript=下標
Header 6=標題6
Redo=重作
Paragraph=段落
Ok=確定
Bold=粗體
Code=代碼
Italic=斜體
Align center=置中
Header 5=標題5
Decrease indent=減少縮進
Header 4=標題4
Convert Code=轉換成文本
toggleCode=ctrl+shift+c 切換代碼
Language=代碼語言
`ctrl/cmd+shift+c` toggle code=`ctrl/cmd+shift+c` 切換代碼
Toggle ace with raw html=Ace代碼與普通Pre代碼切換
Inline Code=<code>
Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.=當前為純文本貼上模式,再次點擊可以回到普通貼上模式。
Underline=下劃線
Cancel=取消
Justify=分散段期
Inline=文本
Copy=複製
Align left=靠左對齊
Visual aids=網格線
Lower Greek=小寫希臘字母
Square=方塊
Default=預設
Lower Alpha=小寫英文字母
Circle=空心圓
Disc=實心圓
Upper Alpha=大寫英文字母
Upper Roman=大寫羅馬字母
Lower Roman=小寫羅馬字母
Name=名稱
Anchor=錨點
You have unsaved changes are you sure you want to navigate away?=你還有檔案尚未保存,確定要離開?
Restore last draft=恢復上次的草稿
Special character=特殊符號
Source code=原始碼
Right to left=從右到左
Left to right=從左到右
Emoticons=表情
Robots=機器人
Document properties=文件屬性
Title=標題
Keywords=關鍵詞
Encoding=編碼
Description=描述
Author=作者
Fullscreen=全螢幕
Horizontal line=水平分割線
Horizontal space=水平邊距
Insert\/edit image=上傳/插入圖片
Insert\/edit mind map=新建/編輯心智圖
Insert Mind Map=插入心智圖
Mind Map=心智圖
Image=圖片
Insert Image=插入
General=普通
Advanced=進階
Source=地址
Border=邊框
Constrain proportions=保持長寬比
Vertical space=垂直邊距
Image description=圖片描述
Style=樣式
Dimensions=大小
Insert image=插入圖片
Insert date\/time=插入日期\/時間
Remove link=刪除連結
Url=地址
Text to display=顯示文字
Anchors=錨點
Insert link=插入連結
New window=在新窗口打開
None=無
Target=打開方式
Insert\/edit link=插入\/編輯連結
Insert\/edit video=插入\/編輯視頻
Poster=封面
Alternative source=鏡像
Paste your embed code below:=將內嵌代碼貼上在下面:
Insert video=插入視頻
Embed=內嵌
Nonbreaking space=不間斷空格
Page break=分頁符號
Paste as text=未格式化文字
Preview=預覽
Print=列印
Save=儲存
Could not find the specified string.=沒有找到搜索內容.
Replace=取代
Next=下一個
Whole words=全文匹配
Find and replace=尋找和取代
Replace with=取代為
Find=尋找
Replace all=全部取代
Match case=區分大小寫
Prev=上一個
Spellcheck=拼寫檢查
Finish=完成
Ignore all=全部忽略
Ignore=忽略
Insert row before=在上方插入
Rows=行
Height=高
Paste row after=貼上到下方
Alignment=對齊方式
Column group=列組
Row=行
Insert column before=在左側插入
Split cell=拆分單元格
Cell padding=單元格內邊距
Cell spacing=單元格外間距
Row type=行類型
Insert table=插入表格
Body=表體
Caption=標題
Footer=表尾
Delete row=刪除行
Paste row before=貼上到上方
Scope=範圍
Delete table=刪除表格
Header cell=表頭單元格
Column=列
Cell=單元格
Header=表頭
Cell type=單元格類型
Copy row=複製行
Row properties=行屬性
Table properties=表格屬性
Row group=行組
Right=靠右對齊
Insert column after=在右側插入
Cols=列
Insert row after=在下方插入
Width=寬
Cell properties=單元格屬性
Left=左對齊
Cut row=剪切行
Delete column=刪除列
Center=居中
Merge cells=合並單元格
Insert template=插入模板
Templates=模板
Background color=背景色
Text color=文字顏色
Show blocks=顯示區塊邊框
Show invisible characters=顯示不可見字符
Words: {0}=字數:{0}
Insert=插入
File=文件
Edit=編輯
Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help=在編輯區按ALT-F9打開選單,按ALT-F10打開工具列,按ALT-0查看說明
Tools=工具
View=檢視
Table=表格
Format=格式
+56 -18
View File
@@ -1,3 +1,45 @@
@font-face {
font-family: 'leanote';
src: url('../../fonts/leanote-font3/leanote.eot?-vcf23i');
src: url('../../fonts/leanote-font3/leanote.eot?#iefix-vcf23i') format('embedded-opentype'), url('../../fonts/leanote-font3/leanote.ttf?-vcf23i') format('truetype'), url('../../fonts/leanote-font3/leanote.woff?-vcf23i') format('woff'), url('../../fonts/leanote-font3/leanote.svg?-vcf23i#leanote') format('svg');
font-weight: normal;
font-style: normal;
}
#logo,
.mce-i-mind,
.mce-i-ace-pre,
.lea-icon {
font-family: 'leanote' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-markdown:before {
content: "\e604";
}
.mce-i-mind:before {
content: "\e602";
}
.mce-i-ace-pre:before {
content: "\e603";
}
#logo:before {
content: "\e901";
line-height: 1;
margin-top: 5px;
display: inline-block;
vertical-align: top;
}
#logo.icon-only:before {
content: "\e902";
}
.lang-zh-cn #logo:before {
content: "\e900";
}
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
font-style: normal; font-style: normal;
@@ -22,14 +64,6 @@
font-weight: 400; font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff'); src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff');
} }
/* leanote */
@font-face {
font-family: 'leanoteregular';
src: url('../../fonts/leanote/leanote-regular-webfont.eot');
src: url('../../fonts/leanote/leanote-regular-webfont.eot?#iefix') format('embedded-opentype'), url('../../fonts/leanote/leanote-regular-webfont.woff') format('woff'), url('../../fonts/leanote/leanote-regular-webfont.ttf') format('truetype'), url('../../fonts/leanote/leanote-regular-webfont.svg#leanoteregular') format('svg');
font-weight: normal;
font-style: normal;
}
::selection { ::selection {
background: #000000; background: #000000;
color: #ffffff; color: #ffffff;
@@ -52,20 +86,24 @@ h2,
h3 { h3 {
font-family: 'Open Sans', '微软雅黑', Arial, Tahoma, sans-serif; font-family: 'Open Sans', '微软雅黑', Arial, Tahoma, sans-serif;
} }
#logo a { .navbar-brand {
font-family: "leanoteregular"; height: 45px;
font-size: 32px;
display: block;
float: left;
margin-top: -5px;
} }
#logo div { .logo-ctn {
display: block;
}
.logo-ctn #logo {
float: left;
padding-right: 3px;
}
.logo-ctn #logo:before {
line-height: 38px;
font-size: 28px;
}
.logo-ctn .logo-title {
float: left; float: left;
line-height: 50px; line-height: 50px;
} }
#logo a:before {
content: "a";
}
.animated { .animated {
-webkit-animation-fill-mode: both; -webkit-animation-fill-mode: both;
-moz-animation-fill-mode: both; -moz-animation-fill-mode: both;
+15 -23
View File
@@ -13,6 +13,8 @@
@containerWidth: 945px; @containerWidth: 945px;
@titleColor: #5AD4A0; @titleColor: #5AD4A0;
@import "../../css/theme/includes/icon.less";
// font // font
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
@@ -38,17 +40,7 @@
font-weight: 400; font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff'); src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff');
} }
/* leanote */
@font-face {
font-family: 'leanoteregular';
src: url('../../fonts/leanote/leanote-regular-webfont.eot');
src: url('../../fonts/leanote/leanote-regular-webfont.eot?#iefix') format('embedded-opentype'),
url('../../fonts/leanote/leanote-regular-webfont.woff') format('woff'),
url('../../fonts/leanote/leanote-regular-webfont.ttf') format('truetype'),
url('../../fonts/leanote/leanote-regular-webfont.svg#leanoteregular') format('svg');
font-weight: normal;
font-style: normal;
}
@selectionBg: @aBlackColor; @selectionBg: @aBlackColor;
@selectionColor: #fff; @selectionColor: #fff;
@@ -64,25 +56,25 @@ html,body {
h1, h2, h3 { h1, h2, h3 {
font-family: @fontFamily; font-family: @fontFamily;
} }
.navbar-brand {
#logo { height: 45px;
a { }
font-family: "leanoteregular"; .logo-ctn {
font-size: 32px; display: block;
display: block; #logo {
float: left; float: left;
margin-top: -5px; padding-right: 3px;
&:before {
line-height: 38px;
font-size: 28px;
}
} }
div { .logo-title {
float: left; float: left;
line-height: 50px; line-height: 50px;
} }
a:before {
content: "a";
}
} }
// //
//------------ //------------
.animated { .animated {
+1 -1
View File
@@ -4,4 +4,4 @@
* Licensed under http://www.apache.org/licenses/LICENSE-2.0 * Licensed under http://www.apache.org/licenses/LICENSE-2.0
* *
* Designed and built with all the love in the world by @mdo and @fat. * Designed and built with all the love in the world by @mdo and @fat.
*//*! normalize.css v2.1.3 | MIT License | git.io/normalize */hr,img{border:0}body,figure{margin:0}.img-thumbnail,.thumbnail{-webkit-transition:all .2s ease-in-out}.breadcrumb,.carousel-indicators,.dropdown-menu,.media-list,.nav,.pager{list-style:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}h1{margin:.67em 0}b,strong{font-weight:700}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*{color:#000!important;text-shadow:none!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}@page{margin:2cm .5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.open .dropdown-toggle.btn-danger,.open .dropdown-toggle.btn-default,.open .dropdown-toggle.btn-info,.open .dropdown-toggle.btn-success,.open .dropdown-toggle.btn-warning{background-image:none}.img-thumbnail,body{background-color:#fff}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size:62.5%;-webkit-tap-highlight-color:transparent}body{font-family:Arial,Tahoma,sans-serif,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333}button,input,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:focus,a:hover{color:#2a6496;text-decoration:underline}a:focus{outline:#333 dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;border:1px solid #ddd;border-radius:4px;transition:all .2s ease-in-out}pre code,table{background-color:transparent}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.collapsing,.dropdown,.glyphicon{position:relative}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}h1,h2,h3,h4,h5,h6{margin-bottom:10px}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-primary:hover{color:#3071a9}.text-warning{color:#c09853}.text-warning:hover{color:#a47e3c}.text-danger{color:#b94a48}.text-danger:hover{color:#953b39}.text-success{color:#468847}.text-success:hover{color:#356635}.text-info{color:#3a87ad}.text-info:hover{color:#2d6987}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:Arial,Tahoma,sans-serif,HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",Helvetica,"Microsoft Yahei",Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4Line truncated *//*! normalize.css v2.1.3 | MIT License | git.io/normalize */hr,img{border:0}body,figure{margin:0}.img-thumbnail,.thumbnail{-webkit-transition:all .2s ease-in-out}.breadcrumb,.carousel-indicators,.dropdown-menu,.m-todo-item,.media-list,.nav,.pager{list-style:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}h1{margin:.67em 0}b,strong{font-weight:700}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*{color:#000!important;text-shadow:none!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}@page{margin:2cm .5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.open .dropdown-toggle.btn-danger,.open .dropdown-toggle.btn-default,.open .dropdown-toggle.btn-info,.open .dropdown-toggle.btn-success,.open .dropdown-toggle.btn-warning{background-image:none}.img-thumbnail,body{background-color:#fff}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size:62.5%;-webkit-tap-highlight-color:transparent}body{font-family:Arial,Tahoma,sans-serif,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333}button,input,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:focus,a:hover{color:#2a6496;text-decoration:underline}a:focus{outline:#333 dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;border:1px solid #ddd;border-radius:4px;transition:all .2s ease-in-out}pre code,table{background-color:transparent}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.collapsing,.dropdown,.glyphicon{position:relative}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}h1,h2,h3,h4,h5,h6{margin-bottom:10px}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-primary:hover{color:#3071a9}.text-warning{color:#c09853}.text-warning:hover{color:#a47e3c}.text-danger{color:#b94a48}.text-danger:hover{color:#953b39}.text-success{color:#468847}.text-success:hover{color:#356635}.text-info{color:#3a87ad}.text-info:hover{color:#2d6987}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:Arial,Tahoma,sans-serif,HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",Helvetica,"Microsoft Yahei",Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,Line truncated
+3
View File
@@ -7141,3 +7141,6 @@ td.visible-print {
#content .MathJax * { #content .MathJax * {
font-size: inherit; font-size: inherit;
} }
.m-todo-item {
list-style: none;
}
-325
View File
@@ -1,325 +0,0 @@
.entry-controls {
text-align: right;
padding-top: 20px;
margin-top: 20px;
margin-bottom: 10px;
border-top: 1px solid #f1f2f3;
}
.entry-controls .right-section {
float: right;
color: #9d9e9f;
}
.entry-controls .right-section a {
color: #9d9e9f;
}
.post-menu-button {
padding-bottom: 10px;
}
.ui-menu-button {
position: relative;
display: inline-block;
cursor: pointer;
}
.entry-controls .control-item {
margin-left: 15px;
color: #9d9e9f;
font-size: 15px;
opacity: 1;
-webkit-transition: all 0.05s ease-in-out;
-moz-transition: all 0.05s ease-in-out;
-o-transition: all 0.05s ease-in-out;
transition: all 0.05s ease-in-out;
}
.vote-section-wrapper {
display: inline-block;
float: left;
}
.entry-controls .voters {
display: block;
margin-top: 52px;
height: 25px;
clear: both;
}
.entry-controls .voters .more-voters,
.entry-controls .voters .voter {
width: 25px;
height: 25px;
position: relative;
margin: 0 8px 8px 0;
float: left;
}
.entry-controls .voters .voter > img {
float: left;
}
.avatar-small {
width: 25px;
height: 25px;
border-radius: 50%;
}
.comment-box {
margin: 0;
padding: 0;
font-size: 16px;
}
.comment-box a {
font-size: 16px;
}
.comment-box .box-header {
border-top: 1px solid #f1f2f3;
font-size: 15px;
color: #9d9e9f;
padding: 30px 0 10px;
position: relative;
}
.comment-box .box-header .icon {
margin-right: 8px;
vertical-align: -3px;
}
.comment-box .box-header a.comment-options {
margin-left: 10px;
}
@media screen and (max-width: 600px) {
.comment-box .box-header {
padding-left: 17px;
padding-right: 17px;
}
}
.comment-box .load-more {
height: 26px;
margin-top: 15px;
padding-top: 24px;
text-align: center;
font-size: 15px;
border-top: solid 1px #f1f2f3;
}
.comment-box .load-more a {
color: #9d9e9f;
}
.comment-box .ui-spinner {
margin: 0 auto;
}
.comment-box .ui-spinner.small {
position: relative;
left: 10px;
}
.comment-box.empty.cannot-comment {
border: 1px solid #dddddd;
}
.comment-box.cannot-comment .editable,
.comment-box.cannot-comment .editable,
.comment-box.comment-box.cannot-comment .command,
.comment-box.comment-box.cannot-comment .op-link.reply {
display: none !important;
}
.comment-box.empty.cannot-comment .comment-form {
margin: 0;
}
.comment-box.empty.cannot-comment .comment-box-ft {
background: #ffffff;
}
.comment-box.empty.cannot-comment .comment-box-ft,
.comment-box .comment-box-ft {
position: relative;
margin-top: 0;
}
.comment-box .avatar {
width: 40px;
height: 40px;
border-radius: 20px;
float: left;
}
.comment-box .message {
margin-top: 24px;
padding: 10px;
border-radius: 4px;
text-align: center;
background: #F7F8F9;
color: #9d9e9f;
}
.comment-item {
position: relative;
list-style: none;
outline: 0;
padding: 15px 0;
border-bottom: solid 1px #f1f2f3;
}
.item-highlight * {
border-radius: 5px;
font-weight: bold;
}
@media screen and (max-width: 600px) {
.comment-item {
padding-left: 17px;
padding-right: 17px;
}
}
.comment-item > .avatar-link {
float: left;
margin: 4px 0 0;
}
.comment-item > .comment-body {
margin: 0 0 0 60px;
}
.comment-item .comment-content {
min-height: 22px;
font-size: 15px;
word-wrap: break-word;
padding: 5px 0;
}
.comment-item .comment-hd,
.comment-item .comment-ft {
color: #9d9e9f;
}
.comment-item .comment-hd .desc,
.comment-item .comment-ft .desc {
font-size: 15px;
}
.comment-item .comment-ft {
font-size: 15px;
}
.comment-item .op-link {
color: #9d9e9f;
font-size: 15px;
margin-left: 12px;
}
.comment-item .op-link {
visibility: hidden;
}
@media screen and (max-width: 420px) {
.comment-item .op-link .icon {
display: none;
}
}
.comment-item .like-num {
float: right;
}
.comment-item .like-num.nil {
display: none;
}
.comment-item:hover .op-link {
visibility: visible;
}
.comment-form.comment-reply-form {
padding: 20px 0;
}
.comment-form .row {
margin: 0;
}
.comment-form .editable {
padding: 6px 12px;
font-size: 16px;
min-height: 18px;
line-height: 26px;
white-space: pre-wrap;
width: 100%;
color: #222;
cursor: text;
border: 1px solid #DDD;
border-radius: 4px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05) inset;
background: #e6eaed;
color: #747f8c;
}
#commentForm {
border-top: solid 1px #f1f2f3;
padding: 10px 0;
}
.comment-form .editable:focus {
outline: none;
border: 1px solid #cccccc;
}
.comment-form > .command {
display: none;
margin-top: 20px;
padding-bottom: 0;
text-align: right;
}
.comment-form > .command .save {
float: right;
}
.comment-form > .command .cancel {
color: #9d9e9f;
vertical-align: -7px;
margin-right: 10px;
}
.comment-form.expanded .command {
display: block;
}
.comment-form > .avatar + .editable {
margin-left: 60px;
}
#comments {
padding: 0;
}
#comments form {
display: none;
}
@media screen and (max-width: 600px) {
.comment-form {
padding-left: 17px;
padding-right: 17px;
}
}
.btn-zan {
border-radius: 50px;
}
.btn-weibo {
border-radius: 50px;
color: #d44137;
border-color: #d44137;
}
.btn-weibo:hover {
color: #fff;
background: #d44137;
}
.btn-weixin {
color: #38ad5a;
border-color: #38ad5a;
border-radius: 50px;
}
.btn-weixin:hover {
color: #fff;
background: #38ad5a;
}
.reply-comment-btn {
width: 100px;
}
.avatar-wrap {
float: left;
}
.editor-wrap {
margin-left: 60px;
}
#weixinQRCode {
text-align: center;
}
.report-form ul {
margin: 0;
padding: 0;
}
.report-form .options > li {
list-style: none;
display: block;
line-height: 2;
color: #666768;
}
.report-form .options input {
margin-right: 10px;
vertical-align: 1px;
}
.footnote {
color: red;
}
#moreComments {
padding: 20px 0;
text-align: center;
}
.needLogin {
padding: 20px 0;
text-align: center;
font-size: 18px;
border-top: 1px solid #f1f2f3;
}
.needLogin a {
font-size: 18px;
}
-15
View File
@@ -1,15 +0,0 @@
html {
border: none;
}
body {
background-color: #fbfcf7;
}
* {
font-size: 16px;
}
pre {
font-size: 14px;
}
img {
max-width: 100% !important;
}
-27
View File
@@ -1,27 +0,0 @@
html {
margin-top: 3px;
padding: 3px;
border: 1px solid #ebeff2;
border-radius: 5px;
-webkit-border-radius: 5px;
border-width: 1px;
box-shadow: none;
}
* {
font-family: Helvetica, Tahoma, Arial, Hiragino Sans GB, "Microsoft YaHei", "微软雅黑", "Micro Hei", SimSun, "宋体", Heiti, "黑体", sans-serif;
}
.mce-item-table,
.mce-item-table td,
.mce-item-table th,
.mce-item-table caption {
border: 1px solid #9B9898;
border-collapse: collapse;
}
img {
max-width: 100% !important;
}
@media screen and (max-width: 500px) {
* {
font-size: 16px;
}
}
+52 -7
View File
@@ -1,3 +1,45 @@
@font-face {
font-family: 'leanote';
src: url('../../fonts/leanote-font3/leanote.eot?-vcf23i');
src: url('../../fonts/leanote-font3/leanote.eot?#iefix-vcf23i') format('embedded-opentype'), url('../../fonts/leanote-font3/leanote.ttf?-vcf23i') format('truetype'), url('../../fonts/leanote-font3/leanote.woff?-vcf23i') format('woff'), url('../../fonts/leanote-font3/leanote.svg?-vcf23i#leanote') format('svg');
font-weight: normal;
font-style: normal;
}
#logo,
.mce-i-mind,
.mce-i-ace-pre,
.lea-icon {
font-family: 'leanote' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-markdown:before {
content: "\e604";
}
.mce-i-mind:before {
content: "\e602";
}
.mce-i-ace-pre:before {
content: "\e603";
}
#logo:before {
content: "\e901";
line-height: 1;
margin-top: 5px;
display: inline-block;
vertical-align: top;
}
#logo.icon-only:before {
content: "\e902";
}
.lang-zh-cn #logo:before {
content: "\e900";
}
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
font-style: normal; font-style: normal;
@@ -22,6 +64,11 @@
font-weight: 400; font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff'); src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff');
} }
#logo {
font-size: 32px;
color: #000;
padding-top: 8px;
}
/*"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Verdana, Simsun, "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", "BBAlpha Sans", "S60 Sans", Arial, sans-serif;*/ /*"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Verdana, Simsun, "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", "BBAlpha Sans", "S60 Sans", Arial, sans-serif;*/
::selection { ::selection {
background: #000000; background: #000000;
@@ -60,14 +107,13 @@ a:hover {
margin: 0; margin: 0;
} }
#headerContainer .navbar-brand { #headerContainer .navbar-brand {
padding: 0;
padding-left: 10px; padding-left: 10px;
line-height: 60px;
} }
#headerContainer .navbar-brand img { #headerContainer .navbar-brand img {
height: 50px; height: 50px;
display: inline-block; display: inline-block;
margin-top: -5px; margin-top: -5px;
padding: 8px;
} }
#headerContainer .navbar-nav a { #headerContainer .navbar-nav a {
line-height: 60px; line-height: 60px;
@@ -687,14 +733,13 @@ input,
opacity: 0; opacity: 0;
} }
.footer-leanote { .footer-leanote {
margin-top: 20px; margin-top: 20px;
color: #475F77; color: #475F77;
text-align: center; text-align: center;
} }
#footer .footer-leanote a { #footer .footer-leanote a {
color: #475F77; color: #475F77;
} }
/* news */ /* news */
.index-news a:hover { .index-news a:hover {
text-decoration: underline !important; text-decoration: underline !important;
+10 -2
View File
@@ -13,6 +13,8 @@
@containerWidth: 945px; @containerWidth: 945px;
@titleColor: #5AD4A0; @titleColor: #5AD4A0;
@import "./theme/includes/icon.less";
// font // font
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
@@ -39,6 +41,12 @@
src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff'); src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff');
} }
#logo {
font-size: 32px;
color: #000;
padding-top: 8px;
}
/*"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Verdana, Simsun, "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", "BBAlpha Sans", "S60 Sans", Arial, sans-serif;*/ /*"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Verdana, Simsun, "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", "BBAlpha Sans", "S60 Sans", Arial, sans-serif;*/
@selectionBg: @aBlackColor; @selectionBg: @aBlackColor;
@selectionColor: #fff; @selectionColor: #fff;
@@ -74,13 +82,13 @@ a:hover {
box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.1); box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.1);
margin: 0; margin: 0;
.navbar-brand { .navbar-brand {
padding: 0;
padding-left: 10px; padding-left: 10px;
line-height: @headerHeight; // line-height: @headerHeight;
img { img {
height: 50px; height: 50px;
display: inline-block; display: inline-block;
margin-top: -5px; margin-top: -5px;
padding: 8px;
} }
} }
.navbar-nav a { .navbar-nav a {
+4 -38
View File
@@ -2,6 +2,7 @@
@import "includes/animation.less"; @import "includes/animation.less";
@import "includes/common.less"; @import "includes/common.less";
@import "includes/icon.less";
@import "includes/header.less"; @import "includes/header.less";
@import "includes/page.less"; @import "includes/page.less";
@@ -21,43 +22,6 @@
@import "includes/tag.less"; @import "includes/tag.less";
@import "includes/batch.less"; @import "includes/batch.less";
#logo,
#switcher span,
.mce-i-mind,
.mce-i-ace-pre,
.lea-icon
{
font-family: 'leanote' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-markdown:before {
content: "\e604";
}
.mce-i-mind:before {
content: "\e602";
}
.mce-i-ace-pre:before {
content: "\e603";
}
#logo:before {
content: "\e600";
line-height: 1;
margin-top: 5px;
display: inline-block;
vertical-align: top;
}
#switcher span:before {
content: "\e601";
}
*,.h1, *,.h1,
.h2, .h2,
.h3, .h3,
@@ -103,7 +67,9 @@ h1, h2, h3 {
@fontFamily: 'Open Sans', Helvetica, Tahoma, Arial, Hiragino Sans GB, "Microsoft YaHei", "微软雅黑", "Micro Hei", SimSun, "宋体", Heiti, "黑体", sans-serif; @fontFamily: 'Open Sans', Helvetica, Tahoma, Arial, Hiragino Sans GB, "Microsoft YaHei", "微软雅黑", "Micro Hei", SimSun, "宋体", Heiti, "黑体", sans-serif;
// @fontFamily: Helvetica, Tahoma, Arial, Hiragino Sans GB, "Microsoft YaHei", "微软雅黑", "Micro Hei", SimSun, "宋体", Heiti, "黑体", sans-serif; // @fontFamily: Helvetica, Tahoma, Arial, Hiragino Sans GB, "Microsoft YaHei", "微软雅黑", "Micro Hei", SimSun, "宋体", Heiti, "黑体", sans-serif;
@aceFontFamily: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', Hiragino Sans GB, "Microsoft YaHei", "微软雅黑"; @aceFontFamily: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', Hiragino Sans GB, "Microsoft YaHei", "微软雅黑", monospace, sans-serif;
// @fontFamily: PingFang SC,Hiragino Sans GB,Helvetica Neue,Microsoft Yahei,WenQuanYi Micro Hei,sans-serif;
@aceFontFamily: Menlo, 'Ubuntu Mono', Consolas, 'Courier New', 'Microsoft Yahei', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif;
// header // header
@headerTextColor: #fff; @headerTextColor: #fff;
+1 -1
View File
@@ -1 +1 @@
::selection{background:#000;color:#fff}::-moz-selection{background:#000;color:#fff}::-webkit-selection{background:#000;color:#fff}@-webkit-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-moz-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-ms-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-webkit-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-moz-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-ms-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-ms-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@font-face{font-family:leanote;src:url(../../fonts/leanote-font2/leanote.eot?-vcf23i);src:url(../../fonts/leanote-font2/leanote.eot?#iefix-vcf23i) format('embedded-opentype'),url(../../fonts/leanote-font2/leanote.ttf?-vcf23i) format('truetype'),url(../../fonts/leanote-font2/leanote.woff?-vcf23i) format('woff'),url(../../fonts/leanote-font2/leanote.svg?-vcf23i#leanote) format('svg');font-weight:400;font-style:normal}.close:focus{outline:0}.invisible{visibility:hidden}.btn{border-radius:2px}.alert{margin-bottom:10px}.btn *{cursor:pointer!important}.dropdown-submenu{position:relative}.dropdown-submenu>ul.dropdown-menu{top:0;left:100%;margin-left:-3px!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding-top:10px!important}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu:after{display:block;content:" ";position:absolute;right:0;top:10px;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#666}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{visibility:visible;-webkit-animation:pulldown .2s;animation:pulldown .2s}.dropdown-menu{visibility:hidden;display:block}.dropdown-list{width:530px;border-radius:3px}.dropdown-list ul{margin:0;padding:0}.dropdown-list ul li{float:left;width:120px;margin-left:10px;margin-bottom:10px;border:1px dashed #ccc}.dropdown-menu .divider{margin:3px 0}.dropdown-menu{border-radius:3px;margin:0;border:1px solid #e6eaed;box-shadow:rgba(0,0,0,.172549)0 6px 12px 0}.dropdown-menu:before{content:"";width:20px;height:12px;position:absolute;top:-12px;right:8px;background-image:url(../../images/triangle_2x.png);background-size:20px 12px}.dropdown-submenu .dropdown-menu:before{background:0 0}#searchNotebookForAddDropdownList,#searchNotebookForAddShareDropdownList{left:-200px}#searchNotebookForAddDropdownList:before,#searchNotebookForAddShareDropdownList:before{left:190px;right:inherit}.dropdown-menu li{list-style:none;padding-left:10px;width:100%;height:30px;line-height:30px}.dropdown-menu li>a{color:#000;display:block;padding-right:20px}.dropdown-menu>li>a{padding:3px 20px 3px 0}.noteSplit{position:absolute;top:0;width:5px;height:100%;overflow:hidden;z-index:3333;cursor:col-resize}a.raw{color:#428bca}a.raw:hover{color:#2a6496}.cm-item{position:relative}.cm-item .cm-text{position:absolute;left:23px;right:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cm-item .cm-text .c-text{display:initial}.b-m-mpanel{border-radius:3px}.modal-content{background-color:#f8f8f8}.modal-body{background-color:#fff;padding-bottom:30px}.modal-footer{margin-top:0}#listNotebookDropdownMenu{display:none}#themeForm td{padding:5px;text-aliLine truncated ::selection{background:#000;color:#fff}::-moz-selection{background:#000;color:#fff}::-webkit-selection{background:#000;color:#fff}@-webkit-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-moz-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-ms-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-webkit-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-moz-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-ms-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-ms-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(../../fonts/open-sans2/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../../fonts/open-sans2/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/open-sans2/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff) format('woff')}.close:focus{outline:0}.invisible{visibility:hidden}.mobile-show{display:none}.btn{border-radius:2px}.alert{margin-bottom:10px}.btn *{cursor:pointer!important}.dropdown-submenu{position:relative}.dropdown-submenu>ul.dropdown-menu{top:0;left:100%;margin-left:-3px!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding-top:10px!important}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu:after{display:block;content:" ";position:absolute;right:0;top:10px;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#666}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{visibility:visible;-webkit-animation:pulldown .2s;animation:pulldown .2s}.dropdown-menu{visibility:hidden;display:block}.dropdown-list{width:530px;border-radius:3px}.dropdown-list ul{margin:0;padding:0}.dropdown-list ul li{float:left;width:120px;margin-left:10px;margin-bottom:10px;border:1px dashed #ccc}.dropdown-menu .divider{margin:3px 0}.dropdown-menu{border-radius:3px;margin:0}.dropdown-menu:before{content:"";width:20px;height:12px;position:absolute;top:-12px;right:8px;background-image:url(../../images/triangle_2x.png);background-size:20px 12px}.dropdown-submenu .dropdown-menu:before{background:0 0}#searchNotebookForAddDropdownList,#searchNotebookForAddShareDropdownList{left:-200px}#searchNotebookForAddDropdownList:before,#searchNotebookForAddShareDropdownList:before{left:190px;right:inherit}.dropdown-menu li{list-style:none;padding-left:10px;width:100%;height:30px;line-height:30px}.dropdown-menu li>a{color:#000;display:block;padding-right:20px}.dropdown-menu>li>a{padding:3px 20px 3px 0}.noteSplit{position:absolute;top:0;width:5px;height:100%;overflow:hidden;z-index:3333;cursor:col-resize}a.raw{color:#428bca}a.raw:hover{color:#2a6496}.cm-item{position:relativLine truncated
+20 -31
View File
@@ -3,7 +3,7 @@
*/ */
// 字体 // 字体
/*
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
font-style: normal; font-style: normal;
@@ -28,33 +28,6 @@
font-weight: 400; font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff'); src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff');
} }
*/
/* leanote */
/*
@font-face {
font-family: 'leanoteregular';
src: url('../../fonts/leanote/leanote-regular-webfont.eot');
src: url('../../fonts/leanote/leanote-regular-webfont.eot?#iefix') format('embedded-opentype'),
url('../../fonts/leanote/leanote-regular-webfont.woff') format('woff'),
url('../../fonts/leanote/leanote-regular-webfont.ttf') format('truetype'),
url('../../fonts/leanote/leanote-regular-webfont.svg#leanoteregular') format('svg');
font-weight: normal;
font-style: normal;
}
*/
@font-face {
font-family: 'leanote';
src:url('../../fonts/leanote-font2/leanote.eot?-vcf23i');
src:url('../../fonts/leanote-font2/leanote.eot?#iefix-vcf23i') format('embedded-opentype'),
url('../../fonts/leanote-font2/leanote.ttf?-vcf23i') format('truetype'),
url('../../fonts/leanote-font2/leanote.woff?-vcf23i') format('woff'),
url('../../fonts/leanote-font2/leanote.svg?-vcf23i#leanote') format('svg');
font-weight: normal;
font-style: normal;
}
.close:focus { .close:focus {
outline: none; outline: none;
@@ -64,6 +37,9 @@
visibility: hidden; visibility: hidden;
} }
.mobile-show {
display: none;
}
.btn { .btn {
border-radius: 2px; border-radius: 2px;
@@ -78,7 +54,6 @@
} }
//----------------- //-----------------
// 下拉菜单 // 下拉菜单
.dropdown-submenu { .dropdown-submenu {
@@ -190,10 +165,10 @@
border-radius: 3px; border-radius: 3px;
margin:0; margin:0;
// border: 1px solid @hColor; // border: 1px solid @hColor;
border: 1px solid #e6eaed; // border: 1px solid #e6eaed;
/*overflow-x: hidden; */ /*overflow-x: hidden; */
/*overflow-y: scroll;*/ /*overflow-y: scroll;*/
box-shadow: rgba(0, 0, 0, 0.172549) 0px 6px 12px 0px; // box-shadow: rgba(0, 0, 0, 0.172549) 0px 6px 12px 0px;
&:before { &:before {
content: ""; content: "";
@@ -286,3 +261,17 @@ a.raw:hover {
.modal-footer { .modal-footer {
margin-top: 0; margin-top: 0;
} }
// 不让选择, 双击
#editorTool,
#newNoteWrap,
#myBlog,
.lea-blog,
#myProfile,
#toggleEditorMode,
.folderHeader
{
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
+32 -8
View File
@@ -18,9 +18,6 @@
padding: 2px; padding: 2px;
} }
#logo {
font-size: 36px;
}
#avatar { #avatar {
height: 60px; max-width: 200px; display: inline-block; margin: 10px; height: 60px; max-width: 200px; display: inline-block; margin: 10px;
@@ -157,7 +154,8 @@ a:hover {
width: 140px; width: 140px;
height: @headerHeight; height: @headerHeight;
padding-left: 10px; padding-left: 10px;
padding-top: 0px; padding-top: 9px;
font-size: 32px;
} }
#switcher { #switcher {
@@ -173,11 +171,9 @@ a:hover {
color: @hColor; color: @hColor;
} }
} }
span { #leftSwitcher2 {
border-radius: 5px;
// background-color: @switcherBgColor;
cursor: pointer; cursor: pointer;
font-size: 18px; font-size: 16px;
line-height: 34px; line-height: 34px;
margin-top: 8px; margin-top: 8px;
padding: 0 5px; padding: 0 5px;
@@ -271,3 +267,31 @@ a:hover {
vertical-align: middle; vertical-align: middle;
visibility: hidden; visibility: hidden;
} }
#inviteFriends {
position: relative;
.dot {
display: inline-block;
position: absolute;
right: -8px;
top: -8px;
width: 8px;
height: 8px;
border-radius: 50%;
background: #FF9263;
}
}
#inviteUrl {
width: 400px;
padding: 3px;
border-radius: 3px;
border: 1px solid #eee;
}
#myProfile {
margin: 0 10px;
}
.profile-img {
line-height: 60px;
}
+51
View File
@@ -0,0 +1,51 @@
@font-face {
font-family: 'leanote';
src:url('../../fonts/leanote-font3/leanote.eot?-vcf23i');
src:url('../../fonts/leanote-font3/leanote.eot?#iefix-vcf23i') format('embedded-opentype'),
url('../../fonts/leanote-font3/leanote.ttf?-vcf23i') format('truetype'),
url('../../fonts/leanote-font3/leanote.woff?-vcf23i') format('woff'),
url('../../fonts/leanote-font3/leanote.svg?-vcf23i#leanote') format('svg');
font-weight: normal;
font-style: normal;
}
#logo,
.mce-i-mind,
.mce-i-ace-pre,
.lea-icon
{
font-family: 'leanote' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-markdown:before {
content: "\e604";
}
.mce-i-mind:before {
content: "\e602";
}
.mce-i-ace-pre:before {
content: "\e603";
}
#logo:before {
content: "\e901";
line-height: 1;
margin-top: 5px;
display: inline-block;
vertical-align: top;
}
#logo.icon-only:before {
content: "\e902";
}
.lang-zh-cn {
#logo:before {
content: "\e900";
}
}
+159 -2
View File
@@ -157,12 +157,20 @@
font-style: normal; font-style: normal;
} }
textarea#wmd-input { textarea#wmd-input {
color: #000 !important; color: #000 !important;
font-family: @aceFontFamily;
} }
// 为了防止vim在linux下光标混乱的问题
.ace_editor {
font-family: @aceFontFamily;
// font-family: @aceFontFamily !important; // 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro';
}
.ace_editor * {
font-family: inherit;
}
/*
// markdown editor ace // markdown editor ace
@mdAceTextColor: #2C3E50; // #04294E; // #384654; @mdAceTextColor: #2C3E50; // #04294E; // #384654;
@mdAceHeadingColor: #000; // 1a2026 @mdAceHeadingColor: #000; // 1a2026
@@ -295,3 +303,152 @@ textarea#wmd-input {
background-color: rgb(101, 189, 119, 0.9); background-color: rgb(101, 189, 119, 0.9);
} }
} }
*/
// markdown todo list
.m-todo-item {
list-style: none;
}
// markdown editor ace
@mdAceTextColor: #333333; // #04294E; // #384654;
@mdAceHeadingColor: #1d3e81; // 1a2026
@mdAceBlockquoteColor: #003873;
@mdAceCursorColor: #243342;
@mdAceTextColor: #000;
@mdAceTagColor: #1d3e81; // rgba(87, 108, 130, 0.6);
textarea#wmd-input {
color: #000 !important;
}
#wmd-input {
.ace_cjk {
color: inherit;
}
.ace_searchbtn_close {
margin: 0px;
}
.ace_content {
padding-top: 5px;
}
&.ace_editor {
color: @mdAceTextColor;
}
&.ace-tm {
background-color: #ffffff;
}
&.ace-tm .ace_text-input {
box-sizing: initial;
}
&.ace-tm .ace_marker-layer .ace_active-line {
background-color: rgba(89, 128, 166, 0.05);
}
&.ace-tm .ace_cursor {
color: @mdAceCursorColor;
}
// 左侧的线
&.ace-tm .ace_print-margin {
background: none;
// background-color: rgba(89, 128, 166, 0.05);
}
&.ace-tm .ace_markup.ace_heading {
color: @mdAceTextColor;
font-weight: bold;
&.ace_1,&.ace_2,&.ace_3,&.ace_4,&.ace_5 {
color: @mdAceTagColor;
}
}
&.ace-tm .ace_markup.ace_list {
color: @mdAceTextColor;
}
&.ace-tm .ace_constant.ace_language {
color: @mdAceTagColor;
font-weight: normal;
}
&.ace-tm .ace_meta.ace_tag {
color: #384654;
font-style: italic;
font-weight: bold;
// background-color: rgba(0, 0, 0, 0.04);
}
&.ace-tm .ace_keyword.ace_operator {
color: #384654;
background-color: transparent;
}
&.ace-tm .ace_storage,
&.ace-tm .ace_keyword {
color: #384654;
// background-color: rgba(0, 0, 0, 0.04);
font-weight: bold;
}
&.ace-tm .ace_entity.ace_name.ace_function {
color: #1a2026;
font-weight: bold;
}
&.ace-tm .ace_string {
color: #384654;
font-style: italic;
// background-color: rgba(0, 0, 0, 0.04);
}
&.ace-tm .ace_invalid {
color: inherit;
background: inherit;
}
&.ace-tm .ace_strong {
color: @mdAceTextColor;
font-weight: bold;
}
&.ace-tm .ace_emphasis {
color: @mdAceTextColor;
font-style: italic;
}
&.ace-tm .ace_blockquote {
color: @mdAceTextColor;
}
&.ace-tm .ace_code {
color: #1a2026;
// background-color: rgba(0, 0, 0, 0.04);
}
&.ace-tm .ace_code_block {
color: #1a2026;
}
&.ace-tm .ace_link {
color: @mdAceTextColor;
background-color: transparent;
text-decoration: underline;
}
.ace_underline {
color: @mdAceHeadingColor;
text-decoration: none;
}
&.ace-tm .ace_description {
color: #576c82;
}
&.ace-tm .ace_constant {
color: #384654;
}
&.ace-tm .ace_comment {
color: rgba(87, 108, 130, 0.6);
font-style: italic;
}
&.ace-tm .ace_marker-layer .misspelled {
position: absolute;
z-index: -2;
border-bottom: 1px dotted red;
margin-bottom: -1px;
}
// vim cursor
&.normal-mode .ace_cursor {
// background-color: #003A92;
}
// emacs cursor
&.emacs-mode .ace_cursor {
border: 2px rgba(101, 189, 119, 0.8) solid !important;
background-color: rgb(101, 189, 119, 0.9);
}
}
+14
View File
@@ -100,3 +100,17 @@
color: #666; color: #666;
margin-top: 8px; margin-top: 8px;
} }
// read-only-editor
.read-only-editor #editBtn span {
&:before {
content: "\f044";
}
}
// eye
#editBtn span {
&:before {
content: "\f06e";
}
}
+1
View File
@@ -41,6 +41,7 @@
padding: 8px; padding: 8px;
line-height: 20px; line-height: 20px;
vertical-align: top; vertical-align: top;
word-break: break-all;
} }
td { td {
max-width: 280px; max-width: 280px;
+157 -23
View File
@@ -20,24 +20,35 @@
#notebookMin, #notebookMin,
.ui-loader, .ui-loader,
#md-section-helper, #md-section-helper,
.writing-mobile-hide .writing-mobile-hide,
.tips-ctn,
#wmd-undo-button,
#wmd-redo-button,
#wmd-hr-button,
#wmd-help-button
{ {
display: none !important; display: none !important;
} }
*, *,
.ztree li a.level0 span, .ztree li a.level0 span,
.ztree li a.level1 span, .ztree li a.level1 span,
.label
{ {
font-size: 16px; font-size: 16px;
} }
.label i { .label i {
opacity: 1; opacity: 1;
width: 20px; width: 12px;
&:hover, &:focus { &:hover, &:focus {
color: @green !important; color: @green !important;
} }
} }
#leftSwitcher:before {
content: "\f039";
}
a:focus, a:hover, a:active { a:focus, a:hover, a:active {
color: @green !important; color: @green !important;
} }
@@ -89,6 +100,7 @@ a:focus, a:hover, a:active {
visibility: hidden !important; visibility: hidden !important;
} }
left: 0 !important; left: 0 !important;
padding-left: 0;
} }
#note.editor-show { #note.editor-show {
visibility: visible; visibility: visible;
@@ -147,7 +159,7 @@ a:focus, a:hover, a:active {
} }
#tag { #tag {
position: absolute; position: absolute;
right: 140px; right: 124px;
left:0; left:0;
top:0; top:0;
bottom:0; bottom:0;
@@ -186,8 +198,9 @@ a:focus, a:hover, a:active {
#left-column { #left-column {
width: 100% !important; width: 100% !important;
} }
#mdEditor #wmd-input {
font-size: 16px; #mdEditor #wmd-input * {
font-size: 14px;
} }
.new-markdown-text-abbr, .new-note-text-abbr { .new-markdown-text-abbr, .new-note-text-abbr {
@@ -266,6 +279,9 @@ a:focus, a:hover, a:active {
#editorContent .ace-tomorrow { #editorContent .ace-tomorrow {
padding: 0; padding: 0;
} }
#note, #editor, #mdEditor {
left: 0;
}
// readonly // readonly
@@ -288,10 +304,11 @@ a:focus, a:hover, a:active {
-webkit-overflow-scrolling: touch !important; -webkit-overflow-scrolling: touch !important;
} }
.preview-container { .preview-container {
left: 10px; left: 5px;
} }
} }
} }
// ipad // ipad
@@ -317,23 +334,13 @@ a:focus, a:hover, a:active {
#tag { #tag {
position: absolute; position: absolute;
right: 310px; right: 310px;
left:0; left: 0;
top:0; top:0;
bottom:0; bottom:0;
overflow: hidden; overflow: hidden;
padding-left: 5px;
#tags {
position: absolute;
left: 50px;
right: 0;
top: 0;
bottom: 0;
overflow-y: hidden;
overflow-x: scroll;
position: absolute;
line-height: 40px;
line-height: inherit !important;
}
#tagDropdown { #tagDropdown {
float: left; float: left;
width: 50px; width: 50px;
@@ -353,6 +360,18 @@ a:focus, a:hover, a:active {
} }
} }
#tags {
position: absolute;
left: 50px;
right: 0;
top: 0;
bottom: 0;
overflow-y: hidden;
overflow-x: scroll;
position: absolute;
line-height: 40px;
line-height: inherit !important;
}
} }
@media screen and (max-width: 800px) { @media screen and (max-width: 800px) {
@@ -392,7 +411,7 @@ a:focus, a:hover, a:active {
#tag { #tag {
position: absolute; position: absolute;
right: 160px; right: 124px;
left:0; left:0;
top:0; top:0;
bottom:0; bottom:0;
@@ -460,7 +479,7 @@ a:focus, a:hover, a:active {
width: 100% !important; width: 100% !important;
} }
#mdEditor #wmd-input { #mdEditor #wmd-input {
font-size: 16px; font-size: 14px;
} }
.my-link { .my-link {
@@ -482,7 +501,7 @@ a:focus, a:hover, a:active {
// 有一些toolbar不能显示 // 有一些toolbar不能显示
.wmd-button-bar-inner { .wmd-button-bar-inner {
overflow: scroll; // overflow: scroll;
height: 30px; height: 30px;
} }
@@ -501,5 +520,120 @@ a:focus, a:hover, a:active {
left: 10px; left: 10px;
} }
} }
#searchNote {
margin-top: 2px;
}
#noteTitle {
// padding: 0;
}
#tags {
.label, .label i {
font-size: 10px;
}
}
.mobile-hide {
display: none;
}
.mobile-show {
display: block;
}
#editorContent, #mdEditor {
bottom: 0 !important;
}
#mdEditor .layout-wrapper-l3, #editorContent {
margin-top: 0;
border: none;
}
// iframe插件 视频
.leanote-plugin {
@pluginHeaderHeight: 40px;
#header {
height: @pluginHeaderHeight;
}
#mainContainer {
top: @pluginHeaderHeight;
}
.profile-img {
line-height: @pluginHeaderHeight - 3;
}
#switcher i {
padding: 11px 0;
}
#searchNote {
padding-top: 1px;
}
#newNoteWrap {
line-height: 22px;
}
#leanoteMsg {
margin-top: 0;
}
*,
.ztree li a.level0 span,
.ztree li a.level1 span,
#noteItemList .item-setting, #noteItemList .item-blog {
font-size: 14px;
}
h1, h2, h3, h4, h5 {
}
.leanoteNav h1 {
font-size: 16px;
}
h1 {
font-size: 24px;
}
h2 {
font-size: 20px;
}
h3 {
font-size: 18px;
}
h4 {
font-size: 16px;
}
#noteItemList .item-setting, #noteItemList .item-blog {
width: 23px;
padding: 1px;
}
#noteItemList .item {
height: 69px;
}
#noteItemList .item-thumb {
width: 60px;
height: 60px;
margin-top: 0px;
}
#preview-contents {
padding-left: 0;
}
#msg {
font-size: 12px;
}
#noteInfo {
width: 265px;
}
#noteInfo table th {
min-width: 72px;
}
#noteInfo .post-url-wrap span {
word-break: break-all;
}
}
.extension-preview-buttons {
border: none;
}
} }
+1 -1
View File
@@ -1 +1 @@
::selection{background:#000;color:#fff}::-moz-selection{background:#000;color:#fff}::-webkit-selection{background:#000;color:#fff}@-webkit-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-moz-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-ms-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-webkit-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-moz-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-ms-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-ms-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@font-face{font-family:leanote;src:url(../../fonts/leanote-font2/leanote.eot?-vcf23i);src:url(../../fonts/leanote-font2/leanote.eot?#iefix-vcf23i) format('embedded-opentype'),url(../../fonts/leanote-font2/leanote.ttf?-vcf23i) format('truetype'),url(../../fonts/leanote-font2/leanote.woff?-vcf23i) format('woff'),url(../../fonts/leanote-font2/leanote.svg?-vcf23i#leanote) format('svg');font-weight:400;font-style:normal}.close:focus{outline:0}.invisible{visibility:hidden}.btn{border-radius:2px}.alert{margin-bottom:10px}.btn *{cursor:pointer!important}.dropdown-submenu{position:relative}.dropdown-submenu>ul.dropdown-menu{top:0;left:100%;margin-left:-3px!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding-top:10px!important}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu:after{display:block;content:" ";position:absolute;right:0;top:10px;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#666}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{visibility:visible;-webkit-animation:pulldown .2s;animation:pulldown .2s}.dropdown-menu{visibility:hidden;display:block}.dropdown-list{width:530px;border-radius:3px}.dropdown-list ul{margin:0;padding:0}.dropdown-list ul li{float:left;width:120px;margin-left:10px;margin-bottom:10px;border:1px dashed #ccc}.dropdown-menu .divider{margin:3px 0}.dropdown-menu{border-radius:3px;margin:0;border:1px solid #e6eaed;box-shadow:rgba(0,0,0,.172549)0 6px 12px 0}.dropdown-menu:before{content:"";width:20px;height:12px;position:absolute;top:-12px;right:8px;background-image:url(../../images/triangle_2x.png);background-size:20px 12px}.dropdown-submenu .dropdown-menu:before{background:0 0}#searchNotebookForAddDropdownList,#searchNotebookForAddShareDropdownList{left:-200px}#searchNotebookForAddDropdownList:before,#searchNotebookForAddShareDropdownList:before{left:190px;right:inherit}.dropdown-menu li{list-style:none;padding-left:10px;width:100%;height:30px;line-height:30px}.dropdown-menu li>a{color:#000;display:block;padding-right:20px}.dropdown-menu>li>a{padding:3px 20px 3px 0}.noteSplit{position:absolute;top:0;width:5px;height:100%;overflow:hidden;z-index:3333;cursor:col-resize}a.raw{color:#428bca}a.raw:hover{color:#2a6496}.cm-item{position:relative}.cm-item .cm-text{position:absolute;left:23px;right:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cm-item .cm-text .c-text{display:initial}.b-m-mpanel{border-radius:3px}.modal-content{background-color:#f8f8f8}.modal-body{background-color:#fff;padding-bottom:30px}.modal-footer{margin-top:0}#listNotebookDropdownMenu{display:none}#themeForm td{padding:5px;text-aliLine truncated ::selection{background:#000;color:#fff}::-moz-selection{background:#000;color:#fff}::-webkit-selection{background:#000;color:#fff}@-webkit-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-moz-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-ms-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-webkit-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-moz-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-ms-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-ms-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(../../fonts/open-sans2/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../../fonts/open-sans2/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/open-sans2/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff) format('woff')}.close:focus{outline:0}.invisible{visibility:hidden}.mobile-show{display:none}.btn{border-radius:2px}.alert{margin-bottom:10px}.btn *{cursor:pointer!important}.dropdown-submenu{position:relative}.dropdown-submenu>ul.dropdown-menu{top:0;left:100%;margin-left:-3px!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding-top:10px!important}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu:after{display:block;content:" ";position:absolute;right:0;top:10px;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#666}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{visibility:visible;-webkit-animation:pulldown .2s;animation:pulldown .2s}.dropdown-menu{visibility:hidden;display:block}.dropdown-list{width:530px;border-radius:3px}.dropdown-list ul{margin:0;padding:0}.dropdown-list ul li{float:left;width:120px;margin-left:10px;margin-bottom:10px;border:1px dashed #ccc}.dropdown-menu .divider{margin:3px 0}.dropdown-menu{border-radius:3px;margin:0}.dropdown-menu:before{content:"";width:20px;height:12px;position:absolute;top:-12px;right:8px;background-image:url(../../images/triangle_2x.png);background-size:20px 12px}.dropdown-submenu .dropdown-menu:before{background:0 0}#searchNotebookForAddDropdownList,#searchNotebookForAddShareDropdownList{left:-200px}#searchNotebookForAddDropdownList:before,#searchNotebookForAddShareDropdownList:before{left:190px;right:inherit}.dropdown-menu li{list-style:none;padding-left:10px;width:100%;height:30px;line-height:30px}.dropdown-menu li>a{color:#000;display:block;padding-right:20px}.dropdown-menu>li>a{padding:3px 20px 3px 0}.noteSplit{position:absolute;top:0;width:5px;height:100%;overflow:hidden;z-index:3333;cursor:col-resize}a.raw{color:#428bca}a.raw:hover{color:#2a6496}.cm-item{position:relativLine truncated
+1 -1
View File
@@ -1 +1 @@
::selection{background:#000;color:#fff}::-moz-selection{background:#000;color:#fff}::-webkit-selection{background:#000;color:#fff}@-webkit-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-moz-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-ms-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-webkit-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-moz-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-ms-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-ms-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@font-face{font-family:leanote;src:url(../../fonts/leanote-font2/leanote.eot?-vcf23i);src:url(../../fonts/leanote-font2/leanote.eot?#iefix-vcf23i) format('embedded-opentype'),url(../../fonts/leanote-font2/leanote.ttf?-vcf23i) format('truetype'),url(../../fonts/leanote-font2/leanote.woff?-vcf23i) format('woff'),url(../../fonts/leanote-font2/leanote.svg?-vcf23i#leanote) format('svg');font-weight:400;font-style:normal}.close:focus{outline:0}.invisible{visibility:hidden}.btn{border-radius:2px}.alert{margin-bottom:10px}.btn *{cursor:pointer!important}.dropdown-submenu{position:relative}.dropdown-submenu>ul.dropdown-menu{top:0;left:100%;margin-left:-3px!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding-top:10px!important}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu:after{display:block;content:" ";position:absolute;right:0;top:10px;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#666}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{visibility:visible;-webkit-animation:pulldown .2s;animation:pulldown .2s}.dropdown-menu{visibility:hidden;display:block}.dropdown-list{width:530px;border-radius:3px}.dropdown-list ul{margin:0;padding:0}.dropdown-list ul li{float:left;width:120px;margin-left:10px;margin-bottom:10px;border:1px dashed #ccc}.dropdown-menu .divider{margin:3px 0}.dropdown-menu{border-radius:3px;margin:0;border:1px solid #e6eaed;box-shadow:rgba(0,0,0,.172549)0 6px 12px 0}.dropdown-menu:before{content:"";width:20px;height:12px;position:absolute;top:-12px;right:8px;background-image:url(../../images/triangle_2x.png);background-size:20px 12px}.dropdown-submenu .dropdown-menu:before{background:0 0}#searchNotebookForAddDropdownList,#searchNotebookForAddShareDropdownList{left:-200px}#searchNotebookForAddDropdownList:before,#searchNotebookForAddShareDropdownList:before{left:190px;right:inherit}.dropdown-menu li{list-style:none;padding-left:10px;width:100%;height:30px;line-height:30px}.dropdown-menu li>a{color:#000;display:block;padding-right:20px}.dropdown-menu>li>a{padding:3px 20px 3px 0}.noteSplit{position:absolute;top:0;width:5px;height:100%;overflow:hidden;z-index:3333;cursor:col-resize}a.raw{color:#428bca}a.raw:hover{color:#2a6496}.cm-item{position:relative}.cm-item .cm-text{position:absolute;left:23px;right:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cm-item .cm-text .c-text{display:initial}.b-m-mpanel{border-radius:3px}.modal-content{background-color:#f8f8f8}.modal-body{background-color:#fff;padding-bottom:30px}.modal-footer{margin-top:0}#listNotebookDropdownMenu{display:none}#themeForm td{padding:5px;text-aliLine truncated ::selection{background:#000;color:#fff}::-moz-selection{background:#000;color:#fff}::-webkit-selection{background:#000;color:#fff}@-webkit-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-moz-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-ms-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-webkit-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-moz-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-ms-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-ms-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(../../fonts/open-sans2/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../../fonts/open-sans2/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/open-sans2/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff) format('woff')}.close:focus{outline:0}.invisible{visibility:hidden}.mobile-show{display:none}.btn{border-radius:2px}.alert{margin-bottom:10px}.btn *{cursor:pointer!important}.dropdown-submenu{position:relative}.dropdown-submenu>ul.dropdown-menu{top:0;left:100%;margin-left:-3px!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding-top:10px!important}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu:after{display:block;content:" ";position:absolute;right:0;top:10px;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#666}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{visibility:visible;-webkit-animation:pulldown .2s;animation:pulldown .2s}.dropdown-menu{visibility:hidden;display:block}.dropdown-list{width:530px;border-radius:3px}.dropdown-list ul{margin:0;padding:0}.dropdown-list ul li{float:left;width:120px;margin-left:10px;margin-bottom:10px;border:1px dashed #ccc}.dropdown-menu .divider{margin:3px 0}.dropdown-menu{border-radius:3px;margin:0}.dropdown-menu:before{content:"";width:20px;height:12px;position:absolute;top:-12px;right:8px;background-image:url(../../images/triangle_2x.png);background-size:20px 12px}.dropdown-submenu .dropdown-menu:before{background:0 0}#searchNotebookForAddDropdownList,#searchNotebookForAddShareDropdownList{left:-200px}#searchNotebookForAddDropdownList:before,#searchNotebookForAddShareDropdownList:before{left:190px;right:inherit}.dropdown-menu li{list-style:none;padding-left:10px;width:100%;height:30px;line-height:30px}.dropdown-menu li>a{color:#000;display:block;padding-right:20px}.dropdown-menu>li>a{padding:3px 20px 3px 0}.noteSplit{position:absolute;top:0;width:5px;height:100%;overflow:hidden;z-index:3333;cursor:col-resize}a.raw{color:#428bca}a.raw:hover{color:#2a6496}.cm-item{position:relativLine truncated
+1 -1
View File
@@ -1 +1 @@
::selection{background:#000;color:#fff}::-moz-selection{background:#000;color:#fff}::-webkit-selection{background:#000;color:#fff}@-webkit-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-moz-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-ms-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-webkit-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-moz-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-ms-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-ms-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@font-face{font-family:leanote;src:url(../../fonts/leanote-font2/leanote.eot?-vcf23i);src:url(../../fonts/leanote-font2/leanote.eot?#iefix-vcf23i) format('embedded-opentype'),url(../../fonts/leanote-font2/leanote.ttf?-vcf23i) format('truetype'),url(../../fonts/leanote-font2/leanote.woff?-vcf23i) format('woff'),url(../../fonts/leanote-font2/leanote.svg?-vcf23i#leanote) format('svg');font-weight:400;font-style:normal}.close:focus{outline:0}.invisible{visibility:hidden}.btn{border-radius:2px}.alert{margin-bottom:10px}.btn *{cursor:pointer!important}.dropdown-submenu{position:relative}.dropdown-submenu>ul.dropdown-menu{top:0;left:100%;margin-left:-3px!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding-top:10px!important}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu:after{display:block;content:" ";position:absolute;right:0;top:10px;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#666}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{visibility:visible;-webkit-animation:pulldown .2s;animation:pulldown .2s}.dropdown-menu{visibility:hidden;display:block}.dropdown-list{width:530px;border-radius:3px}.dropdown-list ul{margin:0;padding:0}.dropdown-list ul li{float:left;width:120px;margin-left:10px;margin-bottom:10px;border:1px dashed #ccc}.dropdown-menu .divider{margin:3px 0}.dropdown-menu{border-radius:3px;margin:0;border:1px solid #e6eaed;box-shadow:rgba(0,0,0,.172549)0 6px 12px 0}.dropdown-menu:before{content:"";width:20px;height:12px;position:absolute;top:-12px;right:8px;background-image:url(../../images/triangle_2x.png);background-size:20px 12px}.dropdown-submenu .dropdown-menu:before{background:0 0}#searchNotebookForAddDropdownList,#searchNotebookForAddShareDropdownList{left:-200px}#searchNotebookForAddDropdownList:before,#searchNotebookForAddShareDropdownList:before{left:190px;right:inherit}.dropdown-menu li{list-style:none;padding-left:10px;width:100%;height:30px;line-height:30px}.dropdown-menu li>a{color:#000;display:block;padding-right:20px}.dropdown-menu>li>a{padding:3px 20px 3px 0}.noteSplit{position:absolute;top:0;width:5px;height:100%;overflow:hidden;z-index:3333;cursor:col-resize}a.raw{color:#428bca}a.raw:hover{color:#2a6496}.cm-item{position:relative}.cm-item .cm-text{position:absolute;left:23px;right:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cm-item .cm-text .c-text{display:initial}.b-m-mpanel{border-radius:3px}.modal-content{background-color:#f8f8f8}.modal-body{background-color:#fff;padding-bottom:30px}.modal-footer{margin-top:0}#listNotebookDropdownMenu{display:none}#themeForm td{padding:5px;text-aliLine truncated ::selection{background:#000;color:#fff}::-moz-selection{background:#000;color:#fff}::-webkit-selection{background:#000;color:#fff}@-webkit-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-moz-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-ms-keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@keyframes dropdown{0%{margin-top:-25px;opacity:0}90%{margin-top:2px}100%{margin-top:0;opacity:1}}@-webkit-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-moz-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-ms-keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@keyframes pulldown{0%{top:0;opacity:0}90%{top:90%}100%{top:100%;opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;-moz-animation-duration:.5s;-ms-animation-duration:.5s;-o-animation-duration:.5s;animation-duration:.5s}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url(../../fonts/open-sans2/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../../fonts/open-sans2/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../../fonts/open-sans2/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff) format('woff')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff) format('woff')}.close:focus{outline:0}.invisible{visibility:hidden}.mobile-show{display:none}.btn{border-radius:2px}.alert{margin-bottom:10px}.btn *{cursor:pointer!important}.dropdown-submenu{position:relative}.dropdown-submenu>ul.dropdown-menu{top:0;left:100%;margin-left:-3px!important;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding-top:10px!important}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu:after{display:block;content:" ";position:absolute;right:0;top:10px;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#666}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{visibility:visible;-webkit-animation:pulldown .2s;animation:pulldown .2s}.dropdown-menu{visibility:hidden;display:block}.dropdown-list{width:530px;border-radius:3px}.dropdown-list ul{margin:0;padding:0}.dropdown-list ul li{float:left;width:120px;margin-left:10px;margin-bottom:10px;border:1px dashed #ccc}.dropdown-menu .divider{margin:3px 0}.dropdown-menu{border-radius:3px;margin:0}.dropdown-menu:before{content:"";width:20px;height:12px;position:absolute;top:-12px;right:8px;background-image:url(../../images/triangle_2x.png);background-size:20px 12px}.dropdown-submenu .dropdown-menu:before{background:0 0}#searchNotebookForAddDropdownList,#searchNotebookForAddShareDropdownList{left:-200px}#searchNotebookForAddDropdownList:before,#searchNotebookForAddShareDropdownList:before{left:190px;right:inherit}.dropdown-menu li{list-style:none;padding-left:10px;width:100%;height:30px;line-height:30px}.dropdown-menu li>a{color:#000;display:block;padding-right:20px}.dropdown-menu>li>a{padding:3px 20px 3px 0}.noteSplit{position:absolute;top:0;width:5px;height:100%;overflow:hidden;z-index:3333;cursor:col-resize}a.raw{color:#428bca}a.raw:hover{color:#2a6496}.cm-item{position:relativLine truncated
Binary file not shown.
Loaded 100 of 905 files, more files were not shown because too many files have changed in this diff. Show more