view rhodecode/templates/journal/journal.html @ 2977:cff9d4e1d821 beta

Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption. Now fallback to the changeset the node exists in for history calculation
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 04 Nov 2012 13:08:27 +0100
parents 9937afa7f093
children cc7eedb5323c
line wrap: on
line source

## -*- coding: utf-8 -*-
<%inherit file="/base/base.html"/>
<%def name="title()">
    ${_('Journal')} - ${c.rhodecode_name}
</%def>
<%def name="breadcrumbs()">
	${c.rhodecode_name}
</%def>
<%def name="page_nav()">
	${self.menu('home')}
</%def>
<%def name="head_extra()">
<link href="${h.url('journal_atom', api_key=c.rhodecode_user.api_key)}" rel="alternate" title="${_('ATOM journal feed')}" type="application/atom+xml" />
<link href="${h.url('journal_rss', api_key=c.rhodecode_user.api_key)}" rel="alternate" title="${_('RSS journal feed')}" type="application/rss+xml" />
</%def>
<%def name="main()">

    <div class="box box-left">
	    <!-- box / title -->
	    <div class="title">
	        <h5>${_('Journal')}</h5>
             <ul class="links">
               <li>
                 <span><a id="refresh" href="${h.url('journal')}"><img class="icon" title="${_('Refresh')}" alt="${_('Refresh')}" src="${h.url('/images/icons/arrow_refresh.png')}"/></a></span>
               </li>
               <li>
                 <span><a href="${h.url('journal_rss', api_key=c.rhodecode_user.api_key)}"><img class="icon" title="${_('RSS feed')}" alt="${_('RSS feed')}" src="${h.url('/images/icons/rss_16.png')}"/></a></span>
               </li>
               <li>
                 <span><a href="${h.url('journal_atom', api_key=c.rhodecode_user.api_key)}"><img class="icon" title="${_('ATOM feed')}" alt="${_('ATOM feed')}" src="${h.url('/images/icons/atom.png')}"/></a></span>
               </li>
             </ul>
	    </div>
	    <div id="journal">${c.journal_data}</div>
    </div>
    <div class="box box-right">
        <!-- box / title -->
        <div class="title">
            <h5>
            <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
            <a id="show_watched" class="link-white" href="#watched">${_('Watched')}</a> / <a id="show_my" class="link-white" href="#my">${_('My repos')}</a>
            </h5>
             %if h.HasPermissionAny('hg.admin','hg.create.repository')():
             <ul class="links">
               <li>
                 <span>${h.link_to(_('ADD'),h.url('admin_settings_create_repository'))}</span>
               </li>
             </ul>
             %endif
        </div>
        <!-- end box / title -->
        <div id="my" class="table" style="display:none">
        ## loaded via AJAX
        ${_('Loading...')}
        </div>

        <div id="watched" class="table">
          %if c.following:
            <table>
            <thead>
                <tr>
                <th class="left">${_('Name')}</th>
            </thead>
             <tbody>
                %for entry in c.following:
                  <tr>
                    <td>
                      %if entry.follows_user_id:
                        <img title="${_('following user')}" alt="${_('user')}" src="${h.url('/images/icons/user.png')}"/>
                        ${entry.follows_user.full_contact}
                      %endif

                      %if entry.follows_repo_id:
                        <div style="float:right;padding-right:5px">
                        <span id="follow_toggle_${entry.follows_repository.repo_id}" class="following" title="${_('Stop following this repository')}"
                              onclick="javascript:toggleFollowingRepo(this,${entry.follows_repository.repo_id},'${str(h.get_token())}')">
                        </span>
                        </div>

                         %if h.is_hg(entry.follows_repository):
                           <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/>
                         %elif h.is_git(entry.follows_repository):
                           <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/>
                         %endif

                        %if entry.follows_repository.private and c.visual.show_private_icon:
                          <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url('/images/icons/lock.png')}"/>
                        %elif not entry.follows_repository.private and c.visual.show_public_icon:
                          <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url('/images/icons/lock_open.png')}"/>
                        %endif
                        <span class="watched_repo">
                            ${h.link_to(entry.follows_repository.repo_name,h.url('summary_home',repo_name=entry.follows_repository.repo_name))}
                        </span>
                      %endif
                    </td>
                  </tr>
                %endfor
            </tbody>
            </table>
          %else:
              <div style="padding:5px 0px 10px 0px;">
              ${_('You are not following any users or repositories')}
              </div>
          %endif
        </div>
    </div>

    <script type="text/javascript">
    var show_my = function(e){
        YUD.setStyle('watched','display','none');
        YUD.setStyle('my','display','');

        var url = "${h.url('admin_settings_my_repos')}";
        ypjax(url, 'my', function(){
            tooltip_activate();
            quick_repo_menu();
            var nodes = YUQ('#my tr td a.repo_name');
            var func = function(node){
                return node.parentNode.parentNode.parentNode;
            }
            q_filter('q_filter',nodes,func);
        });

    }
    YUE.on('show_my','click',function(e){
        show_my(e);
    })
    var show_watched = function(e){
    	YUD.setStyle('my','display','none');
        YUD.setStyle('watched','display','');
        var nodes = YUQ('#watched .watched_repo a');
        var target = 'q_filter';
        var func = function(node){
            return node.parentNode.parentNode;
        }
        q_filter(target,nodes,func);
    }
    YUE.on('show_watched','click',function(e){
        show_watched(e);
    })
    //init watched
    show_watched();

    var tabs = {
        'watched': show_watched,
        'my': show_my,
    }
    var url = location.href.split('#');
    if (url[1]) {
        //We have a hash
        var tabHash = url[1];
        tabs[tabHash]();
    }

    YUE.on('refresh','click',function(e){
        ypjax(e.currentTarget.href,"journal",function(){
        	show_more_event();
        	tooltip_activate();
        	show_changeset_tooltip();
        	});
        YUE.preventDefault(e);
    });


    // main table sorting
    var myColumnDefs = [
        {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
        {key:"name",label:"${_('Name')}",sortable:true,
            sortOptions: { sortFunction: nameSort }},
        {key:"tip",label:"${_('Tip')}",sortable:true,
            sortOptions: { sortFunction: revisionSort }},
        {key:"action1",label:"",sortable:false},
        {key:"action2",label:"",sortable:false},
    ];

    var myDataSource = new YAHOO.util.DataSource(YUD.get("repos_list"));

    myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;

    myDataSource.responseSchema = {
        fields: [
            {key:"menu"},
            {key:"name"},
            {key:"tip"},
            {key:"action1"},
            {key:"action2"}
        ]
    };

    var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,
            {
              sortedBy:{key:"name",dir:"asc"},
              MSG_SORTASC:"${_('Click to sort ascending')}",
              MSG_SORTDESC:"${_('Click to sort descending')}",
              MSG_EMPTY:"${_('No records found.')}",
              MSG_ERROR:"${_('Data error.')}",
              MSG_LOADING:"${_('Loading...')}",
            }
    );
    myDataTable.subscribe('postRenderEvent',function(oArgs) {
        tooltip_activate();
        quick_repo_menu();
        var func = function(node){
            return node.parentNode.parentNode.parentNode.parentNode;
        }
        q_filter('q_filter',YUQ('#my tr td a.repo_name'),func);
    });

    </script>
</%def>