sorted design of search
[catagits/Gitalist.git] / root / wrapper.tt2
1 [%- IF no_wrapper || template.name.match('\.(css|js|txt)'); content; ELSE; -%]
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5 <head>
6   <!-- git core binaries version [% git_version %] -->
7   <meta charset="utf-8" />
8   <meta name="generator" content="gitweb/[% version %] git/[% git_version %]" />
9   <meta name="robots" content="index, nofollow" />
10   <title>[%# FIXME - MING %][%-
11     title = BLOCK;
12       c.config.sitename;
13       IF Repository; ' - ' _ Repository.name | html; END;
14       IF c.action;   ' / ' _ c.action; END;
15       IF filename;   ' - ' _ filename | html; END;
16       IF c.action && c.action == 'tree'; '/'; END;
17     END;
18     title;
19   -%] (Gitalist)</title>
20   [% INCLUDE '_header_feeds.tt2' %]
21    
22         <link rel="stylesheet" type="text/css" href="[% c.uri_for('/core.css') %]" />
23         <link rel="shortcut icon" href="[% c.uri_for('/static/git-favicon.png') %]" type="image/png" />
24         <script type="text/javascript">
25         // FIXME: this should be in an external js file once c.uri_for works in js files
26         function compareDiffs(repo, path){
27                 var f = document.theform;
28                 if(!repo){
29                         var repo = "";
30                 }
31                 if(!path){
32                         var path = "";
33                 }
34                 var sha1,sha2;
35                 for(var i=0,len=f.length;i<len;i++){
36                         if(f[i].name == "sha1_a"){
37                                 if(f[i].checked){
38                                         sha1 = f[i].value;
39                                 }
40                         }
41                         if(f[i].name == "sha1_b"){
42                                 if(f[i].checked){
43                                         sha2 = f[i].value;
44                                 }
45                         }
46                 }
47                 document.location.href = "[% c.uri_for("/") %]" + repo + "/"+ sha1 + "/diff/" + sha2 + "/" + path;
48         }
49         // handles hover sub menus in IE
50         startList = function() {
51                 if (document.getElementById && document.getElementById("actions_nav_link")) {
52                         var navList = document.getElementById("actions_nav_list");
53                         var navLink = document.getElementById("actions_nav_link");
54                         // assign event handlers to each element
55                         navLink.onmouseover=function() {
56                                 setNavClass(navList);
57                         }
58                         navList.onmouseover=function() {
59                                 setNavClass(navList);
60                         }
61                         navList.onmouseout=function() {
62                                 navList.className=navList.className.replace(" actions_nav_list_over", "");
63                         }
64                         navLink.onmouseout=function() {
65                                 navList.className=navList.className.replace(" actions_nav_list_over", "");
66                         }
67                 }
68                 
69         }
70         function setNavClass(el){
71                 var link_el = document.getElementById("actions_nav_link");
72                 var offsetAry = findPos(link_el);
73                 // set position of list
74                 el.style.left = offsetAry[0]+"px";
75                 el.style.top = offsetAry[1]+30 +"px";
76                 el.className+=" actions_nav_list_over";
77         }
78         
79         function addLoadListener(fn){ 
80                 if (typeof window.addEventListener != 'undefined') { 
81                         window.addEventListener('load', fn, false); 
82                 }else if (typeof document.addEventListener != 'undefined'){ 
83                         document.addEventListener('load', fn, false); 
84                 }else if (typeof window.attachEvent != 'undefined'){ 
85                         window.attachEvent('onload', fn); 
86                 }else{ 
87                         var oldfn = window.onload; 
88                         if (typeof window.onload != 'function'){ 
89                                 window.onload = fn; 
90                         }else{ 
91                                 window.onload = function(){
92                                         oldfn();
93                                         fn();
94                                 }; 
95                         }
96                 }
97         }
98         function findPos(obj) {
99                 var curleft = curtop = 0;
100                 if (obj.offsetParent) {
101                 do {
102                         curleft += obj.offsetLeft;
103                         curtop += obj.offsetTop;
104                 } 
105                 while (obj = obj.offsetParent);
106                 return [curleft,curtop];
107                 }
108         }
109         addLoadListener(startList);
110         </script>
111 </head>
112
113 <body>
114
115 <div id="header_holder">
116         <div class="sub_holder">
117                 <div id="header">
118                         <a href="[% c.uri_for('/') %]" id="logo"><img src="[% c.uri_for('/static/i/logo.png') %]" alt="Gitalist" /></a>
119
120                         <div class="search">
121                         [% IF Repository; INCLUDE 'nav/search.tt2'; ELSE; %]
122                         
123                         <!--
124                         [%# FIXME - Search submits to blank(ish) page %]
125                         <form method="get" action="[% c.uri_for_action('/search') %]" enctype="application/x-www-form-urlencoded">
126                            <p class="projsearch">Search:
127                             <input type="text" name="s" value="[% search_text %]" />
128                            </p>
129                         </form>
130                         -->
131                         [% END %]
132                         </div>
133                 </div>
134                 
135                 
136                 <div id="nav_logs" [% 'style="visibility:hidden"' IF c.action.name == "index" %]>
137                 
138                         [% IF c.req.captures.size == 1; SET path = 'repository'; ELSE; SET path = 'ref'; END %]
139                         
140                         <ul>
141                                 <li[% ' class="selected"' IF c.action.name.match('tree') %]><a href="[% c.uri_for_action('/ref/tree', c.req.captures) || c.uri_for_action('/repository/tree', c.req.captures) %]" id="tree">Tree</a></li>
142
143                                 <li[% ' class="selected"' IF c.action.name.match('longlog') %]><a href="[% c.uri_for_action('/' _ path _ '/longlog', c.req.captures) %]" id="log_full">Long log</a></li>
144                                 
145                                 <li[% ' class="selected"' IF c.action.name.match('shortlog') %]><a href="[% c.uri_for_action('/' _ path _ '/shortlog', c.req.captures) %]" id="log_short">Short log</a></li>
146
147                                 
148                                 <li id="branch_selector">
149                                         [%# FIXME: convert to c.uri_for_action  #%]
150                                         
151                                         Branches 
152                                         <select onchange="document.location.href='/[% Repository.name %]/'+this.options[this.selectedIndex].text + '/shortlog';">
153                                                 <option value="">HEAD</option>
154                                         
155                                         [% FOREACH branch_head IN Repository.heads %]
156                                                 <option [% "selected" IF c.req.path.search(branch_head.name) %]>[% branch_head.name %]</option>
157                                         [% END %]
158                                         
159                                         </select>
160                                 </li>
161                                 
162                         </ul>
163                 </div>
164         
165                 <h1>
166                         <a href="[% c.uri_for('/') %]">Home</a>
167                 
168                         [%- IF Repository %]
169                 / <a href="[% c.uri_for_action('/repository/summary', [Repository.name]) %]/shortlog">[% Repository.name %]</a>
170                         [%- END %]
171                         /
172                         [%- IF Repository %]
173                                 [%# FIXME: output branch name in a nicer way!!!  #%]
174                                 [% FOREACH branch_head IN Repository.heads %]
175                                         [% IF c.req.path.search(branch_head.name) %]
176                                 <a href="[% c.uri_for_action('/repository/summary', [Repository.name]) %]/[% branch_head.name %]/shortlog">[% branch_head.name %]</a> /
177                                         [% END %]
178                                 [% END %]
179                         [%- END %]
180                         
181                         
182                         [%- 
183                                 SET actions_list = {
184                                                 "blob"          => 1,
185                                                 "raw"           => 1,
186                                                 "blame"         => 1,
187                                                 "history"       => 1,
188                                         };
189                                         
190                                 SET action_name = c.action.name
191                                                                         .replace("_"," ")
192                                                                         .replace("log", " log")
193                                                                         .replace("fancy","")
194                                                                         .replace("index","Repositories");
195                                 action_name_ucfirst = action_name FILTER ucfirst;
196                                 IF actions_list.$action_name;
197                                         '<a href="#" id="actions_nav_link"><span>' _ action_name_ucfirst _ '</span></a>';
198                                 ELSE;
199                                         action_name_ucfirst;
200                                 END;
201                                 
202                         -%]
203
204                         </h1>
205         
206                         [%- 
207                                 IF actions_list.$action_name;
208                                 '<ul id="actions_nav_list">';
209                                         FOREACH action IN actions_list;
210                                                 action_output = action.key FILTER ucfirst;
211                                                 NEXT IF action_output == action_name_ucfirst;   
212                                                 action = action.key;
213                                                 '<li><a href="/' _ c.req.path.replace(action_name, action) _ '">' _ action_output _ '</a></li>';
214                                         END;                    
215                                 '</ul>';
216                                 END;
217                         -%]
218                 
219         </div>
220 </div>
221
222         
223 <div id="content_holder">
224         <div id="content" class="sub_holder">
225                 <div id="content_inner">
226
227         
228
229  [% content %]
230
231  
232                 </div>
233         </div>
234 </div>
235
236 <div id="footer_holder">
237         <div id="footer" class="sub_holder">
238                 
239                 <p>[% IF Repository; Repository.description | html IF Repository.description != "Unnamed repository; edit this file to name it for gitweb." ; END; %]</p>
240         
241                 <a title="git homepage" href="http://git-scm.org"><img src="[% c.uri_for('/logo.png') %]" id="git_logo" alt="git" /></a>
242                 
243                 <div id="feeds">
244                 [% INCLUDE 'inc/footer_feeds.tt2' %]
245                 </div>
246         </div>
247
248 </div>
249
250
251
252 <div id="debug_holder">
253         <div id="debug" class="sub_holder">
254
255         <p>Debug:</p>
256         
257         [% USE Dumper %]
258         <pre>
259         [% Repository.path %]
260         [%# Dumper.dump(c.req.path) %]
261         </pre>
262         
263         </div>
264 </div>
265
266 </body>
267 </html>
268 [%- END -%]