mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-11-22 14:48:41 +00:00
feat(web/user): username color
Co-authored-by: Wenkuo Yu <82705676+youwike@users.noreply.github.com> Co-authored-by: Baoshuo Ren <47095648+renbaoshuo@users.noreply.github.com>
This commit is contained in:
parent
bb43c78a57
commit
452c2ca12b
@ -1336,7 +1336,7 @@ EOD);
|
|||||||
EOD,
|
EOD,
|
||||||
function ($row) {
|
function ($row) {
|
||||||
echo '<tr>';
|
echo '<tr>';
|
||||||
echo '<td>', '<span class="uoj-username" data-realname="', HTML::escape($row['realname']), '">', $row['username'], '</span>', '</td>';
|
echo '<td>', UOJUser::getLink($row), '</td>';
|
||||||
echo '<td>', HTML::escape($row['school']), '</td>';
|
echo '<td>', HTML::escape($row['school']), '</td>';
|
||||||
echo '<td>';
|
echo '<td>';
|
||||||
switch ($row['usergroup']) {
|
switch ($row['usergroup']) {
|
||||||
|
@ -233,6 +233,36 @@ EOD);
|
|||||||
},
|
},
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
if ($user['usergroup'] == 'B') {
|
||||||
|
$update_profile_form->appendHTML(<<<EOD
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="input-username_color" class="form-label">用户名颜色</label>
|
||||||
|
<input type="text" class="form-control" id="input-username_color" aria-describedby="help-username_color" value="棕色 - #996600" disabled>
|
||||||
|
<div id="help-username_color" class="form-text">被封禁的用户无法修改用户名颜色。</div>
|
||||||
|
</div>
|
||||||
|
EOD);
|
||||||
|
} else if ($user['usergroup'] == 'T') {
|
||||||
|
$update_profile_form->appendHTML(<<<EOD
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="input-username_color" class="form-label">用户名颜色</label>
|
||||||
|
<input type="text" class="form-control" id="input-username_color" aria-describedby="help-username_color" value="灰色 - #707070" disabled>
|
||||||
|
<div id="help-username_color" class="form-text">临时用户无法修改用户名颜色。</div>
|
||||||
|
</div>
|
||||||
|
EOD);
|
||||||
|
} else {
|
||||||
|
$additional_colors = [];
|
||||||
|
|
||||||
|
if (isSuperUser($user)) {
|
||||||
|
$additional_colors['#9d3dcf'] = '紫色 - #9d3dcf';
|
||||||
|
$additional_colors['#fe4c61'] = '红色 - #fe4c61';
|
||||||
|
}
|
||||||
|
|
||||||
|
$update_profile_form->addVSelect('username_color', $additional_colors + [
|
||||||
|
'#0d6efd' => '蓝色 - #0d6efd',
|
||||||
|
'#2da44e' => '绿色 - #2da44e',
|
||||||
|
'#f48fb1' => '粉色 - #f48fb1',
|
||||||
|
], '用户名颜色', '#0d6efd');
|
||||||
|
}
|
||||||
$update_profile_form->handle = function (&$vdata) use ($user) {
|
$update_profile_form->handle = function (&$vdata) use ($user) {
|
||||||
$data = [
|
$data = [
|
||||||
'email' => $vdata['email'],
|
'email' => $vdata['email'],
|
||||||
@ -268,7 +298,9 @@ EOD);
|
|||||||
'$.social.codeforces',
|
'$.social.codeforces',
|
||||||
$vdata['codeforces'],
|
$vdata['codeforces'],
|
||||||
'$.social.website',
|
'$.social.website',
|
||||||
$vdata['website']
|
$vdata['website'],
|
||||||
|
'$.username_color',
|
||||||
|
$_POST['username_color']
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
"where", ["username" => $user['username']]
|
"where", ["username" => $user['username']]
|
||||||
|
@ -221,14 +221,37 @@ class UOJUser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($user['usergroup'] == 'B') {
|
$extra = UOJUser::getExtra($user);
|
||||||
return HTML::tag('a', ['class' => 'text-danger fw-bold', 'href' => "/user/{$user['username']}"], $user['username']);
|
$realname = $user['realname'];
|
||||||
|
$color = '#0d6efd';
|
||||||
|
|
||||||
|
if ($user['usergroup'] === 'B') {
|
||||||
|
$color = '#996600';
|
||||||
|
} else if (isTmpUser($user)) {
|
||||||
|
$color = '#707070';
|
||||||
|
} else {
|
||||||
|
if (isSuperUser($user)) {
|
||||||
|
$color = '#9d3dcf';
|
||||||
|
}
|
||||||
|
|
||||||
|
$color = $extra['username_color'];
|
||||||
|
|
||||||
|
// 前管理员设置颜色为紫色、红色的,颜色改为蓝色
|
||||||
|
if (($color === '#9d3dcf' || $color === '#fe4c61') && !isSuperUser($user)) {
|
||||||
|
$color = '#0d6efd';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 未登录不可查看真实姓名
|
if ($user['usertype'] == 'teacher') {
|
||||||
$realname = Auth::check() ? $user['realname'] : '';
|
$realname .= '老师';
|
||||||
|
}
|
||||||
|
|
||||||
return HTML::tag('span', ['class' => 'uoj-username', 'data-realname' => trim(HTML::escape($realname))], $user['username']);
|
return HTML::tag('span', [
|
||||||
|
'class' => 'uoj-username',
|
||||||
|
// 未登录不可查看真实姓名
|
||||||
|
'data-realname' => Auth::check() ? trim(HTML::escape($realname)) : '',
|
||||||
|
'data-color' => $color,
|
||||||
|
], $user['username']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getUpdatedExtraVisitHistory($history, $cur) {
|
public static function getUpdatedExtraVisitHistory($history, $cur) {
|
||||||
@ -290,6 +313,7 @@ class UOJUser {
|
|||||||
'show_email' => 'all',
|
'show_email' => 'all',
|
||||||
'show_qq' => 'all',
|
'show_qq' => 'all',
|
||||||
'avatar_source' => 'gravatar',
|
'avatar_source' => 'gravatar',
|
||||||
|
'username_color' => isSuperUser($user) ? '#9d3dcf' : '#0d6efd',
|
||||||
]);
|
]);
|
||||||
return $extra;
|
return $extra;
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,11 @@ a {
|
|||||||
'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.uoj-realname {
|
||||||
|
font-size: 90%;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
h1,
|
h1,
|
||||||
.h1 {
|
.h1 {
|
||||||
/* font-size: 2.5rem; */
|
/* font-size: 2.5rem; */
|
||||||
@ -164,7 +169,7 @@ h6,
|
|||||||
|
|
||||||
.card-uoj-tle > .card-header:hover,
|
.card-uoj-tle > .card-header:hover,
|
||||||
.card-uoj-tle > div.card-header > div > .uoj-status-text {
|
.card-uoj-tle > div.card-header > div > .uoj-status-text {
|
||||||
color: sandybrown;
|
color: #f4a460;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-uoj-wrong > .card-header:hover,
|
.card-uoj-wrong > .card-header:hover,
|
||||||
|
@ -148,11 +148,16 @@ function getUserSpan(username, realname) {
|
|||||||
function replaceWithHighlightUsername() {
|
function replaceWithHighlightUsername() {
|
||||||
var username = $(this).text();
|
var username = $(this).text();
|
||||||
var realname = $(this).data("realname");
|
var realname = $(this).data("realname");
|
||||||
|
var color = $(this).data("color");
|
||||||
|
var new_elem_inner = '';
|
||||||
|
|
||||||
if ($(this).data("link") != 0) {
|
if ($(this).data("link") != 0) {
|
||||||
$(this).replaceWith(getUserLink(username, realname));
|
new_elem_inner = getUserLink(username, realname);
|
||||||
} else {
|
} else {
|
||||||
$(this).replaceWith(getUserSpan(username, realname));
|
new_elem_inner = getUserSpan(username, realname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(this).replaceWith($(new_elem_inner).css('color', color));
|
||||||
}
|
}
|
||||||
|
|
||||||
$.fn.uoj_honor = function() {
|
$.fn.uoj_honor = function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user