Changeset - 3e55d9981c0e
[Not reviewed]
default
0 5 0
Marcin Kuzminski - 15 years ago 2010-07-28 23:38:06
marcin@python-works.com
templating fixes
5 files changed with 13 insertions and 8 deletions:
0 comments (0 inline, 0 general)
pylons_app/controllers/files.py
Show inline comments
 
#!/usr/bin/env python
 
# encoding: utf-8
 
# files 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
 
# of the License or (at your opinion) any later version of the license.
 
# 
 
# This program is distributed in the hope that it will be useful,
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
# GNU General Public License for more details.
 
# 
 
# You should have received a copy of the GNU General Public License
 
# along with this program; if not, write to the Free Software
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 
# MA  02110-1301, USA.
 
"""
 
Created on April 21, 2010
 
files controller for pylons
 
@author: marcink
 
"""
 
from mercurial import archival
 
from pylons import request, response, session, tmpl_context as c, url
 
from pylons.controllers.util import redirect
 
from pylons_app.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 
from pylons_app.lib.base import BaseController, render
 
from pylons_app.lib.utils import EmptyChangeset, get_repo_slug
 
from pylons_app.model.hg_model import HgModel
 
from vcs.exceptions import RepositoryError, ChangesetError
 
from vcs.nodes import FileNode
 
from vcs.utils import diffs as differ
 
import logging
 
import pylons_app.lib.helpers as h
 
import tempfile
 
        
 
log = logging.getLogger(__name__)
 

	
 
class FilesController(BaseController):
 
    
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
 
                                   'repository.admin')       
 
    def __before__(self):
 
        super(FilesController, self).__before__()
 

	
 
    def index(self, repo_name, revision, f_path):
 
        hg_model = HgModel()
 
        c.repo = repo = hg_model.get_repo(c.repo_name)
 
        revision = request.POST.get('at_rev', None) or revision
 
        
 
        def get_next_rev(cur):
 
            max_rev = len(c.repo.revisions) - 1
 
            r = cur + 1
 
            if r > max_rev:
 
                r = max_rev
 
            return r
 
            
 
        def get_prev_rev(cur):
 
            r = cur - 1
 
            return r
 

	
 
        c.f_path = f_path
 
     
 
        
 
        try:
 
            cur_rev = repo.get_changeset(revision).revision
 
            prev_rev = repo.get_changeset(get_prev_rev(cur_rev)).raw_id
 
            next_rev = repo.get_changeset(get_next_rev(cur_rev)).raw_id
 
                    
 
            c.url_prev = url('files_home', repo_name=c.repo_name,
 
                             revision=prev_rev, f_path=f_path) 
 
            c.url_next = url('files_home', repo_name=c.repo_name,
 
                             revision=next_rev, f_path=f_path)   
 
                    
 
            c.changeset = repo.get_changeset(revision)
 

	
 
                        
 
            c.cur_rev = c.changeset.raw_id
 
            c.rev_nr = c.changeset.revision
 
            c.files_list = c.changeset.get_node(f_path)
 
            c.file_history = self._get_history(repo, c.files_list, f_path)
 
            
 
        except (RepositoryError, ChangesetError):
 
            c.files_list = None
 
        
 
        return render('files/files.html')
 

	
 
    def rawfile(self, repo_name, revision, f_path):
 
        hg_model = HgModel()
 
        c.repo = hg_model.get_repo(c.repo_name)
 
        file_node = c.repo.get_changeset(revision).get_node(f_path)
 
        response.content_type = file_node.mimetype
 
        response.content_disposition = 'attachment; filename=%s' \
 
                                                    % f_path.split('/')[-1] 
 
        return file_node.content
 
    
 
    def annotate(self, repo_name, revision, f_path):
 
        hg_model = HgModel()
 
        c.repo = hg_model.get_repo(c.repo_name)
 
        cs = c.repo.get_changeset(revision)
 
        c.file = cs.get_node(f_path)
 
        c.file_msg = cs.get_file_message(f_path)
 
        c.cur_rev = cs.raw_id
 
        c.rev_nr = cs.revision        
 
        c.f_path = f_path
 

	
 
        return render('files/files_annotate.html')
 
      
 
    def archivefile(self, repo_name, revision, fileformat):
 
        archive_specs = {
 
          '.tar.bz2': ('application/x-tar', 'tbz2'),
 
          '.tar.gz': ('application/x-tar', 'tgz'),
 
          '.zip': ('application/zip', 'zip'),
 
        }
 
        if not archive_specs.has_key(fileformat):
 
            return 'Unknown archive type %s' % fileformat
 
                        
 
        def read_in_chunks(file_object, chunk_size=1024 * 40):
 
            """Lazy function (generator) to read a file piece by piece.
 
            Default chunk size: 40k."""
 
            while True:
 
                data = file_object.read(chunk_size)
 
                if not data:
 
                    break
 
                yield data        
 
            
 
        archive = tempfile.TemporaryFile()
 
        repo = HgModel().get_repo(repo_name).repo
 
        fname = '%s-%s%s' % (repo_name, revision, fileformat)
 
        archival.archive(repo, archive, revision, archive_specs[fileformat][1],
 
                         prefix='%s-%s' % (repo_name, revision))
 
        response.content_type = archive_specs[fileformat][0]
 
        response.content_disposition = 'attachment; filename=%s' % fname
 
        archive.seek(0)
 
        return read_in_chunks(archive)
 
    
 
    def diff(self, repo_name, f_path):
 
        hg_model = HgModel()
 
        diff1 = request.GET.get('diff1')
 
        diff2 = request.GET.get('diff2')
 
        c.action = request.GET.get('diff')
 
        c.no_changes = diff1 == diff2
 
        c.f_path = f_path
 
        c.repo = hg_model.get_repo(c.repo_name)
 

	
 
        try:
 
            if diff1 not in ['', None, 'None', '0' * 12]:
 
                c.changeset_1 = c.repo.get_changeset(diff1)
 
                node1 = c.changeset_1.get_node(f_path)
 
            else:
 
                c.changeset_1 = EmptyChangeset()
 
                node1 = FileNode('.', '')
 
            if diff2 not in ['', None, 'None', '0' * 12]:
 
                c.changeset_2 = c.repo.get_changeset(diff2)
 
                node2 = c.changeset_2.get_node(f_path)
 
            else:
 
                c.changeset_2 = EmptyChangeset()
 
                node2 = FileNode('.', '') 
 
        except RepositoryError:
 
            return redirect(url('files_home',
 
                                repo_name=c.repo_name, f_path=f_path))
 

	
 
        c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1.raw_id)
 
        c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2.raw_id)
 
        f_udiff = differ.get_udiff(node1, node2)
 
        
 
        diff = differ.DiffProcessor(f_udiff)
 
                                
 
        if c.action == 'download':
 
            diff_name = '%s_vs_%s.diff' % (diff1, diff2)
 
            response.content_type = 'text/plain'
 
            response.content_disposition = 'attachment; filename=%s' \
 
                                                    % diff_name             
 
            return diff.raw_diff()
 
        
 
        elif c.action == 'raw':
 
            c.cur_diff = '<pre class="raw">%s</pre>' % h.escape(diff.raw_diff())
 
        elif c.action == 'diff':
 
            c.cur_diff = diff.as_html()
 
        else:
 
            #default option
 
            c.cur_diff = diff.as_html()
 
        
 
        if not c.cur_diff: c.no_changes = True    
 
        return render('files/file_diff.html')
 
    
 
    def _get_history(self, repo, node, f_path):
 
        from vcs.nodes import NodeKind
 
        if not node.kind is NodeKind.FILE:
 
            return []
 
        changesets = node.history
 
        hist_l = []
 
        for chs in changesets:
 
            n_desc = 'r%s:%s' % (chs.revision, chs._short)
 
            hist_l.append((chs._short, n_desc,))
 
        return hist_l
pylons_app/public/css/style.css
Show inline comments
 
@@ -1486,2154 +1486,2158 @@ div.options a:hover
 
	background-repeat: no-repeat;
 
	background-position: 3px 3px;
 
    border: 1px solid #C6D880;
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> forms -> textarea (tinymce editor)
 
----------------------------------------------------------- */
 
 
#content div.box div.form div.fields div.field div.textarea table
 
{
 
	margin: 0;
 
	padding: 0;
 
	width: 100%;
 
	border: none;
 
}
 
 
#content div.box div.form div.fields div.field div.textarea table td
 
{
 
	padding: 0;
 
	background: #DDDDDD;
 
	border: none;	
 
}
 
 
#content div.box div.form div.fields div.field div.textarea table td table
 
{
 
	margin: 0;
 
	padding: 0;
 
	width: auto;
 
	border: none;
 
}
 
 
#content div.box div.form div.fields div.field div.textarea table td table td
 
{
 
	padding: 5px 5px 5px 0;
 
	font-family: Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
 
	font-size: 11px;
 
}
 
 
#content div.box div.form div.fields div.field div.textarea table td table td a
 
{
 
	border: none;	
 
}
 
 
#content div.box div.form div.fields div.field div.textarea table td table td a.mceButtonActive
 
{
 
	background: #b1b1b1;
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> forms -> select
 
----------------------------------------------------------- */
 
 
#content div.box div.form div.fields div.field div.select
 
{
 
	margin: 0 0 0 200px;
 
	padding: 0;
 
}
 
 
#content div.box div.form div.fields div.field div.select a:hover
 
{
 
    color: #000000;
 
    text-decoration: none;
 
}
 
 
#content div.box div.form div.fields div.field div.select select
 
{
 
    margin: 0;
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> forms -> select (jquery styling)
 
----------------------------------------------------------- */
 
 
#content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus
 
{
 
	border: 1px solid #666666;
 
}
 
 
#content div.box div.form div.fields div.field div.select a.ui-selectmenu  
 
{
 
    color: #565656; 
 
    text-decoration: none;
 
}
 
 
#content div.box div.form div.fields div.field div.select a.ui-selectmenu:hover  
 
{
 
	color: #000000;
 
    text-decoration: none; 
 
}
 
 
#content div.box div.form div.fields div.field div.select a.ui-selectmenu-focus span.ui-icon
 
{
 
	background-image: url(../images/ui/ui-icons_222222_256x240.png);
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> forms -> element focus
 
----------------------------------------------------------- */
 
 
#content div.box div.form div.fields div.field input[type=text]:focus, 
 
#content div.box div.form div.fields div.field input[type=password]:focus,
 
#content div.box div.form div.fields div.field input[type=file]:focus,
 
#content div.box div.form div.fields div.field textarea:focus,
 
#content div.box div.form div.fields div.field select:focus 
 
{
 
	background: #f6f6f6;
 
    border-color: #666;
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> forms -> checkboxes
 
----------------------------------------------------------- */
 
 
#content div.box div.form div.fields div.field div.checkboxes
 
{
 
	margin: 0 0 0 200px;
 
	padding: 0;
 
}
 
 
#content div.box div.form div.fields div.field div.checkboxes div.checkbox
 
{
 
	margin: 0;
 
	padding: 2px 0 2px 0;
 
	clear: both;
 
	overflow: hidden;
 
}
 
 
#content div.box div.form div.fields div.field div.checkboxes div.checkbox input
 
{
 
	margin: 0;	
 
	float: left;
 
}
 
 
#content div.box div.form div.fields div.field div.checkboxes div.checkbox label
 
{
 
	margin: 3px 0 0 4px;
 
	height: 1%;
 
	display: block;
 
	float: left;
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> forms -> radios
 
----------------------------------------------------------- */
 
 
#content div.box div.form div.fields div.field div.radios
 
{
 
	margin: 0 0 0 200px;
 
	padding: 0;
 
}
 
 
#content div.box div.form div.fields div.field div.radios div.radio
 
{
 
	margin: 0;
 
	padding: 2px 0 2px 0;
 
	clear: both;
 
	overflow: hidden;
 
}
 
 
#content div.box div.form div.fields div.field div.radios div.radio input
 
{
 
	margin: 0;	
 
	float: left;
 
}
 
 
#content div.box div.form div.fields div.field div.radios div.radio label
 
{
 
	margin: 3px 0 0 4px;
 
	height: 1%;
 
	display: block;
 
	float: left;
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> forms -> buttons
 
----------------------------------------------------------- */
 
 
#content div.box div.form div.fields div.buttons
 
{
 
	margin: 10px 0 0 200px;
 
	padding: 0;
 
}
 
 
#content div.box-left div.form div.fields div.buttons,
 
#content div.box-right div.form div.fields div.buttons
 
{
 
	margin: 10px 0 0 0;
 
}
 
 
#content div.box div.form div.fields div.buttons input
 
{
 
	margin: 0;
 
	color: #000000;
 
	font-family: Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
 
	font-size: 11px;
 
	font-weight: bold;
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> forms -> buttons (jquery styling)
 
----------------------------------------------------------- */
 
 
#content div.box 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;
 
    outline: none;
 
}
 
 
#content div.box 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;
 
    outline: none;
 
}
 
 
#content div.box div.form div.fields div.buttons div.highlight
 
{
 
	display: inline;
 
}
 
 
#content div.box div.form div.fields div.buttons div.highlight input.ui-state-default
 
{
 
    margin: 0;
 
    padding: 6px 12px 6px 12px;
 
    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
 
{
 
    margin: 0;
 
    padding: 6px 12px 6px 12px;
 
    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 -> box / tables
 
----------------------------------------------------------- */
 
 
#content div.box div.table
 
{
 
	margin: 0;
 
	padding: 0 20px 10px 20px;
 
    clear: both;
 
    overflow: hidden;
 
}
 
 
#content div.box table
 
{
 
    margin: 0;
 
    padding: 0;
 
    width: 100%;
 
    border-collapse: collapse;
 
}
 
 
#content div.box table th
 
{
 
    padding: 10px;
 
	background: #eeeeee;
 
    border-bottom: 1px solid #dddddd;
 
}
 
 
#content div.box table th.left
 
{
 
    text-align: left;   
 
}
 
 
#content div.box table th.right
 
{
 
    text-align: right;   
 
}
 
 
#content div.box table th.center
 
{
 
    text-align: center;   
 
}
 
 
#content div.box table th.selected
 
{
 
	padding: 0;
 
	vertical-align: middle;
 
}
 
 
#content div.box table th.selected input
 
{
 
	margin: 0;	
 
}
 
 
#content div.box table td
 
{
 
    padding: 5px;
 
	background: #ffffff;
 
    border-bottom: 1px solid #cdcdcd;
 
}
 
 
#content div.box table tr.selected td
 
{
 
    background: #FFFFCC;
 
}
 
 
#content div.box table td.selected
 
{
 
	padding: 0;
 
    width: 3%;
 
    text-align: center;
 
	vertical-align: middle;
 
}
 
 
#content div.box table td.selected input
 
{
 
	margin: 0;	
 
}
 
 
#content div.box table td.action
 
{
 
	width: 45%;
 
	text-align: left;
 
}
 
 
#content div.box table td.user
 
{
 
	width: 10%;
 
	text-align: center;
 
}
 
 
#content div.box table td.date
 
{
 
	width: 33%;
 
	text-align: center;
 
}
 
 
#content div.box table td.address
 
{
 
	width: 10%;
 
	text-align: center;
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> box / table action
 
----------------------------------------------------------- */
 
 
#content div.box div.action
 
{
 
	margin: 10px 0 0 0;
 
	padding: 0;
 
	float: right;
 
	background: #FFFFFF;
 
	text-align: right;
 
}
 
 
#content div.box div.action a:hover
 
{
 
    color: #000000;
 
    text-decoration: none;
 
}
 
 
#content div.box div.action select
 
{
 
    margin: 0;
 
	font-family: Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
 
	font-size: 11px;
 
}
 
 
#content div.box div.action div.button
 
{
 
	margin: 6px 0 0 0;
 
	padding: 0;
 
	text-align: right;
 
}
 
 
#content div.box div.action div.button input
 
{
 
	margin: 0;
 
	color: #000000;
 
	font-family: Lucida Grande, Verdana, Lucida Sans Regular, Lucida Sans Unicode, Arial, sans-serif;
 
	font-size: 11px;
 
	font-weight: bold;
 
}
 
 
#content div.box div.action div.button 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;
 
}
 
 
#content div.box div.action div.button 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;
 
}
 
 
#content div.box div.action .ui-selectmenu  
 
{
 
 	margin: 0;
 
	padding: 0;
 
}
 
 
#content div.box div.action a.ui-selectmenu-focus
 
{
 
	border: 1px solid #666666;
 
}
 
 
#content div.box div.action a.ui-selectmenu-focus span.ui-icon
 
{
 
	background-image: url(../images/ui/ui-icons_222222_256x240.png);
 
}
 
 
/* -----------------------------------------------------------
 
	content -> right -> pagination
 
----------------------------------------------------------- */
 
 
#content div.box div.pagination
 
{
 
    margin: 10px 0 0 0;
 
    padding: 0;
 
    height: 1%;
 
    clear: both;
 
    overflow: hidden;
 
}
 
 
#content div.box div.pagination div.results
 
{
 
    margin: 0;
 
    padding: 0;
 
    text-align: left;
 
    float: left
 
}
 
 
#content div.box div.pagination div.results span 
 
{
 
    margin: 0;
 
    padding: 6px 8px 6px 8px;
 
    height: 1%;
 
    display: block;
 
    float: left;
 
    background: #ebebeb url("../images/pager.png") repeat-x;
 
    border-top: 1px solid #dedede;
 
    border-left: 1px solid #cfcfcf;
 
    border-right: 1px solid #c4c4c4;
 
    border-bottom: 1px solid #c4c4c4;
 
	color: #4A4A4A;
 
	font-weight: bold;
 
}
 
 
#content div.box div.pagination ul.pager
 
{
 
    margin: 0;
 
    padding: 0;
 
    float: right;
 
    text-align: right;
 
}
 
 
#content div.box div.pagination ul.pager li
 
{
 
    margin: 0 0 0 4px;
 
    padding: 0;
 
    height: 1%;
 
    float: left;
 
    list-style: none;
 
    background: #ebebeb url("../images/pager.png") repeat-x;
 
    border-top: 1px solid #dedede;
 
    border-left: 1px solid #cfcfcf;
 
    border-right: 1px solid #c4c4c4;
 
    border-bottom: 1px solid #c4c4c4;
 
	color: #4A4A4A;
 
    font-weight: bold;
 
}
 
 
#content div.box div.pagination ul.pager li.separator
 
{
 
    padding: 6px;   
 
}
 
 
#content div.box div.pagination ul.pager li.current
 
{
 
    padding: 6px;   
 
    background: #b4b4b4 url("../images/pager_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;
 
}
 
 
#content div.box div.pagination ul.pager li.disabled
 
{
 
    padding: 6px;
 
    color: #B4B4B4;
 
}
 
 
#content div.box div.pagination ul.pager li a 
 
{
 
    margin: 0;
 
    padding: 6px;
 
    height: 1%;
 
    display: block;
 
    float: left;
 
    color: #515151;
 
	text-decoration: none;
 
}
 
 
#content div.box div.pagination ul.pager li a:hover, 
 
#content div.box div.pagination ul.pager li a:active 
 
{
 
    margin: -1px;
 
    background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
 
    border-top: 1px solid #cccccc;
 
    border-left: 1px solid #bebebe;
 
    border-right: 1px solid #b1b1b1;
 
    border-bottom: 1px solid #afafaf;
 
}
 
 
/* -----------------------------------------------------------
 
	content -> webhelpers pagination
 
----------------------------------------------------------- */
 
 
#content div.box div.pagination-wh
 
{
 
    margin: 10px 0 0 0;
 
    padding: 0;
 
    height: 1%;
 
    clear: both;
 
    overflow: hidden;
 
    text-align: right;
 
}
 
 
#content div.box div.pagination-wh div.results
 
{
 
    margin: 0;
 
    padding: 0;
 
    text-align: left;
 
    float: left
 
}
 
 
#content div.box div.pagination-wh div.results span 
 
{
 
    margin: 0;
 
    padding: 6px 8px 6px 8px;
 
    height: 1%;
 
    display: block;
 
    float: left;
 
    background: #ebebeb url("../images/pager.png") repeat-x;
 
    border-top: 1px solid #dedede;
 
    border-left: 1px solid #cfcfcf;
 
    border-right: 1px solid #c4c4c4;
 
    border-bottom: 1px solid #c4c4c4;
 
	color: #4A4A4A;
 
	font-weight: bold;
 
}
 
 
#content div.box div.pagination-left{
 
	float:left;
 
}
 
#content div.box div.pagination-right{
 
	float:right;
 
}
 
 
#content div.box div.pagination-wh a, 
 
#content div.box div.pagination-wh span.pager_dotdot
 
{
 
    margin: 0 0 0 4px;
 
    padding: 6px;
 
    height: 1%;
 
    float: left;
 
    background: #ebebeb url("../images/pager.png") repeat-x;
 
    border-top: 1px solid #dedede;
 
    border-left: 1px solid #cfcfcf;
 
    border-right: 1px solid #c4c4c4;
 
    border-bottom: 1px solid #c4c4c4;
 
	color: #4A4A4A;
 
    font-weight: bold;
 
}
 
#content div.box div.pagination-wh span.pager_curpage
 
{
 
    margin: 0 0 0 4px;
 
    padding: 6px;
 
    height: 1%;
 
    float: left;
 
    background: #b4b4b4 url("../images/pager_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;
 
    font-weight: bold;    
 
}
 
 
#content div.box div.pagination-wh a.disabled
 
{
 
    padding: 6px;
 
    color: #B4B4B4;
 
}
 
 
 
#content div.box div.pagination-wh a:hover, 
 
#content div.box div.pagination-wh a:active 
 
{
 
    background: #b4b4b4 url("../images/pager_selected.png") repeat-x;
 
    border-top: 1px solid #cccccc;
 
    border-left: 1px solid #bebebe;
 
    border-right: 1px solid #b1b1b1;
 
    border-bottom: 1px solid #afafaf;
 
    text-decoration: none;
 
}
 
 
 
/* -----------------------------------------------------------
 
	content -> right -> traffic chart
 
----------------------------------------------------------- */
 
 
#content div.box div.traffic
 
{
 
	margin: 0;
 
	padding: 0 20px 10px 20px;
 
    clear: both;
 
    overflow: hidden;
 
}
 
 
#content div.box div.traffic div.legend
 
{
 
	margin: 0 0 10px 0;
 
	padding: 0 0 10px 0;
 
	clear: both;
 
	overflow: hidden;
 
	border-bottom: 1px solid #dddddd;
 
}
 
 
#content div.box div.traffic div.legend h6
 
{
 
	margin: 0;
 
	padding: 0;
 
	float: left;
 
	border: none;
 
}
 
 
#content div.box div.traffic div.legend ul
 
{
 
	margin: 0;
 
	padding: 0;
 
	float: right;	
 
}
 
 
#content div.box div.traffic div.legend li
 
{
 
	margin: 0;
 
	padding: 0 8px 0 4px;
 
	list-style: none;
 
	float: left;
 
	font-size: 11px;
 
}
 
 
#content div.box div.traffic div.legend li.visits
 
{
 
	border-left: 12px solid #edc240;
 
}
 
 
#content div.box div.traffic div.legend li.pageviews
 
{
 
	border-left: 12px solid #afd8f8;
 
}
 
 
#content div.box div.traffic table
 
{
 
	width: auto;
 
}
 
 
#content div.box div.traffic table td
 
{
 
	padding: 2px 3px 3px 3px;
 
	background: transparent;
 
	border: none;
 
}
 
 
#content div.box div.traffic table td.legendLabel
 
{
 
	padding: 0 3px 2px 3px;
 
}
 
 
/* -----------------------------------------------------------
 
	footer
 
----------------------------------------------------------- */
 
 
#footer
 
{
 
    margin: 0;
 
    padding: 5px 0 5px 0;
 
    clear: both;
 
    overflow: hidden;
 
    background: #2a2a2a;
 
    text-align: right;
 
}
 
 
#footer p
 
{
 
    margin: 0 80px 0 80px;
 
    padding: 10px 0 10px 0;
 
    color: #ffffff;
 
}
 
 
/* -----------------------------------------------------------
 
	login
 
----------------------------------------------------------- */
 
 
#login
 
{
 
    margin: 10% auto 0 auto;
 
    padding: 0;
 
	width: 420px;
 
}
 
 
/* -----------------------------------------------------------
 
	login -> colors
 
----------------------------------------------------------- */ 
 
 
#login div.color
 
{
 
    margin: 10px auto 0 auto;
 
    padding: 3px 3px 3px 0;
 
	clear: both;
 
	overflow: hidden;
 
    background: #FFFFFF;
 
}
 
 
#login div.color a
 
{
 
    margin: 0 0 0 3px;
 
    padding: 0;
 
    width: 20px;
 
    height: 20px;
 
    display: block;
 
    float: left;
 
}
 
 
/* -----------------------------------------------------------
 
	login -> title
 
----------------------------------------------------------- */ 
 
 
#login div.title
 
{
 
	margin: 0 auto;
 
	padding: 0;
 
	width: 420px;
 
	clear: both;
 
	overflow: hidden;
 
	position: relative;
 
	background: #003367 url("../images/colors/blue/header_inner.png") repeat-x;
 
}
 
 
#login div.title h5
 
{
 
	margin: 10px;
 
	padding: 0;
 
	color: #ffffff;	
 
}
 
 
/* -----------------------------------------------------------
 
	login -> title / corners
 
----------------------------------------------------------- */ 
 
 
#login div.title div.corner
 
{
 
	height: 6px;
 
	width: 6px;
 
	position: absolute;
 
	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;
 
}
 
 
#login div.inner
 
{
 
    margin: 0 auto;
 
    padding: 20px;
 
    width: 380px;
 
	background: #FFFFFF url("../images/login.png") no-repeat top left;
 
    border-top: none;
 
    border-bottom: none;
 
}
 
 
/* -----------------------------------------------------------
 
	login -> form
 
----------------------------------------------------------- */
 
 
#login div.form
 
{
 
    margin: 0;
 
    padding: 0;
 
    clear: both;
 
    overflow: hidden;
 
}
 
 
#login div.form div.fields
 
{
 
	margin: 0;
 
	padding: 0;
 
    clear: both;
 
    overflow: hidden;
 
}
 
 
#login div.form div.fields div.field
 
{
 
	margin: 0;
 
	padding: 0 0 10px 0; 
 
	clear: both;
 
	overflow: hidden;
 
}
 
 
#login div.form div.fields div.field span.error-message
 
{
 
	margin: 8px 0 0 0;
 
	padding: 0;
 
	height: 1%;
 
	display: block;
 
	color: #FF0000;
 
}
 
 
#login div.form div.fields div.field div.label
 
{
 
	margin: 2px 10px 0 0;
 
	padding: 5px 0 0 5px;
 
	width: 173px;
 
	float: left;
 
    text-align: right;
 
}
 
 
#login div.form div.fields div.field div.label label
 
{
 
    color: #000000;
 
    font-weight: bold;
 
}
 
 
#login  div.form div.fields div.field div.label span
 
{
 
	margin: 0;
 
	padding: 2px 0 0 0;
 
	height: 1%;
 
	display: block;
 
	color: #363636;
 
}
 
 
#login div.form div.fields div.field div.input
 
{
 
	margin: 0;
 
	padding: 0;
 
	float: left;
 
}
 
 
#login div.form div.fields div.field div.input input
 
{
 
    margin: 0;
 
    padding: 7px 7px 6px 7px;
 
    width: 176px;
 
    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;
 
}
 
 
#login 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;
 
}
 
 
#login 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;
 
}
 
 
#login div.form div.fields div.field div.input div.link
 
{
 
	margin: 6px 0 0 0;
 
	padding: 0;
 
	text-align: right;
 
}
 
 
#login div.form div.fields div.field div.checkbox
 
{
 
	margin: 0 0 0 184px;
 
	padding: 0;
 
}
 
 
#login div.form div.fields div.field div.checkbox label
 
{
 
    color: #565656;
 
    font-weight: bold;
 
}
 
 
#login div.form div.fields div.buttons
 
{
 
	margin: 0;
 
	padding: 10px 0 0 0;
 
	clear: both;
 
	overflow: hidden;
 
	border-top: 1px solid #DDDDDD;
 
	text-align: right;
 
}
 
 
#login div.form div.fields div.buttons input
 
{
 
	margin: 0;
 
    color: #000000;
 
	font-size: 1.0em; 
 
    font-weight: bold;
 
	font-family: Verdana, Helvetica, Sans-Serif; 
 
}
 
 
#login 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;
 
}
 
 
#login 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;
 
}
 
 
/* -----------------------------------------------------------
 
	login -> links
 
----------------------------------------------------------- */
 
 
#login div.form div.links
 
{
 
	margin: 10px 0 0 0;
 
	padding: 0 0 2px 0;
 
    clear: both;
 
    overflow: hidden;
 
}
 
 
/* -----------------------------------------------------------
 
	register
 
----------------------------------------------------------- */
 
 
#register
 
{
 
    margin: 10% auto 0 auto;
 
    padding: 0;
 
	width: 420px;
 
}
 
 
/* -----------------------------------------------------------
 
	register -> colors
 
----------------------------------------------------------- */ 
 
 
#register div.color
 
{
 
    margin: 10px auto 0 auto;
 
    padding: 3px 3px 3px 0;
 
	clear: both;
 
	overflow: hidden;
 
    background: #FFFFFF;
 
}
 
 
#register div.color a
 
{
 
    margin: 0 0 0 3px;
 
    padding: 0;
 
    width: 20px;
 
    height: 20px;
 
    display: block;
 
    float: left;
 
}
 
 
/* -----------------------------------------------------------
 
	register -> title
 
----------------------------------------------------------- */ 
 
 
#register div.title
 
{
 
	margin: 0 auto;
 
	padding: 0;
 
	width: 420px;
 
	clear: both;
 
	overflow: hidden;
 
	position: relative;
 
	background: #003367 url("../images/colors/blue/header_inner.png") repeat-x;
 
}
 
 
#register div.title h5
 
{
 
	margin: 10px;
 
	padding: 0;
 
	color: #ffffff;	
 
}
 
 
/* -----------------------------------------------------------
 
	register -> inner
 
----------------------------------------------------------- */
 
#register div.title div.corner
 
{
 
	height: 6px;
 
	width: 6px;
 
	position: absolute;
 
	background: url("../images/colors/blue/login_corners.png") no-repeat;
 
}
 
 
#register div.title div.tl
 
{
 
	top: 0;
 
	left: 0;
 
    background-position: 0 0;
 
}
 
 
#register div.title div.tr
 
{
 
	top: 0;
 
	right: 0;
 
    background-position: -6px 0;
 
    
 
}
 
#register div.inner
 
{
 
    margin: 0 auto;
 
    padding: 20px;
 
    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;
 
}
 
 
 
/* -----------------------------------------------------------
 
	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: 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;
 
}
 
 
 
 
/* -----------------------------------------------------------
 
	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;
 
}
 
 
 
/* -----------------------------------------------------------
 
    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 {
 
    padding:3px 6px;
 
}
 
 
.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-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 
 
----------------------------------------------------------- */
 
 
.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: 2px !important;
 
}
 
 
div#legend_choices table td{
 
	border: none !important;
 
	padding: 0px !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;
 
 
}
 
 
 
/* -----------------------------------------------------------
 
	jquery ui
 
----------------------------------------------------------- */
 
 
.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
 
----------------------------------------------------------- */
 
 
.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); }
 
 
/* -----------------------------------------------------------
 
	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; }
 
 
/* -----------------------------------------------------------
 
	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
 
----------------------------------------------------------- */
 
.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
pylons_app/templates/admin/repos/repos.html
Show inline comments
 
## -*- coding: utf-8 -*-
 
<%inherit file="/base/base.html"/>
 

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

	
 

	
 
<%def name="breadcrumbs_links()">
 
    ${h.link_to(_('Admin'),h.url('admin_home'))} &raquo; ${_('Repositories')}
 
</%def>
 
<%def name="page_nav()">
 
	${self.menu('admin')}
 
</%def>
 
<%def name="main()">
 
<div class="box">
 
    <!-- box / title -->
 
    <div class="title">
 
        ${self.breadcrumbs()}
 
        <ul class="links">
 
          <li>
 
            <span>${h.link_to(u'ADD NEW REPO',h.url('new_repo'),class_="add_icon")}</span>
 
            <span>${h.link_to(u'ADD NEW REPOSITORY',h.url('new_repo'),class_="add_icon")}</span>
 
          </li>          
 
        </ul>        
 
    </div>
 
    <!-- end box / title -->
 
    <div class="table">
 
        <table class="table_disp">
 
        <tr class="header">
 
            <th class="left">${_('name')}</th>
 
            <th class="left">${_('owner')}</th>
 
            <th class="left">${_('last revision')}</th>
 
            <th class="left">${_('action')}</th>
 
        </tr>
 
            %for cnt,repo in enumerate(c.repos_list):
 
            <tr class="parity${cnt%2}">
 
                 <td>
 
                 %if repo['repo'].dbrepo.private:
 
                    <img alt="${_('private')}" src="/images/icons/lock.png"/>
 
                 %else:
 
                    <img alt="${_('public')}" src="/images/icons/lock_open.png"/>
 
                 %endif         
 
                ${h.link_to(repo['name'],h.url('edit_repo',repo_name=repo['name']))}</td>
 
                <td>${repo['contact']}</td>
 
                <td>r${repo['rev']}:${repo['tip']}</td>
 
                <td>
 
                  ${h.form(url('repo', repo_name=repo['name']),method='delete')}
 
                    ${h.submit('remove','delete',class_="delete_icon action_button",onclick="return confirm('Confirm to delete this repository');")}
 
                  ${h.end_form()}
 
                </td>
 
            </tr>
 
            %endfor
 
        </table>
 
    </div>
 
</div> 
 
		   
 
</%def>    
pylons_app/templates/files/files_annotate.html
Show inline comments
 
<%inherit file="/base/base.html"/>
 

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

	
 
<%def name="breadcrumbs_links()">
 
    ${h.link_to(u'Home',h.url('/'))}
 
    &raquo;
 
    ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
 
    &raquo;
 
    ${_('annotate')}  
 
    ${_('annotate')} @ R${c.rev_nr}:${c.cur_rev}
 
</%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">
 
			<h2>${_('Location')}: ${h.files_breadcrumbs(c.repo_name,c.cur_rev,c.file.path)}</h2>
 
			<dl class="overview">
 
				<dt>${_('Revision')}</dt>
 
				<dt>${_('Last revision')}</dt>
 
				<dd>r${c.file.last_changeset.revision}:${c.file.last_changeset._short}</dd>
 
				<dt>${_('Size')}</dt>
 
				<dd>${h.format_byte_size(c.file.size,binary=True)}</dd>
 
				<dt>${_('Options')}</dt>
 
				<dd>${h.link_to(_('show source'),
 
						h.url('files_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=c.f_path))}  
 
					/ ${h.link_to(_('download as raw'),
 
						h.url('files_raw_home',repo_name=c.repo_name,revision=c.cur_rev,f_path=c.f_path))}
 
				</dd>				
 
			</dl>
 
			<div id="body" class="codeblock">
 
				<div class="code-header">
 
					<div class="revision">${c.file.name}@r${c.file.last_changeset.revision}:${c.file.last_changeset._short}</div>
 
					<div class="commit" style="font-size:70%">"${c.file_msg}"</div>
 
				</div>
 
				<div class="code-body">
 
					${h.pygmentize_annotation(c.file,linenos=True,anchorlinenos=True,lineanchors='S',cssclass="code-highlight")}
 
				</div>
 
			</div>
 
		</div>    
 
    </div>
 
</div>    
 
</%def>   
 
\ No newline at end of file
pylons_app/templates/index.html
Show inline comments
 
## -*- coding: utf-8 -*-
 
<%inherit file="base/base.html"/>
 
<%def name="title()">
 
    ${c.hg_app_name}
 
</%def>
 
<%def name="breadcrumbs()">
 
	${c.hg_app_name}
 
</%def>
 
<%def name="page_nav()">
 
	${self.menu('home')}
 
</%def>
 
<%def name="main()">
 
	<%def name="get_sort(name)">
 
		<%name_slug = name.lower().replace(' ','_') %>
 
		%if name_slug == c.cs_slug:
 
			<span style="font-weight: bold;text-decoration: underline;">${name}</span>
 
		%else:
 
			<span style="font-weight: bold">${name}</span>
 
		%endif
 
		<a href="?sort=${name_slug}">&darr;</a>
 
		<a href="?sort=-${name_slug}">&uarr;</a>
 
	</%def>
 
	
 
	
 
	
 
    <div class="box">
 
	    <!-- box / title -->
 
	    <div class="title">
 
	        <h5>${_('Dashboard')}</h5>
 
	        ##%if h.HasPermissionAll('repository.create')():
 
	        <ul class="links">
 
	          <li>
 
	            <span>${h.link_to(u'ADD NEW REPO',h.url('new_repo'),class_="add_icon")}</span>
 
	            <span>${h.link_to(u'ADD NEW REPOSITORY',h.url('new_repo'),class_="add_icon")}</span>
 
	          </li>          
 
	        </ul>  	        
 
	        ##%endif
 
	    </div>
 
	    <!-- end box / title -->
 
        <div class="table">
 
                    <table>
 
            <thead>
 
	            <tr>
 
			        <th class="left">${get_sort(_('Name'))}</th>
 
			        <th class="left">${get_sort(_('Description'))}</th>
 
			        <th class="left">${get_sort(_('Last change'))}</th>
 
			        <th class="left">${get_sort(_('Tip'))}</th>
 
			        <th class="left">${get_sort(_('Contact'))}</th>
 
			        <th class="left">${_('RSS')}</th>
 
			        <th class="left">${_('Atom')}</th>
 
	            </tr>
 
            </thead>
 
                        <tbody>
 
					    %for cnt,repo in enumerate(c.repos_list):
 
					        %if h.HasRepoPermissionAny('repository.write','repository.read','repository.admin')(repo['name'],'main page check'):
 
					        <tr class="parity${cnt%2}">
 
					            <td>
 
					             %if repo['repo'].dbrepo.private:
 
					                <img alt="${_('private')}" src="/images/icons/lock.png"/>
 
					             %else:
 
					                <img alt="${_('public')}" src="/images/icons/lock_open.png"/>
 
					             %endif  
 
					            ${h.link_to(repo['name'],
 
					                h.url('summary_home',repo_name=repo['name']))}</td>
 
					            <td title="${repo['description']}">${h.truncate(repo['description'],60)}</td>
 
					            <td>${h.age(repo['last_change'])}</td>
 
					            <td>${h.link_to_if(repo['rev']>=0,'r%s:%s' % (repo['rev'],repo['tip']),
 
					                h.url('changeset_home',repo_name=repo['name'],revision=repo['tip']),
 
					                class_="tooltip",
 
					                tooltip_title=h.tooltip(repo['last_msg']))}</td>
 
					            <td title="${repo['contact']}">${h.person(repo['contact'])}</td>
 
					            <td>
 
					                <a title="${_('Subscribe to %s rss feed')%repo['name']}" class="rss_icon"  href="${h.url('rss_feed_home',repo_name=repo['name'])}"></a>
 
					            </td>        
 
					            <td>
 
					                <a title="${_('Subscribe to %s atom feed')%repo['name']}"  class="atom_icon" href="${h.url('atom_feed_home',repo_name=repo['name'])}"></a>
 
					            </td>
 
					        </tr>
 
					        %endif
 
					    %endfor
 
                        </tbody>
 
                    </table>
 
            </div>
 
    </div>	
 
</%def>    
0 comments (0 inline, 0 general)