Changeset - 4679105ef03e
[Not reviewed]
default
1 4 0
Marcin Kuzminski - 15 years ago 2010-09-03 07:58:14
marcin@python-works.com
more css html fixes (+cleanups), rewrote definition list for files
merged css
5 files changed with 67 insertions and 338 deletions:
0 comments (0 inline, 0 general)
pylons_app/lib/helpers.py
Show inline comments
 
@@ -21,334 +21,334 @@ from webhelpers.number import format_byt
 
from webhelpers.pylonslib import Flash as _Flash
 
from webhelpers.pylonslib.secure_form import secure_form
 
from webhelpers.text import chop_at, collapse, convert_accented_entities, \
 
    convert_misc_entities, lchop, plural, rchop, remove_formatting, \
 
    replace_whitespace, urlify, truncate, wrap_paragraphs
 

	
 
#Custom helpers here :)
 
class _Link(object):
 
    '''
 
    Make a url based on label and url with help of url_for
 
    @param label:name of link    if not defined url is used
 
    @param url: the url for link
 
    '''
 

	
 
    def __call__(self, label='', *url_, **urlargs):
 
        if label is None or '':
 
            label = url
 
        link_fn = link_to(label, url(*url_, **urlargs))
 
        return link_fn
 

	
 
link = _Link()
 

	
 
class _GetError(object):
 

	
 
    def __call__(self, field_name, form_errors):
 
        tmpl = """<span class="error_msg">%s</span>"""
 
        if form_errors and form_errors.has_key(field_name):
 
            return literal(tmpl % form_errors.get(field_name))
 

	
 
get_error = _GetError()
 

	
 
def recursive_replace(str, replace=' '):
 
    """
 
    Recursive replace of given sign to just one instance
 
    @param str: given string
 
    @param replace:char to find and replace multiple instances
 
        
 
    Examples::
 
    >>> recursive_replace("Mighty---Mighty-Bo--sstones",'-')
 
    'Mighty-Mighty-Bo-sstones'
 
    """
 

	
 
    if str.find(replace * 2) == -1:
 
        return str
 
    else:
 
        str = str.replace(replace * 2, replace)
 
        return recursive_replace(str, replace)  
 

	
 
class _ToolTip(object):
 
    
 
    def __call__(self, tooltip_title, trim_at=50):
 
        """
 
        Special function just to wrap our text into nice formatted autowrapped
 
        text
 
        @param tooltip_title:
 
        """
 
        
 
        return wrap_paragraphs(escape(tooltip_title), trim_at)\
 
                       .replace('\n', '<br/>')
 
    
 
    def activate(self):
 
        """
 
        Adds tooltip mechanism to the given Html all tooltips have to have 
 
        set class tooltip and set attribute tooltip_title.
 
        Then a tooltip will be generated based on that
 
        All with yui js tooltip
 
        """
 
        
 
        js = '''
 
        YAHOO.util.Event.onDOMReady(function(){
 
            function toolTipsId(){
 
                var ids = [];
 
                var tts = YAHOO.util.Dom.getElementsByClassName('tooltip');
 
                
 
                for (var i = 0; i < tts.length; i++) {
 
                    //if element doesn not have and id autgenerate one for tooltip
 
                    
 
                    if (!tts[i].id){
 
                        tts[i].id='tt'+i*100;
 
                    }
 
                    ids.push(tts[i].id);
 
                }
 
                return ids        
 
            };
 
            var myToolTips = new YAHOO.widget.Tooltip("tooltip", { 
 
                context: toolTipsId(),
 
                monitorresize:false,
 
                xyoffset :[0,0],
 
                autodismissdelay:300000,
 
                hidedelay:5,
 
                showdelay:20,
 
            });
 
            
 
            //Mouse Over event disabled for new repositories since they dont
 
            //have last commit message
 
            myToolTips.contextMouseOverEvent.subscribe(
 
                function(type, args) {
 
                    var context = args[0];
 
                    var txt = context.getAttribute('tooltip_title');
 
                    if(txt){                                       
 
                        return true;
 
                    }
 
                    else{
 
                        return false;
 
                    }
 
                });
 
            
 
                            
 
            // Set the text for the tooltip just before we display it. Lazy method
 
            myToolTips.contextTriggerEvent.subscribe( 
 
                 function(type, args) { 
 

	
 
                 
 
                        var context = args[0]; 
 
                        
 
                        var txt = context.getAttribute('tooltip_title');
 
                        this.cfg.setProperty("text", txt);
 
                        
 
                        
 
                        // positioning of tooltip
 
                        var tt_w = this.element.clientWidth;
 
                        var tt_h = this.element.clientHeight;
 
                        
 
                        var context_w = context.offsetWidth;
 
                        var context_h = context.offsetHeight;
 
                        
 
                        var pos_x = YAHOO.util.Dom.getX(context);
 
                        var pos_y = YAHOO.util.Dom.getY(context);
 

	
 
                        var display_strategy = 'top';
 
                        var xy_pos = [0,0];
 
                        switch (display_strategy){
 
                        
 
                            case 'top':
 
                                var cur_x = (pos_x+context_w/2)-(tt_w/2);
 
                                var cur_y = pos_y-tt_h-4;
 
                                xy_pos = [cur_x,cur_y];                                
 
                                break;
 
                            case 'bottom':
 
                                var cur_x = (pos_x+context_w/2)-(tt_w/2);
 
                                var cur_y = pos_y+context_h+4;
 
                                xy_pos = [cur_x,cur_y];                                
 
                                break;
 
                            case 'left':
 
                                var cur_x = (pos_x-tt_w-4);
 
                                var cur_y = pos_y-((tt_h/2)-context_h/2);
 
                                xy_pos = [cur_x,cur_y];                                
 
                                break;
 
                            case 'right':
 
                                var cur_x = (pos_x+context_w+4);
 
                                var cur_y = pos_y-((tt_h/2)-context_h/2);
 
                                xy_pos = [cur_x,cur_y];                                
 
                                break;
 
                             default:
 
                                var cur_x = (pos_x+context_w/2)-(tt_w/2);
 
                                var cur_y = pos_y-tt_h-4;
 
                                xy_pos = [cur_x,cur_y];                                
 
                                break;                             
 
                                 
 
                        }
 

	
 
                        this.cfg.setProperty("xy",xy_pos);
 

	
 
                  });
 
                  
 
            //Mouse out 
 
            myToolTips.contextMouseOutEvent.subscribe(
 
                function(type, args) {
 
                    var context = args[0];
 
                    
 
                });
 
        });
 
        '''         
 
        return literal(js)
 

	
 
tooltip = _ToolTip()
 

	
 
class _FilesBreadCrumbs(object):
 
    
 
    def __call__(self, repo_name, rev, paths):
 
        url_l = [link_to(repo_name, url('files_home',
 
                                        repo_name=repo_name,
 
                                        revision=rev, 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,
 
                                            revision=rev,
 
                                            f_path='/'.join(paths_l[:cnt]))))
 

	
 
        return literal(' / '.join(url_l))
 
        return literal('/'.join(url_l))
 

	
 
files_breadcrumbs = _FilesBreadCrumbs()
 

	
 
def pygmentize(filenode, **kwargs):
 
    """
 
    pygmentize function using pygments
 
    @param filenode:
 
    """
 
    return literal(code_highlight(filenode.content, 
 
                                  filenode.lexer, HtmlFormatter(**kwargs)))
 

	
 
def pygmentize_annotation(filenode, **kwargs):
 
    """
 
    pygmentize function for annotation
 
    @param filenode:
 
    """
 
    
 
    color_dict = {}
 
    def gen_color():
 
        """generator for getting 10k of evenly distibuted colors using hsv color
 
        and golden ratio.
 
        """        
 
        import colorsys
 
        n = 10000
 
        golden_ratio = 0.618033988749895
 
        h = 0.22717784590367374
 
        #generate 10k nice web friendly colors in the same order
 
        for c in xrange(n):
 
            h +=golden_ratio
 
            h %= 1
 
            HSV_tuple = [h, 0.95, 0.95]
 
            RGB_tuple = colorsys.hsv_to_rgb(*HSV_tuple)
 
            yield map(lambda x:str(int(x*256)),RGB_tuple)           
 

	
 
    cgenerator = gen_color()
 
        
 
    def get_color_string(cs):
 
        if color_dict.has_key(cs):
 
            col = color_dict[cs]
 
        else:
 
            col = color_dict[cs] = cgenerator.next()
 
        return "color: rgb(%s)! important;" % (', '.join(col))
 
        
 
    def url_func(changeset):
 
        tooltip_html = "<div style='font-size:0.8em'><b>Author:</b>"+\
 
        " %s<br/><b>Date:</b> %s</b><br/><b>Message:</b> %s<br/></div>" 
 
        
 
        tooltip_html = tooltip_html % (changeset.author,
 
                                               changeset.date,
 
                                               tooltip(changeset.message))
 
        lnk_format = 'r%-5s:%s' % (changeset.revision,
 
                                 changeset.raw_id)
 
        uri = link_to(
 
                lnk_format,
 
                url('changeset_home', repo_name=changeset.repository.name,
 
                    revision=changeset.raw_id),
 
                style=get_color_string(changeset.raw_id),
 
                class_='tooltip',
 
                tooltip_title=tooltip_html
 
              )
 
        
 
        uri += '\n'
 
        return uri   
 
    return literal(annotate_highlight(filenode, url_func, **kwargs))
 
      
 
def repo_name_slug(value):
 
    """
 
    Return slug of name of repository
 
    """
 
    slug = urlify(value)
 
    for c in """=[]\;'"<>,/~!@#$%^&*()+{}|:""":
 
        slug = slug.replace(c, '-')
 
    slug = recursive_replace(slug, '-')
 
    return slug
 

	
 
flash = _Flash()
 

	
 

	
 
#===============================================================================
 
# MERCURIAL FILTERS available via h.
 
#===============================================================================
 
from mercurial import util
 
from mercurial.templatefilters import age as _age, person as _person
 

	
 
age = lambda  x:_age(x)
 
capitalize = lambda x: x.capitalize()
 
date = lambda x: util.datestr(x)
 
email = util.email
 
email_or_none = lambda x: util.email(x) if util.email(x) != x else None
 
person = lambda x: _person(x)
 
hgdate = lambda  x: "%d %d" % x
 
isodate = lambda  x: util.datestr(x, '%Y-%m-%d %H:%M %1%2')
 
isodatesec = lambda  x: util.datestr(x, '%Y-%m-%d %H:%M:%S %1%2')
 
localdate = lambda  x: (x[0], util.makedate()[1])
 
rfc822date = lambda  x: util.datestr(x, "%a, %d %b %Y %H:%M:%S %1%2")
 
rfc3339date = lambda  x: util.datestr(x, "%Y-%m-%dT%H:%M:%S%1:%2")
 
time_ago = lambda x: util.datestr(_age(x), "%a, %d %b %Y %H:%M:%S %1%2")
 

	
 

	
 
#===============================================================================
 
# PERMS
 
#===============================================================================
 
from pylons_app.lib.auth import HasPermissionAny, HasPermissionAll, \
 
HasRepoPermissionAny, HasRepoPermissionAll
 

	
 
#===============================================================================
 
# GRAVATAR URL
 
#===============================================================================
 
import hashlib
 
import urllib
 
from pylons import request
 

	
 
def gravatar_url(email_address, size=30):
 
    ssl_enabled = 'https' == request.environ.get('HTTP_X_URL_SCHEME')
 
    default = 'identicon'
 
    baseurl_nossl = "http://www.gravatar.com/avatar/"
 
    baseurl_ssl = "https://secure.gravatar.com/avatar/"
 
    baseurl = baseurl_ssl if ssl_enabled else baseurl_nossl
 
        
 
    
 
    # construct the url
 
    gravatar_url = baseurl + hashlib.md5(email_address.lower()).hexdigest() + "?"
 
    gravatar_url += urllib.urlencode({'d':default, 's':str(size)})
 

	
 
    return gravatar_url
 

	
 
def safe_unicode(str):
 
    """safe unicode function. In case of UnicodeDecode error we try to return
 
    unicode with errors replace, if this failes we return unicode with 
 
    string_escape decoding """
 
    
 
    try:
 
        u_str = unicode(str)
 
    except UnicodeDecodeError:
 
        try:
 
            u_str = unicode(str, 'utf-8', 'replace')
 
        except UnicodeDecodeError:
 
            #incase we have a decode error just represent as byte string
 
            u_str = unicode(str(str).encode('string_escape'))
 
        
 
    return u_str
 
\ No newline at end of file
pylons_app/public/css/style.css
Show inline comments
 
@@ -2684,1105 +2684,878 @@ div.form div.fields div.buttons input
 
    width: 380px;
 
	background: #FFFFFF;
 
    border-top: none;
 
    border-bottom: none;
 
}
 
 
/* -----------------------------------------------------------
 
	register -> form
 
----------------------------------------------------------- */
 
 
#register div.form
 
{
 
    margin: 0;
 
    padding: 0;
 
    clear: both;
 
    overflow: hidden;
 
}
 
 
#register div.form div.fields
 
{
 
	margin: 0;
 
	padding: 0;
 
    clear: both;
 
    overflow: hidden;
 
}
 
 
#register div.form div.fields div.field
 
{
 
	margin: 0;
 
	padding: 0 0 10px 0; 
 
	clear: both;
 
	overflow: hidden;
 
}
 
 
#register div.form div.fields div.field span.error-message
 
{
 
	margin: 8px 0 0 0;
 
	padding: 0;
 
	height: 1%;
 
	display: block;
 
	color: #FF0000;
 
}
 
 
#register div.form div.fields div.field div.label
 
{
 
	margin: 2px 10px 0 0;
 
	padding: 5px 0 0 5px;
 
	width: 100px;
 
	float: left;
 
    text-align: right;
 
}
 
 
#register div.form div.fields div.field div.label label
 
{
 
    color: #000000;
 
    font-weight: bold;
 
}
 
 
#register  div.form div.fields div.field div.label span
 
{
 
	margin: 0;
 
	padding: 2px 0 0 0;
 
	height: 1%;
 
	display: block;
 
	color: #363636;
 
}
 
 
#register div.form div.fields div.field div.input
 
{
 
	margin: 0;
 
	padding: 0;
 
	float: left;
 
}
 
 
#register div.form div.fields div.field div.input input
 
{
 
    margin: 0;
 
    padding: 7px 7px 6px 7px;
 
    width: 245px;
 
    background: #FFFFFF;
 
    border-top: 1px solid #b3b3b3;
 
    border-left: 1px solid #b3b3b3;
 
    border-right: 1px solid #eaeaea;
 
    border-bottom: 1px solid #eaeaea;
 
    color: #000000;
 
	font-family: Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
 
	font-size: 11px;
 
}
 
 
#register div.form div.fields div.field div.input  input.error
 
{
 
	background: #FBE3E4;
 
	border-top: 1px solid #e1b2b3;
 
	border-left: 1px solid #e1b2b3;
 
	border-right: 1px solid #FBC2C4;
 
	border-bottom: 1px solid #FBC2C4;
 
}
 
 
#register div.form div.fields div.field div.input  input.success
 
{
 
	background: #E6EFC2;
 
	border-top: 1px solid #cebb98;
 
	border-left: 1px solid #cebb98;
 
	border-right: 1px solid #c6d880;
 
	border-bottom: 1px solid #c6d880;
 
}
 
 
#register div.form div.fields div.field div.input div.link
 
{
 
	margin: 6px 0 0 0;
 
	padding: 0;
 
	text-align: right;
 
}
 
 
#register div.form div.fields div.field div.checkbox
 
{
 
	margin: 0 0 0 184px;
 
	padding: 0;
 
}
 
 
#register div.form div.fields div.field div.checkbox label
 
{
 
    color: #565656;
 
    font-weight: bold;
 
}
 
 
#register div.form div.fields div.buttons
 
{
 
	margin: 0;
 
	padding: 10px 0 0 97px;
 
	clear: both;
 
	overflow: hidden;
 
	border-top: 1px solid #DDDDDD;
 
	text-align: left;
 
}
 
 
#register div.form div.fields div.buttons input
 
{
 
	margin: 0;
 
    color: #000000;
 
	font-size: 1.0em; 
 
    font-weight: bold;
 
	font-family: Verdana, Helvetica, Sans-Serif; 
 
}
 
 
#register div.form div.fields div.buttons input.ui-state-default
 
{
 
    margin: 0;
 
    padding: 6px 12px 6px 12px;
 
    background: #e5e3e3 url("../images/button.png") repeat-x;
 
    border-top: 1px solid #DDDDDD;
 
    border-left: 1px solid #c6c6c6;
 
    border-right: 1px solid #DDDDDD;
 
    border-bottom: 1px solid #c6c6c6;
 
    color: #515151;
 
}
 
#register div.form div.fields div.buttons div.highlight input.ui-state-default
 
{
 
	background:url("../images/colors/blue/button_highlight.png") repeat-x scroll 0 0 #4E85BB;
 
	border-color:#5C91A4 #2B7089 #1A6480 #2A6F89;
 
	border-style:solid;
 
	border-width:1px;
 
	color:#FFFFFF;
 
}
 
 
 
 
#register div.form div.fields div.buttons input.ui-state-hover
 
{
 
    margin: 0;
 
    padding: 6px 12px 6px 12px;
 
    background: #b4b4b4 url("../images/button_selected.png") repeat-x;
 
    border-top: 1px solid #cccccc;
 
    border-left: 1px solid #bebebe;
 
    border-right: 1px solid #b1b1b1;
 
    border-bottom: 1px solid #afafaf;
 
    color: #515151;
 
}
 
 
#register div.form div.activation_msg {
 
	padding-top:4px;
 
	padding-bottom:4px;
 
	
 
}
 
 
/* -----------------------------------------------------------
 
	SUMMARY
 
----------------------------------------------------------- */
 
 
#clone_url{
 
	border: none;
 
}
 
/* -----------------------------------------------------------
 
    FILES
 
----------------------------------------------------------- */
 
 
h3.files_location{
 
    font-size: 1.8em;
 
    font-weight: bold;
 
    margin: 10px 0 !important;
 
    border-bottom: none !important;
 
}
 
 
#files_data.dl{
 
 
 
}
 
#files_data dl dt{
 
    float:left;
 
    margin:0 !important;
 
    padding:5px;
 
    width:115px;
 
}
 
#files_data dl dd{
 
    margin:0 !important;
 
    padding: 5px !important;
 
}
 
 
 
/* -----------------------------------------------------------
 
	CHANGESETS
 
----------------------------------------------------------- */
 
#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;
 
}
 
 
/* -----------------------------------------------------------
 
	CHANGESETS - 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;
 
	padding:10px;
 
}
 
 
#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: 90px;
 
	overflow: hidden;
 
	font-size:1.2em;	
 
}
 
 
#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: 100%;
 
	padding-top: 3px;
 
}
 
 
.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;
 
}
 
 
 
 
/* -----------------------------------------------------------
 
	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: #FFFFFF;
 
	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;
 
}
 
table.code-browser .browser-file {
 
	background: url("/images/icons/document_16.png") no-repeat scroll 3px;
 
	height: 16px;
 
	padding-left: 20px;
 
	text-align: left;
 
}
 
 
table.code-browser .browser-dir {
 
	background: url("/images/icons/folder_16.png") no-repeat scroll 3px;
 
	height: 16px;
 
	padding-left: 20px;
 
	text-align: left;
 
}
 
 
/* -----------------------------------------------------------
 
	ADMIN - SETTINGS
 
----------------------------------------------------------- */
 
#path_unlock{
 
	color: red;
 
	font-size: 1.2em;
 
	padding-left: 4px;
 
}
 
 
/* -----------------------------------------------------------
 
    INFOBOX
 
----------------------------------------------------------- */
 
.info_box *{
 
	background:url("../../images/pager.png") repeat-x scroll 0 0 #EBEBEB;
 
	border-color:#DEDEDE #C4C4C4 #C4C4C4 #CFCFCF;
 
	border-style:solid;
 
	border-width:1px;
 
	color:#4A4A4A;
 
	display:block;
 
	font-weight:bold;
 
	height:1%;
 
	padding:4px 6px;
 
	display: inline;
 
}
 
.info_box span{
 
    margin-left:3px;
 
    margin-righ:3px;
 
}
 
.info_box input#at_rev {
 
	padding:1px 3px 3px 2px;
 
	text-align:center;
 
}
 
.info_box input#view {
 
	padding:0px 3px 2px 2px;
 
	text-align:center;
 
}
 
/* -----------------------------------------------------------
 
    TOOLTIP
 
    YUI 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;
 
}
 
 
/* -----------------------------------------------------------
 
    AUTOCOMPLETE 
 
    YUI 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 {
 
    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;
 
}
 
 
 
/* -----------------------------------------------------------
 
    ACTION ICONS
 
----------------------------------------------------------- */
 
.add_icon {
 
    background: url("/images/icons/add.png") no-repeat scroll 3px ;
 
    height: 16px;
 
    padding-left: 20px;
 
    padding-top: 1px;
 
    text-align: left;
 
}
 
 
.edit_icon {
 
    background: url("/images/icons/folder_edit.png") no-repeat scroll 3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    padding-top: 1px;
 
    text-align: left;
 
}
 
 
.delete_icon {
 
    background: url("/images/icons/delete.png") no-repeat scroll 3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    padding-top: 1px;
 
    text-align: left;
 
}
 
 
.rss_icon {
 
    background: url("/images/icons/rss_16.png") no-repeat scroll 3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    padding-top: 1px;
 
    text-align: left;
 
}
 
 
.atom_icon {
 
    background: url("/images/icons/atom.png") no-repeat scroll 3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    padding-top: 1px;
 
    text-align: left;
 
}
 
 
.archive_icon {
 
    background: url("/images/icons/compress.png") no-repeat scroll 3px;
 
    height: 16px;
 
    padding-left: 20px;
 
    text-align: left;
 
    padding-top: 1px;
 
}
 
 
 
 
 
.action_button {
 
    border: 0px;
 
    display: block;
 
}
 
 
.action_button:hover {
 
    border: 0px;
 
    font-style: italic;
 
    cursor: pointer;
 
}
 
 
/* -----------------------------------------------------------
 
    REPO SWITCHER
 
----------------------------------------------------------- */
 
 
#switch_repos{
 
	position: absolute;
 
	height: 25px;
 
	z-index: 1;
 
}
 
/* -----------------------------------------------------------
 
    BREADCRUMBS
 
----------------------------------------------------------- */
 
 
.breadcrumbs{
 
	border:medium none;
 
	color:#FFFFFF;
 
	float:left;
 
	margin:0;
 
	padding:11px 0 11px 10px;
 
	text-transform:uppercase;
 
    font-weight: bold;
 
    font-size: 14px;
 
}
 
.breadcrumbs a{
 
 color: #FFFFFF;
 
}
 
 
 
/* -----------------------------------------------------------
 
    FLASH MSG
 
----------------------------------------------------------- */
 
.flash_msg ul {
 
    margin: 0;
 
    padding: 0px 0px 10px 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: 6px 10px 6px 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;
 
}
 
/* -----------------------------------------------------------
 
	YUI FLOT
 
----------------------------------------------------------- */
 
 
div#commit_history{
 
	float: left;
 
}
 
div#legend_data{
 
	float:left;
 
	
 
}
 
div#legend_container {
 
	float: left;
 
}
 
 
div#legend_container table,div#legend_choices table{
 
	width:auto !important;
 
}
 
 
div#legend_container table td{
 
	border: none !important;
 
	padding: 0px !important;
 
	height: 20px  !important;
 
}
 
 
div#legend_choices table td{
 
	border: none !important;
 
	padding: 0px !important;
 
	height: 20px  !important;
 
}
 
 
div#legend_choices{
 
	float:left;
 
}
 
 
/* -----------------------------------------------------------
 
    PERMISSIONS TABLE
 
----------------------------------------------------------- */
 
table#permissions_manage{
 
    width: 0 !important;
 
 
}
 
table#permissions_manage span.private_repo_msg{
 
    font-size: 0.8em;
 
    opacity:0.6;
 
    
 
}
 
table#permissions_manage td.private_repo_msg{
 
    font-size: 0.8em;
 
    
 
}
 
table#permissions_manage tr#add_perm_input td{
 
    vertical-align:middle;
 
 
}
 
 
/* -----------------------------------------------------------
 
    GRAVATARS
 
----------------------------------------------------------- */
 
div.gravatar{
 
	background-color:white;
 
	border:1px solid #D0D0D0;
 
	float:left;
 
	margin-right:0.7em;
 
	padding: 2px 2px 0px;
 
}
 
 
/* -----------------------------------------------------------
 
	jquery ui
 
    STYLING OF LAYOUT
 
----------------------------------------------------------- */
 
 
.ui-helper-hidden { display: none; }
 
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
 
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
 
 
/* -----------------------------------------------------------
 
	jquery ui -> icons
 
    GLOBAL WIDTH
 
----------------------------------------------------------- */
 
 
.ui-icon { width: 16px; height: 16px; background-image: url(../images/ui/ui-icons_222222_256x240.png); }
 
.ui-widget-content .ui-icon {background-image: url(../images/ui/ui-icons_222222_256x240.png); }
 
.ui-widget-header .ui-icon {background-image: url(../images/ui/ui-icons_222222_256x240.png); }
 
.ui-state-default .ui-icon { background-image: url(../images/ui/ui-icons_ef8c08_256x240.png); }
 
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { background-image: url(../images/ui/ui-icons_ef8c08_256x240.png); }
 
.ui-state-active .ui-icon {background-image: url(../images/ui/ui-icons_ef8c08_256x240.png); }
 
.ui-state-highlight .ui-icon {background-image: url(../images/ui/ui-icons_228ef1_256x240.png); }
 
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(../images/ui/ui-icons_ffd27a_256x240.png); }
 
#header,#content,#footer{
 
    min-width: 1224px;
 
}
 
 
/* -----------------------------------------------------------
 
	jquery ui -> icon positioning
 
----------------------------------------------------------- */
 
.ui-icon-carat-1-n { background-position: 0 0; }
 
.ui-icon-carat-1-ne { background-position: -16px 0; }
 
.ui-icon-carat-1-e { background-position: -32px 0; }
 
.ui-icon-carat-1-se { background-position: -48px 0; }
 
.ui-icon-carat-1-s { background-position: -64px 0; }
 
.ui-icon-carat-1-sw { background-position: -80px 0; }
 
.ui-icon-carat-1-w { background-position: -96px 0; }
 
.ui-icon-carat-1-nw { background-position: -112px 0; }
 
.ui-icon-carat-2-n-s { background-position: -128px 0; }
 
.ui-icon-carat-2-e-w { background-position: -144px 0; }
 
.ui-icon-triangle-1-n { background-position: 0 -16px; }
 
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
 
.ui-icon-triangle-1-e { background-position: -32px -16px; }
 
.ui-icon-triangle-1-se { background-position: -48px -16px; }
 
.ui-icon-triangle-1-s { background-position: -64px -16px; }
 
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
 
.ui-icon-triangle-1-w { background-position: -96px -16px; }
 
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
 
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
 
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
 
.ui-icon-arrow-1-n { background-position: 0 -32px; }
 
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
 
.ui-icon-arrow-1-e { background-position: -32px -32px; }
 
.ui-icon-arrow-1-se { background-position: -48px -32px; }
 
.ui-icon-arrow-1-s { background-position: -64px -32px; }
 
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
 
.ui-icon-arrow-1-w { background-position: -96px -32px; }
 
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
 
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
 
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
 
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
 
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
 
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
 
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
 
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
 
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
 
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
 
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
 
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
 
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
 
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
 
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
 
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
 
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
 
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
 
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
 
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
 
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
 
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
 
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
 
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
 
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
 
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
 
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
 
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
 
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
 
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
 
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
 
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
 
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
 
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
 
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
 
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
 
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
 
.ui-icon-arrow-4 { background-position: 0 -80px; }
 
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
 
.ui-icon-extlink { background-position: -32px -80px; }
 
.ui-icon-newwin { background-position: -48px -80px; }
 
.ui-icon-refresh { background-position: -64px -80px; }
 
.ui-icon-shuffle { background-position: -80px -80px; }
 
.ui-icon-transfer-e-w { background-position: -96px -80px; }
 
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
 
.ui-icon-folder-collapsed { background-position: 0 -96px; }
 
.ui-icon-folder-open { background-position: -16px -96px; }
 
.ui-icon-document { background-position: -32px -96px; }
 
.ui-icon-document-b { background-position: -48px -96px; }
 
.ui-icon-note { background-position: -64px -96px; }
 
.ui-icon-mail-closed { background-position: -80px -96px; }
 
.ui-icon-mail-open { background-position: -96px -96px; }
 
.ui-icon-suitcase { background-position: -112px -96px; }
 
.ui-icon-comment { background-position: -128px -96px; }
 
.ui-icon-person { background-position: -144px -96px; }
 
.ui-icon-print { background-position: -160px -96px; }
 
.ui-icon-trash { background-position: -176px -96px; }
 
.ui-icon-locked { background-position: -192px -96px; }
 
.ui-icon-unlocked { background-position: -208px -96px; }
 
.ui-icon-bookmark { background-position: -224px -96px; }
 
.ui-icon-tag { background-position: -240px -96px; }
 
.ui-icon-home { background-position: 0 -112px; }
 
.ui-icon-flag { background-position: -16px -112px; }
 
.ui-icon-calendar { background-position: -32px -112px; }
 
.ui-icon-cart { background-position: -48px -112px; }
 
.ui-icon-pencil { background-position: -64px -112px; }
 
.ui-icon-clock { background-position: -80px -112px; }
 
.ui-icon-disk { background-position: -96px -112px; }
 
.ui-icon-calculator { background-position: -112px -112px; }
 
.ui-icon-zoomin { background-position: -128px -112px; }
 
.ui-icon-zoomout { background-position: -144px -112px; }
 
.ui-icon-search { background-position: -160px -112px; }
 
.ui-icon-wrench { background-position: -176px -112px; }
 
.ui-icon-gear { background-position: -192px -112px; }
 
.ui-icon-heart { background-position: -208px -112px; }
 
.ui-icon-star { background-position: -224px -112px; }
 
.ui-icon-link { background-position: -240px -112px; }
 
.ui-icon-cancel { background-position: 0 -128px; }
 
.ui-icon-plus { background-position: -16px -128px; }
 
.ui-icon-plusthick { background-position: -32px -128px; }
 
.ui-icon-minus { background-position: -48px -128px; }
 
.ui-icon-minusthick { background-position: -64px -128px; }
 
.ui-icon-close { background-position: -80px -128px; }
 
.ui-icon-closethick { background-position: -96px -128px; }
 
.ui-icon-key { background-position: -112px -128px; }
 
.ui-icon-lightbulb { background-position: -128px -128px; }
 
.ui-icon-scissors { background-position: -144px -128px; }
 
.ui-icon-clipboard { background-position: -160px -128px; }
 
.ui-icon-copy { background-position: -176px -128px; }
 
.ui-icon-contact { background-position: -192px -128px; }
 
.ui-icon-image { background-position: -208px -128px; }
 
.ui-icon-video { background-position: -224px -128px; }
 
.ui-icon-script { background-position: -240px -128px; }
 
.ui-icon-alert { background-position: 0 -144px; }
 
.ui-icon-info { background-position: -16px -144px; }
 
.ui-icon-notice { background-position: -32px -144px; }
 
.ui-icon-help { background-position: -48px -144px; }
 
.ui-icon-check { background-position: -64px -144px; }
 
.ui-icon-bullet { background-position: -80px -144px; }
 
.ui-icon-radio-off { background-position: -96px -144px; }
 
.ui-icon-radio-on { background-position: -112px -144px; }
 
.ui-icon-pin-w { background-position: -128px -144px; }
 
.ui-icon-pin-s { background-position: -144px -144px; }
 
.ui-icon-play { background-position: 0 -160px; }
 
.ui-icon-pause { background-position: -16px -160px; }
 
.ui-icon-seek-next { background-position: -32px -160px; }
 
.ui-icon-seek-prev { background-position: -48px -160px; }
 
.ui-icon-seek-end { background-position: -64px -160px; }
 
.ui-icon-seek-start { background-position: -80px -160px; }
 
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
 
.ui-icon-seek-first { background-position: -80px -160px; }
 
.ui-icon-stop { background-position: -96px -160px; }
 
.ui-icon-eject { background-position: -112px -160px; }
 
.ui-icon-volume-off { background-position: -128px -160px; }
 
.ui-icon-volume-on { background-position: -144px -160px; }
 
.ui-icon-power { background-position: 0 -176px; }
 
.ui-icon-signal-diag { background-position: -16px -176px; }
 
.ui-icon-signal { background-position: -32px -176px; }
 
.ui-icon-battery-0 { background-position: -48px -176px; }
 
.ui-icon-battery-1 { background-position: -64px -176px; }
 
.ui-icon-battery-2 { background-position: -80px -176px; }
 
.ui-icon-battery-3 { background-position: -96px -176px; }
 
.ui-icon-circle-plus { background-position: 0 -192px; }
 
.ui-icon-circle-minus { background-position: -16px -192px; }
 
.ui-icon-circle-close { background-position: -32px -192px; }
 
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
 
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
 
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
 
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
 
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
 
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
 
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
 
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
 
.ui-icon-circle-zoomin { background-position: -176px -192px; }
 
.ui-icon-circle-zoomout { background-position: -192px -192px; }
 
.ui-icon-circle-check { background-position: -208px -192px; }
 
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
 
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
 
.ui-icon-circlesmall-close { background-position: -32px -208px; }
 
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
 
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
 
.ui-icon-squaresmall-close { background-position: -80px -208px; }
 
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
 
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
 
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
 
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
 
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
 
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
 
    content
 
----------------------------------------------------------- */ 
 
 
#content 
 
{
 
    margin: 10px 30px 0 30px;
 
    padding: 0;
 
    min-height: 100%;
 
    clear: both;
 
    overflow: hidden;
 
    background: transparent;
 
}
 
 
/* -----------------------------------------------------------
 
	jquery ui -> tabs
 
----------------------------------------------------------- */
 
.ui-tabs .ui-tabs-hide { display: none; }
 
 
/* -----------------------------------------------------------
 
	jquery ui -> datepicker
 
----------------------------------------------------------- */
 
.ui-datepicker { width: 17em; padding: .2em .2em 0; background: #FFFFFF; border: 1px solid #000000; border-top: none; }
 
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; background: #F6F6F6; }
 
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 1px; width: 1.8em; height: 1.8em; }
 
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
 
.ui-datepicker .ui-datepicker-prev { left: 0; }
 
.ui-datepicker .ui-datepicker-next { right: 0; }
 
.ui-datepicker .ui-datepicker-prev-hover { left: 0; }
 
.ui-datepicker .ui-datepicker-next-hover { right: 0; }
 
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
 
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
 
.ui-datepicker .ui-datepicker-title select { margin:1px 0; }
 
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
 
.ui-datepicker select.ui-datepicker-month, 
 
.ui-datepicker select.ui-datepicker-year { width: 49%;}
 
.ui-datepicker table {width: 100%; border-collapse: collapse; margin:0 0 .4em; }
 
.ui-datepicker th { padding: .7em .3em; text-align: center; border: 0;  }
 
.ui-datepicker td { border: 0; padding: 1px; }
 
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: 3px; text-align: center;  text-decoration: none; }
 
.ui-datepicker td span, .ui-datepicker td a:hover { background: #376ea6; color: #ffffff; }
 
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
 
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
 
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
 
.ui-datepicker td span, .ui-datepicker td.ui-datepicker-today a { background: #DDDDDD; color: #585858; }
 
.ui-datepicker td span, .ui-datepicker td.ui-datepicker-current-day a { background: #376ea6; color: #ffffff; }
 
 
/* -----------------------------------------------------------
 
	jquery ui -> datepicker / multiple calenders
 
----------------------------------------------------------- */
 
.ui-datepicker.ui-datepicker-multi { width:auto; }
 
.ui-datepicker-multi .ui-datepicker-group { float:left; }
 
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
 
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
 
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
 
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
 
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
 
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
 
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
 
.ui-datepicker-row-break { clear:both; width:100%; }
 
 
/* -----------------------------------------------------------
 
	jquery ui -> datepicker / rtl support
 
    content -> right -> forms -> labels
 
----------------------------------------------------------- */
 
.ui-datepicker-rtl { direction: rtl; }
 
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
 
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
 
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
 
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
 
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
 
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
 
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
 
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
 
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
 
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
 
 
/* -----------------------------------------------------------
 
	jquery ui -> select styling
 
----------------------------------------------------------- */
 
 
.ui-selectmenu  
 
{
 
	display: block; 
 
	position: relative;
 
	overflow: hidden;
 
	background: #ffffff;
 
    border-top: 1px solid #b3b3b3;
 
    border-left: 1px solid #b3b3b3;
 
    border-right: 1px solid #eaeaea;
 
    border-bottom: 1px solid #eaeaea;
 
	text-align: left; 
 
	text-decoration: none; 
 
}
 
 
.ui-selectmenu-icon { position:absolute; right:6px; margin-top:-8px; top: 50%; }
 
.ui-selectmenu-menu { padding:0; margin:0; list-style:none; position:absolute; top: 0; visibility: hidden; overflow: auto; }
 
.ui-selectmenu-open { background: #ffffff; border: 1px solid #666666; border-top: none; visibility: visible; }
 
.ui-selectmenu-menu-popup { margin-top: -1px; }
 
.ui-selectmenu-menu-dropdown { }
 
.ui-selectmenu-menu li { padding:0; margin:0; display: block; border-top: 1px dotted transparent; border-bottom: 1px dotted transparent; border-right-width: 0 !important; border-left-width: 0 !important; }
 
.ui-selectmenu-menu li a,.ui-selectmenu-status {line-height: 1.4em; display:block; padding: 5px 0 5px 8px; outline:none; text-decoration:none; color: #000000; }
 
.ui-selectmenu-menu li.ui-selectmenu-hasIcon a,
 
.ui-selectmenu-hasIcon .ui-selectmenu-status  { margin-left: 5px; padding-left: 20px; position: relative; }
 
.ui-selectmenu-menu li .ui-icon, .ui-selectmenu-status .ui-icon { position: absolute; top: 1em; margin-top: -8px; left: 0; }
 
.ui-selectmenu-status { line-height: 1.4em; }
 
.ui-selectmenu-open li.ui-selectmenu-item-focus { background: #376ea6; }
 
.ui-selectmenu-open li.ui-selectmenu-item-focus a { color: #ffffff; }
 
.ui-selectmenu-open li.ui-selectmenu-item-selected { background: #dfdfdf; }
 
.ui-selectmenu-open li.ui-selectmenu-item-selected a { color: #000000; }
 
.ui-selectmenu-menu li span,.ui-selectmenu-status span { display:block; margin-bottom: .2em; }
 
.ui-selectmenu-menu .ui-selectmenu-group .ui-selectmenu-group-label { line-height: 1.4em; display:block; padding:.6em .5em 0; }
 
.ui-selectmenu-menu .ui-selectmenu-group ul { margin: 0; padding: 0; }
 
\ No newline at end of file
 
 
#content div.box div.form div.fields div.field div.label
 
{
 
    left: 80px;
 
    margin: 0;
 
    padding: 8px 0 0 5px;
 
    width: auto;
 
    position: absolute;
 
}
 
 
#content div.box-left div.form div.fields div.field div.label,
 
#content div.box-right div.form div.fields div.field div.label
 
{
 
    left: 0;
 
    margin: 0;
 
    padding: 0 0 8px 0;
 
    width: auto;
 
    position: relative;
 
}
 
\ No newline at end of file
pylons_app/public/css/style_full.css
Show inline comments
 
deleted file
pylons_app/templates/base/base.html
Show inline comments
 
@@ -44,212 +44,211 @@
 
            <div class="corner tr"></div>
 
        </div>
 
    </div>     
 
    <!-- end header -->
 
    
 
	<!-- CONTENT -->
 
	<div id="content"> 
 
        <div class="flash_msg">
 
            <% messages = h.flash.pop_messages() %>
 
            % if messages:
 
            <ul id="flash-messages">
 
                % for message in messages:
 
                <li class="${message.category}_msg">${message}</li>
 
                % endfor
 
            </ul>
 
            % endif
 
        </div>	    
 
	    <div id="main"> 
 
	        ${next.main()}
 
	    </div>
 
	</div> 
 
    <!-- END CONTENT -->
 

	
 
	<!-- footer -->
 
	<div id="footer">
 
	    <p>Hg App ${c.hg_app_version} &copy; 2010 by Marcin Kuzminski</p>
 
        <script type="text/javascript">${h.tooltip.activate()}</script>	    
 
	</div>
 
	<!-- end footer -->
 
</body>
 

	
 
</html>
 

	
 
### MAKO DEFS ### 
 
<%def name="page_nav()">
 
	${self.menu()}
 
</%def>
 

	
 
<%def name="menu(current=None)">
 
		<% 
 
		def is_current(selected):
 
			if selected == current:
 
				return h.literal('class="current"')
 
		%>
 
		%if current not in ['home','admin']:
 
           <script type="text/javascript">
 
            YAHOO.util.Event.onDOMReady(function(){
 
                YAHOO.util.Event.addListener('repo_switcher','click',function(){
 
                    if(YAHOO.util.Dom.hasClass('repo_switcher','selected')){
 
                        YAHOO.util.Dom.setStyle('switch_repos','display','none');
 
                        YAHOO.util.Dom.setStyle('repo_switcher','background','');
 
                        YAHOO.util.Dom.removeClass('repo_switcher','selected');
 
                        YAHOO.util.Dom.get('repo_switcher').removeAttribute('style');
 
                    }
 
                    else{
 
                        YAHOO.util.Dom.setStyle('switch_repos','display','');
 
                        YAHOO.util.Dom.addClass('repo_switcher','selected');
 
                    }
 
                    });
 
                YAHOO.util.Event.addListener('repos_list','change',function(e){
 
                    var wa = YAHOO.util.Dom.get('repos_list').value;
 
                    
 
                    var url = "${h.url('summary_home',repo_name='__REPO__')}".replace('__REPO__',wa);
 
                    window.location = url;
 
                })
 
               });
 
            </script>
 
            		
 
		   ##REGULAR MENU            
 
	        <ul id="quick">
 
				<!-- repo switcher -->
 
				<li>
 
					<a id="repo_switcher" title="${_('Switch repository')}" href="#">
 
                    <span class="icon">
 
                        <img src="/images/icons/database.png" alt="${_('Products')}" />
 
                    </span>
 
                    <span>&darr;</span>					
 
					</a>
 
					<div id="switch_repos" style="display:none;">
 
						<select id="repos_list" size="10">
 
						%for repo in c.repo_switcher_list:
 
							<option value="${repo}">${repo}</option>
 
						%endfor
 
						</select>
 
					</div>			
 
				</li>
 
				
 
	            <li ${is_current('summary')}>
 
	               <a title="${_('Summary')}" href="${h.url('summary_home',repo_name=c.repo_name)}">
 
	               <span class="icon">
 
	                   <img src="/images/icons/clipboard_16.png" alt="${_('Summary')}" />
 
	               </span>
 
	               <span>${_('Summary')}</span>                 
 
	               </a>	            
 
	            </li>
 
                <li ${is_current('shortlog')}>
 
                   <a title="${_('Shortlog')}" href="${h.url('shortlog_home',repo_name=c.repo_name)}">
 
                   <span class="icon">
 
                       <img src="/images/icons/application_double.png" alt="${_('Shortlog')}" />
 
                   </span>
 
                   <span>${_('Shortlog')}</span>                 
 
                   </a>             
 
                </li>	            
 
                <li ${is_current('changelog')}>
 
                   <a title="${_('Changelog')}" href="${h.url('changelog_home',repo_name=c.repo_name)}">
 
                   <span class="icon">
 
                       <img src="/images/icons/time.png" alt="${_('Changelog')}" />
 
                   </span>
 
                   <span>${_('Changelog')}</span>                 
 
                   </a>             
 
                </li>   	            
 
                <li ${is_current('branches')}>
 
                   <a title="${_('Branches')}" href="${h.url('branches_home',repo_name=c.repo_name)}">
 
                   <span class="icon">
 
                       <img src="/images/icons/arrow_branch.png" alt="${_('Branches')}" />
 
                   </span>
 
                   <span>${_('Branches')}</span>                 
 
                   </a>             
 
                </li> 	            
 
                <li ${is_current('tags')}>
 
                   <a title="${_('Tags')}" href="${h.url('tags_home',repo_name=c.repo_name)}">
 
                   <span class="icon">
 
                       <img src="/images/icons/tag_blue.png" alt="${_('Tags')}" />
 
                   </span>
 
                   <span>${_('Tags')}</span>                 
 
                   </a>             
 
                </li>
 
                <li ${is_current('files')}>
 
                   <a title="${_('Files')}" href="${h.url('files_home',repo_name=c.repo_name)}">
 
                   <span class="icon">
 
                       <img src="/images/icons/file.png" alt="${_('Files')}" />
 
                   </span>
 
                   <span>${_('Files')}</span>                 
 
                   </a>             
 
                </li>                            
 
				%if h.HasRepoPermissionAll('repository.admin')(c.repo_name):
 
                <li ${is_current('settings')}>
 
                   <a title="${_('Settings')}" href="${h.url('repo_settings_home',repo_name=c.repo_name)}">
 
                   <span class="icon">
 
                       <img src="/images/icons/cog_edit.png" alt="${_('Settings')}" />
 
                   </span>
 
                   <span>${_('Settings')}</span>                 
 
                   </a>             
 
                </li>				
 
				%endif					        
 
	        </ul>
 
		%else:
 
		    ##ROOT MENU
 
            <ul id="quick">
 
                <li>
 
                    <a title="${_('Home')}"  href="${h.url('hg_home')}">
 
                    <span class="icon">
 
                        <img src="/images/icons/home_16.png" alt="${_('Home')}" />
 
                    </span>
 
                    <span>${_('Home')}</span>                 
 
                    </a>        
 
                </li>
 
                
 
                <li>
 
                    <a title="${_('Search')}"  href="${h.url('search')}">
 
                    <span class="icon">
 
                        <img src="/images/icons/search_16.png" alt="${_('Search')}" />
 
                    </span>
 
                    <span>${_('Search')}</span>                 
 
                    </a>        
 
                </li>
 
                
 
				%if h.HasPermissionAll('hg.admin')('access admin main page'):
 
                <li ${is_current('admin')}>
 
                   <a title="${_('Admin')}" href="${h.url('admin_home')}">
 
                   <span class="icon">
 
                       <img src="/images/icons/cog_edit.png" alt="${_('Admin')}" />
 
                   </span>
 
                   <span>${_('Admin')}</span>                 
 
                   </a>    
 
				    <ul>
 
				        <li>${h.link_to(_('repositories'),h.url('repos'),class_='repos')}</li>
 
				        <li>${h.link_to(_('users'),h.url('users'),class_='users')}</li>
 
				        <li>${h.link_to(_('permissions'),h.url('edit_permission',id='default'),class_='permissions')}</li>
 
				        <li>${h.link_to(_('settings'),h.url('admin_settings'),class_='settings')}</li>        
 
				    </ul>
 
                </li>
 
				%endif
 
				
 
			</ul>
 
		%endif    
 
</%def>
 

	
 

	
 
<%def name="css()">
 
<link rel="stylesheet" type="text/css" href="/css/reset.css" />
 
<link rel="stylesheet" type="text/css" href="/css/style.css" media="screen" />
 
<link rel="stylesheet" type="text/css" href="/css/style_full.css" />
 
<link id="color" rel="stylesheet" type="text/css" href="/css/colors/blue.css" />
 
<link rel="stylesheet" type="text/css" href="/css/pygments.css"  />
 
<link rel="stylesheet" type="text/css" href="/css/diff.css"  />
 
</%def>
 

	
 
<%def name="js()">
 
<script type="text/javascript" src="/js/yui/utilities/utilities.js"></script>
 
<!--[if IE]><script language="javascript" type="text/javascript" src="/js/excanvas.min.js"></script><![endif]-->
 
<script type="text/javascript" src="/js/yui/container/container-min.js"></script>
 
<script type="text/javascript" src="/js/yui/datasource/datasource-min.js"></script>
 
<script type="text/javascript" src="/js/yui/autocomplete/autocomplete-min.js"></script>
 
<script type="text/javascript" src="/js/yui.flot.js"></script>
 
</%def>
 

	
 
<%def name="breadcrumbs()">
 
    <div class="breadcrumbs">
 
    ${self.breadcrumbs_links()}
 
    </div>
 
</%def>
 
\ No newline at end of file
pylons_app/templates/files/files.html
Show inline comments
 
<%inherit file="/base/base.html"/>
 

	
 
<%def name="title()">
 
    ${_('files')}
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${h.link_to(u'Home',h.url('/'))}
 
    &raquo;
 
    ${h.link_to(c.repo_name,h.url('files_home',repo_name=c.repo_name))}
 
    &raquo;
 
    ${_('files')}
 
    %if c.files_list:
 
        @ R${c.rev_nr}:${c.cur_rev}
 
    %endif        
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('files')}     
 
</%def>
 

	
 
<%def name="main()">
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}     
 
    </div>
 
    <div class="table">
 
		<div id="files_data">
 
			%if c.files_list:
 
				<h2>${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cur_rev,c.files_list.path)}</h2>
 
				<h3 class="files_location">${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cur_rev,c.files_list.path)}</h3>
 
					%if c.files_list.is_dir():
 
						<%include file='files_browser.html'/>
 
					%else:
 
						<%include file='files_source.html'/>			
 
					%endif	
 
			%else:
 
				<h2>
 
					<a href="#" onClick="javascript:parent.history.back();" target="main">${_('Go back')}</a> 
 
					${_('No files at given path')}: "${c.f_path or "/"}" 
 
				</h2>
 
			%endif
 
		
 
		</div>    
 
    </div>
 
</div>    
 
	
 
</%def>    
 
\ No newline at end of file
0 comments (0 inline, 0 general)