Mercurial > kallithea
changeset 4796:315e8a847e2e
gravatar: use font awesome icons
This changes gravatar_url to return an empty string (meaning use an icon)
instead of returning a default image. Since this was a structural change, the
changeset is fairly large.
author | Sean Farley <sean.michael.farley@gmail.com> |
---|---|
date | Tue, 02 Sep 2014 19:35:49 -0500 |
parents | 83087ae63bd6 |
children | 517705a0f92a |
files | kallithea/controllers/pullrequests.py kallithea/lib/helpers.py kallithea/model/repo.py kallithea/public/images/icons/group.png kallithea/public/js/base.js kallithea/templates/admin/repo_groups/repo_group_edit_perms.html kallithea/templates/admin/repos/repo_edit_permissions.html kallithea/templates/admin/user_groups/user_group_edit_perms.html kallithea/templates/pullrequests/pullrequest.html |
diffstat | 9 files changed, 54 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/pullrequests.py Sat Nov 15 23:42:24 2014 -0800 +++ b/kallithea/controllers/pullrequests.py Tue Sep 02 19:35:49 2014 -0500 @@ -298,7 +298,8 @@ username=repo.user.username, firstname=repo.user.firstname, lastname=repo.user.lastname, - gravatar_link=h.gravatar_url(repo.user.email, 14)), + gravatar_link=h.gravatar_url(repo.user.email, 28), + gravatar_size=14), } @LoginRequired()
--- a/kallithea/lib/helpers.py Sat Nov 15 23:42:24 2014 -0800 +++ b/kallithea/lib/helpers.py Tue Sep 02 19:35:49 2014 -0500 @@ -877,6 +877,10 @@ # stylesheet) because we using this to generate a high-res (retina) size tmpl = """<img alt="gravatar" class="{cls}" style="width: {size}px; height: {size}px" src="{src}"/>""" + # if src is empty then there was no gravatar, so we use a font icon + if not src: + tmpl = """<i class="icon-user {cls}" style="font-size: {size}px;"></i>""" + tmpl = tmpl.format(cls=cls, size=size, src=src) return literal(tmpl) @@ -895,9 +899,7 @@ email_address = safe_str(email_address) if not _use_gravatar or not email_address or email_address == _def: - # pick best matching size to one given in size param - f = lambda a, l: min(l, key=lambda x: abs(x - a)) - return url("/images/user%s.png" % f(size, [14, 16, 20, 24, 30])) + return "" if _use_gravatar: _md5 = lambda s: hashlib.md5(s).hexdigest()
--- a/kallithea/model/repo.py Sat Nov 15 23:42:24 2014 -0800 +++ b/kallithea/model/repo.py Tue Sep 02 19:35:49 2014 -0500 @@ -141,7 +141,8 @@ 'fname': u.name, 'lname': u.lastname, 'nname': u.username, - 'gravatar_lnk': h.gravatar_url(u.email, 14) + 'gravatar_lnk': h.gravatar_url(u.email, size=28), + 'gravatar_size': 14, } for u in users] )
--- a/kallithea/public/js/base.js Sat Nov 15 23:42:24 2014 -0800 +++ b/kallithea/public/js/base.js Tue Sep 02 19:35:49 2014 -0500 @@ -1153,13 +1153,13 @@ // DataScheme for members var memberDS = new YAHOO.util.FunctionDataSource(matchAll); memberDS.responseSchema = { - fields: ["id", "fname", "lname", "nname", "grname", "grmembers", "gravatar_lnk"] + fields: ["id", "fname", "lname", "nname", "grname", "grmembers", "gravatar_lnk", "gravatar_size"] }; // DataScheme for owner var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers); ownerDS.responseSchema = { - fields: ["id", "fname", "lname", "nname", "gravatar_lnk"] + fields: ["id", "fname", "lname", "nname", "gravatar_lnk", "gravatar_size"] }; // Instantiate AutoComplete for perms @@ -1189,12 +1189,16 @@ // Custom formatter to highlight the matching letters var custom_formatter = function (oResultData, sQuery, sResultMatch) { var query = sQuery.toLowerCase(); - var _gravatar = function(res, em, group){ + var _gravatar = function(res, em, size, group){ + var elem = '<img alt="gravatar" class="perm-gravatar-ac" style="width: {0}px; height: {0}px" src="{1}"/>'.format(size, em); + if (!em) { + elem = '<i class="icon-user perm-gravatar-ac" style="font-size: {0}px;"></i>'.format(size); + } if (group !== undefined){ - em = '/images/icons/group.png' + elem = '<i class="perm-gravatar-ac icon-users"></i>' } - var tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>' - return tmpl.format(em,res) + var tmpl = '<div class="ac-container-wrap">{0}{1}</div>' + return tmpl.format(elem,res) } // group if (oResultData.grname != undefined) { @@ -1206,9 +1210,9 @@ var grsuffix = " ({0} {1})".format(grmembers, _TM['members']); if (grnameMatchIndex > -1) { - return _gravatar(grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix,null,true); + return _gravatar(grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix,null,null,true); } - return _gravatar(grprefix + oResultData.grname + grsuffix, null,true); + return _gravatar(grprefix + oResultData.grname + grsuffix, null, null, true); // Users } else if (oResultData.nname != undefined) { var fname = oResultData.fname || ""; @@ -1239,7 +1243,7 @@ displaynname = nname ? "(" + nname + ")" : ""; } - return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk); + return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk, oResultData.gravatar_size); } else { return ''; } @@ -1315,7 +1319,7 @@ var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers); ownerDS.responseSchema = { - fields: ["id", "fname", "lname", "nname", "gravatar_lnk"] + fields: ["id", "fname", "lname", "nname", "gravatar_lnk", "gravatar_size"] }; // Instantiate AutoComplete for mentions @@ -1343,12 +1347,16 @@ } var query = sQuery.toLowerCase(); - var _gravatar = function(res, em, group){ + var _gravatar = function(res, em, size, group){ + var elem = '<img alt="gravatar" class="perm-gravatar-ac" style="width: {0}px; height: {0}px" src="{1}"/>'.format(size, em); + if (!em) { + elem = '<i class="icon-user perm-gravatar-ac" style="font-size: {0}px;"></i>'.format(size); + } if (group !== undefined){ - em = '/images/icons/group.png' + elem = '<i class="perm-gravatar-ac icon-users"></i>' } - var tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>' - return tmpl.format(em,res) + var tmpl = '<div class="ac-container-wrap">{0}{1}</div>' + return tmpl.format(elem,res) } if (oResultData.nname != undefined) { var fname = oResultData.fname || ""; @@ -1379,7 +1387,7 @@ displaynname = nname ? "(" + nname + ")" : ""; } - return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk); + return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk, oResultData.gravatar_size); } else { return ''; } @@ -1458,15 +1466,18 @@ }); } -var addReviewMember = function(id,fname,lname,nname,gravatar_link){ +var addReviewMember = function(id,fname,lname,nname,gravatar_link,gravatar_size){ var displayname = "{0} {1} ({2})".format(fname, lname, nname); + var gravatarelm = '<img alt="gravatar" style="width: {0}px; height: {0}px" src="{1}"/>'.format(gravatar_size, gravatar_link); + if (!gravatar_link) + gravatarelm = '<i class="icon-user" style="font-size: {0}px;"></i>'.format(gravatar_size); var element = ( ' <li id="reviewer_{2}">\n'+ ' <div class="reviewers_member">\n'+ ' <div class="reviewer_status tooltip" title="not_reviewed">\n'+ ' <i class="icon-circle changeset-status-not_reviewed"></i>\n'+ ' </div>\n'+ - ' <div class="reviewer_gravatar gravatar"><img alt="gravatar" src="{0}"/> </div>\n'+ + ' <div class="reviewer_gravatar gravatar">{0}</div>\n'+ ' <div style="float:left;">{1}</div>\n'+ ' <input type="hidden" value="{2}" name="review_members" />\n'+ ' <div class="reviewer_member_remove action_button" onclick="removeReviewMember({2})">\n'+ @@ -1474,7 +1485,7 @@ ' </div> (add not saved)\n'+ ' </div>\n'+ ' </li>\n' - ).format(gravatar_link, displayname, id); + ).format(gravatarelm, displayname, id); // check if we don't have this ID already in var ids = []; $('#review_members').find('li').each(function() { @@ -1545,7 +1556,7 @@ var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers); ownerDS.responseSchema = { - fields: ["id", "fname", "lname", "nname", "gravatar_lnk"] + fields: ["id", "fname", "lname", "nname", "gravatar_lnk", "gravatar_size"] }; // Instantiate AutoComplete for mentions @@ -1573,12 +1584,16 @@ } var query = sQuery.toLowerCase(); - var _gravatar = function(res, em, group){ + var _gravatar = function(res, em, size, group){ + var elem = '<img alt="gravatar" class="perm-gravatar-ac" style="width: {0}px; height: {0}px" src="{1}"/>'.format(size, em); + if (!em) { + elem = '<i class="icon-user perm-gravatar-ac" style="font-size: {0}px;"></i>'.format(size); + } if (group !== undefined){ - em = '/images/icons/group.png' + elem = '<i class="perm-gravatar-ac icon-users"></i>' } - var tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>' - return tmpl.format(em,res) + var tmpl = '<div class="ac-container-wrap">{0}{1}</div>' + return tmpl.format(elem,res) } if (oResultData.nname != undefined) { var fname = oResultData.fname || ""; @@ -1609,7 +1624,7 @@ displaynname = nname ? "(" + nname + ")" : ""; } - return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk); + return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk, oResultData.gravatar_size); } else { return ''; } @@ -1628,7 +1643,7 @@ //fill the autocomplete with value if (oData.nname != undefined) { addReviewMember(oData.id, oData.fname, oData.lname, oData.nname, - oData.gravatar_lnk); + oData.gravatar_lnk, oData.gravatar_size); myAC.dataSource.cache.push(oData.id); $('#user').val(''); }
--- a/kallithea/templates/admin/repo_groups/repo_group_edit_perms.html Sat Nov 15 23:42:24 2014 -0800 +++ b/kallithea/templates/admin/repo_groups/repo_group_edit_perms.html Tue Sep 02 19:35:49 2014 -0500 @@ -57,7 +57,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 class="perm-gravatar" src="${h.url('/images/icons/group.png')}"/> + <i class="icon-users"></i> %if h.HasPermissionAny('hg.admin')(): <a href="${h.url('edit_users_group',id=g2p.users_group.users_group_id)}"> ${g2p.users_group.users_group_name}
--- a/kallithea/templates/admin/repos/repo_edit_permissions.html Sat Nov 15 23:42:24 2014 -0800 +++ b/kallithea/templates/admin/repos/repo_edit_permissions.html Tue Sep 02 19:35:49 2014 -0500 @@ -56,7 +56,7 @@ <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 style="white-space: nowrap;"> - <img class="perm-gravatar" src="${h.url('/images/icons/group.png')}"/> + <i class="icon-users"></i> %if h.HasPermissionAny('hg.admin')(): <a href="${h.url('edit_users_group',id=g2p.users_group.users_group_id)}">${g2p.users_group.users_group_name}</a> %else:
--- a/kallithea/templates/admin/user_groups/user_group_edit_perms.html Sat Nov 15 23:42:24 2014 -0800 +++ b/kallithea/templates/admin/user_groups/user_group_edit_perms.html Tue Sep 02 19:35:49 2014 -0500 @@ -57,7 +57,7 @@ <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.write')}</td> <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.admin')}</td> <td style="white-space: nowrap;"> - <img class="perm-gravatar" src="${h.url('/images/icons/group.png')}"/> + <i class="icon-users"></i> %if h.HasPermissionAny('hg.admin')(): <a href="${h.url('edit_users_group',id=g2p.user_group.users_group_id)}"> ${g2p.user_group.users_group_name}
--- a/kallithea/templates/pullrequests/pullrequest.html Sat Nov 15 23:42:24 2014 -0800 +++ b/kallithea/templates/pullrequests/pullrequest.html Tue Sep 02 19:35:49 2014 -0500 @@ -102,7 +102,7 @@ %for member in [c.a_repo.user]: <li id="reviewer_${member.user_id}"> <div class="reviewers_member"> - <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(member.email, 14)}"/> </div> + <div class="gravatar">${h.gravatar(member.email, 14)}</div> <div style="float:left">${member.firstname} ${member.lastname} (${_('owner')})</div> <input type="hidden" value="${member.user_id}" name="review_members" /> <span class="action_button" style="padding: 3px" onclick="removeReviewMember(${member.user_id})" title="${_('Remove reviewer')}"> @@ -179,7 +179,7 @@ $('#review_members').html(''); addReviewMember(data.user.user_id, data.user.firstname, data.user.lastname, data.user.username, - data.user.gravatar_link); + data.user.gravatar_link, data.user_gravatar_size); // re-populate the select2 thingie $("#other_ref").select2({