* render code view server side * remove debug print * fix multiline selection bug * change string concatenation to bytes.Buffer for efficiency * Fix newlines added by previous for hljs * fix selection highlighting * make css changes in .lesstags/v0.9.99
@@ -1316,6 +1316,8 @@ footer .ui.language .menu { | |||
.repository.file.list #file-content .code-view .lines-num .hljs li, | |||
.repository.file.list #file-content .code-view .lines-code .hljs li { | |||
padding-left: 5px; | |||
display: inline-block; | |||
width: 100%; | |||
} | |||
.repository.file.list #file-content .code-view .lines-num pre li.active, | |||
.repository.file.list #file-content .code-view .lines-code pre li.active, |
@@ -1088,7 +1088,7 @@ $(window).load(function () { | |||
b = c; | |||
} | |||
var classes = []; | |||
for (i = a; i <= b; i++) { | |||
for (var i = a; i <= b; i++) { | |||
classes.push('.L' + i); | |||
} | |||
$list.filter(classes.join(',')).addClass('active'); | |||
@@ -1102,22 +1102,6 @@ $(window).load(function () { | |||
// Code view. | |||
if ($('.code-view .linenums').length > 0) { | |||
var $block = $('.code-view .linenums'); | |||
var lines = $block.html().split("\n"); | |||
$block.html(''); | |||
var $num_list = $('.code-view .lines-num'); | |||
// Building blocks. | |||
var $toappendblock = []; | |||
var $toappendnum_list = []; | |||
for (var i = 0; i < lines.length; i++) { | |||
$toappendblock.push('<li class="L' + (i + 1) + '" rel="L' + (i + 1) + '">' + lines[i] + '</li>'); | |||
$toappendnum_list.push('<span id="L' + (i + 1) + '">' + (i + 1) + '</span>'); | |||
} | |||
$block.append($toappendblock.join('')); | |||
$num_list.append($toappendnum_list.join('')); | |||
$(document).on('click', '.lines-num span', function (e) { | |||
var $select = $(this); | |||
var $list = $select.parent().siblings('.lines-code').find('ol.linenums > li'); |
@@ -251,6 +251,8 @@ | |||
padding: 0 !important; | |||
li { | |||
padding-left: 5px; | |||
display: inline-block; | |||
width: 100%; | |||
&.active { | |||
background: #ffffdd; | |||
} |
@@ -5,11 +5,14 @@ | |||
package repo | |||
import ( | |||
"fmt" | |||
"bytes" | |||
"io/ioutil" | |||
"path" | |||
"strings" | |||
htmltemplate "html/template" | |||
"github.com/Unknwon/paginater" | |||
"github.com/gogits/git-module" | |||
@@ -116,14 +119,27 @@ func Home(ctx *context.Context) { | |||
if readmeExist { | |||
ctx.Data["FileContent"] = string(markdown.Render(buf, path.Dir(treeLink), ctx.Repo.Repository.ComposeMetas())) | |||
} else { | |||
filecontent := "" | |||
if err, content := template.ToUtf8WithErr(buf); err != nil { | |||
if err != nil { | |||
log.Error(4, "Convert content encoding: %s", err) | |||
} | |||
ctx.Data["FileContent"] = string(buf) | |||
filecontent = string(buf) | |||
} else { | |||
ctx.Data["FileContent"] = content | |||
filecontent = content | |||
} | |||
var output bytes.Buffer | |||
lines := strings.Split(filecontent, "\n") | |||
for index, line := range lines { | |||
output.WriteString(fmt.Sprintf(`<li class="L%d" rel="L%d">%s</li>`, index+1, index+1, htmltemplate.HTMLEscapeString(line)) + "\n") | |||
} | |||
ctx.Data["FileContent"] = htmltemplate.HTML(output.String()) | |||
output.Reset() | |||
for i := 0; i < len(lines); i++ { | |||
output.WriteString(fmt.Sprintf(`<span id="L%d">%d</span>`, i+1, i+1)) | |||
} | |||
ctx.Data["LineNums"] = htmltemplate.HTML(output.String()) | |||
} | |||
} | |||
} |
@@ -44,7 +44,7 @@ | |||
{{if .IsFileTooLarge}} | |||
<td><strong>{{.i18n.Tr "repo.file_too_large"}}</strong></td> | |||
{{else}} | |||
<td class="lines-num"></td> | |||
<td class="lines-num">{{.LineNums}}</td> | |||
<td class="lines-code"><pre><code class="{{.HighlightClass}}"><ol class="linenums">{{.FileContent}}</ol></code></pre></td> | |||
{{end}} | |||
</tr> |