diff --git a/rhodecode/templates/admin/repos/repo_edit.html b/rhodecode/templates/admin/repos/repo_edit.html --- a/rhodecode/templates/admin/repos/repo_edit.html +++ b/rhodecode/templates/admin/repos/repo_edit.html @@ -120,191 +120,6 @@ </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"> diff --git a/rhodecode/templates/admin/repos/repo_edit_perms.html b/rhodecode/templates/admin/repos/repo_edit_perms.html --- a/rhodecode/templates/admin/repos/repo_edit_perms.html +++ b/rhodecode/templates/admin/repos/repo_edit_perms.html @@ -7,18 +7,7 @@ <td>${_('member')}</td> <td></td> </tr> - ## USERS - <script type="text/javascript"> - function ajaxActionUser(user_id,field_id){ - var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}"; - var callback = { success:function(o){ - var tr = YUD.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> + ## USERS %for r2p in c.repo_info.repo_to_perm: %if r2p.user.username =='default' and c.repo_info.private: <tr> @@ -35,7 +24,9 @@ <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.read')}</td> <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.write')}</td> <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.admin')}</td> - <td style="white-space: nowrap;"><img style="vertical-align:bottom" src="${h.url("/images/icons/user.png")}"/>${r2p.user.username}</td> + <td style="white-space: nowrap;"> + <img style="vertical-align:bottom" src="${h.url('/images/icons/user.png')}"/>${r2p.user.username} + </td> <td> %if r2p.user.username !='default': <span class="delete_icon action_button" onclick="ajaxActionUser(${r2p.user.user_id},'${'id%s'%id(r2p.user.username)}')"> @@ -47,25 +38,16 @@ %endif %endfor - ## USERS GROUPS - <script type="text/javascript"> - function ajaxActionUsersGroup(users_group_id,field_id){ - var sUrl = "${h.url('delete_repo_users_group',repo_name=c.repo_name)}"; - var callback = { success:function(o){ - var tr = YUD.get(String(field_id)); - tr.parentNode.removeChild(tr);}, - failure:function(o){ - alert("${_('Failed to remove users group')}");},}; - var postData = '_method=delete&users_group_id='+users_group_id; - var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);}; - </script> + ## USERS GROUPS %for g2p in c.repo_info.users_group_to_perm: <tr id="id${id(g2p.users_group.users_group_name)}"> <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.none')}</td> <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.read')}</td> <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.write')}</td> <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.admin')}</td> - <td><img style="vertical-align:bottom" src="${h.url("/images/icons/group.png")}"/>${g2p.users_group.users_group_name}</td> + <td style="white-space: nowrap;"> + <img style="vertical-align:bottom" src="${h.url('/images/icons/group.png')}"/>${g2p.users_group.users_group_name} + </td> <td> <span class="delete_icon action_button" onclick="ajaxActionUsersGroup(${g2p.users_group.users_group_id},'${'id%s'%id(g2p.users_group.users_group_name)}')"> ${_('revoke')} @@ -94,4 +76,206 @@ </span> </td> </tr> -</table> \ No newline at end of file +</table> +<script type="text/javascript"> +function ajaxActionUser(user_id, field_id) { + var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}"; + var callback = { + success: function (o) { + var tr = YUD.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); +}; + +function ajaxActionUsersGroup(users_group_id,field_id){ + var sUrl = "${h.url('delete_repo_users_group',repo_name=c.repo_name)}"; + var callback = { + success:function(o){ + var tr = YUD.get(String(field_id)); + tr.parentNode.removeChild(tr); + }, + failure:function(o){ + alert("${_('Failed to remove users group')}"); + }, + }; + var postData = '_method=delete&users_group_id='+users_group_id; + var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData); +}; + +YUE.onDOMReady(function () { + if (!YUD.hasClass('perm_new_member_name', 'error')) { + YUD.setStyle('add_perm_input', 'display', 'none'); + } + YAHOO.util.Event.addListener('add_perm', 'click', function () { + YUD.setStyle('add_perm_input', 'display', ''); + YUD.setStyle('add_perm', 'opacity', '0.6'); + YUD.setStyle('add_perm', 'cursor', 'default'); + }); +}); + +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); + if(ownerAC.itemSelectEvent){ + ownerAC.itemSelectEvent.subscribe(myHandler); + } + + return { + memberDS: memberDS, + ownerDS: ownerDS, + membersAC: membersAC, + ownerAC: ownerAC, + }; +}(); + +</script> \ No newline at end of file diff --git a/rhodecode/templates/admin/repos/repos.html b/rhodecode/templates/admin/repos/repos.html --- a/rhodecode/templates/admin/repos/repos.html +++ b/rhodecode/templates/admin/repos/repos.html @@ -39,18 +39,18 @@ <td> ## 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")}"/> + <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")}"/> + <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/> %else: %endif ## PRIVATE/PUBLIC REPO %if repo['dbrepo']['private']: - <img alt="${_('private')}" src="${h.url("/images/icons/lock.png")}"/> + <img alt="${_('private')}" src="${h.url('/images/icons/lock.png')}"/> %else: - <img alt="${_('public')}" src="${h.url("/images/icons/lock_open.png")}"/> + <img alt="${_('public')}" src="${h.url('/images/icons/lock_open.png')}"/> %endif ${h.link_to(repo['name'],h.url('edit_repo',repo_name=repo['name']))} diff --git a/rhodecode/templates/settings/repo_settings.html b/rhodecode/templates/settings/repo_settings.html --- a/rhodecode/templates/settings/repo_settings.html +++ b/rhodecode/templates/settings/repo_settings.html @@ -62,134 +62,12 @@ </div> <div class="buttons"> - ${h.submit('update','Update',class_="ui-button")} + ${h.submit('save','Save',class_="ui-button")} ${h.reset('reset','Reset',class_="ui-button")} </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 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_member_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> </%def>