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}