4927bb82cd1813041d05484871118fe7ca935238
[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 action_name = c.action.name
181                                                                         .replace("_"," ")
182                                                                         .replace("log", " log")
183                                                                         .replace("fancy","")
184                                                                         .replace("index","Repositories");
185                                 action_name_ucfirst = action_name FILTER ucfirst;
186                                 '<a href="#" id="actions_nav_link"><span>' _ action_name_ucfirst _ '</span></a>';
187                                 
188                         -%]
189
190                         </h1>
191         
192                         [%- 
193                                 SET actions_list = {
194                                                 "blob"          => 1,
195                                                 "raw"           => 1,
196                                                 "blame"         => 1,
197                                                 "history"       => 1,
198                                         };
199                                         
200                                 IF actions_list.$action_name;
201                                 '<ul id="actions_nav_list">';
202                                         FOREACH action IN actions_list;
203                                                 action_output = action.key FILTER ucfirst;
204                                                 NEXT IF action_output == action_name_ucfirst;   
205                                                 action = action.key;
206                                                 '<li><a href="/' _ c.req.path.replace(action_name, action) _ '">' _ action_output _ '</a></li>';
207                                         END;                    
208                                 '</ul>';
209                                 END;
210                         -%]
211                 
212         </div>
213 </div>
214
215         
216 <div id="content_holder">
217         <div id="content" class="sub_holder">
218                 <div id="content_inner">
219
220         
221
222  [% content %]
223
224  
225                 </div>
226         </div>
227 </div>
228
229 <div id="footer_holder">
230         <div id="footer" class="sub_holder">
231                 
232                 <p>[% IF Repository; Repository.description | html IF Repository.description != "Unnamed repository; edit this file to name it for gitweb." ; END; %]</p>
233         
234                 <a title="git homepage" href="http://git-scm.org"><img src="[% c.uri_for('/logo.png') %]" id="git_logo" alt="git" /></a>
235                 
236                 <div id="feeds">
237                 [% INCLUDE 'inc/footer_feeds.tt2' %]
238                 </div>
239         </div>
240
241 </div>
242
243
244
245 <div id="debug_holder">
246         <div id="debug" class="sub_holder">
247
248         <p>Debug:</p>
249         
250         [% USE Dumper %]
251         <pre>
252         [% Repository.path %]
253         [%# Dumper.dump(c.req.path) %]
254         </pre>
255         
256         </div>
257 </div>
258
259 </body>
260 </html>
261 [%- END -%]