view rhodecode/templates/admin/repos/repo_edit.html @ 1159:187a924ed653 beta

Changes for repo groups
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 19 Mar 2011 18:52:27 +0100
parents 4de3fa6290a7
children 3bce31f026b8
line wrap: on
line source

## -*- 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')} &raquo; ${h.link_to(c.repo_info.just_name,h.url('summary_home',repo_name=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="clone_uri">${_('Clone uri')}:</label>
	           </div>
	           <div class="input">
	               ${h.text('clone_uri',class_="medium")}
	           </div>
	        </div>             
	        <div class="field">
	            <div class="label">
	                <label for="repo_group">${_('Repository group')}:</label>
	            </div>
	            <div class="input">
	                ${h.select('repo_group','',c.repo_groups,class_="medium")}
	            <span>${h.link_to(_('add new group'),h.url(''))}</span>
	            </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">
                    <%include file="repo_edit_perms.html"/>
                </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_member_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 myUsers = ${c.users_array|n};
        	var myGroups = ${c.users_groups_array|n};
            
            // Define a custom search function for the DataSource of users
            var matchUsers = function(sQuery) {
                // Case insensitive matching
                var query = sQuery.toLowerCase();
                var i=0;
                var l=myUsers.length;
                var matches = [];
                
                // Match against each name of each contact
                for(; i<l; i++) {
                    contact = myUsers[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;
            };

            // Define a custom search function for the DataSource of usersGroups
            var matchGroups = function(sQuery) {
                // Case insensitive matching
                var query = sQuery.toLowerCase();
                var i=0;
                var l=myGroups.length;
                var matches = [];
                
                // Match against each name of each contact
                for(; i<l; i++) {
                    matched_group = myGroups[i];
                    if(matched_group.grname.toLowerCase().indexOf(query) > -1) {
                        matches[matches.length] = matched_group;
                    }
                }
                return matches;
            };         
            
            //match all
            var matchAll = function(sQuery){
            	u = matchUsers(sQuery);
            	g = matchGroups(sQuery);
            	return u.concat(g);
            };
            
            // DataScheme for members
            var memberDS = new YAHOO.util.FunctionDataSource(matchAll);
            memberDS.responseSchema = {
                fields: ["id", "fname", "lname", "nname", "grname", "grmembers"]
            };

            // DataScheme for owner
            var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
            ownerDS.responseSchema = {
                fields: ["id", "fname", "lname", "nname"]
            };          
            
            // Instantiate AutoComplete for perms
            var membersAC = new YAHOO.widget.AutoComplete("perm_new_member_name", "perm_container", memberDS);
            membersAC.useShadow = false;
            membersAC.resultTypeList = false;
            
            // Instantiate AutoComplete for owner
            var ownerAC = new YAHOO.widget.AutoComplete("user", "owner_container", ownerDS);
            ownerAC.useShadow = false;
            ownerAC.resultTypeList = false;
            

            // Helper highlight 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);
            };
            
            // Custom formatter to highlight the matching letters
            var custom_formatter = function(oResultData, sQuery, sResultMatch) {
            	var query = sQuery.toLowerCase();
            	
            	if (oResultData.grname != undefined){
            		var grname = oResultData.grname;
            		var grmembers = oResultData.grmembers;
            		var grnameMatchIndex = grname.toLowerCase().indexOf(query);
            		var grprefix = "${_('Group')}: ";
            		var grsuffix = " ("+grmembers+"  ${_('members')})";
            		
            		if (grnameMatchIndex > -1){
            			return grprefix+highlightMatch(grname,query,grnameMatchIndex)+grsuffix;
            		}
            		
            		return grprefix+oResultData.grname+grsuffix;
            	}
            	else if(oResultData.fname != undefined){
	                
	                var fname = oResultData.fname,
	                    lname = oResultData.lname,
	                    nname = oResultData.nname || "", // Guard against null value
	                    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;
            	}
            	else{
            		return '';
            	}
            };
            membersAC.formatResult = custom_formatter; 
            ownerAC.formatResult = custom_formatter;
                            
            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
                
                //fill the autocomplete with value
                if(oData.nname != undefined){
                	//users
                	myAC.getInputEl().value = oData.nname;
                	YUD.get('perm_new_member_type').value = 'user';
                }
                else{
                	//groups
                	myAC.getInputEl().value = oData.grname;
                	YUD.get('perm_new_member_type').value = 'users_group';
                }
                
            };

            membersAC.itemSelectEvent.subscribe(myHandler);
            ownerAC.itemSelectEvent.subscribe(myHandler);
            
            return {
                memberDS: memberDS,
                ownerDS:  ownerDS,
                membersAC: membersAC,
                ownerAC: ownerAC, 
            };
        }();
            
        </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" style="border:none">
               <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()}
        
        %if c.repo_info.clone_uri:
        <h3>${_('Remote')}</h3>
        ${h.form(url('repo_pull', repo_name=c.repo_info.repo_name),method='put')}
        <div class="form">
           <div class="fields">
               ${h.submit('remote_pull_%s' % c.repo_info.repo_name,_('Pull changes from remote location'),class_="pull_icon action_button",onclick="return confirm('Confirm to pull changes from remote side');")}
               <div class="field" style="border:none">
               <ul>
                    <li><a href="${c.repo_info.clone_uri}">${c.repo_info.clone_uri}</a></li>
               </ul> 
               </div>              
           </div>
        </div>                    
        ${h.end_form()}
        %endif
        
        <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>${_('Public journal')}</h3>
        ${h.form(url('repo_public_journal', repo_name=c.repo_info.repo_name),method='put')}
        <div class="form">
            <div class="fields">
                ${h.hidden('auth_token',str(h.get_token()))}
                %if c.in_public_journal:
                    ${h.submit('set_public_%s' % c.repo_info.repo_name,_('Remove from public journal'),class_="stop_following_icon action_button")}
                %else:
		            ${h.submit('set_public_%s' % c.repo_info.repo_name,_('Add to public journal'),class_="start_following_icon action_button")}
		        %endif
	         </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>