@@ -218,6 +218,7 @@ show_only_private = Showing only private | |||
show_only_public = Showing only public | |||
issues.in_your_repos = In your repositories | |||
contributors = Contributors | |||
[explore] | |||
repos = Repositories | |||
@@ -220,6 +220,8 @@ show_only_public=只显示公开的 | |||
issues.in_your_repos=属于该用户项目的 | |||
contributors=贡献者 | |||
[explore] | |||
repos=项目 | |||
users=用户 | |||
@@ -1,6 +1,101 @@ | |||
{{template "base/head" .}} | |||
<style> | |||
.git-user-content{ | |||
margin-bottom: 16px; | |||
word-break: break-all; | |||
} | |||
.row.git-user-content .ui.avatar.s16.image { | |||
width: 50px !important; | |||
height: 50px !important; | |||
vertical-align: middle; | |||
border-radius: 500rem;} | |||
.user-list-item { | |||
padding: 0.3em 0px !important; | |||
margin: 15px 0 !important; | |||
width: 220px !important; | |||
} | |||
.row.git-user-content .content { | |||
margin-left: 6px; | |||
display: inline-block; | |||
vertical-align: top !important; | |||
overflow: hidden; | |||
} | |||
.row.git-user-content .content .header { | |||
font-weight: bold; | |||
} | |||
.item.user-list-item .header { | |||
line-height: 23px !important; | |||
font-size: 16px !important; | |||
text-overflow: ellipsis; | |||
overflow: hidden; | |||
width: 145px; | |||
white-space:nowrap; | |||
} | |||
.item.user-list-item .header a { | |||
color: #587284 !important; | |||
} | |||
.row.git-user-content .content .commit-btn { | |||
margin-top: 6px; | |||
float: left; | |||
font-size: 11px; | |||
color: #40485b !important; | |||
} | |||
#contributorEmail{ | |||
width: 2.0em; | |||
height: 2.0em; | |||
padding: 0; | |||
overflow: hidden; | |||
letter-spacing:1.0em; | |||
text-indent: 0.6em; | |||
line-height: 2.0em; | |||
text-transform:capitalize; | |||
color: #FFF; | |||
} | |||
</style> | |||
<div class="repository watchers"> | |||
{{template "repo/header" .}} | |||
{{template "repo/user_cards" .}} | |||
<div class="ui container"> | |||
<div class="row git-user-content"> | |||
<h3 class="ui header"> | |||
{{.i18n.Tr "home.contributors"}} ({{len .ContributorInfo}}) | |||
</h3> | |||
<div class="ui horizontal relaxed list"> | |||
{{range .ContributorInfo}} | |||
<div class="item user-list-item" data-username="" > | |||
{{if .UserInfo}} | |||
<a href="{{AppSubUrl}}/{{.UserInfo.Name}}"><img class="ui avatar s16 image js-popover-card" src="{{.UserInfo.RelAvatarLink}}"></a> | |||
{{else if .Email}} | |||
<a href="mailto:{{.Email}}"><img class="ui avatar s16 image js-popover-card" avatar="{{.Email}}"></a> | |||
{{end}} | |||
<div class="content"> | |||
<div class="header" > | |||
{{if .UserInfo}} | |||
<a href="{{AppSubUrl}}/{{.UserInfo.Name}}">{{.UserInfo.Name}}</a> | |||
{{else if .Email}} | |||
<a href="mailto:{{.Email}}">{{.Email}}</a> | |||
{{end}} | |||
</div> | |||
<span class="commit-btn">Commits: {{.CommitCnt}}</span> | |||
</div> | |||
</div> | |||
{{end}} | |||
</div> | |||
{{template "base/paginate" .}} | |||
</div> | |||
</div> | |||
</div> | |||
{{template "base/footer" .}} |
@@ -331,7 +331,7 @@ | |||
<h4 class="ui header"> | |||
<strong>贡献者 ({{len .ContributorInfo}})</strong> | |||
<div class="ui right"> | |||
<a class="membersmore text grey" href="javascript:;">全部 {{svg "octicon-chevron-right" 16}}</a> | |||
<a class="membersmore text grey" href="{{.RepoLink}}/contributors">全部 {{svg "octicon-chevron-right" 16}}</a> | |||
</div> | |||
</h4> | |||
<div class="ui members" id="contributorInfo"> | |||
@@ -353,10 +353,10 @@ | |||
</div> | |||
<script type="text/javascript"> | |||
$(document).ready(function(){ | |||
$(".membersmore").click(function(){ | |||
$("#contributorInfo > a:nth-child(n+25)").show(); | |||
}); | |||
}); | |||
// $(document).ready(function(){ | |||
// $(".membersmore").click(function(){ | |||
// $("#contributorInfo > a:nth-child(n+25)").show(); | |||
// }); | |||
// }); | |||
</script> | |||
{{template "base/footer" .}} |
@@ -0,0 +1,74 @@ | |||
/** | |||
* LetterAvatar | |||
* | |||
* Artur Heinze | |||
* Create Letter avatar based on Initials | |||
* based on https://gist.github.com/leecrossley/6027780 | |||
*/ | |||
(function(w, d){ | |||
function LetterAvatar (name, size, color) { | |||
name = name || ''; | |||
size = size || 60; | |||
var colours = [ | |||
"#1abc9c", "#2ecc71", "#3498db", "#9b59b6", "#34495e", "#16a085", "#27ae60", "#2980b9", "#8e44ad", "#2c3e50", | |||
"#f1c40f", "#e67e22", "#e74c3c", "#00bcd4", "#95a5a6", "#f39c12", "#d35400", "#c0392b", "#bdc3c7", "#7f8c8d" | |||
], | |||
nameSplit = String(name).split(' '), | |||
initials, charIndex, colourIndex, canvas, context, dataURI; | |||
if (nameSplit.length == 1) { | |||
initials = nameSplit[0] ? nameSplit[0].charAt(0):'?'; | |||
} else { | |||
initials = nameSplit[0].charAt(0) + nameSplit[1].charAt(0); | |||
} | |||
if (w.devicePixelRatio) { | |||
size = (size * w.devicePixelRatio); | |||
} | |||
charIndex = (initials == '?' ? 72 : initials.charCodeAt(0)) - 64; | |||
colourIndex = charIndex % 20; | |||
canvas = d.createElement('canvas'); | |||
canvas.width = size; | |||
canvas.height = size; | |||
context = canvas.getContext("2d"); | |||
context.fillStyle = color ? color : colours[colourIndex - 1]; | |||
context.fillRect (0, 0, canvas.width, canvas.height); | |||
context.font = Math.round(canvas.width/2)+"px 'Microsoft Yahei'"; | |||
context.textAlign = "center"; | |||
context.fillStyle = "#FFF"; | |||
context.fillText(initials, size / 2, size / 1.5); | |||
dataURI = canvas.toDataURL(); | |||
canvas = null; | |||
return dataURI; | |||
} | |||
LetterAvatar.transform = function() { | |||
Array.prototype.forEach.call(d.querySelectorAll('img[avatar]'), function(img, name, color) { | |||
name = img.getAttribute('avatar'); | |||
color = img.getAttribute('color'); | |||
img.src = LetterAvatar(name, img.getAttribute('width'), color); | |||
img.removeAttribute('avatar'); | |||
img.setAttribute('alt', name); | |||
}); | |||
}; | |||
// AMD support | |||
if (typeof define === 'function' && define.amd) { | |||
define(function () { return LetterAvatar; }); | |||
// CommonJS and Node.js module support. | |||
} else if (typeof exports !== 'undefined') { | |||
// Support Node.js specific `module.exports` (which can be a function) | |||
if (typeof module != 'undefined' && module.exports) { | |||
exports = module.exports = LetterAvatar; | |||
} | |||
// But always support CommonJS module 1.1.1 spec (`exports` cannot be a function) | |||
exports.LetterAvatar = LetterAvatar; | |||
} else { | |||
window.LetterAvatar = LetterAvatar; | |||
d.addEventListener('DOMContentLoaded', function(event) { | |||
LetterAvatar.transform(); | |||
}); | |||
} | |||
})(window, document); |
@@ -4,7 +4,7 @@ | |||
import './publicpath.js'; | |||
import './polyfills.js'; | |||
import './features/letteravatar.js' | |||
import Vue from 'vue'; | |||
import ElementUI from 'element-ui'; | |||
import 'element-ui/lib/theme-chalk/index.css'; | |||