7f482d1e6ce82c6a0d14ffb311f00544d4e0f22c
[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                                 <form method="get" action="[% c.uri_for_action('/search') %]" enctype="application/x-www-form-urlencoded">
124            <p class="projsearch">Search:
125             <input type="text" name="s" value="[% search_text %]" />
126            </p>
127           </form>
128                         [% END %]
129                         </div>
130                 </div>
131                 
132                 
133                 <div id="nav_logs" [% 'style="visibility:hidden"' IF c.action.name == "index" %]>
134                 
135                         [% IF c.req.captures.size == 1; SET path = 'repository'; ELSE; SET path = 'ref'; END %]
136                         
137                         <ul>
138                                 <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>
139
140                                 <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>
141                                 
142                                 <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>
143
144                                 
145                                 <li id="branch_selector">
146                                         [%# FIXME: convert to c.uri_for_action  #%]
147                                         
148                                         Branches 
149                                         <select onchange="document.location.href='/[% Repository.name %]/'+this.options[this.selectedIndex].text + '/shortlog';">
150                                                 <option value="">HEAD</option>
151                                         
152                                         [% FOREACH branch_head IN Repository.heads %]
153                                                 <option [% "selected" IF c.req.path.search(branch_head.name) %]>[% branch_head.name %]</option>
154                                         [% END %]
155                                         
156                                         </select>
157                                 </li>
158                                 
159                         </ul>
160                 </div>
161         
162                 <h1>
163                         <a href="[% c.uri_for('/') %]">Home</a>
164                 
165                         [%- IF Repository %]
166                 / <a href="[% c.uri_for_action('/repository/summary', [Repository.name]) %]/shortlog">[% Repository.name %]</a>
167                         [%- END %]
168                         /
169                         [%- IF Repository %]
170                                 [%# FIXME: output branch name in a nicer way!!!  #%]
171                                 [% FOREACH branch_head IN Repository.heads %]
172                                         [% IF c.req.path.search(branch_head.name) %]
173                                 <a href="[% c.uri_for_action('/repository/summary', [Repository.name]) %]/[% branch_head.name %]/shortlog">[% branch_head.name %]</a> /
174                                         [% END %]
175                                 [% END %]
176                         [%- END %]
177                         
178                         
179                         [%- 
180                                 SET actions_list = {
181                                                 "blob"          => 1,
182                                                 "raw"           => 1,
183                                                 "blame"         => 1,
184                                                 "history"       => 1,
185                                         };
186                                         
187                                 SET action_name = c.action.name
188                                                                         .replace("_"," ")
189                                                                         .replace("log", " log")
190                                                                         .replace("fancy","")
191                                                                         .replace("index","Repositories");
192                                 action_name_ucfirst = action_name FILTER ucfirst;
193                                 IF actions_list.$action_name;
194                                         '<a href="#" id="actions_nav_link"><span>' _ action_name_ucfirst _ '</span></a>';
195                                 ELSE;
196                                         action_name_ucfirst;
197                                 END;
198                                 
199                         -%]
200
201                         </h1>
202         
203                         [%- 
204                                 IF actions_list.$action_name;
205                                 '<ul id="actions_nav_list">';
206                                         FOREACH action IN actions_list;
207                                                 action_output = action.key FILTER ucfirst;
208                                                 NEXT IF action_output == action_name_ucfirst;   
209                                                 action = action.key;
210                                                 '<li><a href="/' _ c.req.path.replace(action_name, action) _ '">' _ action_output _ '</a></li>';
211                                         END;                    
212                                 '</ul>';
213                                 END;
214                         -%]
215                 
216         </div>
217 </div>
218
219         
220 <div id="content_holder">
221         <div id="content" class="sub_holder">
222                 <div id="content_inner">
223
224         
225
226  [% content %]
227
228  
229                 </div>
230         </div>
231 </div>
232
233 <div id="footer_holder">
234         <div id="footer" class="sub_holder">
235                 
236                 <p>[% IF Repository; Repository.description | html IF Repository.description != "Unnamed repository; edit this file to name it for gitweb." ; END; %]</p>
237         
238                 <a title="git homepage" href="http://git-scm.org"><img src="[% c.uri_for('/logo.png') %]" id="git_logo" alt="git" /></a>
239                 
240                 <div id="feeds">
241                 [% INCLUDE 'inc/footer_feeds.tt2' %]
242                 </div>
243         </div>
244
245 </div>
246
247
248
249 <div id="debug_holder">
250         <div id="debug" class="sub_holder">
251
252         <p>Debug:</p>
253         
254         [% USE Dumper %]
255         <pre>
256         [% Repository.path %]
257         [%# Dumper.dump(c.req.path) %]
258         </pre>
259         
260         </div>
261 </div>
262
263 </body>
264 </html>
265 [%- END -%]