Skip to content

Commit 06beacf

Browse files
brinkymeisterT
authored andcommitted
Submission diff unchanged (#3070)
(cherry picked from commit 3957fcd)
1 parent 360aee6 commit 06beacf

File tree

2 files changed

+68
-14
lines changed

2 files changed

+68
-14
lines changed

webapp/src/Controller/Jury/SubmissionController.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1207,13 +1207,17 @@ public function verifyShadowDifferenceAction(
12071207
* @param SubmissionFile[] $files
12081208
* @param SubmissionFile[] $oldFiles
12091209
* @return array{'changed': string[], 'changedfiles': array<SubmissionFile[]>,
1210-
* 'unchanged': string[], 'added': string[], 'removed': string[]}
1210+
* 'unchanged': string[], 'added': string[], 'removed': string[],
1211+
* 'unchangedfiles' : array<SubmissionFile>,
1212+
* 'addedfiles' : array<SubmissionFile>}
12111213
*/
12121214
protected function determineFileChanged(array $files, array $oldFiles): array
12131215
{
12141216
$result = [
12151217
'changed' => [],
12161218
'changedfiles' => [], // These will be shown, so we will add pairs of files here.
1219+
'unchangedfiles' => [],
1220+
'addedfiles' => [],
12171221
'unchanged' => [],
12181222
];
12191223

@@ -1223,16 +1227,22 @@ protected function determineFileChanged(array $files, array $oldFiles): array
12231227
$result['removed'] = array_diff($oldFilenames, $newFilenames);
12241228

12251229
foreach ($files as $newfile) {
1230+
$isNewFile = true;
12261231
foreach ($oldFiles as $oldFile) {
12271232
if ($newfile->getFilename() === $oldFile->getFilename()) {
1233+
$isNewFile = false;
12281234
if ($oldFile->getSourcecode() === $newfile->getSourcecode()) {
12291235
$result['unchanged'][] = $newfile->getFilename();
1236+
$result['unchangedfiles'][] = $newfile;
12301237
} else {
12311238
$result['changed'][] = $newfile->getFilename();
12321239
$result['changedfiles'][] = [$newfile, $oldFile];
12331240
}
12341241
}
12351242
}
1243+
if($isNewFile) {
1244+
$result['addedfiles'][] = $newfile;
1245+
}
12361246
}
12371247

12381248
// Special case: if there's just a single file (before and after) that has been renamed, use that for diffing.

webapp/templates/jury/partials/submission_diff.html.twig

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,78 @@
1818
</tr>
1919
</table>
2020
{% endif %}
21-
2221
<ul class="nav nav-tabs source-tab-nav">
2322
{%- for filePair in oldFileStats.changedfiles %}
2423
<li class="nav-item">
2524
<a class="nav-link {% if loop.first %}active{% endif %}" data-bs-toggle="tab"
2625
href="#diff-{{ filePair.1.submitfileid }}" role="tab">{{ filePair.0.filename }}</a>
2726
</li>
2827
{%- endfor %}
28+
{%- for file in oldFileStats.unchangedfiles %}
29+
<li class="nav-item">
30+
<a class="nav-link {% if loop.first %}active{% endif %}" data-bs-toggle="tab"
31+
href="#diff-{{ file.submitfileid }}" role="tab">{{ file.filename }}</a>
32+
</li>
33+
{%- endfor %}
34+
{%- for file in oldFileStats.addedfiles %}
35+
<li class="nav-item">
36+
<a class="nav-link {% if loop.first %}active{% endif %}" data-bs-toggle="tab"
37+
href="#diff-{{ file.submitfileid }}" role="tab">{{ file.filename }}</a>
38+
</li>
39+
{%- endfor %}
2940

3041
</ul>
3142
<div class="tab-content source-tab">
3243
{%- for filePair in oldFileStats.changedfiles %}
33-
<div class="mb-1">
34-
<a class="btn btn-secondary btn-sm"
35-
href="{{ path('jury_submission_source', {submission: submission.submitid, fetch: filePair.1.rank}) }}">
36-
<i class="fas fa-download"></i> Download
37-
</a>
38-
{% if allowEdit %}
44+
<div class="tab-pane fade {% if loop.first %}show active{% endif %}" id="diff-{{ filePair.1.submitfileid }}"
45+
role="tabpanel">
46+
<div class="mb-1">
3947
<a class="btn btn-secondary btn-sm"
40-
href="{{ path('jury_submission_edit_source', {submission: submission.submitid, rank: filePair.1.rank}) }}">
41-
<i class="fas fa-pencil-alt"></i> Edit
48+
href="{{ path('jury_submission_source', {submission: submission.submitid, fetch: filePair.1.rank}) }}">
49+
<i class="fas fa-download"></i> Download
4250
</a>
43-
{% endif %}
51+
{% if allowEdit %}
52+
<a class="btn btn-secondary btn-sm"
53+
href="{{ path('jury_submission_edit_source', {submission: submission.submitid, rank: filePair.1.rank}) }}">
54+
<i class="fas fa-pencil-alt"></i> Edit
55+
</a>
56+
{% endif %}
57+
</div>
58+
{{ showDiff("diff" ~ filePair.1.submitfileid, filePair.0, filePair.1) }}
4459
</div>
45-
46-
<div class="tab-pane fade {% if loop.first %}show active{% endif %}" id="diff-{{ filePair.1.submitfileid }}"
60+
{%- endfor %}
61+
{%- for file in oldFileStats.unchangedfiles %}
62+
<div class="tab-pane fade {% if loop.first %}show active{% endif %}" id="diff-{{ file.submitfileid }}"
4763
role="tabpanel">
48-
{{ showDiff("diff" ~ filePair.1.submitfileid, filePair.0, filePair.1) }}
64+
<div class="mb-1">
65+
<a class="btn btn-secondary btn-sm"
66+
href="{{ path('jury_submission_source', {submission: submission.submitid, fetch: file.rank}) }}">
67+
<i class="fas fa-download"></i> Download
68+
</a>
69+
{% if allowEdit %}
70+
<a class="btn btn-secondary btn-sm"
71+
href="{{ path('jury_submission_edit_source', {submission: submission.submitid, rank: file.rank}) }}">
72+
<i class="fas fa-pencil-alt"></i> Edit
73+
</a>
74+
{% endif %}
75+
</div>
76+
</div>
77+
{%- endfor %}
78+
{%- for file in oldFileStats.addedfiles %}
79+
<div class="tab-pane fade {% if loop.first %}show active{% endif %}" id="diff-{{ file.submitfileid }}"
80+
role="tabpanel">
81+
<div class="mb-1">
82+
<a class="btn btn-secondary btn-sm"
83+
href="{{ path('jury_submission_source', {submission: submission.submitid, fetch: file.rank}) }}">
84+
<i class="fas fa-download"></i> Download
85+
</a>
86+
{% if allowEdit %}
87+
<a class="btn btn-secondary btn-sm"
88+
href="{{ path('jury_submission_edit_source', {submission: submission.submitid, rank: file.rank}) }}">
89+
<i class="fas fa-pencil-alt"></i> Edit
90+
</a>
91+
{% endif %}
92+
</div>
4993
</div>
5094
{%- endfor %}
5195
</div>

0 commit comments

Comments
 (0)