1
0
Fork 0
forked from deblan/gist
gist/src/Gist/Resources/views/View/revisions.html.twig
2016-09-24 16:07:35 +02:00

136 lines
5.3 KiB
Twig

{% extends 'base.html.twig' %}
{% block css %}
<link rel="stylesheet" href="{{ web_path }}app/css/geshi/vibrant-ink.css" />
{{ parent() }}
{% endblock %}
{% block title %}{{ gist.title ? gist.title : 'gist.untitled'|trans }} - {{ 'gist.action.history'|trans }}{% endblock %}
{% block body %}
<div class="row">
<div class="col-md-12">
<ul class="nav nav-tabs">
<li>
<a href="{{ path('view', {gist: gist.file}) }}" class="cipher-link">
{{ 'gist.action.view'|trans }}
</a>
</li>
<li class="active">
<a href="{{ path('revisions', {gist: gist.file}) }}" class="cipher-link">
{{ 'gist.action.history'|trans }}
<span class="badge">{{ history|length }}</span>
</a>
</li>
</ul>
<div class="panel panel-default">
<div class="panel-heading">
{{ gist.title ? gist.title : 'gist.untitled'|trans }}
</div>
<div class="panel-body">
<div class="tab-content">
<div id="revisions" class="tab-pane in active">
{% for commit in history %}
<div class="commit">
<p>
<a href="{{ path('view', {gist: gist.file, commit: commit.commit}) }}" class="btn btn-warning btn-sm cipher-link">
{{ commit.commit|slice(0, 10) }}
</a>
{% if loop.first %}<span class="btn btn-info btn-sm">init</span>{% endif %}
{% if not loop.first %}
<a href="#diff-{{ loop.index }}" data-target="#diff-{{ loop.index }}" class="btn btn-default btn-sm show-diff">
diff
</a>
{% endif %}
</p>
<p>
{{ commit.date|date('date.format'|trans) }}
</p>
<div>
{% if not loop.first %}
<div class="diff" id="diff-{{ loop.index }}">
{% if not gist.cipher %}
{{ commit.diff|raw }}
{% endif %}
</div>
{% endif %}
</div>
</div>
{% if not loop.last %}
<hr />
{% endif %}
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block js %}
{{ parent() }}
{% if gist.cipher %}
{{ include('View/cipherJs.html.twig') }}
<script src="{{ web_path }}components/jsdiff/diff.min.js"></script>
<script>
var key = getKey();
var decrypt = function(content) {
var decrypted = CryptoJS.AES.decrypt(content, key, {
format: JsonFormatter
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
var commits = [];
{% for commit in history %}
try {
var content = decrypt('{{ commit.content|raw }}');
commits[{{ loop.index - 1 }}] = content;
} catch(e) {
}
{% endfor %}
for (var u = commits.length - 1; u > 0; u--) {
if (commits.hasOwnProperty(u) && commits.hasOwnProperty(u - 1)) {
var previous = commits[u - 1];
var current = commits[u];
var diff = JsDiff.diffLines(previous, current);
var diffContent = [];
for (var v = 0, c = diff.length; v < c; v++) {
var value = diff[v].value;
var sign = diff[v].added ? '+' : '-';
var lines = value.split("\n");
for (var i = 0, l = lines.length; i < l; i++) {
diffContent.push(sign + lines[i]);
}
}
diffContent = diffContent.join("\n");
var $pre = $('<pre>')
.attr('class', 'brush: diff; syntaxhighlighter')
.html(diffContent);
$('#diff-' + (u + 1).toString()).append($pre);
}
}
SyntaxHighlighter.all();
</script>
{% endif %}
{% endblock %}