mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-07 14:05:52 +01:00
(refs #445)Keep line separator in online file editing
This commit is contained in:
@@ -15,7 +15,7 @@ import org.eclipse.jgit.treewalk._
|
||||
import java.util.zip.{ZipEntry, ZipOutputStream}
|
||||
import jp.sf.amateras.scalatra.forms._
|
||||
import org.eclipse.jgit.dircache.DirCache
|
||||
import org.eclipse.jgit.revwalk.{RevCommit, RevWalk}
|
||||
import org.eclipse.jgit.revwalk.RevCommit
|
||||
import service.WebHookService.WebHookPayload
|
||||
|
||||
class RepositoryViewerController extends RepositoryViewerControllerBase
|
||||
@@ -35,6 +35,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
content: String,
|
||||
message: Option[String],
|
||||
charset: String,
|
||||
lineSeparator: String,
|
||||
newFileName: String,
|
||||
oldFileName: Option[String]
|
||||
)
|
||||
@@ -52,6 +53,7 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
"content" -> trim(label("Content", text(required))),
|
||||
"message" -> trim(label("Message", optional(text()))),
|
||||
"charset" -> trim(label("Charset", text(required))),
|
||||
"lineSeparator" -> trim(label("Line Separator", text(required))),
|
||||
"newFileName" -> trim(label("Filename", text(required))),
|
||||
"oldFileName" -> trim(label("Old filename", optional(text())))
|
||||
)(EditorForm.apply)
|
||||
@@ -145,7 +147,8 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
})
|
||||
|
||||
post("/:owner/:repository/create", editorForm)(collaboratorsOnly { (form, repository) =>
|
||||
commitFile(repository, form.branch, form.path, Some(form.newFileName), None, form.content, form.charset,
|
||||
commitFile(repository, form.branch, form.path, Some(form.newFileName), None,
|
||||
StringUtil.convertLineSeparator(form.content, form.lineSeparator), form.charset,
|
||||
form.message.getOrElse(s"Create ${form.newFileName}"))
|
||||
|
||||
redirect(s"/${repository.owner}/${repository.name}/blob/${form.branch}/${
|
||||
@@ -154,7 +157,8 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
})
|
||||
|
||||
post("/:owner/:repository/update", editorForm)(collaboratorsOnly { (form, repository) =>
|
||||
commitFile(repository, form.branch, form.path, Some(form.newFileName), form.oldFileName, form.content, form.charset,
|
||||
commitFile(repository, form.branch, form.path, Some(form.newFileName), form.oldFileName,
|
||||
StringUtil.convertLineSeparator(form.content, form.lineSeparator), form.charset,
|
||||
if(form.oldFileName.exists(_ == form.newFileName)){
|
||||
form.message.getOrElse(s"Update ${form.newFileName}")
|
||||
} else {
|
||||
|
||||
@@ -98,7 +98,12 @@ object JGitUtil {
|
||||
* @param content the string content
|
||||
* @param charset the character encoding
|
||||
*/
|
||||
case class ContentInfo(viewType: String, content: Option[String], charset: Option[String])
|
||||
case class ContentInfo(viewType: String, content: Option[String], charset: Option[String]){
|
||||
/**
|
||||
* the line separator of this content ("LF" or "CRLF")
|
||||
*/
|
||||
val lineSeparator: String = if(content.exists(_.indexOf("¥r¥n") >= 0)) "CRLF" else "LF"
|
||||
}
|
||||
|
||||
/**
|
||||
* The tag data.
|
||||
|
||||
@@ -46,6 +46,22 @@ object StringUtil {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts line separator in the given content.
|
||||
*
|
||||
* @param content the content
|
||||
* @param lineSeparator "LF" or "CRLF"
|
||||
* @return the converted content
|
||||
*/
|
||||
def convertLineSeparator(content: String, lineSeparator: String): String = {
|
||||
val lf = content.replaceAll("¥r¥n", "¥n").replaceAll("¥r", "¥n")
|
||||
if(lineSeparator == "CRLF"){
|
||||
lf.replaceAll("¥n", "¥r¥n")
|
||||
} else {
|
||||
lf
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract issue id like ```#issueId``` from the given message.
|
||||
*
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
}
|
||||
<input type="submit" id="commit" class="btn btn-success" value="Commit changes" disabled="true"/>
|
||||
<input type="hidden" id="charset" name="charset" value="@content.charset"/>
|
||||
<input type="hidden" id="lineSeparator" name="lineSeparator" value="@content.lineSeparator"/>
|
||||
<input type="hidden" id="content" name="content" value=""/>
|
||||
<input type="hidden" id="initial" value="@content.content"/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user