gist/src/Gist/Resources/views/View/revisions.html.twig

137 lines
5.2 KiB
Twig

{% extends 'base.html.twig' %}
{% block css %}
{{ parent() }}
<link rel="stylesheet" href="{{ web_path }}app/css/prism.css">
{% if theme_settings.name == 'dark' %}
<link rel="stylesheet" href="{{ web_path }}app/css/prism-okaidia.css">
{% else %}
<link rel="stylesheet" href="{{ web_path }}app/css/prism-solarizedlight.css">
{% endif %}
{% 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 %}
<pre><code class="diff language-diff" id="diff-{{ loop.index }}">{% if not gist.cipher %}{{ commit.diff }}{% endif %}</code></pre>
{% endif %}
</div>
</div>
{% if not loop.last %}
<hr />
{% endif %}
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block js %}
{{ parent() }}
<script src="{{ web_path }}app/js/prism.js" {% if gist.cipher %}data-manual{% endif %}></script>
{% if gist.cipher %}
<script src="{{ web_path }}components/diff/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++) {
if (lines[i] != '\ No newline at end of file') {
diffContent.push(sign + lines[i]);
}
}
}
diffContent = diffContent.join("\n");
$('#diff-' + (u + 1).toString()).text(diffContent);
}
}
Prism.highlightAll();
</script>
{% endif %}
{% endblock %}