changeset 102:2dc0c8e4f384

Updated tempaltes, added file browser breadcrumbs, and feed icons
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 25 Apr 2010 18:42:58 +0200
parents 8b06c420491d
children 665b344927f4
files pylons_app/lib/helpers.py pylons_app/public/css/monoblue_custom.css pylons_app/public/css/style-monoblue_custom.css pylons_app/public/css/style.css pylons_app/public/images/atom.png pylons_app/public/images/feed.png pylons_app/templates/base/base.html pylons_app/templates/files.html pylons_app/templates/index.html
diffstat 9 files changed, 579 insertions(+), 1059 deletions(-) [+]
line wrap: on
line diff
--- a/pylons_app/lib/helpers.py	Sun Apr 25 01:25:54 2010 +0200
+++ b/pylons_app/lib/helpers.py	Sun Apr 25 18:42:58 2010 +0200
@@ -69,7 +69,17 @@
             return _("%.1f MB") % (bytes / (1024 * 1024))
         return _("%.1f GB") % (bytes / (1024 * 1024 * 1024))
 
+class _FilesBreadCrumbs(object):
+    
+    def __call__(self, repo_name, rev, paths):
+        url_l = [link_to(repo_name, url('files_home', repo_name=repo_name, f_path=''))]
+        paths_l = paths.split('/')
+        
+        for cnt, p in enumerate(paths_l, 1):
+            if p != '':
+                url_l.append(link_to(p, url('files_home', repo_name=repo_name, f_path='/'.join(paths_l[:cnt]))))
 
+        return literal(' / '.join(url_l))
 
 def pygmentize(code, **kwargs):
     '''
@@ -78,7 +88,7 @@
     return literal(highlight(code, guess_lexer(code), HtmlFormatter(**kwargs)))
 
 
-
+files_breadcrumbs = _FilesBreadCrumbs()
 filesizeformat = _FileSizeFormat()
 link = _Link()
 flash = _Flash()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pylons_app/public/css/monoblue_custom.css	Sun Apr 25 18:42:58 2010 +0200
@@ -0,0 +1,529 @@
+/*** 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: #DBD4C6;
+}
+
+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: #556cb5 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: 0 0 0 0;  
+  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: #EAEAE9;
+}
+table tr.parity1 {
+  background: #FFFFFF;
+}
+table tr td {
+  padding: 3px 3px;
+}
+table.annotated tr td {
+  padding: 0px 3px;
+}
+
+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 **/
+
+table.code-browser{
+	
+}
+table.code-browser thead th {
+	background-color:#EEEEEE;
+	border:1px solid #999999;
+	height:20px;
+	font-size: 1.1em;
+	font-weight: bold;
+}
+table.code-browser tbody td {
+	border:1px solid #999999;
+	height:20px;
+}
+.info-table {
+	background:none repeat scroll 0 0 #FAFAFA;
+	border-bottom:1px solid #DDDDDD;
+	width:100%;
+}
+.rss_logo{
+	background-image:url("/images/feed.png");
+	background-repeat:no-repeat;
+	display:block;
+	height:16px;
+	padding-left:20px;
+	padding-top:0px;
+	text-align:left;
+	
+}
+.atom_logo{
+	background-image:url("/images/atom.png");
+	background-repeat:no-repeat;
+	display:block;
+	height:16px;
+	padding-left:20px;
+	padding-top:0px;
+	text-align:left;
+	
+}
+.browser-file {
+	background-image:url("/images/file.png");
+	background-repeat:no-repeat;
+	display:block;
+	height:16px;
+	padding-left:20px;
+	padding-top:5px;
+	text-align:left;
+}
+.browser-dir {
+	background-image:url("/images/folder.png");
+	background-repeat:no-repeat;
+	display:block;
+	height:16px;
+	padding-left:20px;
+	padding-top:5px;
+	text-align:left;
+}
\ No newline at end of file
--- a/pylons_app/public/css/style-monoblue_custom.css	Sun Apr 25 01:25:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,491 +0,0 @@
-/*** 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 **/
-
-.browser-file {
-	background-image:url("/images/file.png");
-	background-repeat:no-repeat;
-	display:block;
-	height:16px;
-	padding-left:20px;
-	padding-top:5px;
-	text-align:left;
-}
-.browser-dir {
-	background-image:url("/images/folder.png");
-	background-repeat:no-repeat;
-	display:block;
-	height:16px;
-	padding-left:20px;
-	padding-top:5px;
-	text-align:left;
-}
\ No newline at end of file
--- a/pylons_app/public/css/style.css	Sun Apr 25 01:25:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,554 +0,0 @@
-
-/*-------[ general ]---------------------------------*/
-
-body {
-background:#f0f0f0;
-font:14px Arial, Tahoma, Sans-Serif;
-color:#444;
-margin:30px 0 30px 0;
-padding:0;
-line-height:21px;
-}
-p,ul,ol,h1,h2,h3,h4,blockquote,fieldset,form {
-margin:0;
-padding:0;
-}
-a {
-outline:none;
-text-decoration:none;
-color:#296785;
-}
-a:hover {
-color:#000;
-}
-img {
-border:none;
-}
-.left-img {
-float:left;
-border:1px solid #ccc;
-margin:5px 10px 0 0;
-padding:5px;
-}
-.right-img {
-float:right;
-border:1px solid #ccc;
-margin:5px 0 0 10px;
-padding:5px;
-}
-blockquote {
-background:url(/images/blockquote.gif) no-repeat top left;
-padding:10px 0 0 40px;
-font-style:italic;
-}
-.clearfix:after {
-content: ".";
-display: block;
-height: 0;
-clear: both;
-visibility: hidden;
-}
-
-/*-------[ top-glow (just a little beauty! i know it maybe against semantics but i can't find a good solution) ]---------------------------------*/
-
-#top-glow {
-width:940px;
-height:20px;
-background:url(/images/top-glow.jpg) no-repeat;
-margin:0 auto;
-}
-
-/*-------[ container ]---------------------------------*/
-
-#container {
-width: 900px;
-padding:0 20px 0 20px;
-margin:0 auto;
-background:url(/images/container-bg.jpg) repeat-y;
-}
-
-/*-------[ header ]---------------------------------*/
-
-#header {
-width:900px;
-height:120px;
-background:url(/images/header.jpg) repeat-y;
-border-top:1px solid #fff;
-}
-#logo {
-width:263px;
-height:40px;
-position:absolute;
-margin:37px 0 0 30px;
-}
-#logo a {
-background:url(/images/logo.png) no-repeat;
-text-indent:-9999pt;
-display:block;
-width:263px;
-height:40px;
-}
-
-/*-------[ navigation ]---------------------------------*/
-
-#navigation {
-width:900px;
-height:44px;
-background:url(/images/navigation.jpg) no-repeat;
-}
-#navigation ul {
-list-style:none;
-padding-left:30px;
-}
-#navigation li {
-float:left;
-}
-#navigation li a {
-display:block;
-text-indent:-9999pt;
-margin:16px 17px 0 0;
-}
-#navigation li a:hover, #navigation a.selected {
-background-position:0 -10px;
-}
-#home-button {
-width:36px;
-height:10px;
-background:url(/images/home-button.png) no-repeat;
-}
-#about-button {
-width:45px;
-height:10px;
-background:url(/images/about-button.png) no-repeat;
-}
-#services-button {
-width:64px;
-height:10px;
-background:url(/images/services-button.png) no-repeat;
-}
-#portfolio-button {
-width:74px;
-height:10px;
-background:url(/images/portfolio-button.png) no-repeat;
-}
-#blog-button {
-width:34px;
-height:10px;
-background:url(/images/blog-button.png) no-repeat;
-}
-#contact-button {
-width:64px;
-height:10px;
-background:url(/images/contact-button.png) no-repeat;
-}
-
-/*-------[ featured ]---------------------------------*/
-
-#featured {
-width:840px;
-background:url(/images/featured.jpg) repeat-y;
-border-bottom:1px solid #4A4C4E;
-padding:30px;
-color:#fff;
-}
-#featured-title {
-text-indent:-9999pt;
-background:url(/images/featured-title.png) no-repeat;
-height:31px;
-margin-bottom:20px;
-}
-#featured-left {
-float:left;
-width:393px;
-margin-right:50px;  
-}
-#featured-right {
-float:right;
-width:385px;
-height:205px;
-display:block;
-border:1px solid #11879C;
-padding:5px;
-background:#fff;
-}
-#featured-right a {
-margin:5px 0 0 5px;
-}
-#featured-buttons {
-margin-top:20px;
-}
-#featured-buttons a {
-float:left;
-display:block;
-width:143px;
-height:47px;
-text-indent:-9999pt;
-margin-right:25px;
-}
-#featured-buttons a:hover {
-background-position:0 0;
-}
-#learn-more {
-background:url(/images/learn-more.png) 0 -47px no-repeat;
-}
-#our-services {
-background:url(/images/our-services.png) 0 -47px no-repeat;
-}
-
-/*-------[ main ]---------------------------------*/
-
-#main {
-width:840px;
-padding:30px 30px 15px 30px;
-}
-
-/*-------[ sidebar ]---------------------------------*/
-
-#sidebar {
-float:right;
-width:250px;
-}
-.sidebox {
-width:250px;
-border:1px solid #b1b1b1;
-margin-bottom:30px;
-background:#fafafa;
-color:#5d5d5d;
-}
-.sidebox-content {
-padding:15px;
-}
-.sidebox h2 {
-text-indent:-9999pt;
-height:40px;
-display:block;
-border-bottom:1px solid #B1B1B1;
-}
-.sidebox p {
-margin-bottom:10px;
-}
-.sidebox ul {
-list-style:none;
-}
-.sidebox li {
-margin-bottom:10px;
-}
-.sidebox li:last-child {
-margin-bottom:0;
-}
-.list {
-list-style:square !important;
-margin-left:15px;
-}
-.list li {
-margin-bottom:3px;
-}
-#recent-posts-title {
-background:url(/images/recent-posts-title.jpg) no-repeat;
-}
-#recent-posts a {
-color:#5D5D5D;
-}
-#recent-posts a:hover {
-color:#296785;
-}
-.more-link {
-color:#296785;
-}
-#clients-title {
-background:url(/images/clients-title.jpg) no-repeat;
-}
-#location-title {
-background:url(/images/location-title.jpg) no-repeat;
-}
-#categories-title {
-background:url(/images/categories-title.jpg) no-repeat;
-}
-
-/*-------[ search form ]---------------------------------*/
-#searchform {
-margin-bottom:15px;
-}
-#searchform fieldset {
-border:none;
-}
-#search-button {
-padding:5px 0 5px 0;
-background:#e3e3e3;
-border:none;
-color:#444;
-width:60px;
-text-align:center;
-float:right;
-display:block;
-}
-#search-field {
-border:1px solid #ccc;
-background:#F2F2F2;
-padding:5px;
-color:#444;
-width:170px;
-float:left;
-display:block;
-}
-#search-field:focus {
-border:1px solid #aaa;
-background:#fff;
-}
-/*-------[ content ]---------------------------------*/
-
-#content {
-width:560px;
-float:left;
-margin-right:30px;
-}
-#content h2 {
-border-bottom:1px solid #ccc;
-padding-bottom:3px;
-margin-bottom:15px;
-font:20px Arial, Tahoma, Sans-Serif;
-}
-#content p {
-margin-bottom:15px;
-}
-#content h3, #content h4, #content h5, #content h6 {
-margin-bottom:10px;
-color:#1B7883;
-font-family:Arial, Tahoma, Verdana, Sans-Serif;
-}
-#content h3 {
-font-size:18px;
-}
-#content h4 {
-font-size:16px;
-}
-#content h5 {
-font-size:14px;
-}
-#content h6 {
-font-size:13px;
-}
-#content ul {
-margin:10px 0 15px 30px;
-}
-#content ol {
-margin:10px 0 15px 30px;
-}
-#content table {
-border-left:1px solid #ccc;
-border-top:1px solid #ccc;
-margin-bottom:15px;
-width:100%;
-}
-#content td, #content th {
-border-right:1px solid #ccc;
-border-bottom:1px solid #ccc;
-padding:5px;
-font-size:13px;
-text-align:left;
-}
-#content th {
-font-size:13px;
-color:#000;
-font-weight:normal;
-background:#f2f2f2;
-}
-.br { /* use this for an extra 10px space if needed */
-display:block;
-margin:10px;
-}
-.bullet {
-list-style-image:url(/images/bullet.gif) !important;
-}
-
-/*-------[ blog styles ]---------------------------------*/
-
-.post {
-margin-bottom:30px;
-}
-h2.post-title {
-margin-bottom:5px !important;
-}
-.post-meta {
-font-size:12px;
-margin-bottom:10px;
-}
-.post-comments {
-background:url(/images/speech_bubble_48.png) no-repeat;
-padding:11px 0 15px 0;
-width:48px;
-display:block;
-text-align:center;
-font-size:18px;
-color:#444;
-position:absolute;
-margin:-28px 0 0 514px;
-}
-.post-comments:hover {
-color:#000;
-}
-
-#previous-next {
-margin-bottom:15px;
-}
-#next {
-float:right;
-}
-#prev {
-float:left;
-}
-
-/*-------[ front page ]---------------------------------*/
-
-.frontpage-box {
-margin-bottom:10px;
-}
-.frontpage-box-img {
-float:left;
-width:48px;
-height:48px;
-margin:15px 22px 0 0;
-}
-.frontpage-box-text {
-float:right;
-width:490px;
-}
-.frontpage-box h3 {
-font:16px Arial, Tahoma, Sans-Serif !important;
-margin-bottom:5px !important;
-color:#1B7883 !important;
-}
-
-/*-------[ portfolio ]---------------------------------*/
-
-#portfolio {
-width:840px;
-}
-#portfolio h2 {
-border-bottom:1px solid #ccc;
-padding-bottom:3px;
-margin-bottom:30px;
-font:20px Arial, Tahoma, Sans-Serif;
-}
-ul.work-gallery {
-list-style:none;
-width:870px;
-position:relative;
-}
-.work-gallery li {
-float:left;
-width:260px;
-margin:0 30px 0 0;
-min-height:220px;
-font-size:12px;
-line-height:19px;
-}
- a.work-thumb {
-display:block;
-border:1px solid #ccc;
-padding:5px;
-width:248px;
-height:138px;
-}
- a.work-thumb:hover {
-border:1px solid #999;
-}
-.work-name {
-padding:2px 5px 2px 7px;
-background:#fff;
-position:absolute;
-margin:-40px 0 0 1px;
-}
-.work-description {
-margin-top:5px;
-}
-
-/*-------[ contact form ]---------------------------------*/
-
-#contactform fieldset {
-border:none;
-}
-#contactform input {
-width:170px;
-}
-#contactform textarea {
-width:450px;
-height:170px;
-}
-#contactform input, #contactform textarea {
-display:block;
-border:1px solid #ccc;
-padding:5px;
-background:#f2f2f2;
-font:12px Arial, Tahoma, Sans-Serif;
-color:#444;
-margin-bottom:10px;
-}
-#contactform input:focus, #contactform textarea:focus {
-border:1px solid #aaa;
-background:#fff;
-}
-.send {
-width:80px !important;
-background:#eee;
-border:1px solid #bbb !important;
-color:#444 !important;
-cursor:pointer;
-}
-.send:hover {
-border:1px solid #777 !important;
-}
-
-/*-------[ footer ]---------------------------------*/
-
-#footer {
-padding:15px 30px 15px 30px;
-background:#f2f2f2;
-border-top:1px solid #bbb;
-font-size:13px;
-}
-#footer p {
-float:left;
-}
-#footer ul {
-float:right;
-list-style:none;
-}
-#footer li {
-float:left;
-margin-left:15px;
-}
-
-/*-------[ bottom glow (just a little beauty! i know it maybe against semantics but i can't find a good solution) ]---------------------------------*/
-
-#bottom-glow {
-background:url(/images/bottom-glow.jpg) no-repeat;
-width:940px;
-height:22px;
-margin:0 auto;
-}
-
-/*-------[ browser hacks ]---------------------------------*/
-
-.ie6 #navigation li a {
-overflow:hidden;
-}
-.ie6 #navigation li a:hover, .ie6 #navigation a.selected, .ie7 #navigation li a:hover, .ie7 #navigation a.selected {
-margin-top:17px;
-}
-.ie6 #featured {
-padding:30px 30px 0 30px;
-}
-.ie6 #featured-buttons a:hover, .ie7 #featured-buttons a:hover {
-background-position:0 0;
-margin-top:-1px;
-}
-.ie6 .work-gallery {
-margin-right:-60px;
-}
-.ie6 .work-gallery li {
-margin-bottom:30px;
-}
-.ie6 .frontpage-box, .ie6 #footer, .ie7 .frontpage-box, .ie7 #footer {
-height:1%;
-}
\ No newline at end of file
Binary file pylons_app/public/images/atom.png has changed
Binary file pylons_app/public/images/feed.png has changed
--- a/pylons_app/templates/base/base.html	Sun Apr 25 01:25:54 2010 +0200
+++ b/pylons_app/templates/base/base.html	Sun Apr 25 18:42:58 2010 +0200
@@ -84,7 +84,7 @@
 </%def>
 
 <%def name="css()">
-<link rel="stylesheet" href="/css/style-monoblue_custom.css" type="text/css" />
+<link rel="stylesheet" href="/css/monoblue_custom.css" type="text/css" />
 </%def>
 
 <%def name="js()">
--- a/pylons_app/templates/files.html	Sun Apr 25 01:25:54 2010 +0200
+++ b/pylons_app/templates/files.html	Sun Apr 25 18:42:58 2010 +0200
@@ -21,14 +21,14 @@
 		${self.menu('files')}     
 </%def>
 <%def name="css()">
-<link rel="stylesheet" href="/css/style-monoblue_custom.css" type="text/css" />
+<link rel="stylesheet" href="/css/monoblue_custom.css" type="text/css" />
 <link rel="stylesheet" href="/css/pygments.css" type="text/css" />
 </%def>
 <%def name="main()">
 
     <h2 class="no-link no-border">${_('Files')}</h2>
 	<div id="files_data">
-		<h2>${_('File')}: ${c.repo_name}/${c.f_path}</h2>
+		<h2>${_('File')}: ${h.files_breadcrumbs(c.repo_name,c.cur_rev,c.files_list.path)}</h2>
 		%if c.files_list.is_dir():
         <table class="code-browser">
             <thead>
@@ -42,16 +42,20 @@
             </thead>
             	<tr>
             		% if c.files_list.parent:
-            		<td colspan="5" class="browser-dir">
-            		${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=c.files_list.parent))}
+            		<td>
+            		${h.link_to('..',h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=c.files_list.parent),class_="browser-dir")}
             		</td>
+            		<td></td>
+            		<td></td>
+            		<td></td>
+            		<td></td>
             		%endif
             	</tr>
 					<%def name="file_class(node)">
 						%if node.is_file():
-							browser-file
+							<%return "browser-file" %>
 						%else:
-							browser-dir
+							<%return "browser-dir"%>
 						%endif
 					</%def>
 			
@@ -59,8 +63,8 @@
 	            %for cnt,node in enumerate(c.files_list):
 					<tr class="parity${cnt%2}">
 	
-	                    <td class="${file_class(node)}">
-							${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=node.path),class_='file or dir')}
+	                    <td>
+							${h.link_to(node.name,h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=node.path),class_=file_class(node))}
 	                    </td>
 	                    <td>
 	                        %if node.is_file():
@@ -87,6 +91,27 @@
 				%endfor
 			</table>
 			%else:
+			<table class="info-table">
+				<tr>
+					<td>r70:17ecc1c97401</td>
+					<td>374 loc</td>
+					<td>12.5 KB</td>
+					<td>
+						<a href="/marcinkuzminski/vcs/history/vcs/backends/hg.py">history</a> / 
+						<a href="/marcinkuzminski/vcs/annotate/17ecc1c97401/vcs/backends/hg.py">annotate</a> / 
+						<a href="/marcinkuzminski/vcs/raw/17ecc1c97401/vcs/backends/hg.py">raw</a> / 
+						<form class="source-view-form" method="get" action="/marcinkuzminski/vcs/diff/vcs/backends/hg.py">
+							
+							<input type="hidden" value="17ecc1c97401" name="diff2">
+								<select class="smaller" name="diff1">
+									<option>history</option>							
+								</select>
+								<input type="submit" class="smaller" value="diff">
+							
+						</form>
+					</td>
+				</tr>
+			</table>			
 				<div id="body" class="codeblock">
 				${h.pygmentize(c.files_list.content,linenos=True,anchorlinenos=True,cssclass="code-highlight")}
 				</div>				
--- a/pylons_app/templates/index.html	Sun Apr 25 01:25:54 2010 +0200
+++ b/pylons_app/templates/index.html	Sun Apr 25 18:42:58 2010 +0200
@@ -35,6 +35,7 @@
 	    <td>${get_sort(_('Contact'))}</td>
 	    <td></td>
 	    <td></td>
+	    <td></td>
 	  </tr>	
 	%for cnt,repo in enumerate(c.repos_list):
  		<tr class="parity${cnt%2}">
@@ -49,11 +50,11 @@
 				%endfor
 	        </td>
 			<td>
-				<div class="rss_logo">
-				<a href="/${repo['name']}/rss-log">RSS</a>
-				<a href="/${repo['name']}/atom-log">Atom</a>
-				</div>
+				<a  class="rss_logo" href="/${repo['name']}/rss-log">RSS</a>
 			</td>        
+			<td>
+				<a  class="atom_logo" href="/${repo['name']}/atom-log">Atom</a>
+			</td>
 		</tr>
 	%endfor
 	</table>