No longer used
No longer used

--- a/include/display.git_rss.php
+++ b/include/display.git_rss.php
@@ -24,8 +24,8 @@
 	$tpl->clear_all_assign();
 	$tpl->assign("self",script_url());
 	$tpl->assign("project",$project);
-	$tpl->display("rss_header.tpl");
 
+	$commitlines = array();
 	for ($i = 0; $i <= count($revlist); $i++) {
 		$commit = $revlist[$i];
 		$co = git_read_commit($projectroot . $project, $commit);
@@ -40,24 +40,21 @@
 				$difftree[] = $regs[7];
 			$tok = strtok("\n");
 		}
-		$tpl->clear_all_assign();
-		$tpl->assign("cdmday",$cd['mday']);
-		$tpl->assign("cdmonth",$cd['month']);
-		$tpl->assign("cdhour",$cd['hour']);
-		$tpl->assign("cdminute",$cd['minute']);
-		$tpl->assign("title",htmlentities($co['title']));
-		$tpl->assign("author",htmlentities($co['author']));
-		$tpl->assign("cdrfc2822",$cd['rfc2822']);
-		$tpl->assign("self",script_url());
-		$tpl->assign("project",$project);
-		$tpl->assign("commit",$commit);
-		$tpl->assign("comment",$co['comment']);
-		$tpl->assign("difftree",$difftree);
-		$tpl->display("rss_item.tpl");
+		$commitline = array();
+		$commitline["cdmday"] = $cd['mday'];
+		$commitline["cdmonth"] = $cd['month'];
+		$commitline["cdhour"] = $cd['hour'];
+		$commitline["cdminute"] = $cd['minute'];
+		$commitline["title"] = $co['title'];
+		$commitline["author"] = $co['author'];
+		$commitline["cdrfc2822"] = $cd['rfc2822'];
+		$commitline["commit"] = $commit;
+		$commitline["comment"] = $co['comment'];
+		$commitline["difftree"] = $difftree;
+		$commitlines[] = $commitline;
 	}
-
-	$tpl->clear_all_assign();
-	$tpl->display("rss_footer.tpl");
+	$tpl->assign("commitlines",$commitlines);
+	$tpl->display("rss.tpl");
 }
 
 ?>

--- a/include/display.git_search.php
+++ b/include/display.git_search.php
@@ -16,15 +16,14 @@
 {
 	global $tpl,$gitphp_conf;
 
+	$tpl->clear_all_assign();
 	if (!$gitphp_conf['search']) {
-		$tpl->clear_all_assign();
 		$tpl->assign("message","Search has been disabled");
 		$tpl->display("message.tpl");
 		return;
 	}
 
 	if (!isset($search) || (strlen($search) < 2)) {
-		$tpl->clear_all_assign();
 		$tpl->assign("error",TRUE);
 		$tpl->assign("message","You must enter search text of at least 2 characters");
 		$tpl->display("message.tpl");
@@ -39,77 +38,51 @@
 
 	$revlist = explode("\n",trim(git_rev_list($projectroot . $project, $hash, 101, ($page * 100), FALSE, FALSE, $searchtype, $search)));
 	if (count($revlist) < 1 || (strlen($revlist[0]) < 1)) {
-		$tpl->clear_all_assign();
 		$tpl->assign("message","No matches for '" . $search . "'.");
 		$tpl->display("message.tpl");
 		return;
 	}
 
-	$tpl->clear_all_assign();
 	$tpl->assign("project",$project);
 	$tpl->assign("hash",$hash);
 	$tpl->assign("treehash",$co['tree']);
-	$tpl->display("search_nav.tpl");
 
 	$tpl->assign("search",$search);
 	$tpl->assign("searchtype",$searchtype);
-	if ($page > 0) {
-		$tpl->assign("firstlink",TRUE);
-		$tpl->assign("prevlink",TRUE);
-		if ($page > 1)
-			$tpl->assign("prevpage",$page-1);
-	}
-	if (count($revlist) > 100) {
-		$tpl->assign("nextlink",TRUE);
-		$tpl->assign("nextpage",$page+1);
-	}
-	$tpl->display("search_pagenav.tpl");
+	$tpl->assign("page",$page);
+	$revlistcount = count($revlist);
+	$tpl->assign("revlistcount",$revlistcount);
 
 	$tpl->assign("title",$co['title']);
-	$tpl->display("search_header.tpl");
 
-	$alternate = FALSE;
-	$commitcount = min(100,count($revlist));
+	$commitlines = array();
+	$commitcount = min(100,$revlistcount);
 	for ($i = 0; $i < $commitcount; $i++) {
-		$tpl->clear_all_assign();
 		$commit = $revlist[$i];
 		if (strlen(trim($commit)) > 0) {
+			$commitline = array();
 			$co2 = git_read_commit($projectroot . $project, $commit);
-			if ($alternate)
-				$tpl->assign("class","dark");
-			else
-				$tpl->assign("class","light");
-			$alternate = !$alternate;
-			$tpl->assign("project",$project);
-			$tpl->assign("commit",$commit);
-			$tpl->assign("agestringage",$co2['age_string_age']);
-			$tpl->assign("agestringdate",$co2['age_string_date']);
-			$tpl->assign("authorname",$co2['author_name']);
-			$tpl->assign("title_short",$co2['title_short']);
+			$commitline["commit"] = $commit;
+			$commitline["agestringage"] = $co2['age_string_age'];
+			$commitline["agestringdate"] = $co2['age_string_date'];
+			$commitline["authorname"] = $co2['author_name'];
+			$commitline["title_short"] = $co2['title_short'];
 			if (strlen($co2['title_short']) < strlen($co2['title']))
-				$tpl->assign("title",$co2['title']);
-			$tpl->assign("committree",$co2['tree']);
+				$commitline["title"] = $co2['title'];
+			$commitline["committree"] = $co2['tree'];
 			$matches = array();
 			foreach ($co2['comment'] as $comline) {
 				$hl = highlight($comline, $search, "searchmatch", GITPHP_TRIM_LENGTH);
 				if ($hl && (strlen($hl) > 0))
 					$matches[] = $hl;
 			}
-			$tpl->assign("matches",$matches);
-			$tpl->display("search_item.tpl");
+			$commitline["matches"] = $matches;
+			$commitlines[] = $commitline;
 		}
 	}
-
-	$tpl->clear_all_assign();
-	$tpl->assign("project",$project);
-	$tpl->assign("hash",$hash);
-	$tpl->assign("search",$search);
-	$tpl->assign("searchtype",$searchtype);
-	if (count($revlist) > 100) {
-		$tpl->assign("nextlink",TRUE);
-		$tpl->assign("nextpage",$page+1);
-	}
-	$tpl->display("search_footer.tpl");
+	
+	$tpl->assign("commitlines",$commitlines);
+	$tpl->display("search.tpl");
 }
 
 ?>

--- a/include/display.git_search_files.php
+++ b/include/display.git_search_files.php
@@ -16,15 +16,14 @@
 {
 	global $tpl,$gitphp_conf;
 
+	$tpl->clear_all_assign();
 	if (!($gitphp_conf['search'] && $gitphp_conf['filesearch'])) {
-		$tpl->clear_all_assign();
 		$tpl->assign("message","File search has been disabled");
 		$tpl->display("message.tpl");
 		return;
 	}
 
 	if (!isset($search) || (strlen($search) < 2)) {
-		$tpl->clear_all_assign();
 		$tpl->assign("error",TRUE);
 		$tpl->assign("message","You must enter search text of at least 2 characters");
 		$tpl->display("message.tpl");
@@ -40,47 +39,28 @@
 	$filesearch = git_filesearch($projectroot . $project, $hash, $search, false, ($page * 100), 101);
 
 	if (count($filesearch) < 1) {
-		$tpl->clear_all_assign();
 		$tpl->assign("message","No matches for '" . $search . "'.");
 		$tpl->display("message.tpl");
 		return;
 	}
 
-	$tpl->clear_all_assign();
 	$tpl->assign("project",$project);
 	$tpl->assign("hash",$hash);
 	$tpl->assign("treehash",$co['tree']);
-	$tpl->display("search_nav.tpl");
 
 	$tpl->assign("search",$search);
 	$tpl->assign("searchtype","file");
-	if ($page > 0) {
-		$tpl->assign("firstlink",TRUE);
-		$tpl->assign("prevlink",TRUE);
-		if ($page > 1)
-			$tpl->assign("prevpage",$page-1);
-	}
-	if (count($filesearch) > 100) {
-		$tpl->assign("nextlink",TRUE);
-		$tpl->assign("nextpage",$page+1);
-	}
-	$tpl->display("search_pagenav.tpl");
+	$tpl->assign("page",$page);
+	$filesearchcount = count($filesearch);
+	$tpl->assign("filesearchcount",$filesearchcount);
 
 	$tpl->assign("title",$co['title']);
-	$tpl->display("search_header.tpl");
 
-	$alternate = FALSE;
+	$filesearchlines = array();
 	$i = 0;
 	foreach ($filesearch as $file => $data) {
-		$tpl->clear_all_assign();
-		if ($alternate)
-			$tpl->assign("class","dark");
-		else
-			$tpl->assign("class","light");
-		$alternate = !$alternate;
-		$tpl->assign("project",$project);
-		$tpl->assign("hashbase",$hash);
-		$tpl->assign("file",$file);
+		$filesearchline = array();
+		$filesearchline["file"] = $file;
 		if (strpos($file,"/") !== false) {
 			$f = basename($file);
 			$d = dirname($file);
@@ -92,12 +72,12 @@
 		} else
 			$hlt = highlight($file, $search, "searchmatch");
 		if ($hlt)
-			$tpl->assign("filename",$hlt);
+			$filesearchline["filename"] = $hlt;
 		else
-			$tpl->assign("filename",$file);
-		$tpl->assign("hash",$data['hash']);
+			$filesearchline["filename"] = $file;
+		$filesearchline["hash"] = $data['hash'];
 		if ($data['type'] == "tree")
-			$tpl->assign("tree",TRUE);
+			$filesearchline["tree"] = TRUE;
 		if (isset($data['lines'])) {
 			$matches = array();
 			foreach ($data['lines'] as $line) {
@@ -106,24 +86,15 @@
 					$matches[] = $hlt;
 			}
 			if (count($matches) > 0)
-				$tpl->assign("matches",$matches);
+				$filesearchline["matches"] = $matches;
 		}
-		$tpl->display("search_fileitem.tpl");
+		$filesearchlines[] = $filesearchline;
 		$i++;
 		if ($i >= 100)
 			break;
 	}
-
-	$tpl->clear_all_assign();
-	$tpl->assign("project",$project);
-	$tpl->assign("hash",$hash);
-	$tpl->assign("search",$search);
-	$tpl->assign("searchtype","file");
-	if (count($filesearch) > 100) {
-		$tpl->assign("nextlink",TRUE);
-		$tpl->assign("nextpage",$page+1);
-	}
-	$tpl->display("search_footer.tpl");
+	$tpl->assign("filesearchlines",$filesearchlines);
+	$tpl->display("searchfiles.tpl");
 }
 
 ?>

--- a/include/display.git_shortlog.php
+++ b/include/display.git_shortlog.php
@@ -25,57 +25,38 @@
 	$tpl->clear_all_assign();
 	$tpl->assign("project",$project);
 	$tpl->assign("hash",$hash);
-	$tpl->display("shortlog_nav.tpl");
+	$tpl->assign("head",$head);
+
+	if ($page)
+		$tpl->assign("page",$page);
 
 	$revlist = git_read_revlist($projectroot . $project, $hash, 101, ($page * 100));
 
-	if (($hash != $head) || $page)
-		$tpl->assign("headlink",TRUE);
-	if ($page > 0) {
-		$tpl->assign("prevlink",TRUE);
-		$tpl->assign("prevpage",$page-1);
-	}
-	if (count($revlist) > 100) {
-		$tpl->assign("nextlink",TRUE);
-		$tpl->assign("nextpage",$page+1);
-	}
-	$tpl->display("shortlog_pagenav.tpl");
+	$revlistcount = count($revlist);
+	$tpl->assign("revlistcount",$revlistcount);
 
-	$alternate = FALSE;
+	$commitlines = array();
 	$commitcount = min(100,count($revlist));
 	for ($i = 0; $i < $commitcount; $i++) {
-		$tpl->clear_all_assign();
 		$commit = $revlist[$i];
 		if (strlen(trim($commit)) > 0) {
+			$commitline = array();
 			if (isset($refs[$commit]))
-				$tpl->assign("commitref",$refs[$commit]);
+				$commitline["commitref"] = $refs[$commit];
 			$co = git_read_commit($projectroot . $project, $commit);
 			$ad = date_str($co['author_epoch']);
-			if ($alternate)
-				$tpl->assign("class","dark");
-			else
-				$tpl->assign("class","light");
-			$alternate = !$alternate;
-			$tpl->assign("project",$project);
-			$tpl->assign("commit",$commit);
-			$tpl->assign("agestringage",$co['age_string_age']);
-			$tpl->assign("agestringdate",$co['age_string_date']);
-			$tpl->assign("authorname",$co['author_name']);
-			$tpl->assign("title_short",$co['title_short']);
+			$commitline["commit"] = $commit;
+			$commitline["agestringage"] = $co['age_string_age'];
+			$commitline["agestringdate"] = $co['age_string_date'];
+			$commitline["authorname"] = $co['author_name'];
+			$commitline["title_short"] = $co['title_short'];
 			if (strlen($co['title_short']) < strlen($co['title']))
-				$tpl->assign("title",$co['title']);
-			$tpl->display("shortlog_item.tpl");
+				$commitline["title"] = $co['title'];
+			$commitlines[] = $commitline;
 		}
 	}
-
-	$tpl->clear_all_assign();
-	$tpl->assign("project",$project);
-	$tpl->assign("hash",$hash);
-	if (count($revlist) > 100) {
-		$tpl->assign("nextlink",TRUE);
-		$tpl->assign("nextpage",$page+1);
-	}
-	$tpl->display("shortlog_footer.tpl");
+	$tpl->assign("commitlines",$commitlines);
+	$tpl->display("shortlog.tpl");
 }
 
 ?>

--- a/include/display.git_summary.php
+++ b/include/display.git_summary.php
@@ -28,106 +28,46 @@
 	$tpl->clear_all_assign();
 	$tpl->assign("project",$project);
 	$tpl->assign("head",$head);
-	$tpl->display("project_nav.tpl");
-	$tpl->clear_all_assign();
 	$tpl->assign("description",$descr);
 	$tpl->assign("owner",$owner);
 	$tpl->assign("lastchange",$commitdate['rfc2822']);
-	$tpl->display("project_brief.tpl");
-	$tpl->clear_all_assign();
-	$tpl->assign("project",$project);
-	$tpl->display("project_revlist_header.tpl");
 	$revlist = git_read_revlist($projectroot . $project, $head, 17);
-	$alternate = FALSE;
 	foreach ($revlist as $i => $rev) {
-		$tpl->clear_all_assign();
+		$revdata = array();
 		$revco = git_read_commit($projectroot . $project, $rev);
 		$authordate = date_str($revco['author_epoch']);
-		if ($alternate)
-			$tpl->assign("class","dark");
-		else
-			$tpl->assign("class","light");
-		$alternate = !$alternate;
-		$tpl->assign("project",$project);
-		if ($i <= 16) {
-			$tpl->assign("commit",$rev);
-			if (isset($refs[$rev]))
-				$tpl->assign("commitref",$refs[$rev]);
-			$tpl->assign("commitage",$revco['age_string']);
-			$tpl->assign("commitauthor",$revco['author_name']);
-			if (strlen($revco['title_short']) < strlen($revco['title'])) {
-				$tpl->assign("title",$revco['title']);
-				$tpl->assign("title_short",$revco['title_short']);
-			} else
-				$tpl->assign("title_short",$revco['title']);
-		} else {
-			$tpl->assign("truncate",TRUE);
-		}
-		$tpl->display("project_revlist_item.tpl");
+		$revdata["commit"] = $rev;
+		if (isset($refs[$rev]))
+			$revdata["commitref"] = $refs[$rev];
+		$revdata["commitage"] = $revco['age_string'];
+		$revdata["commitauthor"] = $revco['author_name'];
+		if (strlen($revco['title_short']) < strlen($revco['title'])) {
+			$revdata["title"] = $revco['title'];
+			$revdata["title_short"] = $revco['title_short'];
+		} else
+			$revdata["title_short"] = $revco['title'];
+		$revlist[$i] = $revdata;
 	}
-	$tpl->clear_all_assign();
-	$tpl->display("project_revlist_footer.tpl");
+	$tpl->assign("revlist",$revlist);
 
 	$taglist = git_read_refs($projectroot,$project,"refs/tags");
 	if (isset($taglist) && (count($taglist) > 0)) {
-		$tpl->clear_all_assign();
-		$tpl->assign("project",$project);
-		$tpl->display("project_taglist_header.tpl");
-		$alternate = FALSE;
 		foreach ($taglist as $i => $tag) {
-			$tpl->clear_all_assign();
-			$tpl->assign("project",$project);
-			if ($alternate)
-				$tpl->assign("class","dark");
-			else
-				$tpl->assign("class","light");
-			$alternate = !$alternate;
-			if ($i < 16) {
-				$tpl->assign("tagage",$tag['age']);
-				$tpl->assign("tagname",$tag['name']);
-				$tpl->assign("tagid",$tag['id']);
-				$tpl->assign("tagtype",$tag['type']);
-				$tpl->assign("refid",$tag['refid']);
-				$tpl->assign("reftype",$tag['reftype']);
-				if (isset($tag['comment'])) {
-					$com = trim($tag['comment'][0]);
-					if (strlen($com) > GITPHP_TRIM_LENGTH)
-						$com = substr($trimmed,0,GITPHP_TRIM_LENGTH) . "...";
-					$tpl->assign("comment",$com);
-				}
-			} else
-				$tpl->assign("truncate",TRUE);
-			$tpl->display("project_taglist_item.tpl");
+			if (isset($tag['comment'])) {
+				$com = trim($tag['comment'][0]);
+				if (strlen($com) > GITPHP_TRIM_LENGTH)
+					$com = substr($trimmed,0,GITPHP_TRIM_LENGTH) . "...";
+				$taglist[$i]['comment'] = $com;
+			}
 		}
-		$tpl->clear_all_assign();
-		$tpl->display("project_taglist_footer.tpl");
+		$tpl->assign("taglist",$taglist);
 	}
 
 	$headlist = git_read_refs($projectroot,$project,"refs/heads");
 	if (isset($headlist) && (count($headlist) > 0)) {
-		$tpl->clear_all_assign();
-		$tpl->assign("project",$project);
-		$tpl->display("project_headlist_header.tpl");
-		$alternate = FALSE;
-		foreach ($headlist as $i => $head) {
-			$tpl->clear_all_assign();
-			$tpl->assign("project",$project);
-			if ($alternate)
-				$tpl->assign("class","dark");
-			else
-				$tpl->assign("class","light");
-			$alternate = !$alternate;
-			if ($i < 16) {
-				$tpl->assign("headage",$head['age']);
-				$tpl->assign("headname",$head['name']);
-			} else
-				$tpl->assign("truncate",TRUE);
-			$tpl->display("project_headlist_item.tpl");
-		}
-
-		$tpl->clear_all_assign();
-		$tpl->display("project_headlist_footer.tpl");
+		$tpl->assign("headlist",$headlist);
 	}
+	$tpl->display("project.tpl");
 }
 
 ?>

file:a/templates/diff_line.tpl (deleted)
--- a/templates/diff_line.tpl
+++ /dev/null
@@ -1,9 +1,1 @@
-{*
- *  diff_line.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Diff line template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <div class="pre{if $class} {$class}{/if}">{$line}</div>
 

--- /dev/null
+++ b/templates/project.tpl
@@ -1,1 +1,89 @@
+{*
+ *  project.tpl
+ *  gitphp: A PHP git repository browser
+ *  Component: Project template
+ *
+ *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
+ *}
+ <div class="page_nav">
+   summary | <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog">shortlog</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=log">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$head}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$head}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree">tree</a>
+   <br /><br />
+ </div>
+ <div class="title">&nbsp;</div>
+ <table cellspacing="0">
+   <tr><td>description</td><td>{$description}</td></tr>
+   <tr><td>owner</td><td>{$owner}</td></tr>
+   <tr><td>last change</td><td>{$lastchange}</td></tr>
+ </table>
+ <div>
+   <a class="title" href="{$SCRIPT_NAME}?p={$project}&a=shortlog">shortlog</a>
+ </div>
+ <table cellspacing="0">
+   {section name=rev max=17 loop=$revlist}
+     {if $smarty.section.rev.index == 16}
+       <tr class="light">
+         <td><a href="{$SCRIPT_NAME}?p={$project}&a=shortlog">...</a></td>
+       </tr>
+     {else}
+         <tr class="{cycle name=revs values="light,dark"}">
+         <td><i>{$revlist[rev].commitage}</i></td>
+         <td><i>{$revlist[rev].commitauthor}</i></td>
+         <td>
+           <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$revlist[rev].commit}" class="list" {if $revlist[rev].title}title="{$revlist[rev].title}"{/if}><b>{$revlist[rev].title_short}
+             {if $revlist[rev].commitref}
+               <span class="tag">{$revlist[rev].commitref}</span>
+             {/if}
+           </b>
+         </td>
+         <td class="link"><a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$revlist[rev].commit}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$revlist[rev].commit}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$revlist[rev].commit}&hb={$revlist[rev].commit}">tree</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=snapshot&h={$revlist[rev].commit}">snapshot</a></td>
+       </tr>
+     {/if}
+   {/section}
+ </table>
+ {if $taglist}
+   <div>
+     <a href="{$SCRIPT_NAME}?p={$project}&a=tags" class="title">tags</a>
+   </div>
+   <table cellspacing="0">
+     {section name=tag max=17 loop=$taglist}
+       <tr class="{cycle name=tags values="light,dark"}">
+         {if $smarty.section.tag.index == 16}
+           <td><a href="{$SCRIPT_NAME}?p={$project}&a=tags">...</a></td>
+         {else}
+           <td><i>{$taglist[tag].age}</i></td>
+           <td><a href="{$SCRIPT_NAME}?p={$project}&a={$taglist[tag].reftype}&h={$taglist[tag].refid}" class="list"><b>{$taglist[tag].name}</b></a></td>
+           <td>
+             {if $taglist[tag].comment}
+               <a class="list" href="{$SCRIPT_NAME}?p={$project}&a=tag&h={$taglist[tag].id}">{$taglist[tag].comment}</a>
+             {/if}
+           </td>
+           <td class="link">
+             {if $taglist[tag].type == "tag"}
+   	       <a href="{$SCRIPT_NAME}?p={$project}&a=tag&h={$taglist[tag].id}">tag</a> | 
+             {/if}
+             <a href="{$SCRIPT_NAME}?p={$project}&a={$taglist[tag].reftype}&h={$taglist[tag].refid}">{$taglist[tag].reftype}</a>{if $taglist[tag].reftype == "commit"} | <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h=refs/tags/{$taglist[tag].name}">shortlog</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=log&h=refs/tags/{$taglist[tag].name}">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=snapshot&h={$taglist[tag].refid}">snapshot</a>{/if}
+           </td>
+         {/if}
+       </tr>
+     {/section}
+   </table>
+ {/if}
+ {if $headlist}
+   <div>
+     <a href="{$SCRIPT_NAME}?p={$project}&a=heads" class="title">heads</a>
+   </div>
+   <table cellspacing="0">
+     {section name=head max=17 loop=$headlist}
+       <tr class="{cycle name=heads values="light,dark"}">
+         {if $smarty.section.head.index == 16}
+           <td><a href="{$SCRIPT_NAME}?p={$project}&a=heads">...</a></td>
+         {else}
+           <td><i>{$headlist[head].age}</i></td>
+           <td><a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h=refs/heads/{$headlist[head].name}" class="list"><b>{$headlist[head].name}</b></td>
+           <td class="link"><a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h=refs/heads/{$headlist[head].name}">shortlog</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=log&h=refs/heads/{$headlist[head].name}">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h=refs/heads/{$headlist[head].name}&hb={$headlist[head].name}">tree</a></td>
+         {/if}
+       </tr>
+     {/section}
+   </table>
+ {/if}
 

--- a/templates/project_brief.tpl
+++ /dev/null
@@ -1,14 +1,1 @@
-{*
- *  project_brief.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project brief info template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <div class="title">&nbsp;</div>
- <table cellspacing="0">
- <tr><td>description</td><td>{$description}</td></tr>
- <tr><td>owner</td><td>{$owner}</td></tr>
- <tr><td>last change</td><td>{$lastchange}</td></tr>
- </table>
 

--- a/templates/project_headlist_footer.tpl
+++ /dev/null
@@ -1,9 +1,1 @@
-{*
- *  project_headlist_footer.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project head list footer template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- </table>
 

--- a/templates/project_headlist_header.tpl
+++ /dev/null
@@ -1,12 +1,1 @@
-{*
- *  project_headlist_header.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project head list header template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <div>
- <a href="{$SCRIPT_NAME}?p={$project}&a=heads" class="title">heads</a>
- </div>
- <table cellspacing="0">
 

--- a/templates/project_headlist_item.tpl
+++ /dev/null
@@ -1,17 +1,1 @@
-{*
- *  project_headlist_item.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project head list item template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <tr class="{$class}">
- {if $truncate}
-   <td><a href="{$SCRIPT_NAME}?p={$project}&a=heads">...</a></td>
- {else}
-   <td><i>{$headage}</i></td>
-   <td><a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h=refs/heads/{$headname}" class="list"><b>{$headname}</b></td>
-   <td class="link"><a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h=refs/heads/{$headname}">shortlog</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=log&h=refs/heads/{$headname}">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h=refs/heads/{$headname}&hb={$headname}">tree</a></td>
- {/if}
- </tr>
 

--- a/templates/project_nav.tpl
+++ /dev/null
@@ -1,12 +1,1 @@
-{*
- *  project_nav.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project navbar template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <div class="page_nav">
- summary | <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog">shortlog</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=log">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$head}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$head}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree">tree</a>
- <br /><br />
- </div>
 

--- a/templates/project_revlist_footer.tpl
+++ /dev/null
@@ -1,9 +1,1 @@
-{*
- *  project_revlist_footer.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project revision list footer template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- </table>
 

--- a/templates/project_revlist_header.tpl
+++ /dev/null
@@ -1,12 +1,1 @@
-{*
- *  project_revlist_header.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project revision list header template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <div>
- <a class="title" href="{$SCRIPT_NAME}?p={$project}&a=shortlog">shortlog</a>
- </div>
- <table cellspacing="0">
 

--- a/templates/project_revlist_item.tpl
+++ /dev/null
@@ -1,25 +1,1 @@
-{*
- *  project_revlist_item.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project revision list item template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- {if $truncate}
- <tr class="light">
-  <td><a href="{$SCRIPT_NAME}?p={$project}&a=shortlog">...</td>
- {else}
- <tr class="{$class}">
-  <td><i>{$commitage}</i></td>
-  <td><i>{$commitauthor}</i></td>
-  <td>
-  <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commit}" class="list" {if $title}title="{$title}"{/if}><b>{$title_short}
-  {if $commitref}
-  <span class="tag">{$commitref}</span>
-  {/if}
-  </b>
-  </td>
-  <td class="link"><a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commit}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$commit}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$commit}&hb={$commit}">tree</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=snapshot&h={$commit}">snapshot</a></td>
-  </tr>
- {/if}
 

--- a/templates/project_taglist_footer.tpl
+++ /dev/null
@@ -1,9 +1,1 @@
-{*
- *  project_taglist_footer.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project tag list footer template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- </table>
 

--- a/templates/project_taglist_header.tpl
+++ /dev/null
@@ -1,12 +1,1 @@
-{*
- *  project_taglist_header.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project tag list header template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <div>
- <a href="{$SCRIPT_NAME}?p={$project}&a=tags" class="title">tags</a>
- </div>
- <table cellspacing="0">
 

--- a/templates/project_taglist_item.tpl
+++ /dev/null
@@ -1,27 +1,1 @@
-{*
- *  project_taglist_item.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Project tag list item template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <tr class="{$class}">
- {if $truncate}
-   <td><a href="{$SCRIPT_NAME}?p={$project}&a=tags">...</a></td>
- {else}
-   <td><i>{$tagage}</i></td>
-   <td><a href="{$SCRIPT_NAME}?p={$project}&a={$reftype}&h={$refid}" class="list"><b>{$tagname}</b></a></td>
-   <td>
-   {if $comment}
-     <a class="list" href="{$SCRIPT_NAME}?p={$project}&a=tag&h={$tagid}">{$comment}</a>
-   {/if}
-   </td>
-   <td class="link">
-   {if $tagtype == "tag"}
-   	<a href="{$SCRIPT_NAME}?p={$project}&a=tag&h={$tagid}">tag</a> | 
-   {/if}
-   <a href="{$SCRIPT_NAME}?p={$project}&a={$reftype}&h={$refid}">{$reftype}</a>{if $reftype == "commit"} | <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h=refs/tags/{$tagname}">shortlog</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=log&h=refs/tags/{$tagname}">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=snapshot&h={$refid}">snapshot</a>{/if}
-   </td>
- {/if}
- </tr>
 

file:b/templates/rss.tpl (new)
--- /dev/null
+++ b/templates/rss.tpl
@@ -1,1 +1,39 @@
+{*
+ *  rss.tpl
+ *  gitphp: A PHP git repository browser
+ *  Component: RSS template
+ *
+ *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
+ *}
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
+  <channel>
+    <title>{$project}</title>
+    <link>{$self}?p={$project}&amp;a=summary</link>
+    <description>{$project} log</description>
+    <language>en</language>
 
+    {section name=rssitem loop=$commitlines}
+      <item>
+        <title>{$commitlines[rssitem].cdmday} {$commitlines[rssitem].cdmonth} {$commitlines[rssitem].cdhour}:{$commitlines[rssitem].cdminute} - {$commitlines[rssitem].title|escape:'htmlall'}</title>
+        <author>{$commitlines[rssitem].author|escape:'htmlall'}</author>
+        <pubDate>{$commitlines[rssitem].cdrfc2822}</pubDate>
+        <guid isPermaLink="true">{$self}?p={$project}&amp;a=commit&amp;h={$commitlines[rssitem].commit}</guid>
+        <link>{$self}?p={$project}&amp;a=commit&amp;h={$commitlines[rssitem].commit}</link>
+        <description>{$commitlines[rssitem].title|escape:'htmlall'}</description>
+        <content:encoded>
+          <![CDATA[
+          {foreach from=$commitlines[rssitem].comment item=line}
+            {$line}<br />
+          {/foreach}
+          {foreach from=$commitlines[rssitem].difftree item=line}
+            {$line}<br />
+          {/foreach}
+          ]]>
+        </content:encoded>
+      </item>
+    {/section}
+
+  </channel>
+</rss>
+

--- a/templates/rss_footer.tpl
+++ /dev/null
@@ -1,10 +1,1 @@
-{*
- *  rss_footer.tpl
- *  gitphp: A PHP git repository browser
- *  Component: RSS footer template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
-</channel>
-</rss>
 

--- a/templates/rss_header.tpl
+++ /dev/null
@@ -1,15 +1,1 @@
-{*
- *  rss_header.tpl
- *  gitphp: A PHP git repository browser
- *  Component: RSS header template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
-<?xml version="1.0" encoding="utf-8"?>
-<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
-<channel>
-<title>{$project}</title>
-<link>{$self}?p={$project}&amp;a=summary</link>
-<description>{$project} log</description>
-<language>en</language>
 

file:a/templates/rss_item.tpl (deleted)
--- a/templates/rss_item.tpl
+++ /dev/null
@@ -1,26 +1,1 @@
-{*
- *  rss_item.tpl
- *  gitphp: A PHP git repository browser
- *  Component: RSS item template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
-<item>
-<title>{$cdmday} {$cdmonth} {$cdhour}:{$cdminute} - {$title}</title>
-<author>{$author}</author>
-<pubDate>{$cdrfc2822}</pubDate>
-<guid isPermaLink="true">{$self}?p={$project}&amp;a=commit&amp;h={$commit}</guid>
-<link>{$self}?p={$project}&amp;a=commit&amp;h={$commit}</link>
-<description>{$title}</description>
-<content:encoded>
-<![CDATA[
-{foreach from=$comment item=line}
-{$line}<br />
-{/foreach}
-{foreach from=$difftree item=line}
-{$line}<br />
-{/foreach}
-]]>
-</content:encoded>
-</item>
 

--- /dev/null
+++ b/templates/search.tpl
@@ -1,1 +1,56 @@
+{*
+ *  search.tpl
+ *  gitphp: A PHP git repository browser
+ *  Component: Search view template
+ *
+ *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
+ *}
+{* Nav *}
+<div class="page_nav">
+  <a href="{$SCRIPT_NAME}?p={$project}&a=summary">summary</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h={$hash}">shortlog</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=log&h={$hash}">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$hash}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$hash}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$treehash}&hb={$hash}">tree</a>
+  <br />
+  {if $page > 0}
+    <a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}">first</a>
+  {else}
+    first
+  {/if}
+    &sdot; 
+  {if $page > 0}
+    <a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}{if $page > 1}&pg={$page-1}{/if}" accesskey="p" title="Alt-p">prev</a>
+  {else}
+    prev
+  {/if}
+    &sdot; 
+  {if $revlistcount > 100}
+    <a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}&pg={$page+1}" accesskey="n" title="Alt-n">next</a>
+  {else}
+    next
+  {/if}
+  <br />
+</div>
+<div>
+  <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$hash}" class="title">{$title}</a>
+</div>
+<table cellspacing="0">
+  {* Print each match *}
+  {section name=match loop=$commitlines}
+    <tr class="{cycle values="light,dark"}">
+      <td title="{$commitlines[match].agestringage}"><i>{$commitlines[match].agestringdate}</i></td>
+      <td><i>{$commitlines[match].authorname}</i></td>
+      <td><a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commitlines[match].commit}" class="list" {if $title}title="{$commitlines[match].title}"{/if}><b>{$commitlines[match].title_short}</b>
+        {foreach from=$commitlines[match].matches item=line name=match}
+          {if $smarty.foreach.match.first}<br />{/if}{$line}<br />
+        {/foreach}
+      </td>
+      <td class="link"><a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commitlines[match].commit}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$commitlines[match].commit}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$commitlines[match].committree}&hb={$commitlines[match].commit}">tree</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=snapshot&h={$commitlines[match].commit}">snapshot</a>
+      </td>
+    </tr>
+  {/section}
 
+  {if $revlistcount > 100}
+    <tr>
+      <td><a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}&pg={$page+1}" title="Alt-n">next</a></td>
+    </tr>
+  {/if}
+</table>
+

--- a/templates/search_fileitem.tpl
+++ /dev/null
@@ -1,21 +1,1 @@
-{*
- *  search_fileitem.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Search file item template
- *
- *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
- *}
-<tr class="{$class}">
-<td>
-{if $tree}
-<a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$hash}&hb={$hashbase}&f={$file}" class="list"><b>{$filename}</b></a>
-{else}
-<a href="{$SCRIPT_NAME}?p={$project}&a=blob&h={$hash}&hb={$hashbase}&f={$file}" class="list"><b>{$filename}</b></a>
-{foreach from=$matches item=line name=match}
-{if $smarty.foreach.match.first}<br />{/if}<span class="respectwhitespace">{$line}</span><br />
-{/foreach}
-{/if}
-</td>
-<td class="link">{if $tree}<a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$hash}&hb={$hashbase}&f={$file}">tree</a>{else}<a href="{$SCRIPT_NAME}?p={$project}&a=blob&h={$hash}&hb={$hashbase}&f={$file}">blob</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=history&h={$hashbase}&f={$file}">history</a>{/if}</td>
-</tr>
 

--- a/templates/search_footer.tpl
+++ /dev/null
@@ -1,12 +1,1 @@
-{*
- *  search_footer.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Search view footer template
- *
- *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
- *}
- {if $nextlink}
- <tr><td><a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}&pg={$nextpage}" title="Alt-n">next</a></td></tr>
- {/if}
- </table>
 

--- a/templates/search_header.tpl
+++ /dev/null
@@ -1,12 +1,1 @@
-{*
- *  search_header.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Search header template
- *
- *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
- *}
-<div>
-<a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$hash}" class="title">{$title}</a>
-</div>
-<table cellspacing="0">
 

--- a/templates/search_item.tpl
+++ /dev/null
@@ -1,19 +1,1 @@
-{*
- *  search_item.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Search view item template
- *
- *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
- *}
-<tr class="{$class}">
-<td title="{$agestringage}"><i>{$agestringdate}</i></td>
-<td><i>{$authorname}</i></td>
-<td><a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commit}" class="list" {if $title}title="{$title}"{/if}><b>{$title_short}</b>
-{foreach from=$matches item=line name=match}
-{if $smarty.foreach.match.first}<br />{/if}{$line}<br />
-{/foreach}
-</td>
-<td class="link"><a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commit}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$commit}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$committree}&hb={$commit}">tree</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=snapshot&h={$commit}">snapshot</a>
-</td>
-</tr>
 

--- a/templates/search_nav.tpl
+++ /dev/null
@@ -1,11 +1,1 @@
-{*
- *  search_nav.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Search view nav template
- *
- *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
- *}
-<div class="page_nav">
-<a href="{$SCRIPT_NAME}?p={$project}&a=summary">summary</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h={$hash}">shortlog</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=log&h={$hash}">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$hash}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$hash}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$treehash}&hb={$hash}">tree</a>
-<br />
 

--- a/templates/search_pagenav.tpl
+++ /dev/null
@@ -1,11 +1,1 @@
-{*
- *  search_pagenav.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Log view page nav template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- {if $firstlink}<a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}">{/if}first{if $firstlink}</a>{/if} &sdot; {if $prevlink}<a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}{if $prevpage}&pg={$prevpage}{/if}" accesskey="p" title="Alt-p">{/if}prev{if $prevlink}</a>{/if} &sdot; {if $nextlink}<a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}&pg={$nextpage}" accesskey="n" title="Alt-n">{/if}next{if $nextlink}</a>{/if}
- <br />
- </div>
 

--- /dev/null
+++ b/templates/searchfiles.tpl
@@ -1,1 +1,64 @@
+{*
+ *  searchfiles.tpl
+ *  gitphp: A PHP git repository browser
+ *  Component: Search files template
+ *
+ *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
+ *}
+{* Nav *}
+<div class="page_nav">
+  <a href="{$SCRIPT_NAME}?p={$project}&a=summary">summary</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h={$hash}">shortlog</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=log&h={$hash}">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$hash}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$hash}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$treehash}&hb={$hash}">tree</a>
+  <br />
+  {if $page > 0}
+    <a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}">first</a>
+  {else}
+    first
+  {/if}
+    &sdot; 
+  {if $page > 0}
+    <a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}{if $page > 1}&pg={$page-1}{/if}" accesskey="p" title="Alt-p">prev</a>
+  {else}
+    prev
+  {/if}
+    &sdot; 
+  {if $filesearchcount > 100}
+    <a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}&pg={$page+1}" accesskey="n" title="Alt-n">next</a>
+  {else}
+    next
+  {/if}
+  <br />
+</div>
+<div>
+  <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$hash}" class="title">{$title}</a>
+</div>
+<table cellspacing="0">
+  {* Print each match *}
+  {section name=match loop=$filesearchlines}
+    <tr class="{cycle values="light,dark"}">
+      <td>
+        {if $filesearchlines[match].tree}
+          <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$filesearchlines[match].hash}&hb={$hash}&f={$filesearchlines[match].file}" class="list"><b>{$filesearchlines[match].filename}</b></a>
+        {else}
+          <a href="{$SCRIPT_NAME}?p={$project}&a=blob&h={$filesearchlines[match].hash}&hb={$hash}&f={$filesearchlines[match].file}" class="list"><b>{$filesearchlines[match].filename}</b></a>
+          {foreach from=$filesearchlines[match].matches item=line name=match}
+            {if $smarty.foreach.match.first}<br />{/if}<span class="respectwhitespace">{$line}</span><br />
+          {/foreach}
+        {/if}
+      </td>
+      <td class="link">
+        {if $filesearchlines[match].tree}
+          <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$filesearchlines[match].hash}&hb={$hash}&f={$filesearchlines[match].file}">tree</a>
+        {else}
+          <a href="{$SCRIPT_NAME}?p={$project}&a=blob&h={$filesearchlines[match].hash}&hb={$hash}&f={$filesearchlines[match].file}">blob</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=history&h={$hash}&f={$filesearchlines[match].file}">history</a>
+        {/if}
+      </td>
+    </tr>
+  {/section}
 
+  {if $filesearchcount > 100}
+    <tr>
+      <td><a href="{$SCRIPT_NAME}?p={$project}&a=search&h={$hash}&s={$search}&st={$searchtype}&pg={$page+1}" title="Alt-n">next</a></td>
+    </tr>
+  {/if}
+</table>
+

--- /dev/null
+++ b/templates/shortlog.tpl
@@ -1,1 +1,56 @@
+{*
+ *  shortlog.tpl
+ *  gitphp: A PHP git repository browser
+ *  Component: Shortlog view template
+ *
+ *  Copyright (C) 2009 Christopher Han <xiphux@gmail.com>
+ *}
+ <div class="page_nav">
+   <a href="{$SCRIPT_NAME}?p={$project}&a=summary">summary</a> | shortlog | <a href="{$SCRIPT_NAME}?p={$project}&a=log&h={$hash}">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$hash}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$hash}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$hash}&hb={$hash}">tree</a>
+   <br />
+   {if ($hash != $head) || $page}
+     <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog">HEAD</a>
+   {else}
+     HEAD
+   {/if}
+     &sdot; 
+   {if $page > 0}
+     <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h={$hash}&pg={$page-1}" accesskey="p" title="Alt-p">prev</a>
+   {else}
+     prev
+   {/if}
+     &sdot; 
+   {if $revlistcount > 100}
+     <a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h={$hash}&pg={$page+1}" accesskey="n" title="Alt-n">next</a>
+   {else}
+     next
+   {/if}
+   <br />
+ </div>
+ <div>
+   <a href="{$SCRIPT_NAME}?p={$project}&a=summary" class="title">&nbsp;</a>
+ </div>
+ <table cellspacing="0">
+   {section name=log loop=$commitlines}
+     <tr class="{cycle values="light,dark"}">
+       <td title="{$commitlines[log].agestringage}"><i>{$commitlines[log].agestringdate}</i></td>
+       <td><i>{$commitlines[log].authorname}</i></td>
+       <td>
+         <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commitlines[log].commit}" class="list" {if $commitlines[log].title}title="{$commitlines[log].title}"{/if}><b>{$commitlines[log].title_short}
+         {if $commitlines[log].commitref}
+           <span class="tag">{$commitlines[log].commitref}</span>
+         {/if}
+         </b>
+       </td>
+       <td class="link"><a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commitlines[log].commit}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$commitlines[log].commit}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$commitlines[log].commit}&hb={$commitlines[log].commit}">tree</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=snapshot&h={$commitlines[log].commit}">snapshot</a>
+       </td>
+     </tr>
+   {/section}
 
+   {if $revlistcount > 100}
+     <tr>
+       <td><a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h={$hash}&pg={$page+1}" title="Alt-n">next</a></td>
+     </tr>
+   {/if}
+ </table>
+

--- a/templates/shortlog_footer.tpl
+++ /dev/null
@@ -1,12 +1,1 @@
-{*
- *  shortlog_footer.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Shortlog view footer template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- {if $nextlink}
- <tr><td><a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h={$hash}&pg={$nextpage}" title="Alt-n">next</a></td></tr>
- {/if}
- </table>
 

--- a/templates/shortlog_item.tpl
+++ /dev/null
@@ -1,21 +1,1 @@
-{*
- *  shortlog_item.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Shortlog view item template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <tr class="{$class}">
- <td title="{$agestringage}"><i>{$agestringdate}</i></td>
- <td><i>{$authorname}</i></td>
- <td>
- <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commit}" class="list" {if $title}title="{$title}"{/if}><b>{$title_short}
- {if $commitref}
- <span class="tag">{$commitref}</span>
- {/if}
- </b>
- </td>
- <td class="link"><a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$commit}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$commit}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$commit}&hb={$commit}">tree</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=snapshot&h={$commit}">snapshot</a>
- </td>
- </tr>
 

--- a/templates/shortlog_nav.tpl
+++ /dev/null
@@ -1,11 +1,1 @@
-{*
- *  shortlog_nav.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Shortlog view nav template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- <div class="page_nav">
- <a href="{$SCRIPT_NAME}?p={$project}&a=summary">summary</a> | shortlog | <a href="{$SCRIPT_NAME}?p={$project}&a=log&h={$hash}">log</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commit&h={$hash}">commit</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=commitdiff&h={$hash}">commitdiff</a> | <a href="{$SCRIPT_NAME}?p={$project}&a=tree&h={$hash}&hb={$hash}">tree</a>
- <br />
 

--- a/templates/shortlog_pagenav.tpl
+++ /dev/null
@@ -1,15 +1,1 @@
-{*
- *  shortlog_pagenav.tpl
- *  gitphp: A PHP git repository browser
- *  Component: Shortlog view page nav template
- *
- *  Copyright (C) 2006 Christopher Han <xiphux@gmail.com>
- *}
- {if $headlink}<a href="{$SCRIPT_NAME}?p={$project}&a=shortlog">{/if}HEAD{if $headlink}</a>{/if} &sdot; {if $prevlink}<a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h={$hash}&pg={$prevpage}" accesskey="p" title="Alt-p">{/if}prev{if $prevlink}</a>{/if} &sdot; {if $nextlink}<a href="{$SCRIPT_NAME}?p={$project}&a=shortlog&h={$hash}&pg={$nextpage}" accesskey="n" title="Alt-n">{/if}next{if $nextlink}</a>{/if}
- <br />
- </div>
- <div>
- <a href="{$SCRIPT_NAME}?p={$project}&a=summary" class="title">&nbsp;</a>
- </div>
- <table cellspacing="0">
 

comments