Lots of inter-page link work; revision stuff is now handled through the path manager
[viewsvn.git] / diff.php
1 <?php
2 /*=====================================================================*\
3 || ################################################################### ||
4 || # ViewSVN [#]version[#]
5 || # --------------------------------------------------------------- # ||
6 || # Copyright ©2002-[#]year[#] by Iris Studios, Inc. All Rights Reserved. # ||
7 || # This file may not be reproduced in any way without permission. # ||
8 || # --------------------------------------------------------------- # ||
9 || # User License Agreement at http://www.iris-studios.com/license/ # ||
10 || ################################################################### ||
11 \*=====================================================================*/
12
13 require_once('./global.php');
14
15 $path = $viewsvn->paths->parse();
16 $repos = $viewsvn->paths->fetch_repos($path);
17 $relpath = $viewsvn->paths->fetch_path($path);
18
19 echo $viewsvn->paths->construct_breadcrumb($path, false);
20
21 $revs = $viewsvn->paths->fetch_rev_num(true);
22 $high = $revs['high'];
23 $low = $revs['low'];
24
25 if ($high == 'HEAD')
26 {
27 $high = $viewsvn->svn->common->fetch_head_rev($path);
28 }
29
30 if ($low == 0)
31 {
32 $low = $viewsvn->svn->common->fetch_prev_rev($path, $high);
33 }
34
35 $diff = new SVNDiff($repos, $relpath, $low, $high);
36
37 $isdir = (bool)$viewsvn->svn->common->isdir($path);
38
39 echo <<<HTML
40 <style type="text/css">
41 <!--
42
43 .diff_add
44 {
45 background-color: #99EE99;
46 }
47
48 .diff_del
49 {
50 background-color: #EE9999;
51 }
52
53 table
54 {
55 font: normal 11px monospace;
56 }
57
58 //-->
59 </style>
60 HTML;
61
62 foreach ($diff->fetch() AS $filename => $file)
63 {
64 echo '<h2>' . $filename . '</h2>';
65
66 foreach ($file AS $hunk)
67 {
68 echo '<table cellspacing="1" cellpadding="1" width="100%">';
69
70 foreach ($hunk AS $key => $line)
71 {
72 if ($key == 'hunk' AND isset($line['old']))
73 {
74 $filepath = ($isdir ? $path . $filename : $path);
75 echo '
76 <tr style="background-color: #F7F7F7">
77 <td><a href="/viewsvn/' . $viewsvn->paths->out('view.php' . $viewsvn->paths->fetch_rev_str(false, $low), $filepath) . '">r' . $low . '</a></td>
78 <td><a href="/viewsvn/' . $viewsvn->paths->out('view.php' . $viewsvn->paths->fetch_rev_str(false, $high), $filepath) . '">r' . $high . '</a></td>
79 <td>&nbsp;</td>
80 </tr>';
81 continue;
82 }
83
84 if ($line['act'] == '+')
85 {
86 $color = '#DDFFDD';
87 }
88 else if ($line['act'] == '-')
89 {
90 $color = '#FFDDDD';
91 }
92 else
93 {
94 $color = 'white';
95 }
96
97 echo '
98 <tr style="background-color: #EEEEDD; border-width: 0px 1px 1px 0px">
99 <td>' . $line['oldlineno'] . '</td>
100 <td>' . $line['newlineno'] . '</td>
101 <td style="background-color: ' . $color . '">' . $viewsvn->svn->format($line['line']) . '</td>
102 </tr>';
103 }
104
105 echo '
106 </table>';
107 }
108
109 echo '<hr />';
110 }
111
112 /*=====================================================================*\
113 || ###################################################################
114 || # $HeadURL$
115 || # $Id$
116 || ###################################################################
117 \*=====================================================================*/
118 ?>