# HG changeset patch # User Marcin Kuzminski # Date 2010-02-28 00:52:38 # Node ID bbaab7501c1aa6f4ec1671448d5de121aa977b77 # Parent 38235b614e3f685b26bf1c8841fbad3811d1049a Added custom templates, did over check of code to make it work. Added templating for add repository, and styling. App globals now handles our custom static files. (logo etc can be changed) diff --git a/development.ini b/development.ini --- a/development.ini +++ b/development.ini @@ -26,7 +26,7 @@ port = 5000 [app:main] use = egg:pylons_app full_stack = true -static_files = false +static_files = true lang=en cache_dir = %(here)s/data diff --git a/hgwebdir.config b/hgwebdir.config --- a/hgwebdir.config +++ b/hgwebdir.config @@ -11,9 +11,10 @@ push_ssl = false contact = develop@etelko.pl allow_archive = gz zip bz2 allow_push = * -style = gitweb +templates=/home/marcink/python_workspace/hg_app/pylons_app/templates/ +style = monoblue_custom pygments_style = trac -staticurl = /static +staticurl = /hg_static/ baseurl = / [paths] diff --git a/pylons_app/controllers/hg.py b/pylons_app/controllers/hg.py --- a/pylons_app/controllers/hg.py +++ b/pylons_app/controllers/hg.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- import logging -from pylons_app.lib.base import BaseController +from pylons_app.lib.base import BaseController, render from pylons import c, g, session, h, request from mako.template import Template from pprint import pprint @@ -20,27 +20,26 @@ class HgController(BaseController): return g.hgapp(request.environ, self.start_response) def add_repo(self, new_repo): - tmpl = u''' - - - %(msg)s%(new_repo)s!
- repos - - - ''' + c.staticurl = g.statics + #extra check it can be add since it's the command if new_repo == 'add': - return [tmpl % ({'new_repo':'', 'msg':'you basstard ! this repo is a command'})] + c.msg = 'you basstard ! this repo is a command' + c.new_repo = '' + return render('add.html') new_repo = new_repo.replace(" ", "_") new_repo = new_repo.replace("-", "_") try: self._create_repo(new_repo) + c.new_repo = new_repo + c.msg = 'added repo' except Exception as e: - return [tmpl % ({'new_repo':' Exception when adding: ' + new_repo, 'msg':str(e)})] + c.new_repo = 'Exception when adding: %s' % new_repo + c.msg = str(e) - return [tmpl % ({'new_repo':new_repo, 'msg':'added repo: '})] + return render('add.html') def _check_repo(self, repo_name): p = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) diff --git a/pylons_app/lib/app_globals.py b/pylons_app/lib/app_globals.py --- a/pylons_app/lib/app_globals.py +++ b/pylons_app/lib/app_globals.py @@ -2,7 +2,10 @@ #uncomment the following if you want to serve a single repo #from mercurial.hgweb.hgweb_mod import hgweb from mercurial.hgweb.hgwebdir_mod import hgwebdir +from mercurial import templater from mercurial.hgweb.request import wsgiapplication +from mercurial import ui, config +import os class Globals(object): """Globals acts as a container for objects available throughout the @@ -21,7 +24,40 @@ class Globals(object): #self.hgapp = self.make_web_app() self.hgapp = wsgiapplication(self.make_web_app) + def make_web_app(self): repos = "hgwebdir.config" - hgwebapp = hgwebdir(repos) + baseui = ui.ui() + cfg = config.config() + cfg.read(repos) + paths = cfg.items('paths') + self.check_repo_dir(paths) + self.set_statics(cfg) + + for k, v in cfg.items('web'): + baseui.setconfig('web', k, v) + #magic trick to make our custom template dir working + templater.path.append(cfg.get('web', 'templates', None)) + hgwebapp = hgwebdir(paths, baseui = baseui) return hgwebapp + + + def set_statics(self, cfg): + ''' + set's the statics for use in mako templates + @param cfg: + ''' + self.statics = cfg.get('web', 'staticurl', '/static') + if not self.statics.endswith('/'): + self.statics += '/' + + + def check_repo_dir(self, paths): + repos_path = paths[0][1].split('/') + if repos_path[-1] in ['*', '**']: + repos_path = repos_path[:-1] + if repos_path[0] != '/': + repos_path[0] = '/' + if not os.path.isdir(os.path.join(*repos_path)): + raise Exception('Not a valid repository in %s' % paths[0][1]) + diff --git a/pylons_app/public/hg_static/background.png b/pylons_app/public/hg_static/background.png new file mode 100644 index 0000000000000000000000000000000000000000..af8a0aa4eb5c4ab8e7e9ddc27756ce31e596f05a GIT binary patch literal 603 zc$@)S0;K(kP)@mjPuwX1dD! z2jIiS*~#nj!|x^&6{A~RM>SdLrQHf-n#`{K;4;91KkF6#6UA( zUylZ6*6$sr+yO3VW^SgmW=Dq%bQkRF(SSQhnJvwA`+6>HM)wX-?x{5Uz8jcXZ|1b5=MN#-k5ug`fWdhs)9}M&X(0T*?1@`r5U}iwwnL5hf zzy*}KsJWK%k4jN<4do+vRY0?wS-)2_GZ#>IrrJRN0-7+;e_&rhnHyKB?$TG{sjTLr p`&?GDaO07=nNCJk8ui;`z5wIw-7x^=I%NO=002ovPDHLkV1k9zAOZjY diff --git a/pylons_app/public/hg_static/coal-file.png b/pylons_app/public/hg_static/coal-file.png new file mode 100644 index 0000000000000000000000000000000000000000..7ecf4632e5233b4d71f0a1e97eaec7a80b4d0259 GIT binary patch literal 273 zc%17D@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Y)RhkE)4%c zaKYZ?lYt_f1s;*b3=G`DAk4@xYmNj^kiEpy*OmPS3kw4aZ&2HwGe9B964!_l=ltB< z)VvY~=c3falGGH1^30M91$R&1fbd2>aiF3cPZ!4!jq}L~3c?15BzSpw{}*cB+Ee+t zadY~4tE8zp85uwNxn=C@{?rEqT&PR=s`G+vj%~GAYkp47nGc_ydbeG=6x80%FaPfN z2Fdxo1`Tgy7v&sbGcb7+GZ_k>~l%gn=!eM_zb?Pc(E^>bP0 Hl+XkKh_YIj diff --git a/pylons_app/public/hg_static/coal-folder.png b/pylons_app/public/hg_static/coal-folder.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b8ecc0704aa319eacf4a39d5f8694d272a12cc GIT binary patch literal 284 zc%17D@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xa#^NA%Cx&(BWL^R}Y)RhkE)4%c zaKYZ?lYt_f1s;*b3=G`DAk4@xYmNj^kiEpy*OmPS3kw4a^H#fwr-4F}C9V-A&iT2y zsd*&~&PAz-C8;S2<(VZJ3hti10pX2&;y^{^o-U3d8t0RL{QqyS%xufJxV!swVrpt? za7pLw?fLWX0I{uJug1jg5*^TxzQs=C75n U^;-60I?xFWp00i_>zopr0OS^EmH+?% diff --git a/pylons_app/public/hg_static/excanvas.js b/pylons_app/public/hg_static/excanvas.js new file mode 100644 --- /dev/null +++ b/pylons_app/public/hg_static/excanvas.js @@ -0,0 +1,19 @@ +if(!window.CanvasRenderingContext2D){(function(){var I=Math,i=I.round,L=I.sin,M=I.cos,m=10,A=m/2,Q={init:function(a){var b=a||document;if(/MSIE/.test(navigator.userAgent)&&!window.opera){var c=this;b.attachEvent("onreadystatechange",function(){c.r(b)})}},r:function(a){if(a.readyState=="complete"){if(!a.namespaces["s"]){a.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml")}var b=a.createStyleSheet();b.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}"; +var c=a.getElementsByTagName("canvas");for(var d=0;d"){var d="/"+a.tagName,e;while((e=a.nextSibling)&&e.tagName!=d){e.removeNode()}if(e){e.removeNode()}}a.parentNode.replaceChild(c,a);return c},initElement:function(a){a=this.q(a);a.getContext=function(){if(this.l){return this.l}return this.l=new K(this)};a.attachEvent("onpropertychange",V);a.attachEvent("onresize", +W);var b=a.attributes;if(b.width&&b.width.specified){a.style.width=b.width.nodeValue+"px"}else{a.width=a.clientWidth}if(b.height&&b.height.specified){a.style.height=b.height.nodeValue+"px"}else{a.height=a.clientHeight}return a}};function V(a){var b=a.srcElement;switch(a.propertyName){case "width":b.style.width=b.attributes.width.nodeValue+"px";b.getContext().clearRect();break;case "height":b.style.height=b.attributes.height.nodeValue+"px";b.getContext().clearRect();break}}function W(a){var b=a.srcElement; +if(b.firstChild){b.firstChild.style.width=b.clientWidth+"px";b.firstChild.style.height=b.clientHeight+"px"}}Q.init();var R=[];for(var E=0;E<16;E++){for(var F=0;F<16;F++){R[E*16+F]=E.toString(16)+F.toString(16)}}function J(){return[[1,0,0],[0,1,0],[0,0,1]]}function G(a,b){var c=J();for(var d=0;d<3;d++){for(var e=0;e<3;e++){var g=0;for(var h=0;h<3;h++){g+=a[d][h]*b[h][e]}c[d][e]=g}}return c}function N(a,b){b.fillStyle=a.fillStyle;b.lineCap=a.lineCap;b.lineJoin=a.lineJoin;b.lineWidth=a.lineWidth;b.miterLimit= +a.miterLimit;b.shadowBlur=a.shadowBlur;b.shadowColor=a.shadowColor;b.shadowOffsetX=a.shadowOffsetX;b.shadowOffsetY=a.shadowOffsetY;b.strokeStyle=a.strokeStyle;b.d=a.d;b.e=a.e}function O(a){var b,c=1;a=String(a);if(a.substring(0,3)=="rgb"){var d=a.indexOf("(",3),e=a.indexOf(")",d+1),g=a.substring(d+1,e).split(",");b="#";for(var h=0;h<3;h++){b+=R[Number(g[h])]}if(g.length==4&&a.substr(3,1)=="a"){c=g[3]}}else{b=a}return[b,c]}function S(a){switch(a){case "butt":return"flat";case "round":return"round"; +case "square":default:return"square"}}function K(a){this.a=J();this.m=[];this.k=[];this.c=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=m*1;this.globalAlpha=1;this.canvas=a;var b=a.ownerDocument.createElement("div");b.style.width=a.clientWidth+"px";b.style.height=a.clientHeight+"px";b.style.overflow="hidden";b.style.position="absolute";a.appendChild(b);this.j=b;this.d=1;this.e=1}var j=K.prototype;j.clearRect=function(){this.j.innerHTML= +"";this.c=[]};j.beginPath=function(){this.c=[]};j.moveTo=function(a,b){this.c.push({type:"moveTo",x:a,y:b});this.f=a;this.g=b};j.lineTo=function(a,b){this.c.push({type:"lineTo",x:a,y:b});this.f=a;this.g=b};j.bezierCurveTo=function(a,b,c,d,e,g){this.c.push({type:"bezierCurveTo",cp1x:a,cp1y:b,cp2x:c,cp2y:d,x:e,y:g});this.f=e;this.g=g};j.quadraticCurveTo=function(a,b,c,d){var e=this.f+0.6666666666666666*(a-this.f),g=this.g+0.6666666666666666*(b-this.g),h=e+(c-this.f)/3,l=g+(d-this.g)/3;this.bezierCurveTo(e, +g,h,l,c,d)};j.arc=function(a,b,c,d,e,g){c*=m;var h=g?"at":"wa",l=a+M(d)*c-A,n=b+L(d)*c-A,o=a+M(e)*c-A,f=b+L(e)*c-A;if(l==o&&!g){l+=0.125}this.c.push({type:h,x:a,y:b,radius:c,xStart:l,yStart:n,xEnd:o,yEnd:f})};j.rect=function(a,b,c,d){this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath()};j.strokeRect=function(a,b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.stroke()};j.fillRect=function(a, +b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.fill()};j.createLinearGradient=function(a,b,c,d){var e=new H("gradient");return e};j.createRadialGradient=function(a,b,c,d,e,g){var h=new H("gradientradial");h.n=c;h.o=g;h.i.x=a;h.i.y=b;return h};j.drawImage=function(a,b){var c,d,e,g,h,l,n,o,f=a.runtimeStyle.width,k=a.runtimeStyle.height;a.runtimeStyle.width="auto";a.runtimeStyle.height="auto";var q=a.width,r=a.height;a.runtimeStyle.width= +f;a.runtimeStyle.height=k;if(arguments.length==3){c=arguments[1];d=arguments[2];h=(l=0);n=(e=q);o=(g=r)}else if(arguments.length==5){c=arguments[1];d=arguments[2];e=arguments[3];g=arguments[4];h=(l=0);n=q;o=r}else if(arguments.length==9){h=arguments[1];l=arguments[2];n=arguments[3];o=arguments[4];c=arguments[5];d=arguments[6];e=arguments[7];g=arguments[8]}else{throw"Invalid number of arguments";}var s=this.b(c,d),t=[],v=10,w=10;t.push(" ','","");this.j.insertAdjacentHTML("BeforeEnd",t.join(""))};j.stroke=function(a){var b=[],c=O(a?this.fillStyle:this.strokeStyle),d=c[0],e=c[1]*this.globalAlpha,g=10,h=10;b.push("n.x){n.x=k.x}if(l.y== +null||k.yn.y){n.y=k.y}}}b.push(' ">');if(typeof this.fillStyle=="object"){var v={x:"50%",y:"50%"},w=n.x-l.x,x=n.y-l.y,p=w>x?w:x;v.x=i(this.fillStyle.i.x/w*100+50)+"%";v.y=i(this.fillStyle.i.y/x*100+50)+"%";var y=[];if(this.fillStyle.p=="gradientradial"){var z=this.fillStyle.n/p*100,B=this.fillStyle.o/p*100-z}else{var z=0,B=100}var C={offset:null,color:null},D={offset:null,color:null};this.fillStyle.h.sort(function(T,U){return T.offset-U.offset});for(var o=0;oC.offset||C.offset==null){C.offset=u.offset;C.color=u.color}if(u.offset')}else if(a){b.push('')}else{b.push("')}b.push("");this.j.insertAdjacentHTML("beforeEnd",b.join(""));this.c=[]};j.fill=function(){this.stroke(true)};j.closePath=function(){this.c.push({type:"close"})};j.b=function(a,b){return{x:m*(a*this.a[0][0]+b*this.a[1][0]+this.a[2][0])-A,y:m*(a*this.a[0][1]+b*this.a[1][1]+this.a[2][1])-A}};j.save=function(){var a={};N(this,a); +this.k.push(a);this.m.push(this.a);this.a=G(J(),this.a)};j.restore=function(){N(this.k.pop(),this);this.a=this.m.pop()};j.translate=function(a,b){var c=[[1,0,0],[0,1,0],[a,b,1]];this.a=G(c,this.a)};j.rotate=function(a){var b=M(a),c=L(a),d=[[b,c,0],[-c,b,0],[0,0,1]];this.a=G(d,this.a)};j.scale=function(a,b){this.d*=a;this.e*=b;var c=[[a,0,0],[0,b,0],[0,0,1]];this.a=G(c,this.a)};j.clip=function(){};j.arcTo=function(){};j.createPattern=function(){return new P};function H(a){this.p=a;this.n=0;this.o= +0;this.h=[];this.i={x:0,y:0}}H.prototype.addColorStop=function(a,b){b=O(b);this.h.push({offset:1-a,color:b})};function P(){}G_vmlCanvasManager=Q;CanvasRenderingContext2D=K;CanvasGradient=H;CanvasPattern=P})()}; diff --git a/pylons_app/public/hg_static/graph.js b/pylons_app/public/hg_static/graph.js new file mode 100644 --- /dev/null +++ b/pylons_app/public/hg_static/graph.js @@ -0,0 +1,137 @@ +// branch_renderer.js - Rendering of branch DAGs on the client side +// +// Copyright 2008 Dirkjan Ochtman +// Copyright 2006 Alexander Schremmer +// +// derived from code written by Scott James Remnant +// Copyright 2005 Canonical Ltd. +// +// This software may be used and distributed according to the terms +// of the GNU General Public License, incorporated herein by reference. + +var colors = [ + [ 1.0, 0.0, 0.0 ], + [ 1.0, 1.0, 0.0 ], + [ 0.0, 1.0, 0.0 ], + [ 0.0, 1.0, 1.0 ], + [ 0.0, 0.0, 1.0 ], + [ 1.0, 0.0, 1.0 ] +]; + +function Graph() { + + this.canvas = document.getElementById('graph'); + if (navigator.userAgent.indexOf('MSIE') >= 0) this.canvas = window.G_vmlCanvasManager.initElement(this.canvas); + this.ctx = this.canvas.getContext('2d'); + this.ctx.strokeStyle = 'rgb(0, 0, 0)'; + this.ctx.fillStyle = 'rgb(0, 0, 0)'; + this.cur = [0, 0]; + this.line_width = 3; + this.bg = [0, 4]; + this.cell = [2, 0]; + this.columns = 0; + this.revlink = ''; + + this.scale = function(height) { + this.bg_height = height; + this.box_size = Math.floor(this.bg_height / 1.2); + this.cell_height = this.box_size; + } + + function colorPart(num) { + num *= 255 + num = num < 0 ? 0 : num; + num = num > 255 ? 255 : num; + var digits = Math.round(num).toString(16); + if (num < 16) { + return '0' + digits; + } else { + return digits; + } + } + + this.setColor = function(color, bg, fg) { + + // Set the colour. + // + // Picks a distinct colour based on an internal wheel; the bg + // parameter provides the value that should be assigned to the 'zero' + // colours and the fg parameter provides the multiplier that should be + // applied to the foreground colours. + + color %= colors.length; + var red = (colors[color][0] * fg) || bg; + var green = (colors[color][1] * fg) || bg; + var blue = (colors[color][2] * fg) || bg; + red = Math.round(red * 255); + green = Math.round(green * 255); + blue = Math.round(blue * 255); + var s = 'rgb(' + red + ', ' + green + ', ' + blue + ')'; + this.ctx.strokeStyle = s; + this.ctx.fillStyle = s; + return s; + + } + + this.render = function(data) { + + var backgrounds = ''; + var nodedata = ''; + + for (var i in data) { + + var parity = i % 2; + this.cell[1] += this.bg_height; + this.bg[1] += this.bg_height; + + var cur = data[i]; + var node = cur[1]; + var edges = cur[2]; + var fold = false; + + for (var j in edges) { + + line = edges[j]; + start = line[0]; + end = line[1]; + color = line[2]; + + if (end > this.columns || start > this.columns) { + this.columns += 1; + } + + if (start == this.columns && start > end) { + var fold = true; + } + + x0 = this.cell[0] + this.box_size * start + this.box_size / 2; + y0 = this.bg[1] - this.bg_height / 2; + x1 = this.cell[0] + this.box_size * end + this.box_size / 2; + y1 = this.bg[1] + this.bg_height / 2; + + this.edge(x0, y0, x1, y1, color); + + } + + // Draw the revision node in the right column + + column = node[0] + color = node[1] + + radius = this.box_size / 8; + x = this.cell[0] + this.box_size * column + this.box_size / 2; + y = this.bg[1] - this.bg_height / 2; + var add = this.vertex(x, y, color, parity, cur); + backgrounds += add[0]; + nodedata += add[1]; + + if (fold) this.columns -= 1; + + } + + document.getElementById('nodebgs').innerHTML += backgrounds; + document.getElementById('graphnodes').innerHTML += nodedata; + + } + +} diff --git a/pylons_app/public/hg_static/hgicon.png b/pylons_app/public/hg_static/hgicon.png new file mode 100644 index 0000000000000000000000000000000000000000..60effbc5e613d8c8a6f1418853ded6aa4e599671 GIT binary patch literal 792 zc$^(kYfREn6i21SXf9`cP+L~(LxoE}WNP6%Oc_ocI5pAbT$`_%X>2~rrlwJ%`9TvD z9n>0vq6n7!@i9=$2UMg&PRPnkMHC;)M-X)MZ1;E1`Q3BR`Q3ZyaWRq3SPv`;g>oiF z5y-H+94?F#;N`0)DJYZ!JuW&v!fLhJY&N^yesE+ES}d0B?d`q2J#c_oSXfy6xo9$( zfLU2t+1=eWo6UN?9{APO)tTv;jg5`1t*yDaIkie{Fc=`5nwnZ#TAG-cKoCTy(}6D$ zONNJsJ3BiODKa!P1Zi5W78079n;RP&xg4%qt?uvd9~&F%?(PO09313wxr|x{i^bye z`9P+nrHMo$3Yn6Zmp3pl00{Xs8Vy>A#p0Zt9Jo?hSxKkU8;>lS6fKcRAZ%!8AdyG{ zfuO#=zO}U#sudO%0^;%b%*@P;jEv&qVh~0o5~);bRaI3$KmZ(tgoKdEB!tDgxnGw*O;(^z zKhem}$$IcTGQ3D8bK1EdU{aJl{IDDt`7El-Jvr5lS9cs8DX;CQ`~JWW4Bso>C--;3?N1$D<)*MZWskjxMm#np+1TIm3SrxlxRW>i zy5na{Qchje+#-C__ZdeHc%k8oQ8`#&X7;eT592FfrG7q(*ayCPy9Sc@K5H5#^=?S4 zWxe`5#lyCFrtgPYSGjc$jr0GQ@O(AsMqu0cF^68<7fxBpJNXH#W40ye%_HmkYIq@v M7!gAdhNo5h2bj0NGXMYp diff --git a/pylons_app/public/hg_static/hglogo.png b/pylons_app/public/hg_static/hglogo.png new file mode 100644 index 0000000000000000000000000000000000000000..adc6e65d1a70dd63bfa6d0a73f33a8392377f6d4 GIT binary patch literal 4123 zc$@(n5ajQPP)003GD0ssI2f2KTx00006VoOIv0RI60 z0RN!9r;`8x570?OK~#9!?VNdBRn->9dzzA_mQwg>a0qj1Ff1@ZAwroH9GGG-2^A9z z1Hl170ri7gB8r(@aVQ65Fw06(lOCvG6eQ>q95N&5~seGcAr*Z;%#;DZnTbvq7l{TCrW{CztPaNR*@xbfFte_gq9 zrLL~-^y$+lPMl!H!wrKE$B!T9;<({T}VhHQ&>%aT%JCN+(zyF_VyLT@i)UO{rco4uBFJ3eVR3jq9zRQ;{Gi^aZfxwfOm-pU#?`39YzVpsI85tQW zwZV^EsFP%W6hd1xw*LlXIWVpIeg<0!X>1TaNUO= zey9{f0Ky$Rb_fSTbSe`L zVs+udg$@o5NOt2QT%%eesWX*n$F5zw1`HUGl9KZK@4p)hArbP%8*khwgh;~0ix>Ck z(E|-^EQD9DUQJ3$5(vpg6C*^p?%A`ackkY_XU|6K8wDY~->g})*hnF%=m|^=5_y=A zkkGw*_hZM783iFVciOaRWhu)D&JG3~Sb-{uK?c296EiKg( zA%uD9(j_F)_uqei`SN8AHOLpk!^1s1JUVyoynXw2cGMtkp-zR7Mi~eMs{F{K8HA!? zFDfdcn&&kP+V+x?lJn=!tKZ}2>j$m1ZryswkRik>4XY^;qV=(=W52a|W}*6rD6pZ)sluXR9( z_wWYJX_Ubr6-n9?#zBEWDN9q>$X2adMMXuiB#N=o?;2yU<7iaUUrr7G)s~joKu_ zb!*o_Q0j9XIB@x|)<>b1f_^Sdq1U`spV{2x&}+L-lOto4@>TfDj)J95_&(y>!Dv?1sGh>Z>Rz zdwcsXUAizi`Dtfo2O9|`NqT2zXRlwszU2pvScN47mzkLv3neBd{`ljMiV(&`$EY7k zkWLc3ix)3Kl`p^ivYVS5=_;==RaI4Pu5Q7>!2tmQ+%{* z@{p)FR)eT@8pJ>LFvI4}n+1xvxHyWoB81CRm#flM>ZcNC&YU4iYieqMhtzg*a+)-0 zQd1&x2Ybg@B-4vazvob#*;-=#X|nNBu>zf-@u} z1e(R4pv53|3I^iGcJ10hNGw5^=>d}MMvGz+@gh*nojX@4LI%9V-m~RwwxgpXiXkW{ z2w+UdzbjX+R482WC*c$t8fs^2_sT1;%$PA_>eQ+9%_PhZKm0Ie%ovynkszn;X2lvi zRasfd7pe6E1;M2>N`WNL=+L1vVrIZYH0kg*ZiHYJ!Xu;!0g@1{FC`(>i-uTfwJ^;S z_Tj^Zlb^kM^@40bNFSsSAwI`}r%s)M_F!fKfq>`w)vH%;qBj*TT(~g8eFUXQob)I} zNKu7OK!`Smr8;%$g#8p}Utiz-`}ZqVZ6+IJfseP3KuE|b)Y-s;r6^|e=FJoKlhuBH ze&yxmMtN>QU?5OMi;P>YUAv~!*I`$x1qh)>B@e*i5)g{^MX)IHFeWC3PG8OuEkZ~< zknUw=WzxG9ViXh~ zB!7mXCqlv!#Y8@6;dk7EKhZtSg3RBW&o(t%@rhwl0C?Yi`z@US+UV}P@5XYvdkO}v z!pV~-4RhAUK9!c10LM6`!1Nyu&5B{=&9wEzzvLb>>S`0(Mv^0c(H7hZUQ zmZi~`HS|G9He-;&Q$xsL+O%ovjk0_Yd)TM_2@Erc&gRIGBcjO^8A#(xNks0-SyWGi zY@tr4X{4yNwKcom)P!&YyP(l+<9sSxNl6JbCQ6?e;Dlf(Do;QCv@km-C&$^@nJe^k zhCxU+Lm}jVlJj=RfOf>k$H&vtv#BR1>^%_yKS|%h66r8OeQ*(HvNVN3*i4|JODXga zY*UG#8$xDb0fkRO2`3sta+UV?zWeUeko?jUa##@`O36ky^h*;13*l=`hsC1q(!voBl_a(E20NF>}65D>up)B|}$Pzl9zRh)DB^y#MHAs)y# zk`qP|)>8dwECvl4MB&vgp>#ut-3bW^+TRJn)~c#1VHtO_>oztv=H})ar*aI+8l)vS z23~0j9!P+JyQp}mGfcIxuwbvFqN3vB;u?M4q(4Hs^{^>nnAPZs1CpPNs;;gUmZ2Vr zD*(WIbZ&C4+qZ8YA<8|lzf=t5-Xkf1N3Sf}Tr)E>Arjr(++bP*zfVJ4O`I?hg!1=h z;A?SIrOtbB=}RxYG;!j@QKLp_=qVska>Rpi_N7tgtf{FXGKtUh^z@D$J7Od?knJE{ zpMU=OZMoZ&yxpdAwZNdIOP7*7>TYC@*=+TVhatI`nwt8|GtUGE2UE~B<|!;F6k?ru z2to~P1OiK}U%#GRK#{d?-(JAOlL$r+50Ax*7dKUYT8faYaB+6QKjIXSJtjCILs*fN zpxJ{n!G`zP2;vhf{r&wl`fdjINIfASi;Igffa=1ukSbTuWz6s8BGQOQDGZ_K;a>=M~)nc25hvn8WJJdn3R|l;QycVY}EaePd>@MzTPkb0|TwBtOg7i zfQvAca00emZEyu$A`k*;+_-Vfz^=Kvx>D}$zyE&eFL@q$?f`t<4OU|h;|*d=pIW>aE{$|hdmmK3J?K(DYnqyX3; z;n>*Npuix)o*Xghd)|i+9}XTL>|pQU=IUlU*w)6{#?H=e@ZiD7MO>uiJtYSDIcwG| zLe$pQRv6&z?Y&^Zf|QgLswjLTa-Plz_r^rWY}&XPDczbzMvPs=XAAJ-9(DdTypt7=(gd_@rf`W*A?x{Rl*^)EM8+O))qo#&W z#o_bk&nKmA8U|@hH{|E%H#u~2VS}V@bvWT)~y>Y486jJ4I9u<$SZzCc}mAy z;(U=CI(6#Qw{Kr0n7DrO46qqkyF3kwT+f95=J;DF8u(a`jG*g-Rf=A;cp zOjlG?(BnEdIIy;KAm6TCJ7hExgn#e3=N|F*9W+F}d-rCW%FD~?_qp=++i%k`uv6TL zL8x{v4jVQMwJj}*ahNDRj~+dmzKm{DJmC^d6C51OhhxW%@hz67V=gT%g?^Cl`XF4f zVueK0Ae5f$Aph;{?Zsy&Cnq{?>0AB!^#g-I7#<$3{xFAdc=OFSHDXLVLYfZ^E)@vn z4D{fG54H&5`Sa)15w2dndeERj;(++xd+$}RKaP%$%a$#ZBRqcmI5XfqV<5!CUAlB> z5kh)Ub%ZLFicVZ4TkF=X>+0&HZ;_%zqa5MRojc9V&E*ZA-U!Kmf}b>ILl-Vw_`m}X z7zJTjSs4gJ8itRL56NI=W=71&5pLbO71oinqJ9XOXVRoe4?p}c9VsAveSN!j?P?T+ zB_$q|1W;Zc0QCEb!cI|?+rQ=}u78)}O!Yfy+9p<;*=n)si`4$_UzdsG#1>}r%xZ95qf)jZ{ECFdJs((F|YVB zGc(i6%S(L5Eml@mWMk*fo!ho;YiVgI&VQq#qUO(^uRdX3ULNY?p@$v<5@{pOo#0_> zYim>vCh}VZ3SSiWhlYkyc-3c^Idf)gY^-1!J`TxwwD zE&i_olt;5i(bP|FJ9Oxf`s?(39p>O7Ue)PkDt3q2h=2JbgF8L`9fY?k!rT9UGrPUV ZzX9yYMs{m}{pkPz002ovPDHLkV1fy8=Q;oY diff --git a/pylons_app/public/hg_static/style-coal.css b/pylons_app/public/hg_static/style-coal.css new file mode 100644 --- /dev/null +++ b/pylons_app/public/hg_static/style-coal.css @@ -0,0 +1,265 @@ +body { + margin: 0; + padding: 0; + background: black url(background.png) repeat-x; + font-family: sans-serif; +} + +.container { + padding-right: 150px; +} + +.main { + position: relative; + background: white; + padding: 2em; + border-right: 15px solid black; + border-bottom: 15px solid black; +} + +#.main { + width: 98%; +} + +.overflow { + width: 100%; + overflow: auto; +} + +.menu { + background: #999; + padding: 10px; + width: 75px; + margin: 0; + font-size: 80%; + text-align: left; + position: fixed; + top: 27px; + left: auto; + right: 27px; +} + +#.menu { + position: absolute !important; + top:expression(eval(document.body.scrollTop + 27)); +} + +.menu ul { + list-style: none; + padding: 0; + margin: 10px 0 0 0; +} + +.menu li { + margin-bottom: 3px; + padding: 2px 4px; + background: white; + color: black; + font-weight: normal; +} + +.menu li.active { + background: black; + color: white; +} + +.menu img { + width: 75px; + height: 90px; + border: 0; +} + +.menu a { color: black; display: block; } + +.search { + position: absolute; + top: .7em; + right: 2em; +} + +form.search div#hint { + display: none; + position: absolute; + top: 40px; + right: 0px; + width: 190px; + padding: 5px; + background: #ffc; + font-size: 70%; + border: 1px solid yellow; + -moz-border-radius: 5px; /* this works only in camino/firefox */ + -webkit-border-radius: 5px; /* this is just for Safari */ +} + +form.search:hover div#hint { display: block; } + +a { text-decoration:none; } +.age { white-space:nowrap; } +.date { white-space:nowrap; } +.indexlinks { white-space:nowrap; } +.parity0 { background-color: #f0f0f0; } +.parity1 { background-color: white; } +.plusline { color: green; } +.minusline { color: #dc143c; } /* crimson */ +.atline { color: purple; } + +.navigate { + text-align: right; + font-size: 60%; + margin: 1em 0; +} + +.tag { + color: #999; + font-size: 70%; + font-weight: normal; + margin-left: .5em; + vertical-align: baseline; +} + +.branchhead { + color: #000; + font-size: 80%; + font-weight: normal; + margin-left: .5em; + vertical-align: baseline; +} + +ul#graphnodes .branchhead { + font-size: 75%; +} + +.branchname { + color: #000; + font-size: 60%; + font-weight: normal; + margin-left: .5em; + vertical-align: baseline; +} + +h3 .branchname { + font-size: 80%; +} + +/* Common */ +pre { margin: 0; } + +h2 { font-size: 120%; border-bottom: 1px solid #999; } +h2 a { color: #000; } +h3 { + margin-top: -.7em; + font-size: 100%; +} + +/* log and tags tables */ +.bigtable { + border-bottom: 1px solid #999; + border-collapse: collapse; + font-size: 90%; + width: 100%; + font-weight: normal; + text-align: left; +} + +.bigtable td { + vertical-align: top; +} + +.bigtable th { + padding: 1px 4px; + border-bottom: 1px solid #999; +} +.bigtable tr { border: none; } +.bigtable .age { width: 6em; } +.bigtable .author { width: 12em; } +.bigtable .description { } +.bigtable .node { width: 5em; font-family: monospace;} +.bigtable .lineno { width: 2em; text-align: right;} +.bigtable .lineno a { color: #999; font-size: smaller; font-family: monospace;} +.bigtable .permissions { width: 8em; text-align: left;} +.bigtable .size { width: 5em; text-align: right; } +.bigtable .annotate { text-align: right; } +.bigtable td.annotate { font-size: smaller; } +.bigtable td.source { font-size: inherit; } + +.source, .sourcefirst, .sourcelast { + font-family: monospace; + white-space: pre; + padding: 1px 4px; + font-size: 90%; +} +.sourcefirst { border-bottom: 1px solid #999; font-weight: bold; } +.sourcelast { border-top: 1px solid #999; } +.source a { color: #999; font-size: smaller; font-family: monospace;} +.bottomline { border-bottom: 1px solid #999; } + +.fileline { font-family: monospace; } +.fileline img { border: 0; } + +.tagEntry .closed { color: #99f; } + +/* Changeset entry */ +#changesetEntry { + border-collapse: collapse; + font-size: 90%; + width: 100%; + margin-bottom: 1em; +} + +#changesetEntry th { + padding: 1px 4px; + width: 4em; + text-align: right; + font-weight: normal; + color: #999; + margin-right: .5em; + vertical-align: top; +} + +div.description { + border-left: 3px solid #999; + margin: 1em 0 1em 0; + padding: .3em; +} + +/* Graph */ +div#wrapper { + position: relative; + border-top: 1px solid black; + border-bottom: 1px solid black; + margin: 0; + padding: 0; +} + +canvas { + position: absolute; + z-index: 5; + top: -0.7em; + margin: 0; +} + +ul#graphnodes { + position: absolute; + z-index: 10; + top: -1.0em; + list-style: none inside none; + padding: 0; +} + +ul#nodebgs { + list-style: none inside none; + padding: 0; + margin: 0; + top: -0.7em; +} + +ul#graphnodes li, ul#nodebgs li { + height: 39px; +} + +ul#graphnodes li .info { + display: block; + font-size: 70%; + position: relative; + top: -3px; +} diff --git a/pylons_app/public/hg_static/style-gitweb.css b/pylons_app/public/hg_static/style-gitweb.css new file mode 100644 --- /dev/null +++ b/pylons_app/public/hg_static/style-gitweb.css @@ -0,0 +1,123 @@ +body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; } +a { color:#0000cc; } +a:hover, a:visited, a:active { color:#880000; } +div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; } +div.page_header a:visited { color:#0000cc; } +div.page_header a:hover { color:#880000; } +div.page_nav { padding:8px; } +div.page_nav a:visited { color:#0000cc; } +div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px} +div.page_footer { padding:4px 8px; background-color: #d9d8d1; } +div.page_footer_text { float:left; color:#555555; font-style:italic; } +div.page_body { padding:8px; } +div.title, a.title { + display:block; padding:6px 8px; + font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000; +} +a.title:hover { background-color: #d9d8d1; } +div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; } +div.log_body { padding:8px 8px 8px 150px; } +.age { white-space:nowrap; } +span.age { position:relative; float:left; width:142px; font-style:italic; } +div.log_link { + padding:0px 8px; + font-size:10px; font-family:sans-serif; font-style:normal; + position:relative; float:left; width:136px; +} +div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; } +a.list { text-decoration:none; color:#000000; } +a.list:hover { text-decoration:underline; color:#880000; } +table { padding:8px 4px; } +th { padding:2px 5px; font-size:12px; text-align:left; } +tr.light:hover, .parity0:hover { background-color:#edece6; } +tr.dark, .parity1 { background-color:#f6f6f0; } +tr.dark:hover, .parity1:hover { background-color:#edece6; } +td { padding:2px 5px; font-size:12px; vertical-align:top; } +td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; } +td.indexlinks { white-space: nowrap; } +td.indexlinks a { + padding: 2px 5px; line-height: 10px; + border: 1px solid; + color: #ffffff; background-color: #7777bb; + border-color: #aaaadd #333366 #333366 #aaaadd; + font-weight: bold; text-align: center; text-decoration: none; + font-size: 10px; +} +td.indexlinks a:hover { background-color: #6666aa; } +div.pre { font-family:monospace; font-size:12px; white-space:pre; } +div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; } +div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; } +div.search { margin:4px 8px; position:absolute; top:56px; right:12px } +.linenr { color:#999999; text-decoration:none } +div.rss_logo { float: right; white-space: nowrap; } +div.rss_logo a { + padding:3px 6px; line-height:10px; + border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e; + color:#ffffff; background-color:#ff6600; + font-weight:bold; font-family:sans-serif; font-size:10px; + text-align:center; text-decoration:none; +} +div.rss_logo a:hover { background-color:#ee5500; } +pre { margin: 0; } +span.logtags span { + padding: 0px 4px; + font-size: 10px; + font-weight: normal; + border: 1px solid; + background-color: #ffaaff; + border-color: #ffccff #ff00ee #ff00ee #ffccff; +} +span.logtags span.tagtag { + background-color: #ffffaa; + border-color: #ffffcc #ffee00 #ffee00 #ffffcc; +} +span.logtags span.branchtag { + background-color: #aaffaa; + border-color: #ccffcc #00cc33 #00cc33 #ccffcc; +} +span.logtags span.inbranchtag { + background-color: #d5dde6; + border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4; +} + +/* Graph */ +div#wrapper { + position: relative; + margin: 0; + padding: 0; + margin-top: 3px; +} + +canvas { + position: absolute; + z-index: 5; + top: -0.9em; + margin: 0; +} + +ul#nodebgs { + list-style: none inside none; + padding: 0; + margin: 0; + top: -0.7em; +} + +ul#graphnodes li, ul#nodebgs li { + height: 39px; +} + +ul#graphnodes { + position: absolute; + z-index: 10; + top: -0.8em; + list-style: none inside none; + padding: 0; +} + +ul#graphnodes li .info { + display: block; + font-size: 100%; + position: relative; + top: -3px; + font-style: italic; +} diff --git a/pylons_app/public/hg_static/style-monoblue.css b/pylons_app/public/hg_static/style-monoblue.css new file mode 100644 --- /dev/null +++ b/pylons_app/public/hg_static/style-monoblue.css @@ -0,0 +1,472 @@ +/*** Initial Settings ***/ +* { + margin: 0; + padding: 0; + font-weight: normal; + font-style: normal; +} + +html { + font-size: 100%; + font-family: sans-serif; +} + +body { + font-size: 77%; + margin: 15px 50px; + background: #4B4B4C; +} + +a { + color:#0000cc; + text-decoration: none; +} +/*** end of Initial Settings ***/ + + +/** common settings **/ +div#container { + background: #FFFFFF; + position: relative; + color: #666; +} + +div.page-header { + padding: 50px 20px 0; + background: #006699 top left repeat-x; + position: relative; +} + div.page-header h1 { + margin: 10px 0 30px; + font-size: 1.8em; + font-weight: bold; + font-family: osaka,'MS P Gothic', Georgia, serif; + letter-spacing: 1px; + color: #DDD; + } + div.page-header h1 a { + font-weight: bold; + color: #FFF; + } + div.page-header a { + text-decoration: none; + } + + div.page-header form { + position: absolute; + margin-bottom: 2px; + bottom: 0; + right: 20px; + } + div.page-header form label { + color: #DDD; + } + div.page-header form input { + padding: 2px; + border: solid 1px #DDD; + } + div.page-header form dl { + overflow: hidden; + } + div.page-header form dl dt { + font-size: 1.2em; + } + div.page-header form dl dt, + div.page-header form dl dd { + margin: 0 0 0 5px; + float: left; + height: 24px; + line-height: 20px; + } + + ul.page-nav { + margin: 10px 0 0 0; + list-style-type: none; + overflow: hidden; + width: 800px; + } + ul.page-nav li { + margin: 0 2px 0 0; + float: left; + width: 80px; + height: 24px; + font-size: 1.1em; + line-height: 24px; + text-align: center; + } + ul.page-nav li.current { + background: #FFF; + } + ul.page-nav li a { + height: 24px; + color: #666; + background: #DDD; + display: block; + text-decoration: none; + } + ul.page-nav li a:hover { + color:#333; + background: #FFF; + } + +ul.submenu { + margin: 10px 0 -10px 20px; + list-style-type: none; +} +ul.submenu li { + margin: 0 10px 0 0; + font-size: 1.2em; + display: inline; +} + +h2 { + margin: 20px 0 10px; + height: 30px; + line-height: 30px; + text-indent: 20px; + background: #FFF; + font-size: 1.2em; + border-top: dotted 1px #D5E1E6; + font-weight: bold; +} +h2.no-link { + color:#006699; +} +h2.no-border { + color: #FFF; + background: #006699; + border: 0; +} +h2 a { + font-weight:bold; + color:#006699; +} + +div.page-path { + text-align: right; + padding: 20px 30px 10px 0; + border:solid #d9d8d1; + border-width:0px 0px 1px; + font-size: 1.2em; +} + +div.page-footer { + margin: 50px 0 0; + position: relative; +} + div.page-footer p { + position: relative; + left: 20px; + bottom: 5px; + font-size: 1.2em; + } + + ul.rss-logo { + position: absolute; + top: -10px; + right: 20px; + height: 20px; + list-style-type: none; + } + ul.rss-logo li { + display: inline; + } + ul.rss-logo li a { + padding: 3px 6px; + line-height: 10px; + border:1px solid; + border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e; + color:#ffffff; + background-color:#ff6600; + font-weight:bold; + font-family:sans-serif; + font-size:10px; + text-align:center; + text-decoration:none; + } + div.rss-logo li a:hover { + background-color:#ee5500; + } + +p.normal { + margin: 20px 0 20px 30px; + font-size: 1.2em; +} + +table { + margin: 10px 0 0 20px; + width: 95%; + border-collapse: collapse; +} +table tr td { + font-size: 1.1em; +} +table tr td.nowrap { + white-space: nowrap; +} +/* +table tr.parity0:hover, +table tr.parity1:hover { + background: #D5E1E6; +} +*/ +table tr.parity0 { + background: #F1F6F7; +} +table tr.parity1 { + background: #FFFFFF; +} +table tr td { + padding: 5px 5px; +} +table.annotated tr td { + padding: 0px 5px; +} + +span.logtags span { + padding: 2px 6px; + font-weight: normal; + font-size: 11px; + border: 1px solid; + background-color: #ffaaff; + border-color: #ffccff #ff00ee #ff00ee #ffccff; +} +span.logtags span.tagtag { + background-color: #ffffaa; + border-color: #ffffcc #ffee00 #ffee00 #ffffcc; +} +span.logtags span.branchtag { + background-color: #aaffaa; + border-color: #ccffcc #00cc33 #00cc33 #ccffcc; +} +span.logtags span.inbranchtag { + background-color: #d5dde6; + border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4; +} + +div.diff pre { + margin: 10px 0 0 0; +} +div.diff pre span { + font-family: monospace; + white-space: pre; + font-size: 1.2em; + padding: 3px 0; +} +td.source { + white-space: pre; + font-family: monospace; + margin: 10px 30px 0; + font-size: 1.2em; + font-family: monospace; +} + div.source div.parity0, + div.source div.parity1 { + padding: 1px; + font-size: 1.2em; + } + div.source div.parity0 { + background: #F1F6F7; + } + div.source div.parity1 { + background: #FFFFFF; + } +div.parity0:hover, +div.parity1:hover { + background: #D5E1E6; +} +.linenr { + color: #999; + text-align: right; +} +.lineno { + text-align: right; +} +.lineno a { + color: #999; +} +td.linenr { + width: 60px; +} + +div#powered-by { + position: absolute; + width: 75px; + top: 15px; + right: 20px; + font-size: 1.2em; +} +div#powered-by a { + color: #EEE; + text-decoration: none; +} +div#powered-by a:hover { + text-decoration: underline; +} +/* +div#monoblue-corner-top-left { + position: absolute; + top: 0; + left: 0; + width: 10px; + height: 10px; + background: url(./monoblue-corner.png) top left no-repeat !important; + background: none; +} +div#monoblue-corner-top-right { + position: absolute; + top: 0; + right: 0; + width: 10px; + height: 10px; + background: url(./monoblue-corner.png) top right no-repeat !important; + background: none; +} +div#monoblue-corner-bottom-left { + position: absolute; + bottom: 0; + left: 0; + width: 10px; + height: 10px; + background: url(./monoblue-corner.png) bottom left no-repeat !important; + background: none; +} +div#monoblue-corner-bottom-right { + position: absolute; + bottom: 0; + right: 0; + width: 10px; + height: 10px; + background: url(./monoblue-corner.png) bottom right no-repeat !important; + background: none; +} +*/ +/** end of common settings **/ + +/** summary **/ +dl.overview { + margin: 0 0 0 30px; + font-size: 1.1em; + overflow: hidden; +} + dl.overview dt, + dl.overview dd { + margin: 5px 0; + float: left; + } + dl.overview dt { + clear: left; + font-weight: bold; + width: 150px; + } +/** end of summary **/ + +/** chagelog **/ +h3.changelog { + margin: 20px 0 5px 30px; + padding: 0 0 2px; + font-size: 1.4em; + border-bottom: dotted 1px #D5E1E6; +} +ul.changelog-entry { + margin: 0 0 10px 30px; + list-style-type: none; + position: relative; +} +ul.changelog-entry li span.revdate { + font-size: 1.1em; +} +ul.changelog-entry li.age { + position: absolute; + top: -25px; + right: 10px; + font-size: 1.4em; + color: #CCC; + font-weight: bold; + font-style: italic; +} +ul.changelog-entry li span.name { + font-size: 1.2em; + font-weight: bold; +} +ul.changelog-entry li.description { + margin: 10px 0 0; + font-size: 1.1em; +} +/** end of changelog **/ + +/** file **/ +p.files { + margin: 0 0 0 20px; + font-size: 2.0em; + font-weight: bold; +} +/** end of file **/ + +/** changeset **/ +h3.changeset { + margin: 20px 0 5px 20px; + padding: 0 0 2px; + font-size: 1.6em; + border-bottom: dotted 1px #D5E1E6; +} +p.changeset-age { + position: relative; +} +p.changeset-age span { + position: absolute; + top: -25px; + right: 10px; + font-size: 1.4em; + color: #CCC; + font-weight: bold; + font-style: italic; +} +p.description { + margin: 10px 30px 0 30px; + padding: 10px; + border: solid 1px #CCC; + font-size: 1.2em; +} +/** end of changeset **/ + +/** canvas **/ +div#wrapper { + position: relative; + font-size: 1.2em; +} + +canvas { + position: absolute; + z-index: 5; + top: -0.7em; +} + +ul#nodebgs li.parity0 { + background: #F1F6F7; +} + +ul#nodebgs li.parity1 { + background: #FFFFFF; +} + +ul#graphnodes { + position: absolute; + z-index: 10; + top: 7px; + list-style: none inside none; +} + +ul#nodebgs { + list-style: none inside none; +} + +ul#graphnodes li, ul#nodebgs li { + height: 39px; +} + +ul#graphnodes li .info { + display: block; + position: relative; +} +/** end of canvas **/ diff --git a/pylons_app/public/hg_static/style-monoblue_custom.css b/pylons_app/public/hg_static/style-monoblue_custom.css new file mode 100644 --- /dev/null +++ b/pylons_app/public/hg_static/style-monoblue_custom.css @@ -0,0 +1,472 @@ +/*** Initial Settings ***/ +* { + margin: 0; + padding: 0; + font-weight: normal; + font-style: normal; +} + +html { + font-size: 100%; + font-family: sans-serif; +} + +body { + font-size: 77%; + margin: 15px 50px; + background: #4B4B4C; +} + +a { + color:#0000cc; + text-decoration: none; +} +/*** end of Initial Settings ***/ + + +/** common settings **/ +div#container { + background: #FFFFFF; + position: relative; + color: #666; +} + +div.page-header { + padding: 50px 20px 0; + background: #006699 top left repeat-x; + position: relative; +} + div.page-header h1 { + margin: 10px 0 30px; + font-size: 1.8em; + font-weight: bold; + font-family: osaka,'MS P Gothic', Georgia, serif; + letter-spacing: 1px; + color: #DDD; + } + div.page-header h1 a { + font-weight: bold; + color: #FFF; + } + div.page-header a { + text-decoration: none; + } + + div.page-header form { + position: absolute; + margin-bottom: 2px; + bottom: 0; + right: 20px; + } + div.page-header form label { + color: #DDD; + } + div.page-header form input { + padding: 2px; + border: solid 1px #DDD; + } + div.page-header form dl { + overflow: hidden; + } + div.page-header form dl dt { + font-size: 1.2em; + } + div.page-header form dl dt, + div.page-header form dl dd { + margin: 0 0 0 5px; + float: left; + height: 24px; + line-height: 20px; + } + + ul.page-nav { + margin: 10px 0 0 0; + list-style-type: none; + overflow: hidden; + width: 800px; + } + ul.page-nav li { + margin: 0 2px 0 0; + float: left; + width: 80px; + height: 24px; + font-size: 1.1em; + line-height: 24px; + text-align: center; + } + ul.page-nav li.current { + background: #FFF; + } + ul.page-nav li a { + height: 24px; + color: #666; + background: #DDD; + display: block; + text-decoration: none; + } + ul.page-nav li a:hover { + color:#333; + background: #FFF; + } + +ul.submenu { + margin: 10px 0 -10px 20px; + list-style-type: none; +} +ul.submenu li { + margin: 0 10px 0 0; + font-size: 1.2em; + display: inline; +} + +h2 { + margin: 20px 0 10px; + height: 30px; + line-height: 30px; + text-indent: 20px; + background: #FFF; + font-size: 1.2em; + border-top: dotted 1px #D5E1E6; + font-weight: bold; +} +h2.no-link { + color:#006699; +} +h2.no-border { + color: #FFF; + background: #006699; + border: 0; +} +h2 a { + font-weight:bold; + color:#006699; +} + +div.page-path { + text-align: right; + padding: 20px 30px 10px 0; + border:solid #d9d8d1; + border-width:0px 0px 1px; + font-size: 1.2em; +} + +div.page-footer { + margin: 50px 0 0; + position: relative; +} + div.page-footer p { + position: relative; + left: 20px; + bottom: 5px; + font-size: 1.2em; + } + + ul.rss-logo { + position: absolute; + top: -10px; + right: 20px; + height: 20px; + list-style-type: none; + } + ul.rss-logo li { + display: inline; + } + ul.rss-logo li a { + padding: 3px 6px; + line-height: 10px; + border:1px solid; + border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e; + color:#ffffff; + background-color:#ff6600; + font-weight:bold; + font-family:sans-serif; + font-size:10px; + text-align:center; + text-decoration:none; + } + div.rss-logo li a:hover { + background-color:#ee5500; + } + +p.normal { + margin: 20px 0 20px 30px; + font-size: 1.2em; +} + +table { + margin: 10px 0 0 20px; + width: 95%; + border-collapse: collapse; +} +table tr td { + font-size: 1.1em; +} +table tr td.nowrap { + white-space: nowrap; +} +/* +table tr.parity0:hover, +table tr.parity1:hover { + background: #D5E1E6; +} +*/ +table tr.parity0 { + background: #F1F6F7; +} +table tr.parity1 { + background: #FFFFFF; +} +table tr td { + padding: 5px 5px; +} +table.annotated tr td { + padding: 0px 5px; +} + +span.logtags span { + padding: 2px 6px; + font-weight: normal; + font-size: 11px; + border: 1px solid; + background-color: #ffaaff; + border-color: #ffccff #ff00ee #ff00ee #ffccff; +} +span.logtags span.tagtag { + background-color: #ffffaa; + border-color: #ffffcc #ffee00 #ffee00 #ffffcc; +} +span.logtags span.branchtag { + background-color: #aaffaa; + border-color: #ccffcc #00cc33 #00cc33 #ccffcc; +} +span.logtags span.inbranchtag { + background-color: #d5dde6; + border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4; +} + +div.diff pre { + margin: 10px 0 0 0; +} +div.diff pre span { + font-family: monospace; + white-space: pre; + font-size: 1.2em; + padding: 3px 0; +} +td.source { + white-space: pre; + font-family: monospace; + margin: 10px 30px 0; + font-size: 1.2em; + font-family: monospace; +} + div.source div.parity0, + div.source div.parity1 { + padding: 1px; + font-size: 1.2em; + } + div.source div.parity0 { + background: #F1F6F7; + } + div.source div.parity1 { + background: #FFFFFF; + } +div.parity0:hover, +div.parity1:hover { + background: #D5E1E6; +} +.linenr { + color: #999; + text-align: right; +} +.lineno { + text-align: right; +} +.lineno a { + color: #999; +} +td.linenr { + width: 60px; +} + +div#powered-by { + position: absolute; + width: 75px; + top: 15px; + right: 20px; + font-size: 1.2em; +} +div#powered-by a { + color: #EEE; + text-decoration: none; +} +div#powered-by a:hover { + text-decoration: underline; +} +/* +div#monoblue-corner-top-left { + position: absolute; + top: 0; + left: 0; + width: 10px; + height: 10px; + background: url(./monoblue-corner.png) top left no-repeat !important; + background: none; +} +div#monoblue-corner-top-right { + position: absolute; + top: 0; + right: 0; + width: 10px; + height: 10px; + background: url(./monoblue-corner.png) top right no-repeat !important; + background: none; +} +div#monoblue-corner-bottom-left { + position: absolute; + bottom: 0; + left: 0; + width: 10px; + height: 10px; + background: url(./monoblue-corner.png) bottom left no-repeat !important; + background: none; +} +div#monoblue-corner-bottom-right { + position: absolute; + bottom: 0; + right: 0; + width: 10px; + height: 10px; + background: url(./monoblue-corner.png) bottom right no-repeat !important; + background: none; +} +*/ +/** end of common settings **/ + +/** summary **/ +dl.overview { + margin: 0 0 0 30px; + font-size: 1.1em; + overflow: hidden; +} + dl.overview dt, + dl.overview dd { + margin: 5px 0; + float: left; + } + dl.overview dt { + clear: left; + font-weight: bold; + width: 150px; + } +/** end of summary **/ + +/** chagelog **/ +h3.changelog { + margin: 20px 0 5px 30px; + padding: 0 0 2px; + font-size: 1.4em; + border-bottom: dotted 1px #D5E1E6; +} +ul.changelog-entry { + margin: 0 0 10px 30px; + list-style-type: none; + position: relative; +} +ul.changelog-entry li span.revdate { + font-size: 1.1em; +} +ul.changelog-entry li.age { + position: absolute; + top: -25px; + right: 10px; + font-size: 1.4em; + color: #CCC; + font-weight: bold; + font-style: italic; +} +ul.changelog-entry li span.name { + font-size: 1.2em; + font-weight: bold; +} +ul.changelog-entry li.description { + margin: 10px 0 0; + font-size: 1.1em; +} +/** end of changelog **/ + +/** file **/ +p.files { + margin: 0 0 0 20px; + font-size: 2.0em; + font-weight: bold; +} +/** end of file **/ + +/** changeset **/ +h3.changeset { + margin: 20px 0 5px 20px; + padding: 0 0 2px; + font-size: 1.6em; + border-bottom: dotted 1px #D5E1E6; +} +p.changeset-age { + position: relative; +} +p.changeset-age span { + position: absolute; + top: -25px; + right: 10px; + font-size: 1.4em; + color: #CCC; + font-weight: bold; + font-style: italic; +} +p.description { + margin: 10px 30px 0 30px; + padding: 10px; + border: solid 1px #CCC; + font-size: 1.2em; +} +/** end of changeset **/ + +/** canvas **/ +div#wrapper { + position: relative; + font-size: 1.2em; +} + +canvas { + position: absolute; + z-index: 5; + top: -0.7em; +} + +ul#nodebgs li.parity0 { + background: #F1F6F7; +} + +ul#nodebgs li.parity1 { + background: #FFFFFF; +} + +ul#graphnodes { + position: absolute; + z-index: 10; + top: 7px; + list-style: none inside none; +} + +ul#nodebgs { + list-style: none inside none; +} + +ul#graphnodes li, ul#nodebgs li { + height: 39px; +} + +ul#graphnodes li .info { + display: block; + position: relative; +} +/** end of canvas **/ diff --git a/pylons_app/public/hg_static/style-paper.css b/pylons_app/public/hg_static/style-paper.css new file mode 100644 --- /dev/null +++ b/pylons_app/public/hg_static/style-paper.css @@ -0,0 +1,254 @@ +body { + margin: 0; + padding: 0; + background: white; + font-family: sans-serif; +} + +.container { + padding-left: 115px; +} + +.main { + position: relative; + background: white; + padding: 2em 2em 2em 0; +} + +#.main { + width: 98%; +} + +.overflow { + width: 100%; + overflow: auto; +} + +.menu { + width: 90px; + margin: 0; + font-size: 80%; + text-align: left; + position: absolute; + top: 20px; + left: 20px; + right: auto; +} + +.menu ul { + list-style: none; + padding: 0; + margin: 10px 0 0 0; + border-left: 2px solid #999; +} + +.menu li { + margin-bottom: 3px; + padding: 2px 4px; + background: white; + color: black; + font-weight: normal; +} + +.menu li.active { + font-weight: bold; +} + +.menu img { + width: 75px; + height: 90px; + border: 0; +} + +.menu a { color: black; display: block; } + +.search { + position: absolute; + top: .7em; + right: 2em; +} + +form.search div#hint { + display: none; + position: absolute; + top: 40px; + right: 0px; + width: 190px; + padding: 5px; + background: #ffc; + font-size: 70%; + border: 1px solid yellow; + -moz-border-radius: 5px; /* this works only in camino/firefox */ + -webkit-border-radius: 5px; /* this is just for Safari */ +} + +form.search:hover div#hint { display: block; } + +a { text-decoration:none; } +.age { white-space:nowrap; } +.date { white-space:nowrap; } +.indexlinks { white-space:nowrap; } +.parity0 { background-color: #f0f0f0; } +.parity1 { background-color: white; } +.plusline { color: green; } +.minusline { color: #dc143c; } /* crimson */ +.atline { color: purple; } + +.navigate { + text-align: right; + font-size: 60%; + margin: 1em 0; +} + +.tag { + color: #999; + font-size: 70%; + font-weight: normal; + margin-left: .5em; + vertical-align: baseline; +} + +.branchhead { + color: #000; + font-size: 80%; + font-weight: normal; + margin-left: .5em; + vertical-align: baseline; +} + +ul#graphnodes .branchhead { + font-size: 75%; +} + +.branchname { + color: #000; + font-size: 60%; + font-weight: normal; + margin-left: .5em; + vertical-align: baseline; +} + +h3 .branchname { + font-size: 80%; +} + +/* Common */ +pre { margin: 0; } + +h2 { font-size: 120%; border-bottom: 1px solid #999; } +h2 a { color: #000; } +h3 { + margin-top: -.7em; + font-size: 100%; +} + +/* log and tags tables */ +.bigtable { + border-bottom: 1px solid #999; + border-collapse: collapse; + font-size: 90%; + width: 100%; + font-weight: normal; + text-align: left; +} + +.bigtable td { + vertical-align: top; +} + +.bigtable th { + padding: 1px 4px; + border-bottom: 1px solid #999; +} +.bigtable tr { border: none; } +.bigtable .age { width: 7em; } +.bigtable .author { width: 12em; } +.bigtable .description { } +.bigtable .node { width: 5em; font-family: monospace;} +.bigtable .permissions { width: 8em; text-align: left;} +.bigtable .size { width: 5em; text-align: right; } +.bigtable .annotate { text-align: right; } +.bigtable td.annotate { font-size: smaller; } +.bigtable td.source { font-size: inherit; } + +.source, .sourcefirst, .sourcelast { + font-family: monospace; + white-space: pre; + padding: 1px 4px; + font-size: 90%; +} +.sourcefirst { border-bottom: 1px solid #999; font-weight: bold; } +.sourcelast { border-top: 1px solid #999; } +.source a { color: #999; font-size: smaller; font-family: monospace;} +.bottomline { border-bottom: 1px solid #999; } + +.fileline { font-family: monospace; } +.fileline img { border: 0; } + +.tagEntry .closed { color: #99f; } + +/* Changeset entry */ +#changesetEntry { + border-collapse: collapse; + font-size: 90%; + width: 100%; + margin-bottom: 1em; +} + +#changesetEntry th { + padding: 1px 4px; + width: 4em; + text-align: right; + font-weight: normal; + color: #999; + margin-right: .5em; + vertical-align: top; +} + +div.description { + border-left: 2px solid #999; + margin: 1em 0 1em 0; + padding: .3em; +} + +/* Graph */ +div#wrapper { + position: relative; + border-top: 1px solid black; + border-bottom: 1px solid black; + margin: 0; + padding: 0; +} + +canvas { + position: absolute; + z-index: 5; + top: -0.7em; + margin: 0; +} + +ul#graphnodes { + position: absolute; + z-index: 10; + top: -1.0em; + list-style: none inside none; + padding: 0; +} + +ul#nodebgs { + list-style: none inside none; + padding: 0; + margin: 0; + top: -0.7em; +} + +ul#graphnodes li, ul#nodebgs li { + height: 39px; +} + +ul#graphnodes li .info { + display: block; + font-size: 70%; + position: relative; + top: -3px; +} diff --git a/pylons_app/public/hg_static/style.css b/pylons_app/public/hg_static/style.css new file mode 100644 --- /dev/null +++ b/pylons_app/public/hg_static/style.css @@ -0,0 +1,105 @@ +a { text-decoration:none; } +.age { white-space:nowrap; } +.date { white-space:nowrap; } +.indexlinks { white-space:nowrap; } +.parity0 { background-color: #ddd; } +.parity1 { background-color: #eee; } +.lineno { width: 60px; color: #aaa; font-size: smaller; + text-align: right; } +.plusline { color: green; } +.minusline { color: red; } +.atline { color: purple; } +.annotate { font-size: smaller; text-align: right; padding-right: 1em; } +.buttons a { + background-color: #666; + padding: 2pt; + color: white; + font-family: sans; + font-weight: bold; +} +.navigate a { + background-color: #ccc; + padding: 2pt; + font-family: sans; + color: black; +} + +.metatag { + background-color: #888; + color: white; + text-align: right; +} + +/* Common */ +pre { margin: 0; } + +.logo { + float: right; + clear: right; +} + +/* Changelog/Filelog entries */ +.logEntry { width: 100%; } +.logEntry .age { width: 15%; } +.logEntry th { font-weight: normal; text-align: right; vertical-align: top; } +.logEntry th.age, .logEntry th.firstline { font-weight: bold; } +.logEntry th.firstline { text-align: left; width: inherit; } + +/* Shortlog entries */ +.slogEntry { width: 100%; } +.slogEntry .age { width: 8em; } +.slogEntry td { font-weight: normal; text-align: left; vertical-align: top; } +.slogEntry td.author { width: 15em; } + +/* Tag entries */ +#tagEntries { list-style: none; margin: 0; padding: 0; } +#tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; } + +/* Changeset entry */ +#changesetEntry { } +#changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; } +#changesetEntry th.files, #changesetEntry th.description { vertical-align: top; } + +/* File diff view */ +#filediffEntry { } +#filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; } + +/* Graph */ +div#wrapper { + position: relative; + margin: 0; + padding: 0; +} + +canvas { + position: absolute; + z-index: 5; + top: -0.6em; + margin: 0; +} + +ul#nodebgs { + list-style: none inside none; + padding: 0; + margin: 0; + top: -0.7em; +} + +ul#graphnodes li, ul#nodebgs li { + height: 39px; +} + +ul#graphnodes { + position: absolute; + z-index: 10; + top: -0.85em; + list-style: none inside none; + padding: 0; +} + +ul#graphnodes li .info { + display: block; + font-size: 70%; + position: relative; + top: -1px; +} diff --git a/pylons_app/templates/add.html b/pylons_app/templates/add.html new file mode 100644 --- /dev/null +++ b/pylons_app/templates/add.html @@ -0,0 +1,45 @@ +## -*- coding: utf-8 -*- + + + + + + + Mercurial repositories add + + + +
+ + + + + + + + +

${c.msg}

${c.new_repo}

+ + +
+

+ + mercurial +

+
+ +
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/pylons_app/templates/gitweb_custom/branches.tmpl b/pylons_app/templates/gitweb_custom/branches.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/branches.tmpl @@ -0,0 +1,30 @@ +{header} +{repo|escape}: Branches + + + + + + + + + +
 
+ +{entries%branchentry} +
+ +{footer} diff --git a/pylons_app/templates/gitweb_custom/changelog.tmpl b/pylons_app/templates/gitweb_custom/changelog.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/changelog.tmpl @@ -0,0 +1,39 @@ +{header} +{repo|escape}: Changelog + + + + + + + +
+{sessionvars%hiddenformentry} + +
+ + + +{entries%changelogentry} + + + +{footer} diff --git a/pylons_app/templates/gitweb_custom/changelogentry.tmpl b/pylons_app/templates/gitweb_custom/changelogentry.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/changelogentry.tmpl @@ -0,0 +1,14 @@ + +
+ +{author|obfuscate} [{date|rfc822date}] rev {rev}
+
+
+{desc|strip|escape|addbreaks|nonempty} +
+
+
diff --git a/pylons_app/templates/gitweb_custom/changeset.tmpl b/pylons_app/templates/gitweb_custom/changeset.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/changeset.tmpl @@ -0,0 +1,50 @@ +{header} +{repo|escape}: changeset {rev}:{node|short} + + + + + + + + + + +
+ + + +{branch%changesetbranch} + +{parent%changesetparent} +{child%changesetchild} +
author{author|obfuscate}
{date|date} ({date|age})
changeset {rev}{node|short}
+ +
+{desc|strip|escape|addbreaks|nonempty} +
+
+
+ +{files} +
+ +
{diff}
+ +{footer} diff --git a/pylons_app/templates/gitweb_custom/error.tmpl b/pylons_app/templates/gitweb_custom/error.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/error.tmpl @@ -0,0 +1,25 @@ +{header} +{repo|escape}: Error + + + + + + + + + +
+
+An error occurred while processing your request
+
+{error|escape} +
+ +{footer} diff --git a/pylons_app/templates/gitweb_custom/fileannotate.tmpl b/pylons_app/templates/gitweb_custom/fileannotate.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/fileannotate.tmpl @@ -0,0 +1,61 @@ +{header} +{repo|escape}: {file|escape}@{node|short} (annotated) + + + + + + + + + +
{file|escape}
+ +
+ + + + + + + +{branch%filerevbranch} + + + +{parent%fileannotateparent} +{child%fileannotatechild} + + + +
author{author|obfuscate}
{date|date} ({date|age})
changeset {rev}{node|short}
permissions{permissions|permissions}
+
+ +
+{desc|strip|escape|addbreaks|nonempty} +
+
+ +{annotate%annotateline} +
+
+ +{footer} diff --git a/pylons_app/templates/gitweb_custom/filediff.tmpl b/pylons_app/templates/gitweb_custom/filediff.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/filediff.tmpl @@ -0,0 +1,47 @@ +{header} +{repo|escape}: diff {file|escape} + + + + + + + + + +
{file|escape}
+ + +{branch%filerevbranch} + + + +{parent%filediffparent} +{child%filediffchild} +
changeset {rev}{node|short}
+ +
+ +
+{diff} +
+ +{footer} diff --git a/pylons_app/templates/gitweb_custom/filelog.tmpl b/pylons_app/templates/gitweb_custom/filelog.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/filelog.tmpl @@ -0,0 +1,40 @@ +{header} +{repo|escape}: File revisions + + + + + + + + + +
{file|urlescape}
+ + +{entries%filelogentry} +
+ + + +{footer} diff --git a/pylons_app/templates/gitweb_custom/filerevision.tmpl b/pylons_app/templates/gitweb_custom/filerevision.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/filerevision.tmpl @@ -0,0 +1,60 @@ +{header} +{repo|escape}: {file|escape}@{node|short} + + + + + + + + + +
{file|escape}
+ +
+ + + + + + + +{branch%filerevbranch} + + + +{parent%filerevparent} +{child%filerevchild} + + + +
author{author|obfuscate}
{date|date} ({date|age})
changeset {rev}{node|short}
permissions{permissions|permissions}
+
+ +
+{desc|strip|escape|addbreaks|nonempty} +
+ +
+{text%fileline} +
+ +{footer} diff --git a/pylons_app/templates/gitweb_custom/footer.tmpl b/pylons_app/templates/gitweb_custom/footer.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/footer.tmpl @@ -0,0 +1,11 @@ + + + diff --git a/pylons_app/templates/gitweb_custom/graph.tmpl b/pylons_app/templates/gitweb_custom/graph.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/graph.tmpl @@ -0,0 +1,121 @@ +{header} +{repo|escape}: Graph + + + + + + + + +
+{sessionvars%hiddenformentry} + +
+ + +
 
+ + + +
+
    + +
      +
      + + + + + + +{footer} diff --git a/pylons_app/templates/gitweb_custom/header.tmpl b/pylons_app/templates/gitweb_custom/header.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/header.tmpl @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/pylons_app/templates/gitweb_custom/index.tmpl b/pylons_app/templates/gitweb_custom/index.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/index.tmpl @@ -0,0 +1,26 @@ +{header} +Mercurial repositories index + + + + + + + + + + + + + + + {entries%indexentry} +
      NameDescriptionContactLast change  
      + + + diff --git a/pylons_app/templates/gitweb_custom/manifest.tmpl b/pylons_app/templates/gitweb_custom/manifest.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/manifest.tmpl @@ -0,0 +1,38 @@ +{header} +{repo|escape}: files + + + + + + + + + +
      {path|escape} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}
      + + + + + + + + +{dentries%direntry} +{fentries%fileentry} +
      drwxr-xr-x[up]
      + +{footer} diff --git a/pylons_app/templates/gitweb_custom/map b/pylons_app/templates/gitweb_custom/map new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/map @@ -0,0 +1,248 @@ +default = 'summary' +mimetype = 'text/html; charset={encoding}' +header = header.tmpl +footer = footer.tmpl +search = search.tmpl +changelog = changelog.tmpl +summary = summary.tmpl +error = error.tmpl +notfound = notfound.tmpl +naventry = '{label|escape} ' +navshortentry = '{label|escape} ' +navgraphentry = '{label|escape} ' +filenaventry = '{label|escape} ' +filedifflink = '{file|escape} ' +filenodelink = ' + + {file|escape} + + + file | + annotate | + diff | + revisions + + ' +filenolink = ' + + {file|escape} + + + file | + annotate | + diff | + revisions + + ' +fileellipses = '...' +changelogentry = changelogentry.tmpl +searchentry = changelogentry.tmpl +changeset = changeset.tmpl +manifest = manifest.tmpl +direntry = ' + + drwxr-xr-x + + + + {basename|escape} + {emptydirs|escape} + + + files + + ' +fileentry = ' + + {permissions|permissions} + {date|isodate} + {size} + + {basename|escape} + + + file | + revisions | + annotate + + ' +filerevision = filerevision.tmpl +fileannotate = fileannotate.tmpl +filediff = filediff.tmpl +filelog = filelog.tmpl +fileline = ' +
      +
      {linenumber} {line|escape}
      +
      ' +annotateline = ' + + + {author|user}@{rev} + +
      {linenumber}
      +
      {line|escape}
      + ' +difflineplus = '{linenumber} {line|escape}' +difflineminus = '{linenumber} {line|escape}' +difflineat = '{linenumber} {line|escape}' +diffline = '{linenumber} {line|escape}' +changelogparent = ' + + parent {rev}: + + {node|short} + + ' +changesetbranch = 'branch{name}' +changesetparent = ' + + parent {rev} + + {node|short} + + ' +filerevbranch = 'branch{name}' +filerevparent = ' + + parent {rev} + + + {rename%filerename}{node|short} + + + ' +filerename = '{file|escape}@' +filelogrename = '| base' +fileannotateparent = ' + + parent {rev} + + + {rename%filerename}{node|short} + + + ' +changelogchild = ' + + child {rev}: + {node|short} + ' +changesetchild = ' + + child {rev} + + {node|short} + + ' +filerevchild = ' + + child {rev} + + {node|short} + ' +fileannotatechild = ' + + child {rev} + + {node|short} + ' +tags = tags.tmpl +tagentry = ' + + {date|age} + {tag|escape} + + changeset | + changelog | + files + + ' +branches = branches.tmpl +branchentry = ' + + {date|age} + {node|short} + {branch|escape} + + changeset | + changelog | + files + + ' +diffblock = '
      {lines}
      ' +filediffparent = ' + + parent {rev} + + + {node|short} + + + ' +filelogparent = ' + + parent {rev}:  + {node|short} + ' +filediffchild = ' + + child {rev} + + {node|short} + + ' +filelogchild = ' + + child {rev}:  + {node|short} + ' +shortlog = shortlog.tmpl +graph = graph.tmpl +tagtag = '{name} ' +branchtag = '{name} ' +inbranchtag = '{name} ' +shortlogentry = ' + + {date|age} + {author|person} + + + {desc|strip|firstline|escape|nonempty} + {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag} + + + + changeset | + files + + ' +filelogentry = ' + + {date|age} + + + {desc|strip|firstline|escape|nonempty} + + + + file | diff | annotate {rename%filelogrename} + ' +archiveentry = ' | {type|escape} ' +indexentry = ' + + + + {name|escape} + + + {description} + {contact|obfuscate} + {lastchange|age} + {archives%indexarchiveentry} + + \n' +indexarchiveentry = ' {type|escape} ' +index = index.tmpl +urlparameter = '{separator}{name}={value|urlescape}' +hiddenformentry = '' diff --git a/pylons_app/templates/gitweb_custom/notfound.tmpl b/pylons_app/templates/gitweb_custom/notfound.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/notfound.tmpl @@ -0,0 +1,18 @@ +{header} +Mercurial repository not found + + + + + + +
      +The specified repository "{repo|escape}" is unknown, sorry. +
      +
      +Please go back to the main repository list page. +
      + +{footer} diff --git a/pylons_app/templates/gitweb_custom/search.tmpl b/pylons_app/templates/gitweb_custom/search.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/search.tmpl @@ -0,0 +1,36 @@ +{header} +{repo|escape}: Search + + + + + + + + + +
      searching for {query|escape}
      + +{entries} + +{footer} diff --git a/pylons_app/templates/gitweb_custom/shortlog.tmpl b/pylons_app/templates/gitweb_custom/shortlog.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/shortlog.tmpl @@ -0,0 +1,41 @@ +{header} +{repo|escape}: Shortlog + + + + + + + +
      +{sessionvars%hiddenformentry} + +
      + + +
       
      + +{entries%shortlogentry} +
      + + + +{footer} diff --git a/pylons_app/templates/gitweb_custom/summary.tmpl b/pylons_app/templates/gitweb_custom/summary.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/summary.tmpl @@ -0,0 +1,58 @@ +{header} +{repo|escape}: Summary + + + + + + + + + +
       
      + + + + +
      description{desc}
      owner{owner|obfuscate}
      last change{lastchange|rfc822date}
      + + + +{shortlog} + +
      ...
      + + + +{tags} + +
      ...
      + + + +{branches%branchentry} + + + +
      ...
      +{footer} diff --git a/pylons_app/templates/gitweb_custom/tags.tmpl b/pylons_app/templates/gitweb_custom/tags.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/gitweb_custom/tags.tmpl @@ -0,0 +1,30 @@ +{header} +{repo|escape}: Tags + + + + + + + + + +
       
      + +{entries%tagentry} +
      + +{footer} diff --git a/pylons_app/templates/monoblue_custom/branches.tmpl b/pylons_app/templates/monoblue_custom/branches.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/branches.tmpl @@ -0,0 +1,36 @@ +{header} + {repo|escape}: Branches + + + + + +
      + + + + +{entries%branchentry} +
      + +{footer} diff --git a/pylons_app/templates/monoblue_custom/changelog.tmpl b/pylons_app/templates/monoblue_custom/changelog.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/changelog.tmpl @@ -0,0 +1,40 @@ +{header} + {repo|escape}: changelog + + + + + +
      + + + +
      + {entries%changelogentry} +
      + +
      +{changenav%naventry} +
      + +{footer} diff --git a/pylons_app/templates/monoblue_custom/changelogentry.tmpl b/pylons_app/templates/monoblue_custom/changelogentry.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/changelogentry.tmpl @@ -0,0 +1,6 @@ +

      {desc|strip|firstline|escape|nonempty} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

      +
        +
      • {date|age}
      • +
      • by {author|obfuscate} [{date|rfc822date}] rev {rev}
      • +
      • {desc|strip|escape|addbreaks|nonempty}
      • +
      diff --git a/pylons_app/templates/monoblue_custom/changeset.tmpl b/pylons_app/templates/monoblue_custom/changeset.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/changeset.tmpl @@ -0,0 +1,63 @@ +{header} +{repo|escape}: changeset {rev}:{node|short} + + + + + +
      + + + + + + +

      {desc|strip|escape|firstline|nonempty} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

      +

      {date|age}

      + +
      +
      author
      +
      {author|obfuscate}
      +
      date
      +
      {date|date}
      + {branch%changesetbranch} +
      changeset {rev}
      +
      {node|short}
      + {parent%changesetparent} + {child%changesetchild} +
      + +

      {desc|strip|escape|addbreaks|nonempty}

      + + + {files} +
      + +
      + {diff} +
      + +{footer} diff --git a/pylons_app/templates/monoblue_custom/error.tmpl b/pylons_app/templates/monoblue_custom/error.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/error.tmpl @@ -0,0 +1,34 @@ +{header} + {repo|escape}: Error + + + + + +
      + + + +

      {error|escape}

      + +{footer} diff --git a/pylons_app/templates/monoblue_custom/fileannotate.tmpl b/pylons_app/templates/monoblue_custom/fileannotate.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/fileannotate.tmpl @@ -0,0 +1,63 @@ +{header} +{repo|escape}: {file|escape}@{node|short} (annotated) + + + + + +
      + + + + + +

      {file|escape}

      +

      {date|age}

      + +
      +
      author
      +
      {author|obfuscate}
      +
      date
      +
      {date|date}
      + {branch%filerevbranch} +
      changeset {rev}
      +
      {node|short}
      + {parent%fileannotateparent} + {child%fileannotatechild} +
      permissions
      +
      {permissions|permissions}
      +
      + +

      {desc|strip|escape|addbreaks|nonempty}

      + + + {annotate%annotateline} +
      + +{footer} diff --git a/pylons_app/templates/monoblue_custom/filediff.tmpl b/pylons_app/templates/monoblue_custom/filediff.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/filediff.tmpl @@ -0,0 +1,54 @@ +{header} +{repo|escape}: diff {file|escape} + + + + + +
      + + + + + +

      {file|escape}

      + +
      + {branch%filerevbranch} +
      changeset {rev}
      +
      {node|short}
      + {parent%filediffparent} + {child%filediffchild} +
      + +
      + {diff} +
      + +{footer} diff --git a/pylons_app/templates/monoblue_custom/filelog.tmpl b/pylons_app/templates/monoblue_custom/filelog.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/filelog.tmpl @@ -0,0 +1,49 @@ +{header} +{repo|escape}: File revisions + + + + + +
      + + + + + + + + {entries%filelogentry} +
      + +
      + {nav%filenaventry} +
      + +{footer} diff --git a/pylons_app/templates/monoblue_custom/filerevision.tmpl b/pylons_app/templates/monoblue_custom/filerevision.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/filerevision.tmpl @@ -0,0 +1,63 @@ +{header} +{repo|escape}: {file|escape}@{node|short} + + + + + +
      + + + + + +

      {file|escape}

      +

      {date|age}

      + +
      +
      author
      +
      {author|obfuscate}
      +
      date
      +
      {date|date}
      + {branch%filerevbranch} +
      changeset {rev}
      +
      {node|short}
      + {parent%filerevparent} + {child%filerevchild} +
      permissions
      +
      {permissions|permissions}
      +
      + +

      {desc|strip|escape|addbreaks|nonempty}

      + +
      + {text%fileline} +
      + +{footer} diff --git a/pylons_app/templates/monoblue_custom/footer.tmpl b/pylons_app/templates/monoblue_custom/footer.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/footer.tmpl @@ -0,0 +1,22 @@ + + +
      +

      mercurial

      +
      + +
      +
      +
      +
      + +
      + + + diff --git a/pylons_app/templates/monoblue_custom/graph.tmpl b/pylons_app/templates/monoblue_custom/graph.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/graph.tmpl @@ -0,0 +1,118 @@ +{header} + {repo|escape}: graph + + + + + + +
      + + + + +
      The revision graph only works with JavaScript-enabled browsers.
      +
      +
        + +
          +
          + + + + +
          + less + more + | {changenav%navgraphentry} +
          + +{footer} diff --git a/pylons_app/templates/monoblue_custom/header.tmpl b/pylons_app/templates/monoblue_custom/header.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/header.tmpl @@ -0,0 +1,6 @@ + + + + + + diff --git a/pylons_app/templates/monoblue_custom/index.tmpl b/pylons_app/templates/monoblue_custom/index.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/index.tmpl @@ -0,0 +1,39 @@ +{header} + {repo|escape}: Mercurial repositories index + + + +
          + + + + + + + + + + + + {entries%indexentry} +
          NameDescriptionContactLast change  
          + + +
          +

          mercurial

          +
          + +
          +
          +
          +
          + +
          + + diff --git a/pylons_app/templates/monoblue_custom/manifest.tmpl b/pylons_app/templates/monoblue_custom/manifest.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/manifest.tmpl @@ -0,0 +1,51 @@ +{header} +{repo|escape}: files + + + + + +
          + + + + + +

          {path|escape} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

          + + + + + + + + + + {dentries%direntry} + {fentries%fileentry} +
          drwxr-xr-x[up]
          + +{footer} diff --git a/pylons_app/templates/monoblue_custom/map b/pylons_app/templates/monoblue_custom/map new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/map @@ -0,0 +1,214 @@ +default = 'summary' +mimetype = 'text/html; charset={encoding}' +header = header.tmpl +footer = footer.tmpl +search = search.tmpl +changelog = changelog.tmpl +summary = summary.tmpl +error = error.tmpl +notfound = notfound.tmpl +naventry = '{label|escape} ' +navshortentry = '{label|escape} ' +navgraphentry = '{label|escape} ' +filenaventry = '{label|escape}' +filedifflink = '{file|escape} ' +filenodelink = ' + + {file|escape} + + + file | + annotate | + diff | + revisions + + ' +filenolink = ' + + + {file|escape}file | + annotate | + diff | + revisions + + ' +fileellipses = '...' +changelogentry = changelogentry.tmpl +searchentry = changelogentry.tmpl +changeset = changeset.tmpl +manifest = manifest.tmpl +direntry = ' + + drwxr-xr-x + + + {basename|escape} + files + ' +fileentry = ' + + {permissions|permissions} + {date|isodate} + {size} + {basename|escape} + + file | + revisions | + annotate + + ' +filerevision = filerevision.tmpl +fileannotate = fileannotate.tmpl +filediff = filediff.tmpl +filelog = filelog.tmpl +fileline = ' +
          +
          {linenumber} {line|escape}
          +
          ' +annotateline = ' + + + {author|user}@{rev} + + + {linenumber} + + {line|escape} + ' +difflineplus = '{linenumber} {line|escape}' +difflineminus = '{linenumber} {line|escape}' +difflineat = '{linenumber} {line|escape}' +diffline = '{linenumber} {line|escape}' +changelogparent = ' + + parent {rev}: + + {node|short} + + ' +changesetbranch = '
          branch
          {name}
          ' +changesetparent = ' +
          parent {rev}
          +
          {node|short}
          ' +filerevbranch = '
          branch
          {name}
          ' +filerevparent = ' +
          parent {rev}
          +
          + + {rename%filerename}{node|short} + +
          ' +filerename = '{file|escape}@' +filelogrename = '| base' +fileannotateparent = ' +
          parent {rev}
          +
          + + {rename%filerename}{node|short} + +
          ' +changelogchild = ' +
          child {rev}:
          +
          {node|short}
          ' +changesetchild = ' +
          child {rev}
          +
          {node|short}
          ' +filerevchild = ' +
          child {rev}
          +
          + {node|short} +
          ' +fileannotatechild = ' +
          child {rev}
          +
          + {node|short} +
          ' +tags = tags.tmpl +tagentry = ' + + {date|age} + {tag|escape} + + changeset | + changelog | + files + + ' +branches = branches.tmpl +branchentry = ' + + {date|age} + {node|short} + {branch|escape} + + changeset | + changelog | + files + + ' +diffblock = '
          {lines}
          ' +filediffparent = ' +
          parent {rev}
          +
          {node|short}
          ' +filelogparent = ' + + parent {rev}:  + {node|short} + ' +filediffchild = ' +
          child {rev}
          +
          {node|short}
          ' +filelogchild = ' + + child {rev}:  + {node|short} + ' +shortlog = shortlog.tmpl +tagtag = '{name} ' +branchtag = '{name} ' +inbranchtag = '{name} ' +shortlogentry = ' + + {date|age} + {author|person} + + + {desc|strip|firstline|escape|nonempty} + {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag} + + + + changeset | + files + + ' +filelogentry = ' + + {date|age} + {desc|strip|firstline|escape|nonempty} + + file | diff | annotate + {rename%filelogrename} + + ' +archiveentry = '
        • {type|escape}
        • ' +indexentry = ' + + {name|escape} + {description} + {contact|obfuscate} + {lastchange|age} + {archives%indexarchiveentry} + + + + \n' +indexarchiveentry = '{type|escape} ' +index = index.tmpl +urlparameter = '{separator}{name}={value|urlescape}' +hiddenformentry = '' +graph = graph.tmpl diff --git a/pylons_app/templates/monoblue_custom/notfound.tmpl b/pylons_app/templates/monoblue_custom/notfound.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/notfound.tmpl @@ -0,0 +1,39 @@ +{header} + {repo|escape}: Mercurial repository not found + + + + + +
          + + + +

          The specified repository "{repo|escape}" is unknown, sorry.

          +

          Please go back to the main repository list page.

          + + + +
          +

          mercurial

          + +
          + +
          +
          +
          +
          + +
          + + + + + diff --git a/pylons_app/templates/monoblue_custom/search.tmpl b/pylons_app/templates/monoblue_custom/search.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/search.tmpl @@ -0,0 +1,34 @@ +{header} + {repo|escape}: Search + + + + + +
          + + + + {entries} + +{footer} diff --git a/pylons_app/templates/monoblue_custom/shortlog.tmpl b/pylons_app/templates/monoblue_custom/shortlog.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/shortlog.tmpl @@ -0,0 +1,41 @@ +{header} + {repo|escape}: shortlog + + + + + +
          + + + + + +{entries%shortlogentry} +
          + +
          +{changenav%navshortentry} +
          + +{footer} diff --git a/pylons_app/templates/monoblue_custom/summary.tmpl b/pylons_app/templates/monoblue_custom/summary.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/summary.tmpl @@ -0,0 +1,66 @@ +{header} + {repo|escape}: Summary + + + + + +
          + + + +
          +
          name
          +
          {repo|escape}
          +
          description
          +
          {desc}
          +
          owner
          +
          {owner|obfuscate}
          +
          last change
          +
          {lastchange|rfc822date}
          +
          + +

          Changes

          + +{shortlog} + + + +
          ...
          + +

          Tags

          + +{tags} + + + +
          ...
          + + + + {branches%branchentry} + + + +
          ...
          +{footer} diff --git a/pylons_app/templates/monoblue_custom/tags.tmpl b/pylons_app/templates/monoblue_custom/tags.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_custom/tags.tmpl @@ -0,0 +1,36 @@ +{header} + {repo|escape}: Tags + + + + + +
          + + + + +{entries%tagentry} +
          + +{footer} diff --git a/pylons_app/templates/monoblue_plain/changelog.tmpl b/pylons_app/templates/monoblue_plain/changelog.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/changelog.tmpl @@ -0,0 +1,31 @@ +{header} +
          + + +
          +

          changelog

          + {entries%changelogentry} +
          + +
          +{changenav%naventry} +
          + +{footer} diff --git a/pylons_app/templates/monoblue_plain/changelogentry.tmpl b/pylons_app/templates/monoblue_plain/changelogentry.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/changelogentry.tmpl @@ -0,0 +1,4 @@ +

          {desc|strip|firstline|escape} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

          +

          {date|age} ago, by {author|obfuscate} [{date|rfc822date}] rev {rev}

          +

          {desc|strip|escape|addbreaks}

          +
          diff --git a/pylons_app/templates/monoblue_plain/changeset.tmpl b/pylons_app/templates/monoblue_plain/changeset.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/changeset.tmpl @@ -0,0 +1,50 @@ +{header} +
          + + + + +
          + + +

          {desc|strip|escape|firstline} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}, {date|age} ago

          + +
          +
          author
          +
          {author|obfuscate}
          +
          date
          +
          {date|date}
          + {branch%changesetbranch} +
          changeset {rev}
          +
          {node|short}
          + {parent%changesetparent} + {child%changesetchild} +
          + +
          {desc|strip|escape|addbreaks}
          + + + {files} +
          + + {diff} + +
          +{footer} diff --git a/pylons_app/templates/monoblue_plain/error.tmpl b/pylons_app/templates/monoblue_plain/error.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/error.tmpl @@ -0,0 +1,33 @@ +{header} + {repo|escape}: Error + + + + + +
          + + + +

          {error|escape}

          + +{footer} diff --git a/pylons_app/templates/monoblue_plain/fileannotate.tmpl b/pylons_app/templates/monoblue_plain/fileannotate.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/fileannotate.tmpl @@ -0,0 +1,53 @@ +{header} +
          + + + + +
          + +

          {file|escape}

          + +
          +
          author
          +
          {author|obfuscate}
          +
          date
          +
          {date|date}
          + {branch%filerevbranch} +
          changeset {rev}
          +
          {node|short}
          + {parent%fileannotateparent} + {child%fileannotatechild} +
          permissions
          +
          {permissions|permissions}
          +
          + +
          {desc|strip|escape|addbreaks}
          + + + + + + {annotate%annotateline} +
          user
          +
          +{footer} diff --git a/pylons_app/templates/monoblue_plain/filediff.tmpl b/pylons_app/templates/monoblue_plain/filediff.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/filediff.tmpl @@ -0,0 +1,38 @@ +{header} +
          + + +
          + +

          {file|escape}

          + +
          + {branch%filerevbranch} +
          changeset {rev}
          +
          {node|short}
          + {parent%filediffparent} + {child%filediffchild} +
          + + {diff} +
          +{footer} diff --git a/pylons_app/templates/monoblue_plain/filelog.tmpl b/pylons_app/templates/monoblue_plain/filelog.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/filelog.tmpl @@ -0,0 +1,44 @@ +{header} +
          + + + + + + + + + + + + + + {entries%filelogentry} + +
          {file|urlescape}
          agomessage
          +
          + +
          + {nav%filenaventry} +
          + +{footer} diff --git a/pylons_app/templates/monoblue_plain/filerevision.tmpl b/pylons_app/templates/monoblue_plain/filerevision.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/filerevision.tmpl @@ -0,0 +1,59 @@ +{header} +
          + + +
          + +

          {file|escape}

          + +
          +
          author
          +
          {author|obfuscate}
          +
          date
          +
          {date|date}
          + {branch%filerevbranch} +
          changeset {rev}
          +
          {node|short}
          + {parent%filerevparent} + {child%filerevchild} +
          permissions
          +
          {permissions|permissions}
          +
          + +
          +
          {desc|strip|escape|addbreaks}
          + + + + + + + + + {text%fileline} + +
          #
          +
          + +
          + +{footer} diff --git a/pylons_app/templates/monoblue_plain/footer.tmpl b/pylons_app/templates/monoblue_plain/footer.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/footer.tmpl @@ -0,0 +1,11 @@ + diff --git a/pylons_app/templates/monoblue_plain/graph.tmpl b/pylons_app/templates/monoblue_plain/graph.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/graph.tmpl @@ -0,0 +1,103 @@ +{header} + +
          + + + +
          The revision graph only works with JavaScript-enabled browsers.
          +
          +
            + +
              +
              +
              + + + + +
              + less + more + | {changenav%navgraphentry} +
              + +{footer} diff --git a/pylons_app/templates/monoblue_plain/header.tmpl b/pylons_app/templates/monoblue_plain/header.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/header.tmpl @@ -0,0 +1,1 @@ + diff --git a/pylons_app/templates/monoblue_plain/index.tmpl b/pylons_app/templates/monoblue_plain/index.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/index.tmpl @@ -0,0 +1,29 @@ +{header} +
              + + + + + + + + + + + + {entries%indexentry} +
              NameDescriptionContactLast change  
              + + +
              +

              mercurial

              +
              +
              +
              +
              +
              +
              diff --git a/pylons_app/templates/monoblue_plain/manifest.tmpl b/pylons_app/templates/monoblue_plain/manifest.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/manifest.tmpl @@ -0,0 +1,48 @@ +{header} +
              + + +
              +

              files

              + + + + + + + + + + + + + + + + + + + + {dentries%direntry} + {fentries%fileentry} + +
              permsmodifiedsize 
              drwxr-xr-x[up]
              +
              {repo|escape}: Mercurial repository not found + + + + + +
              + + + +

              The specified repository "{repo|escape}" is unknown, sorry.

              +

              Please go back to the main repository list page.

              + +{footer} diff --git a/pylons_app/templates/monoblue_plain/search.tmpl b/pylons_app/templates/monoblue_plain/search.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/search.tmpl @@ -0,0 +1,33 @@ +{header} + {repo|escape}: Search + + + + + +
              + + + + {entries} + +{footer} diff --git a/pylons_app/templates/monoblue_plain/shortlog.tmpl b/pylons_app/templates/monoblue_plain/shortlog.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/shortlog.tmpl @@ -0,0 +1,32 @@ +{header} +
              + + +
              + + + {entries%shortlogentry} +
              shortlog
              +
              + +
              +{changenav%navshortentry} +
              + +{footer} diff --git a/pylons_app/templates/monoblue_plain/summary.tmpl b/pylons_app/templates/monoblue_plain/summary.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/summary.tmpl @@ -0,0 +1,94 @@ +{header} +
              + + +
              + +
              +
              + {sessionvars%hiddenformentry} + + +
              +
              +
              +
              name
              +
              {repo|escape}
              +
              description
              +
              {desc}
              +
              owner
              +
              {owner|obfuscate}
              +
              last change
              +
              {lastchange|rfc822date}
              +
              +
              +
              + + + + + + + + + + {shortlog} + + + + +
              Changes
              AgeAuthorMessage
              ...
              +
              + +
              + + + + + + + + + {tags} + + + + +
              Tags
              AgeName
              ...
              +
              + +
              + + + + + + + + + + {branches%branchentry} + + + + +
              Branches
              Ago RevName
              ...
              +
              +{footer} +
              diff --git a/pylons_app/templates/monoblue_plain/tags.tmpl b/pylons_app/templates/monoblue_plain/tags.tmpl new file mode 100644 --- /dev/null +++ b/pylons_app/templates/monoblue_plain/tags.tmpl @@ -0,0 +1,21 @@ +{header} +
              + + + + + {entries%tagentry} +
              tags
              + +{footer}