view rhodecode/templates/index.html @ 1100:e7d7f05217c1 beta

replaced all decode('utf-8') instances with .decode('utf-8','replace') for more error prof setup, this way rhodecode could handle displaying non utf8 encoded file paths. This is still an invalid path, but this way we could at least show those paths without errors
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 27 Feb 2011 02:43:44 +0100
parents 90eadff2c2a8
children 31e82d872631
line wrap: on
line source

## -*- coding: utf-8 -*-
<%inherit file="base/base.html"/>
<%def name="title()">
    ${_('Dashboard')} - ${c.rhodecode_name}
</%def>
<%def name="breadcrumbs()">
	${c.rhodecode_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.sort_slug:
		  %if c.sort_by.startswith('-'):
		    <a href="?sort=${name_slug}">${name}&uarr;</a>
		  %else:
		    <a href="?sort=-${name_slug}">${name}&darr;</a>
		  %endif:
		%else:
		    <a href="?sort=${name_slug}">${name}</a>
		%endif
	</%def>
	
    <div class="box">
	    <!-- box / title -->
	    <div class="title">
	        <h5>${_('Dashboard')}
	        <input class="top-right-rounded-corner top-left-rounded-corner bottom-left-rounded-corner bottom-right-rounded-corner" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
	        </h5>
	        %if c.rhodecode_user.username != 'default':
		        %if h.HasPermissionAny('hg.admin','hg.create.repository')():
		        <ul class="links">
		          <li>
		            <span>${h.link_to(_('ADD NEW REPOSITORY'),h.url('admin_settings_create_repository'))}</span>
		          </li>          
		        </ul>  	        
		        %endif
		    %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(_('Owner'))}</th>
			        <th class="left">${_('RSS')}</th>
			        <th class="left">${_('Atom')}</th>
	            </tr>
            </thead>
            <tbody>
		    %for cnt,repo in enumerate(c.repos_list):
		        <tr class="parity${cnt%2}">
		            <td>
		            <div style="white-space: nowrap">
		             ## TYPE OF REPO
		             %if repo['dbrepo']['repo_type'] =='hg':
		               <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url("/images/icons/hgicon.png")}"/>
		             %elif repo['dbrepo']['repo_type'] =='git':
		               <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url("/images/icons/giticon.png")}"/>
		             %else:
		               
		             %endif 
		            
		             ##PRIVATE/PUBLIC
		             %if repo['dbrepo']['private']:
		                <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url("/images/icons/lock.png")}"/>
		             %else:
		                <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url("/images/icons/lock_open.png")}"/>
		             %endif
		            
		            ##NAME   
		            ${h.link_to(repo['name'],
		                h.url('summary_home',repo_name=repo['name']),class_="repo_name")}
		            %if repo['dbrepo_fork']:
		            	<a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}">
		            	<img class="icon" alt="${_('fork')}"
		            	title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}" 
		            	src="${h.url("/images/icons/arrow_divide.png")}"/></a>
		            %endif
		            </div>
		            </td>
		            ##DESCRIPTION
		            <td><span class="tooltip" title="${h.tooltip(repo['description'])}">
		               ${h.truncate(repo['description'],60)}</span>
		            </td>
		            ##LAST CHANGE
		            <td>
		              <span class="tooltip" title="${repo['last_change']}">
		              ${h.age(repo['last_change'])}</span>
		            </td>
		            <td>
		            	%if repo['rev']>=0:
		            	${h.link_to('r%s:%s' % (repo['rev'],h.short_id(repo['tip'])),
		                h.url('changeset_home',repo_name=repo['name'],revision=repo['tip']),
		                class_="tooltip",
		                title=h.tooltip(repo['last_msg']))}
		            	%else:
		            		${_('No changesets yet')}
		            	%endif    
		            </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>
		    %endfor
            </tbody>
            </table>
            </div>
    </div>
    
    
    <script type="text/javascript">
     var D = YAHOO.util.Dom;
     var E = YAHOO.util.Event;
     var S = YAHOO.util.Selector;
     
     var q_filter = D.get('q_filter');
     var F = YAHOO.namespace('q_filter'); 
     
     E.on(q_filter,'click',function(){
    	q_filter.value = '';
     });

     F.filterTimeout = null;
     
     F.updateFilter  = function() { 
    	// Reset timeout 
        F.filterTimeout = null;
    	
        var obsolete = [];
        var nodes = S.query('div.table tr td div a.repo_name');
        var req = D.get('q_filter').value;
        for (n in nodes){
            D.setStyle(nodes[n].parentNode.parentNode.parentNode,'display','')
        }
        if (req){
	        for (n in nodes){
	        	if (nodes[n].innerHTML.toLowerCase().indexOf(req) == -1) {
	        		obsolete.push(nodes[n]); 
	        	}
	    	}
	        if(obsolete){
		        for (n in obsolete){
		        	D.setStyle(obsolete[n].parentNode.parentNode.parentNode,'display','none');
		        }
	        }
        }
     }
     
     E.on(q_filter,'keyup',function(e){
    	 clearTimeout(F.filterTimeout); 
    	 setTimeout(F.updateFilter,600); 
     });
     
    </script>
    	
</%def>