Marcin Kuzminski avatar Marcin Kuzminski committed 558eb7c

version bump to 0.8
hg app 0.8 new template.
Add yui flot and graph into summary page.
+ various tweeks and patches into look of application

Comments (0)

Files changed (80)

pylons_app/__init__.py

 @author: marcink
 """
 
-VERSION = (0, 7, 9, 'beta')
+VERSION = (0, 8, 0, 'beta')
 
 __version__ = '.'.join((str(each) for each in VERSION[:4]))
 

pylons_app/controllers/summary.py

 # encoding: utf-8
 # summary controller for pylons
 # Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
- 
+# 
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
 # as published by the Free Software Foundation; version 2
 summary controller for pylons
 @author: marcink
 """
+from datetime import datetime, timedelta
 from pylons import tmpl_context as c, request
 from pylons_app.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 from pylons_app.lib.base import BaseController, render
+from pylons_app.lib.helpers import person
+from pylons_app.lib.utils import OrderedDict
 from pylons_app.model.hg_model import HgModel
+from time import mktime
 from webhelpers.paginate import Page
+import calendar
 import logging
+
 log = logging.getLogger(__name__)
 
 class SummaryController(BaseController):
         c.repo_branches = {}
         for name, hash in c.repo_info.branches.items()[:10]:
             c.repo_branches[name] = c.repo_info.get_changeset(hash)
-                    
+
+        c.commit_data = self.__get_commit_stats(c.repo_info)
+        
         return render('summary/summary.html')
+
+
+
+    def __get_commit_stats(self, repo):
+        aggregate = OrderedDict()
+        
+        
+        #graph range
+        td = datetime.today() 
+        y = td.year
+        m = td.month
+        d = td.day
+        c.ts_min = mktime((y, (td - timedelta(days=calendar.mdays[m] - 1)).month, d, 0, 0, 0, 0, 0, 0,))
+        c.ts_max = mktime((y, m, d, 0, 0, 0, 0, 0, 0,))
+        
+        
+#        #generate this monhts keys
+#        dates_range = OrderedDict()
+#        year_range = range(2010, datetime.today().year + 1)
+#        month_range = range(1, datetime.today().month + 1)
+#        
+#
+#        
+#        for y in year_range:
+#            for m in month_range:
+#                for d in range(1, calendar.mdays[m] + 1):
+#                    k = '%s-%s-%s' % (y, m, d)
+#                    timetupple = [int(x) for x in k.split('-')]
+#                    timetupple.extend([0 for _ in xrange(6)])
+#                    k = mktime(timetupple)                    
+#                    dates_range[k] = 0
+        
+        def author_key_cleaner(k):
+            k = person(k)
+            return k
+                
+        for cs in repo:
+            k = '%s-%s-%s' % (cs.date.timetuple()[0], cs.date.timetuple()[1],
+                              cs.date.timetuple()[2])
+            timetupple = [int(x) for x in k.split('-')]
+            timetupple.extend([0 for _ in xrange(6)])
+            k = mktime(timetupple)
+            if aggregate.has_key(author_key_cleaner(cs.author)):
+                if aggregate[author_key_cleaner(cs.author)].has_key(k):
+                    aggregate[author_key_cleaner(cs.author)][k] += 1
+                else:
+                    #aggregate[author_key_cleaner(cs.author)].update(dates_range)
+                    if k >= c.ts_min and k <= c.ts_max:
+                        aggregate[author_key_cleaner(cs.author)][k] = 1
+            else:
+                if k >= c.ts_min and k <= c.ts_max:
+                    aggregate[author_key_cleaner(cs.author)] = OrderedDict()
+                    #aggregate[author_key_cleaner(cs.author)].update(dates_range)
+                    aggregate[author_key_cleaner(cs.author)][k] = 1
+        
+        d = ''
+        tmpl0 = u""""%s":%s"""
+        tmpl1 = u"""{label:"%s",data:%s},"""
+        for author in aggregate:
+            d += tmpl0 % (author.decode('utf8'),
+                          tmpl1 \
+                          % (author.decode('utf8'),
+                        [[x, aggregate[author][x]] for x in aggregate[author]]))
+        if d == '':
+            d = '"%s":{label:"%s",data:[[0,0],]}' \
+                % (author_key_cleaner(repo.contact),
+                   author_key_cleaner(repo.contact))
+        return d
+
+

pylons_app/lib/base.py

     
     def __before__(self):
         c.hg_app_version = __version__
-        c.repos_prefix = config['hg_app_name']
+        c.hg_app_name = config['hg_app_name']
         c.repo_name = get_repo_slug(request)
         c.hg_app_user = auth.get_user(session)
         c.cached_repo_list = _get_repos_cached()

pylons_app/public/css/colors/blue.css

+/* -----------------------------------------------------------
+    header
+----------------------------------------------------------- */ 
+
+#header #header-inner
+{
+    background: #b0b0b0 url("../../images/colors/blue/header_inner.png") repeat-x;
+}
+
+/* -----------------------------------------------------------
+    header -> home
+----------------------------------------------------------- */ 
+
+#header #header-inner #home a
+{
+    background: url("../../images/colors/blue/button_home.png");
+}
+
+/* -----------------------------------------------------------
+    header -> quick
+----------------------------------------------------------- */
+
+#header #header-inner #quick li a
+{
+    background: #336699 url("../../images/colors/blue/quick_l.png") no-repeat top left;
+}
+
+#header #header-inner #quick li span
+{
+    background: url("../../images/colors/blue/quick_r.png") no-repeat top right;
+    border-left: 1px solid #3f6f9f;
+}
+
+#header #header-inner #quick li span.icon
+{
+    background: url("../../images/colors/blue/quick_l.png") no-repeat top left;
+    border-right: 1px solid #2e5c89;
+}
+
+#header #header-inner #quick li a:hover
+{
+    background: #4e4e4e url("../../images/colors/blue/quick_l_selected.png") no-repeat top left;
+}
+
+#header #header-inner #quick li a:hover span
+{
+    background: url("../../images/colors/blue/quick_r_selected.png") no-repeat top right;
+}
+
+#header #header-inner #quick li a:hover span.icon
+{
+    background: url("../../images/colors/blue/quick_l_selected.png") no-repeat top left;
+}
+
+/* -----------------------------------------------------------
+    header corners
+----------------------------------------------------------- */ 
+
+#header #header-inner div.corner
+{
+    background: url("../../images/colors/blue/header_inner_corners.png") no-repeat;
+}
+
+#header #header-inner div.tl
+{
+    top: 0;
+    left: 0;
+    background-position: 0 0;
+}
+
+#header #header-inner div.tr
+{
+    top: 0;
+    right: 0;
+    background-position: -6px 0;
+}
+
+/* -----------------------------------------------------------
+    content -> left -> menu
+----------------------------------------------------------- */ 
+
+#content #left #menu h6.selected
+{
+    background: #00376e url("../../images/colors/blue/menu_selected.png") repeat-x;
+}
+
+#content #left #menu h6.selected a
+{
+    background: url("../../images/colors/blue/menu_l_selected.png") no-repeat top left;
+}
+
+#content #left #menu h6.selected span
+{
+    background: url("../../images/colors/blue/menu_r_selected.png") no-repeat top right;
+}
+
+#content #left #menu ul
+{
+    background: #376ea6;
+}
+
+#content #left #menu li
+{
+    border-top: 1px solid #4377ab;
+    border-bottom: 1px solid #326395;
+}
+
+#content #left #menu li a
+{
+    background: url("../../images/colors/blue/menu_arrow.png") no-repeat 0 9px;
+}
+
+#content #left #menu li a:hover
+{
+    color: #b9dcff;
+}
+
+#content #left #menu li.collapsible
+{
+    background: url("../../images/colors/blue/menu_border.png") no-repeat top left;
+}
+
+#content #left #menu li.collapsible a.minus
+{
+    border-bottom: 1px solid #326395;
+}
+
+#content #left #menu li ul
+{
+    border-left: 18px solid #326395;
+}
+
+#content #left #menu li ul li
+{
+    background: url("../../images/colors/blue/menu_arrow.png") no-repeat 10px 9px;
+    border-top: 1px solid #4377ab;
+    border-bottom: 1px solid #326395;
+}
+
+/* -----------------------------------------------------------
+    content -> right -> box / title
+----------------------------------------------------------- */
+
+#content div.box div.title
+{
+    background: #336699 url("../../images/colors/blue/title.png") repeat-x;
+}
+
+#content div.box div.title ul.links li a
+{
+    background: url("../../images/colors/blue/title_link.png") no-repeat top left;
+    border-left: 1px solid #316293;
+}
+
+#content div.box div.title ul.links li a:hover
+{
+    background: url("../../images/colors/blue/title_tab_selected.png") no-repeat bottom center;
+    color: #bfe3ff;
+}
+
+#content div.box div.title ul.links li.ui-tabs-selected a
+{
+    background: url("../../images/colors/blue/title_tab_selected.png") no-repeat bottom center;
+    color: #bfe3ff;
+}
+
+/* -----------------------------------------------------------
+    content -> right -> box / search
+----------------------------------------------------------- */ 
+
+#content div.box div.title div.search
+{
+    background: url("../../images/colors/blue/title_link.png") no-repeat top left;
+    border-left: 1px solid #316293;
+}
+
+#content div.box div.title div.search div.input input
+{
+    border: 1px solid #316293;
+}
+
+#content div.box div.title div.search div.button input.ui-state-default
+{
+    background: #4e85bb url("../../images/colors/blue/button_highlight.png") repeat-x;
+    border: 1px solid #316293;
+    border-left: none;
+    color: #FFFFFF;
+}
+
+#content div.box div.title div.search div.button input.ui-state-hover
+{
+    background: #46a0c1 url("../../images/colors/blue/button_highlight_selected.png") repeat-x;
+    border: 1px solid #316293;
+    border-left: none;
+    color: #FFFFFF;
+}
+
+/* -----------------------------------------------------------
+    content -> right -> forms -> button
+----------------------------------------------------------- */
+
+#content div.box div.form div.fields div.field div.highlight .ui-state-default
+{
+    background: #4e85bb url("../../images/colors/blue/button_highlight.png") repeat-x;
+    border-top: 1px solid #5c91a4;
+    border-left: 1px solid #2a6f89;
+    border-right: 1px solid #2b7089;
+    border-bottom: 1px solid #1a6480;
+    color: #ffffff;
+}
+
+#content div.box div.form div.fields div.field div.highlight .ui-state-hover
+{
+    background: #46a0c1 url("../../images/colors/blue/button_highlight_selected.png") repeat-x;
+    border-top: 1px solid #78acbf;
+    border-left: 1px solid #34819e;
+    border-right: 1px solid #35829f;
+    border-bottom: 1px solid #257897;
+    color: #ffffff;
+}
+
+/* -----------------------------------------------------------
+    content -> right -> forms -> buttons
+----------------------------------------------------------- */
+
+#content div.box div.form div.fields div.buttons div.highlight input.ui-state-default
+{
+    background: #4e85bb url("../../images/colors/blue/button_highlight.png") repeat-x;
+    border-top: 1px solid #5c91a4;
+    border-left: 1px solid #2a6f89;
+    border-right: 1px solid #2b7089;
+    border-bottom: 1px solid #1a6480;
+    color: #ffffff;
+}
+
+#content div.box div.form div.fields div.buttons div.highlight input.ui-state-hover
+{
+    background: #46a0c1 url("../../images/colors/blue/button_highlight_selected.png") repeat-x;
+    border-top: 1px solid #78acbf;
+    border-left: 1px solid #34819e;
+    border-right: 1px solid #35829f;
+    border-bottom: 1px solid #257897;
+    color: #ffffff;
+}
+
+/* -----------------------------------------------------------
+    login -> title
+----------------------------------------------------------- */ 
+
+#login div.title
+{
+    background: #003367 url("../../images/colors/blue/header_inner.png") repeat-x;
+}
+
+/* -----------------------------------------------------------
+    login -> title / corners
+----------------------------------------------------------- */ 
+
+#login div.title div.corner
+{
+    background: url("../../images/colors/blue/login_corners.png") no-repeat;
+}
+
+#login div.title div.tl
+{
+    top: 0;
+    left: 0;
+    background-position: 0 0;
+}
+
+#login div.title div.tr
+{
+    top: 0;
+    right: 0;
+    background-position: -6px 0;
+}
+
+/* -----------------------------------------------------------
+    jquery ui -> select styling
+----------------------------------------------------------- */
+
+.ui-selectmenu-open li.ui-selectmenu-item-focus { background: #376ea6; }
+.ui-selectmenu-open li.ui-selectmenu-item-focus a { color: #ffffff; }
+
+/* -----------------------------------------------------------
+    jquery ui -> datepicker
+----------------------------------------------------------- */
+.ui-datepicker td span, .ui-datepicker td a:hover { background: #376ea6; color: #ffffff; }
+.ui-datepicker td span, .ui-datepicker td.ui-datepicker-current-day a { background: #376ea6; color: #ffffff; }
+
+/* -----------------------------------------------------------
+    jquery ui -> autocomplete
+----------------------------------------------------------- */
+
+.ui-autocomplete .ui-menu-item a:hover { background: #376ea6; color: #ffffff; }
+
+/* -----------------------------------------------------------
+    jquery ui -> dialog
+----------------------------------------------------------- */
+
+.ui-dialog { border: 1px solid #336699; }
+.ui-dialog .ui-dialog-titlebar { background: #336699 url("../../images/colors/blue/title.png") repeat-x; }

pylons_app/public/css/diff.css

 	color:#000000;
 }
 
-.code-difftable{
+table.code-difftable{
 	border-collapse: collapse;
 	width: 99%;
 }
-.code-difftable td:target *{
+table.code-difftable td:target *{
 	background:  repeat scroll 0 0 #FFFFBE !important;
 	text-decoration: underline;
 }
+
+table.code-difftable td {
+    padding: 0 !important; 
+    background: none !important; 
+    border:0 !important;    
+}
+
+
 .code-difftable .context{
 	background:none repeat scroll 0 0 #DDE7EF;
 }
 	padding:0;
 }
 
-
 .code { 
 	display: block;
 	width: 100%;

pylons_app/public/css/monoblue_custom.css

-/*** Initial Settings ***/
-#mainhtml {
-	margin: 15px 50px;
-	background: #DBD4C6;
-	font-family: sans-serif;
-}
-
-#mainhtml .breadcrumbs a:HOVER {
-	text-decoration: underline;
-}
-
-a {
-	color: #556CB5;
-	text-decoration: none;
-}
-
-a:HOVER {
-	text-decoration: underline;
-}
-
-/*** end of Initial Settings ***/ 
-
-/*** ***/
-.table_disp {
-	border-left: 0px solid #666666;
-	border-bottom: 1px solid #666666;
-	border-right: 1px solid #666666;
-	padding: 0px;
-	margin: 0px;
-	border-spacing: 0px;
-}
-
-.table_disp .header {
-	border-top: 1px solid #666666;
-	background-color: #556CB5;
-	font-weight: bold;
-	color: white;
-	vertical-align: middle;
-	padding: 3px 5px;
-	text-align: left;
-	font-size: 0.9em;
-}
-
-.table_disp .header td {
-	padding: 4px;
-	vertical-align: middle;
-	border-top: 1px solid #AAAAAA;
-	border-bottom: 2px solid #666666;
-}
-
-.table_disp td {
-	border-left: 1px solid #AAAAAA;
-	padding-left: 4px;
-	padding-right: 4px;
-}
-
-table tr.parity0:hover,table tr.parity1:hover {
-	background: #D5E1E6;
-}
-
-table tr.parity0 {
-	background: #EAEAE9;
-}
-
-table tr.parity1 {
-	background: #FFFFFF;
-}
-
-/*** ***/ 
-
-/** COMMON SETTINGS **/
-.add_icon {
-	background: url("/images/icons/add.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-}
-
-.edit_icon {
-	background: url("/images/icons/folder_edit.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-}
-
-.delete_icon {
-	background: url("/images/icons/delete.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-}
-
-.action_button {
-	border: 0px;
-	display: block;
-}
-
-.action_button:hover {
-	border: 0px;
-	font-style: italic;
-	cursor: pointer;
-}
-
-.flash_msg ul {
-	margin: 0;
-	padding: 25px 0px 0px 0px;
-}
-
-.error_msg {
-	background-color: #FFCFCF;
-	background-image: url("/images/icons/error_msg.png");
-	border: 1px solid #FF9595;
-	color: #CC3300;
-}
-
-.warning_msg {
-	background-color: #FFFBCC;
-	background-image: url("/images/icons/warning_msg.png");
-	border: 1px solid #FFF35E;
-	color: #C69E00;
-}
-
-.success_msg {
-	background-color: #D5FFCF;
-	background-image: url("/images/icons/success_msg.png");
-	border: 1px solid #97FF88;
-	color: #009900;
-}
-
-.notice_msg {
-	background-color: #DCE3FF;
-	background-image: url("/images/icons/notice_msg.png");
-	border: 1px solid #93A8FF;
-	color: #556CB5;
-}
-
-.success_msg,.error_msg,.notice_msg,.warning_msg {
-	background-position: 10px center;
-	background-repeat: no-repeat;
-	font-size: 12px;
-	font-weight: bold;
-	min-height: 14px;
-	line-height: 14px;
-	margin-bottom: 0px;
-	margin-top: 0px;
-	padding: 3px 10px 3px 40px;
-	display: block;
-	overflow: auto;
-}
-
-#msg_close {
-	background: transparent url("icons/cross_grey_small.png") no-repeat
-		scroll 0 0;
-	cursor: pointer;
-	height: 16px;
-	position: absolute;
-	right: 5px;
-	top: 5px;
-	width: 16px;
-}
-
-.error-message {
-	color: #CC3300;
-}
-
-/**** TOOLTIP ****/
-.yui-overlay,.yui-panel-container {
-	visibility: hidden;
-	position: absolute;
-	z-index: 2;
-}
-
-.yui-tt {
-	visibility: hidden;
-	position: absolute;
-	color: #666666;
-	background-color: #FFFFFF;
-	font-family: arial, helvetica, verdana, sans-serif;
-	padding: 8px;
-	border: 2px solid #556CB5;
-	font: 100% sans-serif;
-	width: auto;
-	opacity: 1.0;
-}
-
-.yui-tt-shadow {
-	display: none;
-}
-
-/** END TOOLTIP **/ 
-
-/** AUTOCOMPLETE **/ 
-
-.ac{
-	vertical-align: top;
-
-}
-.ac .match {
-    font-weight:bold;
-}
-
-.ac .yui-ac {
-	position: relative;
-	font-family: arial;
-	font-size: 100%;
-}
-
-.ac .perm_ac{
-	width:15em;
-}
-/* styles for input field */
-.ac .yui-ac-input {
-	position: absolute;
-	width: 100%;
-}
-
-/* styles for results container */
-.ac .yui-ac-container {
-	position: absolute;
-	top: 1.6em;
-	width: 100%;
-}
-
-/* styles for header/body/footer wrapper within container */
-.ac .yui-ac-content {
-	position: absolute;
-	width: 100%;
-	border: 1px solid #808080;
-	background: #fff;
-	overflow: hidden;
-	z-index: 9050;
-}
-
-/* styles for container shadow */
-.ac .yui-ac-shadow {
-	position: absolute;
-	margin: .3em;
-	width: 100%;
-	background: #000;
-	-moz-opacity: 0.10;
-	opacity: .10;
-	filter: alpha(opacity = 10);
-	z-index: 9049;
-}
-
-/* styles for results list */
-.ac .yui-ac-content ul {
-	margin: 0;
-	padding: 0;
-	width: 100%;
-}
-
-/* styles for result item */
-.ac .yui-ac-content li {
-	margin: 0;
-	padding: 2px 5px;
-	cursor: default;
-	white-space: nowrap;
-}
-
-/* styles for prehighlighted result item */
-.ac .yui-ac-content li.yui-ac-prehighlight {
-	background: #B3D4FF;
-}
-
-/* styles for highlighted result item */
-.ac .yui-ac-content li.yui-ac-highlight {
-	background: #556CB5;
-	color: #FFF;
-}
-
-/** END AUTOCOMPLETE **/
-div#main {
-	padding: 5px;
-}
-
-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: sans-serif;
-	letter-spacing: 1px;
-	color: #FFFFFF;
-}
-
-div.page-header h1 a {
-	font-weight: bold;
-	color: #FFFFFF;
-}
-
-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;
-	padding: 0;
-}
-
-ul.page-nav li {
-	margin: 0 4px 0 0;
-	float: left;
-	height: 24px;
-	font-size: 1.1em;
-	line-height: 24px;
-	text-align: center;
-	background: #556CB5;
-}
-
-ul.page-nav li.current {
-	background: #FFF;
-	padding-right: 5px;
-	padding-left: 5px;
-}
-
-ul.page-nav li.current a {
-	color: #556CB5;
-}
-
-ul.page-nav li a {
-	height: 24px;
-	color: #FFF;
-	padding-right: 5px;
-	padding-left: 5px;
-	display: block;
-	text-decoration: none;
-	font-weight: bold;
-}
-
-ul.page-nav li.logout a {
-	color: #FDAC9D;
-}
-
-ul.page-nav li a:hover {
-	background: #FFF;
-	color: #556CB5;
-}
-
-ul.submenu {
-	margin: 5px 0px -20px 0px;
-	list-style-type: none;
-}
-
-ul.submenu li {
-	margin: 0 10px 0 0;
-	font-size: 0.9em;
-	font-weight: bold;
-	display: inline;
-}
-
-ul.submenu .repos {
-	background: url("/images/icons/folder_edit.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-}
-
-ul.submenu .users {
-	background: url("/images/icons/user_edit.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-}
-
-ul.submenu .permissions {
-	background: url("/images/icons/folder_key.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-}
-ul.submenu .settings {
-	background: url("/images/icons/cog.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-}
-
-ul.submenu .current_submenu {
-	border-bottom: 2px solid #556CB5;
-}
-
-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;
-	color: #556CB5;
-}
-
-h2.no-link {
-	color: #006699;
-}
-
-h2.no-border {
-	color: #FFF;
-	background: #556CB5;
-	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;
-	text-align: center;
-	font-weight: bold;
-	font-size: 90%;
-}
-
-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;
-}
-
-span.logtags span {
-	background-repeat: no-repeat;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-	font-weight: bold;
-}
-
-span.logtags span.tagtag {
-	background-image: url("/images/icons/tag_green.png");
-}
-
-span.logtags span.branchtag {
-	background-image: url("/images/icons/arrow_branch.png");
-	color: #628F53;
-}
-
-span.logtags span.inbranchtag {
-	background-image: url("/images/icons/arrow_branch.png");
-}
-
-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;
-}
-
-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;
-}
-
-#clone_url {
-	border: 0px;
-}
-
-/** 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 **/
-#changeset_content {
-	border:1px solid #CCCCCC;
-	padding:5px;
-}
-
-#changeset_content .container .wrapper {
-	width: 600px;
-}
-
-#changeset_content .container {
-	height: 120px;
-}
-
-#changeset_content .container .left {
-	float: left;
-	width: 70%;
-	padding-left: 5px;
-}
-
-#changeset_content .container .right {
-	float: right;
-	width: 25%;
-	text-align: right;
-}
-
-#changeset_content .container .left .date {
-	font-weight: bold;
-}
-
-#changeset_content .container .left .author {
-	
-}
-
-#changeset_content .container .left .message {
-	font-style: italic;
-	color: #556CB5;
-}
-
-.cs_files {
-
-}
-
-.cs_files .cs_added {
-	background: url("/images/icons/page_white_add.png") no-repeat scroll 3px;
-	/*background-color:#BBFFBB;*/
-	height: 16px;
-	padding-left: 20px;
-	margin-top: 7px;
-	text-align: left;
-}
-
-.cs_files .cs_changed {
-	background: url("/images/icons/page_white_edit.png") no-repeat scroll
-		3px;
-	/*background-color: #FFDD88;*/
-	height: 16px;
-	padding-left: 20px;
-	margin-top: 7px;
-	text-align: left;
-}
-
-.cs_files .cs_removed {
-	background: url("/images/icons/page_white_delete.png") no-repeat scroll
-		3px;
-	/*background-color: #FF8888;*/
-	height: 16px;
-	padding-left: 20px;
-	margin-top: 7px;
-	text-align: left;
-}
-
-/** end of changeset **/ /** canvas **/
-
-#graph {
-	overflow: hidden;
-}
-
-#graph_nodes {
-	width: 160px;
-	float: left;
-	margin-left:-50px;
-	margin-top: 5px;
-}
-
-#graph_content {
-	width: 800px;
-	float: left;
-}
-
-#graph_content .container_header {
-	border: 1px solid #CCCCCC;
-	height: 30px;
-	background: #EEEEEE;
-}
-
-#graph_content .container .wrapper {
-	width: 600px;
-}
-
-#graph_content .container {
-	border-bottom: 1px solid #CCCCCC;
-	border-left: 1px solid #CCCCCC;
-	border-right: 1px solid #CCCCCC;
-	min-height: 80px;
-	overflow: hidden;
-}
-
-#graph_content .container .left {
-	float: left;
-	width: 70%;
-	padding-left: 5px;
-}
-
-#graph_content .container .right {
-	float: right;
-	width: 25%;
-	text-align: right;
-}
-
-#graph_content .container .left .date {
-	font-weight: bold;
-}
-
-#graph_content .container .left .author {
-	
-}
-
-#graph_content .container .left .message {
-	font-size: 80%;
-}
-
-.right div {
-	clear: both;
-}
-
-.right .changes .added,.changed,.removed {
-	border: 1px solid #DDDDDD;
-	display: block;
-	float: right;
-	font-size: 0.75em;
-	text-align: center;
-	min-width: 15px;
-}
-
-.right .changes .added {
-	background: #BBFFBB;
-}
-
-.right .changes .changed {
-	background: #FFDD88;
-}
-
-.right .changes .removed {
-	background: #FF8888;
-}
-
-.right .merge {
-	vertical-align: top;
-	font-size: 60%;
-	font-weight: bold;
-}
-
-.right .merge img {
-	vertical-align: bottom;
-}
-
-.right .parent {
-	font-size: 90%;
-	font-family: monospace;
-}
-
-/** end of canvas **/ /* FILE BROWSER */
-div.browserblock {
-	overflow: hidden;
-	padding: 0px;
-	border: 1px solid #ccc;
-	background: #f8f8f8;
-	font-size: 100%;
-	line-height: 100%;
-	/* new */
-	line-height: 125%;
-}
-
-div.browserblock .browser-header {
-	border-bottom: 1px solid #CCCCCC;
-	background: #EEEEEE;
-	color: blue;
-	padding: 10px 0 10px 0;
-}
-
-div.browserblock .browser-header span {
-	margin-left: 25px;
-	font-weight: bold;
-}
-
-div.browserblock .browser-body {
-	background: #EEEEEE;
-}
-
-table.code-browser {
-	border-collapse: collapse;
-	width: 100%;
-}
-
-table.code-browser tr {
-	margin: 3px;
-}
-
-table.code-browser thead th {
-	background-color: #EEEEEE;
-	height: 20px;
-	font-size: 1.1em;
-	font-weight: bold;
-	text-align: center;
-	text-align: left;
-	padding-left: 10px;
-}
-
-table.code-browser tbody tr {
-	
-}
-
-table.code-browser tbody td {
-	padding-left: 10px;
-	height: 20px;
-}
-
-.info-table {
-	background: none repeat scroll 0 0 #FAFAFA;
-	border-bottom: 1px solid #DDDDDD;
-	width: 100%;
-}
-
-.rss_logo {
-	background: url("/images/icons/rss_16.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-}
-
-.atom_logo {
-	background: url("/images/icons/atom.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	padding-top: 0px;
-	text-align: left;
-}
-
-.archive_logo {
-	background: url("/images/icons/compress.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	text-align: left;
-}
-
-.browser-file {
-	background: url("/images/icons/document_16.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	text-align: left;
-}
-
-.browser-dir {
-	background: url("/images/icons/folder_16.png") no-repeat scroll 3px;
-	height: 16px;
-	padding-left: 20px;
-	text-align: left;
-}
-
-#repos_list {
-	border: 1px solid #556CB5;
-	background: #FFFFFF;
-}

pylons_app/public/css/pygments.css

 	margin-left:25px;
 	font-weight: normal;
 }
+div.codeblock .code-body table{
+    width: 0 !important;    
+}
+
+div.annotatediv{
+	margin-left:2px;
+	margin-right:4px;
+}
+
 
 .code-highlight {
     padding: 0px;

pylons_app/public/css/reset.css

+/* http://meyerweb.com/eric/tools/css/reset/ */
+/* v1.0 | 20080212 */
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	font-size: 100%;
+	vertical-align: baseline;
+	background: transparent;
+}
+body {
+	line-height: 1;
+}
+ol, ul {
+	list-style: none;
+}
+blockquote, q {
+	quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+	content: '';
+	content: none;
+}
+
+/* remember to define focus styles! */
+:focus {
+	outline: 0;
+}
+
+/* remember to highlight inserts somehow! */
+ins {
+	text-decoration: none;
+}
+del {
+	text-decoration: line-through;
+}
+
+/* tables still need 'cellspacing="0"' in the markup */
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}

pylons_app/public/css/style.css

+/* -----------------------------------------------------------
+	main stylesheet
+----------------------------------------------------------- */ 
+
+html
+{
+    height: 100%;  
+}
+
+body
+{
+	margin: 0;
+	padding: 0;
+    height: 100%;
+	background: #d1d1d1 url("../images/background.png") repeat;
+	font-family: Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
+	font-size: 11px;
+}
+
+/* -----------------------------------------------------------
+	images
+----------------------------------------------------------- */ 
+
+img
+{
+	border: none;	
+}
+
+/* -----------------------------------------------------------
+	anchors
+----------------------------------------------------------- */ 
+
+a
+{
+	color: #0066CC;	
+	text-decoration: none;
+	cursor: pointer;
+}
+
+a:hover
+{
+	color: #000000;	
+	text-decoration: underline;
+}
+
+/* -----------------------------------------------------------
+	headings
+----------------------------------------------------------- */ 
+
+h1, h2, h3, h4, h5, h6
+{
+    color: #292929;
+    font-weight: bold;
+}
+
+h1
+{
+    font-size: 22px;
+}
+
+h2
+{
+    font-size: 20px;
+}
+
+h3
+{
+    font-size: 18px;  
+}
+
+h4
+{
+    font-size: 16px;
+}
+
+h5
+{
+    font-size: 14px; 
+}
+
+h6
+{
+    font-size: 11px; 
+}
+
+/* -----------------------------------------------------------
+	lists
+----------------------------------------------------------- */ 
+
+ul.circle { list-style-type: circle; }
+ul.disc { list-style-type: disc; }
+ul.square { list-style-type: square; }
+ol.lower-roman { list-style-type: lower-roman; }
+ol.upper-roman { list-style-type: upper-roman; }
+ol.lower-alpha { list-style-type: lower-alpha; }
+ol.upper-alpha { list-style-type: upper-alpha; }
+ol.decimal  { list-style-type: decimal; }
+
+/* -----------------------------------------------------------
+	colors
+----------------------------------------------------------- */ 
+
+div.color
+{
+    margin: 7px 0 0 60px;
+    padding: 1px 1px 1px 0px;
+	clear: both;
+	overflow: hidden;
+    position: absolute;
+    background: #FFFFFF;
+}
+
+div.color a
+{
+    margin: 0 0 0 1px;
+    padding: 0;
+    width: 15px;
+    height: 15px;
+    display: block;
+    float: left;
+}
+
+div.color a.blue
+{
+    background: #376ea6;
+}
+
+div.color a.green
+{
+    background: #85924b;
+}
+
+div.color a.brown
+{
+    background: #9b6e42;
+}
+
+div.color a.purple
+{
+    background: #88528b;
+}
+
+div.color a.red
+{
+    background: #bd3220;
+}
+
+div.color a.greyblue
+{
+    background: #566e86;
+}
+
+/* -----------------------------------------------------------
+	options
+----------------------------------------------------------- */ 
+
+div.options
+{
+    margin: 7px 0 0 162px;
+    padding: 0;
+	clear: both;
+	overflow: hidden;
+    position: absolute;
+    background: #FFFFFF;
+}
+
+div.options a
+{
+	margin: 0;
+    padding: 3px 8px 3px 8px;
+    height: 1%;
+    display: block;
+	text-decoration: none;	
+}
+
+div.options a:hover
+{
+	text-decoration: none;	
+}
+
+/* -----------------------------------------------------------
+	header
+----------------------------------------------------------- */ 
+
+#header
+{
+	margin: 0;
+	padding: 0 60px 0 60px;
+	background: #b0b0b0 url("../images/header_background.png") repeat;
+}
+
+
+/* -----------------------------------------------------------
+	header -> user
+----------------------------------------------------------- */ 
+
+#header ul#logged-user
+{
+	margin: 0;
+	padding: 0;
+	float: right;
+}
+
+#header ul#logged-user li
+{
+	margin: 0;
+	padding: 10px 12px 10px 12px;
+	list-style: none;
+	float: left;
+	border-left: 1px solid #bbbbbb;
+	border-right: 1px solid #a5a5a5;
+}
+
+#header ul#logged-user li.first
+{
+	border-left: none;	
+}
+
+#header ul#logged-user li.last
+{
+	border-right: none;	
+}
+
+#header ul#logged-user li a
+{
+	color: #4e4e4e;
+	font-weight: bold;
+	text-decoration: none;
+}
+
+#header ul#logged-user li a:hover
+{
+	color: #376ea6;
+	text-decoration: underline;
+}
+
+#header ul#logged-user li.highlight a
+{
+	color: #ffffff;
+}
+
+#header ul#logged-user li.highlight a:hover
+{
+	color: #376ea6;
+}
+
+#header #header-inner
+{
+	margin: 0;
+	padding: 0;
+	height: 40px;
+	clear: both;
+	position: relative;
+	background: #003367 url("../images/colors/blue/header_inner.png") repeat-x;
+	border-bottom: 6px solid #ffffff;
+}
+
+/* -----------------------------------------------------------
+	header -> home
+----------------------------------------------------------- */ 
+
+#header #header-inner #home
+{
+	float: left;	
+}
+
+#header #header-inner #home a
+{
+	margin: 0;
+	padding: 0;
+	height: 40px;
+	width: 46px;
+	display: block;
+	background: url("../images/colors/blue/button_home.png");
+	background-position: 0 0;	
+}
+
+#header #header-inner #home a:hover
+{
+	background-position: 0 -40px;	
+}
+
+/* -----------------------------------------------------------
+	header -> logo
+----------------------------------------------------------- */ 
+
+#header #header-inner #logo
+{
+	float: left;	
+}
+
+#header #header-inner #logo h1
+{
+	margin: 13px 0 0 13px;
+	padding: 0;
+	color: #FFFFFF;
+	font-size: 14px;
+	text-transform: uppercase;	
+}
+
+#header #header-inner #logo a
+{
+	color: #ffffff;
+	text-decoration: none;	
+}
+
+#header #header-inner #logo a:hover
+{
+	color: #dabf29;
+}
+
+/* -----------------------------------------------------------
+	header -> quick
+----------------------------------------------------------- */ 
+
+#header #header-inner #quick,
+#header #header-inner #quick ul
+{
+	margin: 10px 5px 0 0;
+	padding: 0;
+	position: relative;
+	float: right;
+	list-style-type: none;
+	list-style-position: outside;
+}
+
+#header #header-inner #quick li
+{
+	margin: 0 4px 0 0;
+	padding: 0;
+	position: relative;
+	float: left;
+}
+
+#header #header-inner #quick li a
+{
+	top: 0;
+	left: 0;
+	padding: 0;
+	height: 1%;
+	display: block;
+	clear: both;
+	overflow: hidden;
+	background: #336699 url("../images/colors/blue/quick_l.png") no-repeat top left;
+	color: #FFFFFF;
+	font-weight: bold;
+	text-decoration: none;
+}
+
+#header #header-inner #quick li span
+{
+	top: 0;
+	right: 0;
+	margin: 0;
+	padding: 10px 12px 8px 10px;
+	height: 1%;
+	display: block;
+	float: left;
+	background: url("../images/colors/blue/quick_r.png") no-repeat top right;
+	border-left: 1px solid #3f6f9f;
+}
+
+#header #header-inner #quick li span.icon
+{
+	top: 0;
+	left: 0;
+	padding: 8px 8px 4px 8px;
+	background: url("../images/colors/blue/quick_l.png") no-repeat top left;
+	border-left: none;
+	border-right: 1px solid #2e5c89;
+}
+
+#header #header-inner #quick li a:hover
+{
+	background: #4e4e4e;
+}
+
+#header #header-inner #quick li a:hover span
+{
+	background: url("../images/colors/blue/quick_r_selected.png") no-repeat top right;
+	border-left: 1px solid #545454;
+}
+
+#header #header-inner #quick li a:hover span.icon
+{
+	background: url("../images/colors/blue/quick_l_selected.png") no-repeat top left;
+	border-left: none;
+	border-right: 1px solid #464646;
+}
+
+#header #header-inner #quick ul
+{
+	top: 29px;
+	right: 0;
+	margin: 0;
+	padding: 0;
+	width: 200px;
+	display: none;
+    position: absolute;
+	background: #FFFFFF;
+	border: 1px solid #666;
+    border-top: 1px solid #003367;
+}
+
+#header #header-inner #quick li ul li
+{
+	border-bottom: 1px solid #dddddd;	
+}
+
+#header #header-inner #quick li ul li.last
+{
+	border: none;	
+}
+
+#header #header-inner #quick li ul li a.repos,#header #header-inner #quick li ul li a.repos:hover
+{
+	margin: 0;
+	padding: 12px 9px 7px 28px;
+	width: 167px;
+	background: #FFFFFF url("../images/icons/folder_edit.png") no-repeat 8px 9px;
+}
+#header #header-inner #quick li ul li a.users,#header #header-inner #quick li ul li a.users:hover
+{
+	margin: 0;
+	padding: 12px 9px 7px 28px;
+	width: 167px;
+	background: #FFFFFF url("../images/icons/user_edit.png") no-repeat 8px 9px;
+}
+#header #header-inner #quick li ul li a.settings,#header #header-inner #quick li ul li a.settings:hover
+{
+	margin: 0;
+	padding: 12px 9px 7px 28px;
+	width: 167px;
+	background: #FFFFFF url("../images/icons/cog.png") no-repeat 8px 9px;
+}
+
+#header #header-inner #quick li ul li a.permissions,#header #header-inner #quick li ul li a.permissions:hover
+{
+	margin: 0;
+	padding: 12px 9px 7px 28px;
+	width: 167px;
+	background: #FFFFFF url("../images/icons/key.png") no-repeat 8px 9px;
+}
+
+#header #header-inner #quick li ul li a
+{
+	margin: 0;
+	padding: 7px 9px 7px 9px;
+	height: 1%;
+	width: 182px;
+	height: auto;
+	display: block;
+	float: left;
+	background: #FFFFFF;
+	color: #0066CC;
+	font-weight: normal;
+}
+
+#header #header-inner #quick li ul li a:hover
+{
+	color: #000000;
+	background: #FFFFFF;
+}
+
+#header #header-inner #quick ul ul 
+{
+	top: auto;
+}	
+
+#header #header-inner #quick li ul ul 
+{
+	right: 200px;
+}
+
+#header #header-inner #quick li:hover ul ul, 
+#header #header-inner #quick li:hover ul ul ul, 
+#header #header-inner #quick li:hover ul ul ul ul 
+{
+	display: none;
+}
+
+#header #header-inner #quick li:hover ul, 
+#header #header-inner #quick li li:hover ul, 
+#header #header-inner #quick li li li:hover ul, 
+#header #header-inner #quick li li li li:hover ul
+{
+	display: block;
+}
+
+/* -----------------------------------------------------------
+	header corners
+----------------------------------------------------------- */ 
+
+#header #header-inner div.corner
+{
+	height: 6px;
+	width: 6px;
+	position: absolute;
+	background: url("../images/colors/blue/header_inner_corners.png") no-repeat;
+}
+
+#header #header-inner div.tl
+{
+	top: 0;
+	left: 0;
+    background-position: 0 0;
+}
+
+#header #header-inner div.tr
+{
+	top: 0;
+	right: 0;
+    background-position: -6px 0;
+}
+
+/* -----------------------------------------------------------
+	content
+----------------------------------------------------------- */ 
+
+#content 
+{
+	margin: 10px 0 0 0;
+	padding: 0;
+    min-height: 100%;
+	clear: both;
+	overflow: hidden;
+	background: url("../images/content.png") repeat-y top left;	
+}
+
+/* -----------------------------------------------------------
+	content -> left
+----------------------------------------------------------- */ 
+
+#content #left
+{
+	left: 0;
+	width: 280px;
+	position: absolute;
+}
+
+/* -----------------------------------------------------------
+	content -> left -> menu
+----------------------------------------------------------- */ 
+
+#content #left #menu
+{
+	margin: 5px 10px 0 60px;
+	padding: 0;
+	clear: both;
+	overflow: hidden;
+}
+
+/* -----------------------------------------------------------
+	content -> left -> menu / heading
+----------------------------------------------------------- */ 
+
+#content #left #menu h6
+{
+	margin: 5px 0 0 0;
+	padding: 0;
+	clear: both;
+	overflow: hidden;
+	background: #dfdfdf url("../images/menu.png") repeat-x;
+	color: #6e6e6e;
+}
+
+#content #left #menu h6 a
+{
+	margin: 0;
+	padding: 0;
+	height: 1%;
+	display: block;
+    clear: both;
+    overflow: hidden;
+	background: url("../images/menu_l.png") no-repeat top left;
+	color: #6e6e6e;
+	text-decoration: none;
+}
+
+#content #left #menu h6 span
+{
+	margin: 0;
+	padding: 9px 10px 10px 10px;
+	height: 1%;
+	display: block;
+	background: url("../images/menu_r.png") no-repeat top right;
+}