some changes ...
[phpgitweb.git] / htdocs / lib / PageClasses.difftree.class.php
index 4b81e342295a0a76398fae75f3410898d81e8075..880e7e3fb6228fc448d150793e83422bb8fe3277 100644 (file)
@@ -51,12 +51,13 @@ class difftree {
                $tree->set('class', $class);
                $tree->set('hash', $commit['id']);
                $tree->set('file', $entry['file']);
+               $tree->set('file_hash', $entry['to_id']);
                
                if(count($commit['parent']) > 1) {
                        if(preg_match('/^[0]{40}$/', $entry['to_id'])) //file doesn't exist in the result (child) commit
                                $tree->set('file', $entry['file']);
                        else
-                               $tree->set('file', new ContentProvider('commit', 'tree_file_link', array('file' => $entry['file'])));
+                               $tree->set('file', new ContentProvider('commit', 'tree_file_link', array('file' => $entry['file'], 'file_hash' => $entry['to_id'])));
                        
                        $tree->set('specials', '');
                        
@@ -80,7 +81,7 @@ class difftree {
                                case 'D': //Deleted
                                        $merge = new ContentProvider('commit', 'tree_merge');
                                        $merge->set('class', '');
-                                       $blob_link = new ContentProvider('commit', 'tree_merge_blob', array('hash' => $commit['parent'][$i], 'file' => $entry['file']));
+                                       $blob_link = new ContentProvider('commit', 'tree_merge_blob', array('hash' => $commit['parent'][$i], 'file' => $entry['file'], 'file_hash' => $entry['to_id']));
                                        $merge->set('links', array($blob_link, ' | '));
                                        break;
                                default:
@@ -90,7 +91,15 @@ class difftree {
                                                $merge->set('links', ' | ');
                                        } else {
                                                $merge->set('class', '');
-                                               $merge->set('links', new ContentProvider('commit', 'tree_merge_diff', array('hash' => $commit['id'], 'parent' => $commit['parent'][$i], 'file' => $entry['file'], 'id' => ($i + 1))));
+                                               $params = array(
+                                                                       'hash' => $commit['id'], 
+                                                                       'parent' => $commit['parent'][$i], 
+                                                                       'file' => $entry['file'], 
+                                                                       'file_hash' => $entry['to_id'],
+                                                                       'parent_file_hash' => $entry['from_id'][$i],
+                                                                       'id' => ($i + 1)
+                                                               );
+                                               $merge->set('links', new ContentProvider('commit', 'tree_merge_diff', $params));
                                        }
                                }
                                $tree->append('merge', $merge);
@@ -98,15 +107,15 @@ class difftree {
                        
                        $tree->set('links', '');
                        if($not_deleted) {
-                               $tree->append('links', new ContentProvider('commit', 'tree_merge_blob', array('hash' => $commit['id'], 'file' => $entry['file'])));
+                               $tree->append('links', new ContentProvider('commit', 'tree_merge_blob', array('hash' => $commit['id'], 'file' => $entry['file'], 'file_hash' => $entry['to_id'])));
                                if($has_history)
                                        $tree->append('links', ' | ');
                        }
                        if($has_history)
-                               $tree->append('links', new ContentProvider('commit', 'tree_merge_history', array('hash' => $commit['id'], 'file' => $entry['file'])));
+                               $tree->append('links', new ContentProvider('commit', 'tree_merge_history', array('hash' => $commit['id'], 'file' => $entry['file'], 'file_hash' => $entry['to_id'])));
                        
                } else {
-                       $tree->set('file', new ContentProvider('commit', 'tree_file_link', array('file' => $entry['file'])));
+                       $tree->set('file', new ContentProvider('commit', 'tree_file_link', array('file' => $entry['to_file'], 'file_hash' => $entry['to_id'])));
                        $tree->set('merge', '');
                        
                        $from_type = Tools::get_filetype($entry['from_mode']);
@@ -118,6 +127,8 @@ class difftree {
                        $link_placeholders = array(
                                        "hash" => $commit['id'],
                                        "file" => $entry['file'],
+                                       "file_hash"     => $entry['to_id'],
+                                       "parent_file_hash"      => $entry['from_id'],
                                        "parent" => (count($commit['parent']) ? $commit['parent'][0] : ""),
                                );
                        if($patch_link)
@@ -156,8 +167,8 @@ class difftree {
                                $actions = array('R' => 'tree_moved', 'C' => 'tree_copied');
                                $move = new ContentProvider('commit', $actions[$entry['status']]);
                                $tree->set('specials', $move);
-                               $tree->set('file', $entry['to_file']);
                                $move->set('file', $entry['from_file']);
+                               $move->set('file_hash', $entry['to_id']);
                                $move->set('hash', $commit['parent'][0]);
                                $move->set('similarity', $entry['similarity']);
                                if($from_mode != $to_mode)