Files @ 72f008ed9b18
Branch filter:

Location: kallithea/rhodecode/templates/admin/repos/repo_edit.html - annotation

Marcin Kuzminski
implemented #84 downloads can be enabled/disabled per each repository from now.
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
a1ec653f5f95
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
52da7cba88a6
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
9c1ed03ef5db
52da7cba88a6
1e757ac98988
1e757ac98988
758f64f3fbda
758f64f3fbda
758f64f3fbda
758f64f3fbda
758f64f3fbda
52da7cba88a6
758f64f3fbda
758f64f3fbda
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
bd57d1cb9dc3
bd57d1cb9dc3
bd57d1cb9dc3
bd57d1cb9dc3
bd57d1cb9dc3
bd57d1cb9dc3
bd57d1cb9dc3
72f008ed9b18
72f008ed9b18
72f008ed9b18
72f008ed9b18
72f008ed9b18
72f008ed9b18
72f008ed9b18
72f008ed9b18
72f008ed9b18
1e757ac98988
136ad719d9e2
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
6b40654afa1e
6b40654afa1e
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
52da7cba88a6
52da7cba88a6
52da7cba88a6
52da7cba88a6
52da7cba88a6
52da7cba88a6
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
52da7cba88a6
52da7cba88a6
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
b9bbc0d6e9f3
52da7cba88a6
52da7cba88a6
52da7cba88a6
52da7cba88a6
1e757ac98988
## -*- coding: utf-8 -*-
<%inherit file="/base/base.html"/>

<%def name="title()">
    ${_('Edit repository')} ${c.repo_info.repo_name} - ${c.rhodecode_name}
</%def>

<%def name="breadcrumbs_links()">
    ${h.link_to(_('Admin'),h.url('admin_home'))} 
    &raquo; 
    ${h.link_to(_('Repositories'),h.url('repos'))} 
    &raquo;
    ${_('edit')} "${c.repo_name}"
</%def>

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

<%def name="main()">
<div class="box box-left">
    <!-- box / title -->
    <div class="title">
        ${self.breadcrumbs()}      
    </div>
    ${h.form(url('repo', repo_name=c.repo_info.repo_name),method='put')}
    <div class="form">
        <!-- fields -->
        <div class="fields">
            <div class="field">
                <div class="label">
                    <label for="repo_name">${_('Name')}:</label>
                </div>
                <div class="input">
                    ${h.text('repo_name',class_="medium")}
                </div>
             </div>
            <div class="field">
                <div class="label">
                    <label for="repo_type">${_('Type')}:</label>
                </div>
                <div class="input">
                    ${h.select('repo_type','hg',c.backends,class_="medium")}
                </div>
             </div>             
            <div class="field">
                <div class="label label-textarea">
                    <label for="description">${_('Description')}:</label>
                </div>
                <div class="textarea text-area editor">
                    ${h.textarea('description',cols=23,rows=5)}
                </div>
            </div>
            
            <div class="field">
                <div class="label label-checkbox">
                    <label for="private">${_('Private')}:</label>
                </div>
                <div class="checkboxes">
                    ${h.checkbox('private',value="True")}
                </div>
            </div>
            <div class="field">
                <div class="label label-checkbox">
                    <label for="enable_statistics">${_('Enable statistics')}:</label>
                </div>
                <div class="checkboxes">
                    ${h.checkbox('enable_statistics',value="True")}
                </div>
            </div>     
            <div class="field">
                <div class="label label-checkbox">
                    <label for="enable_downloads">${_('Enable downloads')}:</label>
                </div>
                <div class="checkboxes">
                    ${h.checkbox('enable_downloads',value="True")}
                </div>
            </div>                      
            <div class="field">
                <div class="label">
                    <label for="user">${_('Owner')}:</label>
                </div>
                <div class="input input-small ac">
                    <div class="perm_ac">
                       ${h.text('user',class_='yui-ac-input')}
                       <div id="owner_container"></div>
                    </div>
                </div>
             </div>                
             
            <div class="field">
                <div class="label">
                    <label for="input">${_('Permissions')}:</label>
                </div>
                <div class="input">
                    <table id="permissions_manage">
                        <tr>
                            <td>${_('none')}</td>
                            <td>${_('read')}</td>
                            <td>${_('write')}</td>
                            <td>${_('admin')}</td>
                            <td>${_('user')}</td>
                            <td></td>
                        </tr>
                        
                        %for r2p in c.repo_info.repo_to_perm:
                            %if r2p.user.username =='default' and c.repo_info.private:
                                <tr>
                                    <td colspan="4">
                                        <span class="private_repo_msg">
                                        ${_('private repository')}
                                        </span>
                                    </td>
                                    <td class="private_repo_msg">${r2p.user.username}</td>
                                </tr>
                            %else:
                            <tr id="id${id(r2p.user.username)}">
                                <td>${h.radio('perm_%s' % r2p.user.username,'repository.none')}</td>
                                <td>${h.radio('perm_%s' % r2p.user.username,'repository.read')}</td>
                                <td>${h.radio('perm_%s' % r2p.user.username,'repository.write')}</td>
                                <td>${h.radio('perm_%s' % r2p.user.username,'repository.admin')}</td>
                                <td>${r2p.user.username}</td>
                                <td>
                                  %if r2p.user.username !='default':
                                    <span class="delete_icon action_button" onclick="ajaxAction(${r2p.user.user_id},'${'id%s'%id(r2p.user.username)}')">
                                        <script type="text/javascript">
                                            function ajaxAction(user_id,field_id){
                                                var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}";
                                                var callback = { success:function(o){
                                                var tr = YAHOO.util.Dom.get(String(field_id));
                                                tr.parentNode.removeChild(tr);},failure:function(o){
                                                    alert("${_('Failed to remove user')}");},};
                                                var postData = '_method=delete&user_id='+user_id; 
                                                var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);};
                                        </script>           
                                    </span>
                                  %endif                    
                                </td>
                            </tr>
                            %endif
                        %endfor

                        <tr id="add_perm_input">
                            <td>${h.radio('perm_new_user','repository.none')}</td>
                            <td>${h.radio('perm_new_user','repository.read')}</td>
                            <td>${h.radio('perm_new_user','repository.write')}</td>
                            <td>${h.radio('perm_new_user','repository.admin')}</td>
                            <td class='ac'>
                                <div class="perm_ac" id="perm_ac">
                                    ${h.text('perm_new_user_name',class_='yui-ac-input')}
                                    <div id="perm_container"></div>
                                </div>
                            </td>
                            <td></td>
                        </tr>
                        <tr>
                            <td colspan="6">
                                <span id="add_perm" class="add_icon" style="cursor: pointer;">
                                ${_('Add another user')}
                                </span>
                            </td>
                        </tr>
                    </table>             
             </div>
             
            <div class="buttons">
              ${h.submit('save','Save',class_="ui-button")}
              ${h.reset('reset','Reset',class_="ui-button")}
            </div>                                                          
        </div>
    </div>
    </div>    
    ${h.end_form()}
        <script type="text/javascript">
            YAHOO.util.Event.onDOMReady(function(){
                var D = YAHOO.util.Dom;
                if(!D.hasClass('perm_new_user_name','error')){
                    D.setStyle('add_perm_input','display','none');
                }
                YAHOO.util.Event.addListener('add_perm','click',function(){
                    D.setStyle('add_perm_input','display','');
                    D.setStyle('add_perm','opacity','0.6');
                    D.setStyle('add_perm','cursor','default');
                });
            });
        </script>
        <script type="text/javascript">    
        YAHOO.example.FnMultipleFields = function(){
            var myContacts = ${c.users_array|n}
            
            // Define a custom search function for the DataSource
            var matchNames = function(sQuery) {
                // Case insensitive matching
                var query = sQuery.toLowerCase(),
                    contact,
                    i=0,
                    l=myContacts.length,
                    matches = [];
                
                // Match against each name of each contact
                for(; i<l; i++) {
                    contact = myContacts[i];
                    if((contact.fname.toLowerCase().indexOf(query) > -1) ||
                        (contact.lname.toLowerCase().indexOf(query) > -1) ||
                        (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) {
                        matches[matches.length] = contact;
                    }
                }
        
                return matches;
            };
        
            // Use a FunctionDataSource
            var oDS = new YAHOO.util.FunctionDataSource(matchNames);
            oDS.responseSchema = {
                fields: ["id", "fname", "lname", "nname"]
            }
        
            // Instantiate AutoComplete for perms
            var oAC_perms = new YAHOO.widget.AutoComplete("perm_new_user_name", "perm_container", oDS);
            oAC_perms.useShadow = false;
            oAC_perms.resultTypeList = false;
            
            // Instantiate AutoComplete for owner
            var oAC_owner = new YAHOO.widget.AutoComplete("user", "owner_container", oDS);
            oAC_owner.useShadow = false;
            oAC_owner.resultTypeList = false;
            
            
            // Custom formatter to highlight the matching letters
            var custom_formatter = function(oResultData, sQuery, sResultMatch) {
                var query = sQuery.toLowerCase(),
                    fname = oResultData.fname,
                    lname = oResultData.lname,
                    nname = oResultData.nname || "", // Guard against null value
                    query = sQuery.toLowerCase(),
                    fnameMatchIndex = fname.toLowerCase().indexOf(query),
                    lnameMatchIndex = lname.toLowerCase().indexOf(query),
                    nnameMatchIndex = nname.toLowerCase().indexOf(query),
                    displayfname, displaylname, displaynname;
                    
                if(fnameMatchIndex > -1) {
                    displayfname = highlightMatch(fname, query, fnameMatchIndex);
                }
                else {
                    displayfname = fname;
                }
        
                if(lnameMatchIndex > -1) {
                    displaylname = highlightMatch(lname, query, lnameMatchIndex);
                }
                else {
                    displaylname = lname;
                }
        
                if(nnameMatchIndex > -1) {
                    displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
                }
                else {
                    displaynname = nname ? "(" + nname + ")" : "";
                }
        
                return displayfname + " " + displaylname + " " + displaynname;
                
            };
            oAC_perms.formatResult = custom_formatter; 
            oAC_owner.formatResult = custom_formatter;
                            
            // Helper function for the formatter
            var highlightMatch = function(full, snippet, matchindex) {
                return full.substring(0, matchindex) + 
                        "<span class='match'>" + 
                        full.substr(matchindex, snippet.length) + 
                        "</span>" +
                        full.substring(matchindex + snippet.length);
            };
        
            var myHandler = function(sType, aArgs) {
                var myAC = aArgs[0]; // reference back to the AC instance
                var elLI = aArgs[1]; // reference to the selected LI element
                var oData = aArgs[2]; // object literal of selected item's result data
                myAC.getInputEl().value = oData.nname;
            };

            oAC_perms.itemSelectEvent.subscribe(myHandler);
            oAC_owner.itemSelectEvent.subscribe(myHandler);
            
            return {
                oDS: oDS,
                oAC_perms: oAC_perms,
                oAC_owner: oAC_owner, 
            };
        }();
            
        </script>      

</div>

<div class="box box-right">
    <div class="title">
        <h5>${_('Administration')}</h5>    
    </div>
    
        <h3>${_('Statistics')}</h3>
        
        ${h.form(url('repo_stats', repo_name=c.repo_info.repo_name),method='delete')}
        <div class="form">
           <div class="fields">
               ${h.submit('reset_stats_%s' % c.repo_info.repo_name,_('Reset current statistics'),class_="refresh_icon action_button",onclick="return confirm('Confirm to remove current statistics');")}
               
               <div class="field">
               <ul>
                    <li>${_('Fetched to rev')}: ${c.stats_revision}/${c.repo_last_rev}</li>
                    <li>${_('Percentage of stats gathered')}: ${c.stats_percentage} %</li>
               </ul>
               </div>
               
           </div>
        </div>                    
        ${h.end_form()}
        
        <h3>${_('Cache')}</h3>
        ${h.form(url('repo_cache', repo_name=c.repo_info.repo_name),method='delete')}
        <div class="form">
           <div class="fields">
               ${h.submit('reset_cache_%s' % c.repo_info.repo_name,_('Invalidate repository cache'),class_="refresh_icon action_button",onclick="return confirm('Confirm to invalidate repository cache');")}
           </div>
        </div>                    
        ${h.end_form()}
        
        
        <h3>${_('Delete')}</h3>
        ${h.form(url('repo', repo_name=c.repo_info.repo_name),method='delete')}
        <div class="form">
           <div class="fields">
               ${h.submit('remove_%s' % c.repo_info.repo_name,_('Remove this repository'),class_="delete_icon action_button",onclick="return confirm('Confirm to delete this repository');")}
           </div>
        </div>                    
        ${h.end_form()}
    
</div>


</%def>