From 1042c50cc3187eef907698008644caeae8b26793 Mon Sep 17 00:00:00 2001 From: nazoking Date: Sun, 3 Jan 2016 22:09:52 +0900 Subject: [PATCH 01/13] add jrebel plugin --- project/build.scala | 7 +++++++ project/plugins.sbt | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/project/build.scala b/project/build.scala index ff54248fb..39f88f472 100644 --- a/project/build.scala +++ b/project/build.scala @@ -5,6 +5,8 @@ import sbt._ import sbtassembly.AssemblyKeys._ import sbtassembly._ import JettyPlugin.autoImport._ +import fi.gekkio.sbtplugins.jrebel.JRebelPlugin._ +import com.earldouglas.xwp.WebappPlugin.autoImport.webappPrepare object MyBuild extends Build { val Organization = "gitbucket" @@ -77,5 +79,10 @@ object MyBuild extends Build { testOptions in Test += Tests.Setup( () => new java.io.File("target/gitbucket_home_for_test").mkdir() ), fork in Test := true, packageOptions += Package.MainClass("JettyLauncher") + ).settings(jrebelSettings: _*).settings( + jrebel.webLinks += (target in webappPrepare).value, + jrebel.enabled := System.getenv().get("JREBEL") != null, + javaOptions in Jetty ++= Option(System.getenv().get("JREBEL")).toSeq.flatMap(path => + Seq("-noverify", "-XX:+UseConcMarkSweepGC", "-XX:+CMSClassUnloadingEnabled", s"-javaagent:${path}")) ).enablePlugins(SbtTwirl, JettyPlugin) } diff --git a/project/plugins.sbt b/project/plugins.sbt index 5ed803b14..fe0d1bd08 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -2,4 +2,5 @@ scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature") addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.0.4") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.12.0") -addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "2.1.0") \ No newline at end of file +addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "2.1.0") +addSbtPlugin("fi.gekkio.sbtplugins" % "sbt-jrebel-plugin" % "0.10.0") From 5fd87ca764e91f4774ffe7f04e9260347786eb03 Mon Sep 17 00:00:00 2001 From: nazoking Date: Sun, 3 Jan 2016 22:46:15 +0900 Subject: [PATCH 02/13] add jrebel document --- doc/jrebel.md | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++ doc/readme.md | 1 + 2 files changed, 149 insertions(+) create mode 100644 doc/jrebel.md diff --git a/doc/jrebel.md b/doc/jrebel.md new file mode 100644 index 000000000..9ea1f68c2 --- /dev/null +++ b/doc/jrebel.md @@ -0,0 +1,148 @@ +JRebel integration (optional) +============================= + +[JRebel](http://zeroturnaround.com/software/jrebel/) is a JVM plugin that makes developing web apps much faster. +JRebel is generally able to eliminate the need for the following slow "app restart" in sbt following a code change: + +``` +> jetty:start +``` + +While JRebel is not open source, it does reload your code faster than the `~;copy-resources;aux-compile` way of doing things using `sbt`. + +It's only used during development, and doesn't change your deployed app in any way. + +JRebel used to be free for Scala developers, but that changed recently, and now there's a cost associated with usage for Scala. There are trial plans and free non-commercial licenses available if you just want to try it out. + +---- + +## 1. Get a JRebel license + +Sign up for a [usage plan](https://my.jrebel.com/). You will need to create an account. + +## 2. Download JRebel + +Download the most recent ["nosetup" JRebel zip](http://zeroturnaround.com/software/jrebel/download/prev-releases/). +Next, unzip the downloaded file. + +## 3. Activate + +Follow the [instructions on the JRebel website](http://zeroturnaround.com/software/jrebel/download/prev-releases/) to activate your downloaded JRebel. + +You can use the default settings for all the configurations. + +You don't need to integrate with your IDE, since we're using sbt to do the servlet deployment. + +## 4. Tell jvm where JRebel is + +Fortunately, the gitbucket project is already set up to use JRebel. +You only need to tell jvm where to find the jrebel jar. + +To do so, edit your shell resource file (usually `~/.bash_profile` on Mac, and `~/.bashrc` on Linux), and add the following line: + +```bash +export JREBEL=/path/to/jrebel/jrebel.jar +``` + +For example, if you unzipped your JRebel download in your home directory, you whould use: + +```bash +export JREBEL=~/jrebel/jrebel.jar +``` + +Now reload your shell: + +``` +$ source ~/.bash_profile # on Mac +$ source ~/.bashrc # on Linux +``` + +## 5. See it in action! + +Now you're ready to use JRebel with the gitbucket. +When you run sbt as normal, you will see a long message from JRebel, indicating it has loaded. +Here's an abbreviated version of what you will see: + +``` +$ ./sbt +[info] Loading project definition from /git/gitbucket/project +[info] Set current project to gitbucket (in build file:/git/gitbucket/) +> +``` + +You will start the servlet container slightly differently now that you're using sbt. + +``` +> jetty:start +: +[info] starting server ... +[success] Total time: 3 s, completed Jan 3, 2016 9:47:55 PM +2016-01-03 21:47:57 JRebel: +2016-01-03 21:47:57 JRebel: A newer version '6.3.1' is available for download +2016-01-03 21:47:57 JRebel: from http://zeroturnaround.com/software/jrebel/download/ +2016-01-03 21:47:57 JRebel: +2016-01-03 21:47:58 JRebel: Contacting myJRebel server .. +2016-01-03 21:47:59 JRebel: Directory '/git/gitbucket/target/scala-2.11/classes' will be monitored for changes. +2016-01-03 21:47:59 JRebel: Directory '/git/gitbucket/target/scala-2.11/test-classes' will be monitored for changes. +2016-01-03 21:47:59 JRebel: Directory '/git/gitbucket/target/webapp' will be monitored for changes. +2016-01-03 21:48:00 JRebel: +2016-01-03 21:48:00 JRebel: ############################################################# +2016-01-03 21:48:00 JRebel: +2016-01-03 21:48:00 JRebel: JRebel Legacy Agent 6.2.5 (201509291538) +2016-01-03 21:48:00 JRebel: (c) Copyright ZeroTurnaround AS, Estonia, Tartu. +2016-01-03 21:48:00 JRebel: +2016-01-03 21:48:00 JRebel: Over the last 30 days JRebel prevented +2016-01-03 21:48:00 JRebel: at least 182 redeploys/restarts saving you about 7.4 hours. +2016-01-03 21:48:00 JRebel: +2016-01-03 21:48:00 JRebel: Over the last 324 days JRebel prevented +2016-01-03 21:48:00 JRebel: at least 1538 redeploys/restarts saving you about 62.4 hours. +2016-01-03 21:48:00 JRebel: +2016-01-03 21:48:00 JRebel: Licensed to nazo king (using myJRebel). +2016-01-03 21:48:00 JRebel: +2016-01-03 21:48:00 JRebel: +2016-01-03 21:48:00 JRebel: ############################################################# +2016-01-03 21:48:00 JRebel: +: + +> ~ copy-resources +[success] Total time: 0 s, completed Jan 3, 2016 9:13:54 PM +1. Waiting for source changes... (press enter to interrupt) +``` + +Finally, change your code. +For example, you can change the title on `src/main/twirl/gitbucket/core/main.scala.html` like this: + +```html +: + + GitBucket + @defining(AutoUpdate.getCurrentVersion){ version => + @version.majorVersion.@version.minorVersion + } + change code !!!!!!!!!!!!!!!! + +: +``` + +If JRebel is doing is correctly installed you will see a notice for you: + +``` +1. Waiting for source changes... (press enter to interrupt) +2016-01-03 21:48:42 JRebel: Reloading class 'gitbucket.core.html.main$'. +[info] Wrote rebel.xml to /git/gitbucket/target/scala-2.11/resource_managed/main/rebel.xml +[info] Compiling 1 Scala source to /git/gitbucket/target/scala-2.11/classes... +[success] Total time: 3 s, completed Jan 3, 2016 9:48:55 PM +2. Waiting for source changes... (press enter to interrupt) +``` + +And you reload browser, JRebel give notice of that it has reloaded classes: + +``` +[success] Total time: 3 s, completed Jan 3, 2016 9:48:55 PM +2. Waiting for source changes... (press enter to interrupt) +2016-01-03 21:49:13 JRebel: Reloading class 'gitbucket.core.html.main$'. +``` + +## 6. Limitations + +JRebel is nearly always able to eliminate the need to explicitly reload your container after a code change. However, if you change any of your routes patterns, there is nothing JRebel can do, you will have to run `jetty:start`. diff --git a/doc/readme.md b/doc/readme.md index d4e3c58e2..f8b23dec6 100644 --- a/doc/readme.md +++ b/doc/readme.md @@ -9,3 +9,4 @@ Developer's Guide * [Notification Email](notification.md) * [Automatic Schema Updating](auto_update.md) * [Release Operation](release.md) + * [JRebel integration (optional)](jrebel.md) From 9e313bb2b32a88549799221cc031dcf73f2bf1bb Mon Sep 17 00:00:00 2001 From: Takeo Tamura Date: Thu, 7 Jan 2016 16:40:44 +0900 Subject: [PATCH 03/13] fix long file name text-overflow --- .../gitbucket/core/repo/files.scala.html | 40 ++++++++++--------- .../webapp/assets/common/css/gitbucket.css | 6 +++ 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/main/twirl/gitbucket/core/repo/files.scala.html b/src/main/twirl/gitbucket/core/repo/files.scala.html index f8b0885c6..d1b31cb6d 100644 --- a/src/main/twirl/gitbucket/core/repo/files.scala.html +++ b/src/main/twirl/gitbucket/core/repo/files.scala.html @@ -106,25 +106,27 @@ } - @if(file.isDirectory){ - @if(file.linkUrl.isDefined){ - - @file.name.split("/").toList.init match { - case Nil => {} - case list => {@list.mkString("", "/", "/")} - }@file.name.split("/").toList.last - - } else { - - @file.name.split("/").toList.init match { - case Nil => {} - case list => {@list.mkString("", "/", "/")} - }@file.name.split("/").toList.last - - } - } else { - @file.name - } + + @if(file.isDirectory){ + @if(file.linkUrl.isDefined){ + + @file.name.split("/").toList.init match { + case Nil => {} + case list => {@list.mkString("", "/", "/")} + }@file.name.split("/").toList.last + + } else { + + @file.name.split("/").toList.init match { + case Nil => {} + case list => {@list.mkString("", "/", "/")} + }@file.name.split("/").toList.last + + } + } else { + @file.name + } + @link(file.message, repository) diff --git a/src/main/webapp/assets/common/css/gitbucket.css b/src/main/webapp/assets/common/css/gitbucket.css index 5b13ac18d..52281d289 100644 --- a/src/main/webapp/assets/common/css/gitbucket.css +++ b/src/main/webapp/assets/common/css/gitbucket.css @@ -831,6 +831,12 @@ table.table-file-list .content-name { max-width: 180px; } +table.table-file-list .content-name .content-name-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + table.table-file-list .commit-message { max-width: 415px; display: inline-block; From 63e605d99cbe270a6550b49fc9270bae85371589 Mon Sep 17 00:00:00 2001 From: Takeo Tamura Date: Thu, 7 Jan 2016 16:54:08 +0900 Subject: [PATCH 04/13] fix long file name text-overflow --- src/main/webapp/assets/common/css/gitbucket.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/webapp/assets/common/css/gitbucket.css b/src/main/webapp/assets/common/css/gitbucket.css index 52281d289..8eba71a04 100644 --- a/src/main/webapp/assets/common/css/gitbucket.css +++ b/src/main/webapp/assets/common/css/gitbucket.css @@ -832,9 +832,12 @@ table.table-file-list .content-name { } table.table-file-list .content-name .content-name-truncate { + display: inline-block; + max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } table.table-file-list .commit-message { From f63542dbd09bef0412f0da065440f16b938e7c14 Mon Sep 17 00:00:00 2001 From: Takeo Tamura Date: Thu, 7 Jan 2016 16:55:39 +0900 Subject: [PATCH 05/13] delete white-space --- src/main/webapp/assets/common/css/gitbucket.css | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/webapp/assets/common/css/gitbucket.css b/src/main/webapp/assets/common/css/gitbucket.css index 8eba71a04..5b33e1a37 100644 --- a/src/main/webapp/assets/common/css/gitbucket.css +++ b/src/main/webapp/assets/common/css/gitbucket.css @@ -837,7 +837,6 @@ table.table-file-list .content-name .content-name-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - } table.table-file-list .commit-message { From b71ff6f179a48c933bac2b60dbced14f05b3a1d5 Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Wed, 13 Jan 2016 13:55:59 +0900 Subject: [PATCH 06/13] Update README.md --- README.md | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/README.md b/README.md index 4e11726d4..ba0b7ab00 100644 --- a/README.md +++ b/README.md @@ -41,35 +41,7 @@ or you can start GitBucket by `java -jar gitbucket.war` without servlet containe To upgrade GitBucket, only replace gitbucket.war after stop GitBucket. All GitBucket data is stored in HOME/.gitbucket. So if you want to back up GitBucket data, copy this directory to the other disk. -For Installation on Windows Server with IIS see [this wiki page](https://github.com/gitbucket/gitbucket/wiki/Installation-on-IIS-and-Helicontech-Zoo) - -### Mac OS X -#### Installing Via Homebrew - -``` -$ brew install gitbucket -==> Downloading https://github.com/takezoe/gitbucket/releases/download/1.10/gitbucket.war -######################################################################## 100.0% -==> Caveats -Note: When using launchctl the port will be 8080. - -To have launchd start gitbucket at login: - ln -sfv /usr/local/opt/gitbucket/*.plist ~/Library/LaunchAgents -Then to load gitbucket now: - launchctl load ~/Library/LaunchAgents/homebrew.mxcl.gitbucket.plist -Or, if you don't want/need launchctl, you can just run: - java -jar /usr/local/opt/gitbucket/libexec/gitbucket.war -==> Summary -/usr/local/Cellar/gitbucket/1.10: 3 files, 42M, built in 11 seconds -``` - -#### Manual Installation -On OS X, generate `gitbucket.plist` by [this script](https://raw.githubusercontent.com/gitbucket/gitbucket/master/contrib/macosx/makePlist) and copy it to `~/Library/LaunchAgents/` - -Run the following commands in `Terminal` to - -- start gitbucket: `launchctl load ~/Library/LaunchAgents/gitbucket.plist` -- stop gitbucket: `launchctl unload ~/Library/LaunchAgents/gitbucket.plist` +For Installation on Mac or Windows Server with IIS see [Wiki](https://github.com/gitbucket/gitbucket/wiki). Plug-ins -------- From 90c379b3b9edc16a435732d3ef6faaac9b4c19ed Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Wed, 13 Jan 2016 14:01:40 +0900 Subject: [PATCH 07/13] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ba0b7ab00..913a08a65 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ The current version of GitBucket provides a basic features below: - Gravatar support - Plug-in system -If you want to try the development version of GitBucket, see the documentation for developers at [Wiki](https://github.com/gitbucket/gitbucket/wiki). +If you want to try the development version of GitBucket, see [Developer's Guide](https://github.com/gitbucket/gitbucket/blob/master/doc/how_to_run.md). Installation -------- @@ -41,7 +41,7 @@ or you can start GitBucket by `java -jar gitbucket.war` without servlet containe To upgrade GitBucket, only replace gitbucket.war after stop GitBucket. All GitBucket data is stored in HOME/.gitbucket. So if you want to back up GitBucket data, copy this directory to the other disk. -For Installation on Mac or Windows Server with IIS see [Wiki](https://github.com/gitbucket/gitbucket/wiki). +About installation on Mac or Windows Server (with IIS), configuration of Apache or Nginx and also integration with other tools or services such as Jenkins or Slack, see [Wiki](https://github.com/gitbucket/gitbucket/wiki). Plug-ins -------- From d6a39403e28d6c65ebf0e89d1e4e950d9531ee3f Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sat, 16 Jan 2016 14:18:03 +0900 Subject: [PATCH 08/13] (refs #1035)Fixup --- .../gitbucket/core/repo/files.scala.html | 36 +++++++++---------- .../webapp/assets/common/css/gitbucket.css | 5 --- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/main/twirl/gitbucket/core/repo/files.scala.html b/src/main/twirl/gitbucket/core/repo/files.scala.html index d1b31cb6d..235cc2c77 100644 --- a/src/main/twirl/gitbucket/core/repo/files.scala.html +++ b/src/main/twirl/gitbucket/core/repo/files.scala.html @@ -106,27 +106,25 @@ } - - @if(file.isDirectory){ - @if(file.linkUrl.isDefined){ - - @file.name.split("/").toList.init match { - case Nil => {} - case list => {@list.mkString("", "/", "/")} - }@file.name.split("/").toList.last - - } else { - - @file.name.split("/").toList.init match { - case Nil => {} - case list => {@list.mkString("", "/", "/")} - }@file.name.split("/").toList.last - - } + @if(file.isDirectory){ + @if(file.linkUrl.isDefined){ + + @file.name.split("/").toList.init match { + case Nil => {} + case list => {@list.mkString("", "/", "/")} + }@file.name.split("/").toList.last + } else { - @file.name + + @file.name.split("/").toList.init match { + case Nil => {} + case list => {@list.mkString("", "/", "/")} + }@file.name.split("/").toList.last + } - + } else { + @file.name + } @link(file.message, repository) diff --git a/src/main/webapp/assets/common/css/gitbucket.css b/src/main/webapp/assets/common/css/gitbucket.css index 5b33e1a37..4215dea4f 100644 --- a/src/main/webapp/assets/common/css/gitbucket.css +++ b/src/main/webapp/assets/common/css/gitbucket.css @@ -829,11 +829,6 @@ table.table-file-list .file-icon { table.table-file-list .content-name { max-width: 180px; -} - -table.table-file-list .content-name .content-name-truncate { - display: inline-block; - max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; From 15e8527e01d2cea92c5f1121c1c23143a267a16c Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sat, 16 Jan 2016 14:27:44 +0900 Subject: [PATCH 09/13] (refs #984)Fix special character problem in repository viewer --- src/main/twirl/gitbucket/core/repo/files.scala.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/twirl/gitbucket/core/repo/files.scala.html b/src/main/twirl/gitbucket/core/repo/files.scala.html index 235cc2c77..b272a3b37 100644 --- a/src/main/twirl/gitbucket/core/repo/files.scala.html +++ b/src/main/twirl/gitbucket/core/repo/files.scala.html @@ -115,7 +115,7 @@ }@file.name.split("/").toList.last } else { - + @file.name.split("/").toList.init match { case Nil => {} case list => {@list.mkString("", "/", "/")} From 9b3e8bd22bf6c39c08a9f0d8b04ee8ffec60e0ad Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sat, 16 Jan 2016 22:00:29 +0900 Subject: [PATCH 10/13] Fix Markdown preview style However styles in markdown-body affect tab. So there are invalid margin at the top of the tab. --- .../RepositoryViewerController.scala | 1 + .../scala/gitbucket/core/view/Markdown.scala | 34 ++++++++++++------- .../scala/gitbucket/core/view/helpers.scala | 3 +- .../webapp/assets/common/css/gitbucket.css | 7 +++- 4 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala index 2e63b1746..155204b84 100644 --- a/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala +++ b/src/main/scala/gitbucket/core/controller/RepositoryViewerController.scala @@ -111,6 +111,7 @@ trait RepositoryViewerControllerBase extends ControllerBase { enableRefsLink = params("enableRefsLink").toBoolean, enableLineBreaks = params("enableLineBreaks").toBoolean, enableTaskList = params("enableTaskList").toBoolean, + enableAnchor = false, hasWritePermission = hasWritePermission(repository.owner, repository.name, context.loginAccount) ) }) diff --git a/src/main/scala/gitbucket/core/view/Markdown.scala b/src/main/scala/gitbucket/core/view/Markdown.scala index 2d7854682..99b5ca086 100644 --- a/src/main/scala/gitbucket/core/view/Markdown.scala +++ b/src/main/scala/gitbucket/core/view/Markdown.scala @@ -39,22 +39,28 @@ object Markdown { } else markdown // escape task list - val source = if(enableTaskList){ - escapeTaskList(s) - } else s + val source = if(enableTaskList) escapeTaskList(s) else s val options = new Options() options.setSanitize(true) options.setBreaks(enableLineBreaks) - val renderer = new GitBucketMarkedRenderer(options, repository, enableWikiLink, enableRefsLink, enableAnchor, enableTaskList, hasWritePermission, pages) + + val renderer = new GitBucketMarkedRenderer(options, repository, + enableWikiLink, enableRefsLink, enableAnchor, enableTaskList, hasWritePermission, pages) + Marked.marked(source, options, renderer) } /** * Extends markedj Renderer for GitBucket */ - class GitBucketMarkedRenderer(options: Options, repository: RepositoryService.RepositoryInfo, - enableWikiLink: Boolean, enableRefsLink: Boolean, enableAnchor: Boolean, enableTaskList: Boolean, hasWritePermission: Boolean, + class GitBucketMarkedRenderer(options: Options, + repository: RepositoryService.RepositoryInfo, + enableWikiLink: Boolean, + enableRefsLink: Boolean, + enableAnchor: Boolean, + enableTaskList: Boolean, + hasWritePermission: Boolean, pages: List[String]) (implicit val context: Context) extends Renderer(options) with LinkConverter with RequestCache { @@ -62,11 +68,14 @@ object Markdown { val id = generateAnchorName(text) val out = new StringBuilder() - out.append("") + out.append("") out.append("") out.append("") + } else { + out.append(">") } out.append(text) @@ -83,22 +92,21 @@ object Markdown { var listType: String = null if (ordered) { listType = "ol" - } - else { + } else { listType = "ul" } if(body.contains("""class="task-list-item-checkbox"""")){ - return "<" + listType + " class=\"task-list\">\n" + body + "\n" + "<" + listType + " class=\"task-list\">\n" + body + "\n" } else { - return "<" + listType + ">\n" + body + "\n" + "<" + listType + ">\n" + body + "\n" } } override def listitem(text: String): String = { if(text.contains("""class="task-list-item-checkbox" """)){ - return "
  • " + text + "
  • \n" + "
  • " + text + "
  • \n" } else { - return "
  • " + text + "
  • \n" + "
  • " + text + "
  • \n" } } diff --git a/src/main/scala/gitbucket/core/view/helpers.scala b/src/main/scala/gitbucket/core/view/helpers.scala index 69418fc4c..a09edcbd7 100644 --- a/src/main/scala/gitbucket/core/view/helpers.scala +++ b/src/main/scala/gitbucket/core/view/helpers.scala @@ -89,6 +89,7 @@ object helpers extends AvatarImageProvider with LinkConverter with RequestCache enableWikiLink: Boolean, enableRefsLink: Boolean, enableLineBreaks: Boolean, + enableAnchor: Boolean = true, enableTaskList: Boolean = false, hasWritePermission: Boolean = false, pages: List[String] = Nil)(implicit context: Context): Html = @@ -97,7 +98,7 @@ object helpers extends AvatarImageProvider with LinkConverter with RequestCache repository = repository, enableWikiLink = enableWikiLink, enableRefsLink = enableRefsLink, - enableAnchor = true, + enableAnchor = enableAnchor, enableLineBreaks = enableLineBreaks, enableTaskList = enableTaskList, hasWritePermission = hasWritePermission, diff --git a/src/main/webapp/assets/common/css/gitbucket.css b/src/main/webapp/assets/common/css/gitbucket.css index 4215dea4f..0ca47fc0b 100644 --- a/src/main/webapp/assets/common/css/gitbucket.css +++ b/src/main/webapp/assets/common/css/gitbucket.css @@ -1718,28 +1718,34 @@ div.markdown-body h1 { border-bottom: 1px solid #ddd; font-size: 2.5em; font-weight: bold; + line-height: 1.7; } div.markdown-body h2 { border-bottom: 1px solid #eee; font-size: 2em; + line-height: 1.7; } div.markdown-body h3 { font-size: 1.5em; + line-height: 1.7; } div.markdown-body h4 { font-size: 1.2em; + line-height: 1.7; } div.markdown-body h5 { font-size: 1em; + line-height: 1.7; } div.markdown-body h6 { color:#777; font-size: 1em; + line-height: 1.7; } div.markdown-body li { @@ -1905,7 +1911,6 @@ div.markdown-body table colgroup + tbody tr:first-child td:last-child { .markdown-head { position: relative; - line-height: 1.7; } a.markdown-anchor-link { From 0ab28e6daaa969bd7efca5bdcb539a3aa494349f Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sat, 16 Jan 2016 22:14:45 +0900 Subject: [PATCH 11/13] (refs #1031)Fix issue link processing in Markdown --- src/main/scala/gitbucket/core/view/Markdown.scala | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/scala/gitbucket/core/view/Markdown.scala b/src/main/scala/gitbucket/core/view/Markdown.scala index 99b5ca086..5acaa1de2 100644 --- a/src/main/scala/gitbucket/core/view/Markdown.scala +++ b/src/main/scala/gitbucket/core/view/Markdown.scala @@ -33,13 +33,9 @@ object Markdown { enableTaskList: Boolean = false, hasWritePermission: Boolean = false, pages: List[String] = Nil)(implicit context: Context): String = { - // escape issue id - val s = if(enableRefsLink){ - markdown.replaceAll("(?<=(\\W|^))#(\\d+)(?=(\\W|$))", "issue:$2") - } else markdown // escape task list - val source = if(enableTaskList) escapeTaskList(s) else s + val source = if(enableTaskList) escapeTaskList(markdown) else markdown val options = new Options() options.setSanitize(true) @@ -112,7 +108,7 @@ object Markdown { override def text(text: String): String = { // convert commit id and username to link. - val t1 = if(enableRefsLink) convertRefsLinks(text, repository, "issue:", false) else text + val t1 = if(enableRefsLink) convertRefsLinks(text, repository, "#", false) else text // convert task list to checkbox. val t2 = if(enableTaskList) convertCheckBox(t1, hasWritePermission) else t1 From ef201e331931ad11c06623912bf2b16c3c62aa31 Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sat, 16 Jan 2016 22:37:07 +0900 Subject: [PATCH 12/13] Update haeding style to bold --- src/main/webapp/assets/common/css/gitbucket.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/webapp/assets/common/css/gitbucket.css b/src/main/webapp/assets/common/css/gitbucket.css index 0ca47fc0b..fe7246286 100644 --- a/src/main/webapp/assets/common/css/gitbucket.css +++ b/src/main/webapp/assets/common/css/gitbucket.css @@ -1724,27 +1724,32 @@ div.markdown-body h1 { div.markdown-body h2 { border-bottom: 1px solid #eee; font-size: 2em; + font-weight: bold; line-height: 1.7; } div.markdown-body h3 { font-size: 1.5em; + font-weight: bold; line-height: 1.7; } div.markdown-body h4 { font-size: 1.2em; + font-weight: bold; line-height: 1.7; } div.markdown-body h5 { font-size: 1em; + font-weight: bold; line-height: 1.7; } div.markdown-body h6 { color:#777; font-size: 1em; + font-weight: bold; line-height: 1.7; } From 2b2ae718f73d6e82547c135826b8efb0de89b2ac Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sat, 16 Jan 2016 22:37:40 +0900 Subject: [PATCH 13/13] Fix preview bug in online editor of repository viewer --- src/main/twirl/gitbucket/core/repo/editor.scala.html | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/twirl/gitbucket/core/repo/editor.scala.html b/src/main/twirl/gitbucket/core/repo/editor.scala.html index 8639ae8d1..b1079bde2 100644 --- a/src/main/twirl/gitbucket/core/repo/editor.scala.html +++ b/src/main/twirl/gitbucket/core/repo/editor.scala.html @@ -122,16 +122,17 @@ $(function(){ $('#editor').hide(); $('#preview').show(); $('#btn-code').removeClass('active'); - $('#btn-preview').appendClass('active'); + $('#btn-preview').addClass('active'); @if(fileName.map(isRenderable _).getOrElse(false)) { // update preview $('#preview').html(' Previewing...'); $.post('@url(repository)/_preview', { - content : editor.getValue(), - enableWikiLink : false, - enableRefsLink : false, - enableTaskList : false + content : editor.getValue(), + enableWikiLink : false, + enableRefsLink : false, + enableLineBreaks : false, + enableTaskList : false }, function(data){ $('#preview').empty().append( $('
    ').html(data));