Files @ e61a656b44bd
Branch filter:

Location: kallithea/rhodecode/templates/admin/repos/repos.html

Mads Kiilerich
html: move "Submit a bug" to make it more clear that it is for RhodeCode, not the repo

RhodeCode _could_ contain a bug tracker and this link _could_ be for filing
bugs for the hosted projects.

Moving the link to the RhodeCode info makes it more clear that it is for
RhodeCode bugs.

The server instance is however something local, not directly related to the
upstream.
## -*- coding: utf-8 -*-
<%inherit file="/base/base.html"/>

<%def name="title()">
    ${_('Repositories administration')} &middot; ${c.rhodecode_name}
</%def>

<%def name="breadcrumbs_links()">
    <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/> ${h.link_to(_('Admin'),h.url('admin_home'))} &raquo; <span id="repo_count">0</span> ${_('repositories')}
</%def>
<%def name="page_nav()">
    ${self.menu('admin')}
</%def>
<%def name="main()">
<div class="box">

    <div class="title">
        ${self.breadcrumbs()}
        <ul class="links">
          <li>
            <span>${h.link_to(_(u'Add repository'),h.url('new_repo'))}</span>
          </li>
        </ul>
    </div>
    <div class="table yui-skin-sam" id="repos_list_wrap"></div>
    <div id="user-paginator" style="padding: 0px 0px 0px 20px"></div>


</div>
<script>
  var url = "${h.url('formatted_users', format='json')}";
  var data = ${c.data|n};
  var myDataSource = new YAHOO.util.DataSource(data);
  myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;

  myDataSource.responseSchema = {
      resultsList: "records",
      fields: [
         {key:"menu"},
         {key:"raw_name"},
         {key:"name"},
         {key:"desc"},
         {key:"last_changeset"},
         {key:"owner"},
         {key:"action"},
      ]
   };
  myDataSource.doBeforeCallback = function(req,raw,res,cb) {
      // This is the filter function
      var data     = res.results || [],
          filtered = [],
          i,l;

      if (req) {
          req = req.toLowerCase();
          for (i = 0; i<data.length; i++) {
              var pos = data[i].raw_name.toLowerCase().indexOf(req)
              if (pos != -1) {
                  filtered.push(data[i]);
              }
          }
          res.results = filtered;
      }
      YUD.get('repo_count').innerHTML = res.results.length;
      return res;
  }

  // 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:"desc",label:"${_('Description')}",sortable:true},
      {key:"last_changeset",label:"${_('Tip')}",sortable:true,
          sortOptions: { sortFunction: revisionSort }},
      {key:"owner",label:"${_('Owner')}",sortable:true},
      {key:"action",label:"${_('Action')}",sortable:false},
  ];

  var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,{
    sortedBy:{key:"name",dir:"asc"},
    paginator: YUI_paginator(25, ['user-paginator']),

    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 filterTimeout = null;

  updateFilter  = function () {
      // Reset timeout
      filterTimeout = null;

      // Reset sort
      var state = myDataTable.getState();
      state.sortedBy = {key:'name', dir:YAHOO.widget.DataTable.CLASS_ASC};

      // Get filtered data
      myDataSource.sendRequest(YUD.get('q_filter').value,{
          success : myDataTable.onDataReturnInitializeTable,
          failure : myDataTable.onDataReturnInitializeTable,
          scope   : myDataTable,
          argument: state
      });

  };
  YUE.on('q_filter','click',function(){
      if(!YUD.hasClass('q_filter', 'loaded')){
          //TODO: load here full list later to do search within groups
          YUD.addClass('q_filter', 'loaded');
      }
   });

  YUE.on('q_filter','keyup',function (e) {
      clearTimeout(filterTimeout);
      filterTimeout = setTimeout(updateFilter,600);
  });
</script>

</%def>