Mercurial > kallithea
diff rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html @ 2142:a21eab6ff42f beta
Added gravatars into permissions view and permissions autocomplete
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 19 Mar 2012 21:04:36 +0200 |
parents | de72388c713d |
children | a8c9c0094ddf |
line wrap: on
line diff
--- a/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html Mon Mar 19 19:04:45 2012 +0200 +++ b/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html Mon Mar 19 21:04:36 2012 +0200 @@ -15,7 +15,7 @@ <td>${h.radio('u_perm_%s' % r2p.user.username,'group.write')}</td> <td>${h.radio('u_perm_%s' % r2p.user.username,'group.admin')}</td> <td style="white-space: nowrap;"> - <img style="vertical-align:bottom" src="${h.url('/images/icons/user.png')}"/>${r2p.user.username} + <img class="perm-gravatar" src="${h.gravatar_url(r2p.user.email,14)}"/>${r2p.user.username} </td> <td> %if r2p.user.username !='default': @@ -35,7 +35,7 @@ <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.write')}</td> <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'group.admin')}</td> <td style="white-space: nowrap;"> - <img style="vertical-align:bottom" src="${h.url('/images/icons/group.png')}"/>${g2p.users_group.users_group_name} + <img class="perm-gravatar" 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)}')"> @@ -106,165 +106,12 @@ YUD.setStyle('add_perm', 'opacity', '0.6'); YUD.setStyle('add_perm', 'cursor', 'default'); }); + MembersAutoComplete( + ${c.users_array|n}, + ${c.users_groups_array|n}, + "${_('Group')}", + "${_('members')}" + ); }); -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>