2018-04-08 02:44:42 -04:00
|
|
|
@model SharedLibraryCore.Dtos.PlayerInfo
|
2018-03-22 14:50:09 -04:00
|
|
|
@{
|
2018-03-13 17:30:22 -04:00
|
|
|
string match = System.Text.RegularExpressions.Regex.Match(Model.Name.ToUpper(), "[A-Z]").Value;
|
|
|
|
string shortCode = match == string.Empty ? "?" : match;
|
2018-05-05 18:52:04 -04:00
|
|
|
var loc = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex;
|
2018-06-02 00:48:10 -04:00
|
|
|
string gravatarUrl = Model.Meta.FirstOrDefault(m => m.Key == "GravatarEmail")?.Value;
|
2019-02-24 20:07:56 -05:00
|
|
|
bool isTempBanned = Model.ActivePenaltyType == "TempBan";
|
2019-03-27 20:40:26 -04:00
|
|
|
var informationMeta = Model.Meta
|
|
|
|
.Where(_meta => _meta.Type == SharedLibraryCore.Dtos.ProfileMeta.MetaType.Information)
|
2019-03-30 18:21:01 -04:00
|
|
|
.OrderBy(_meta => _meta.Order)
|
|
|
|
.GroupBy(_meta => _meta.Column)
|
|
|
|
.OrderBy(_grouping => _grouping.Key);
|
2018-03-13 17:30:22 -04:00
|
|
|
}
|
2019-03-25 22:12:16 -04:00
|
|
|
|
2019-03-26 22:02:11 -04:00
|
|
|
<div id="profile_wrapper" class="pb-3 row d-flex flex-column flex-lg-row">
|
2019-03-25 22:12:16 -04:00
|
|
|
<!-- Initial/Avatar Column -->
|
2019-03-26 22:02:11 -04:00
|
|
|
<div id="profile_avatar" class="d-block d-lg-inline-flex flex-column mr-auto ml-auto mr-lg-0 ml-lg-0 justify-content-center text-center level-bgcolor-@Model.LevelInt @(isTempBanned ? "penalties-bgcolor-tempban" : "")" style="background-image:url('@string.Format("https://gravatar.com/avatar/{0}?size=168&default=blank&rating=pg", gravatarUrl)')">
|
2019-03-09 11:28:04 -05:00
|
|
|
@if (string.IsNullOrEmpty(gravatarUrl))
|
|
|
|
{
|
|
|
|
<span class="profile-shortcode">@shortCode</span>
|
|
|
|
}
|
|
|
|
</div>
|
2019-03-25 22:12:16 -04:00
|
|
|
<!-- Name/Level Column -->
|
2019-03-26 22:02:11 -04:00
|
|
|
<div class="d-block d-lg-inline-flex flex-column flex-fill text-center text-lg-left pb-3 pb-lg-0 pt-3 pt-lg-0 pl-3 pr-3">
|
|
|
|
<div class="mt-n2 flex-fill d-block d-lg-inline-flex">
|
|
|
|
<div id="profile_name" class="client-name h1 mb-0">@Model.Name</div>
|
2019-03-25 22:12:16 -04:00
|
|
|
@if (ViewBag.Authorized)
|
|
|
|
{
|
2019-03-26 22:02:11 -04:00
|
|
|
<div id="profile_aliases_btn" class="oi oi-caret-bottom h3 ml-0 ml-lg-2 mb-0 pt-lg-2 mt-lg-1"></div>
|
2019-03-25 22:12:16 -04:00
|
|
|
}
|
2018-02-21 20:29:23 -05:00
|
|
|
</div>
|
2019-03-24 22:34:20 -04:00
|
|
|
@if (ViewBag.Authorized)
|
|
|
|
{
|
2019-03-26 22:02:11 -04:00
|
|
|
<div id="profile_aliases" class="text-muted pt-0 pt-lg-2 pb-2">
|
2019-03-25 22:12:16 -04:00
|
|
|
@foreach (var linked in Model.LinkedAccounts)
|
2019-03-09 11:28:04 -05:00
|
|
|
{
|
2019-03-25 22:12:16 -04:00
|
|
|
@Html.ActionLink(linked.Value.ToString("X"), "ProfileAsync", "Client", new { id = linked.Key }, new { @class = "link-inverse" })<br />
|
2019-03-09 11:28:04 -05:00
|
|
|
}
|
2019-03-25 22:12:16 -04:00
|
|
|
@foreach (string alias in Model.Aliases)
|
2019-03-09 11:28:04 -05:00
|
|
|
{
|
2019-03-25 22:12:16 -04:00
|
|
|
@alias<br />
|
2019-03-09 11:28:04 -05:00
|
|
|
}
|
2018-04-15 00:26:27 -04:00
|
|
|
|
2019-03-25 22:12:16 -04:00
|
|
|
@foreach (string ip in Model.IPs)
|
2018-04-02 01:25:06 -04:00
|
|
|
{
|
2019-03-25 22:12:16 -04:00
|
|
|
<a class="ip-locate-link" href="#" data-ip="@ip">@ip</a><br />
|
2019-03-09 11:28:04 -05:00
|
|
|
}
|
|
|
|
</div>
|
2019-03-24 22:34:20 -04:00
|
|
|
}
|
2019-03-26 22:02:11 -04:00
|
|
|
<div id="profile_level" class="font-weight-bold h4 mb-0 level-color-@Model.LevelInt @(isTempBanned ? "penalties-color-tempban" : "")">
|
|
|
|
@Model.Level @(isTempBanned ? $"({loc["WEBFRONT_PROFILE_TEMPBAN"]})" : "")
|
2019-03-25 22:12:16 -04:00
|
|
|
</div>
|
2019-03-24 22:34:20 -04:00
|
|
|
</div>
|
2019-03-25 22:12:16 -04:00
|
|
|
@if (ViewBag.Authorized)
|
|
|
|
{
|
2019-03-26 22:02:11 -04:00
|
|
|
<div class="pr-lg-0 text-center text-lg-right">
|
2019-03-25 22:12:16 -04:00
|
|
|
@if (Model.LevelInt < (int)ViewBag.User.Level && !Model.HasActivePenalty)
|
|
|
|
{
|
|
|
|
<div id="profile_action_ban_btn" class="profile-action oi oi-lock-unlocked text-success h3 ml-2" title="Ban Client" data-action="ban" aria-hidden="true"></div>
|
|
|
|
}
|
2019-03-24 22:34:20 -04:00
|
|
|
|
2019-03-25 22:12:16 -04:00
|
|
|
@if (Model.LevelInt < (int)ViewBag.User.Level && Model.HasActivePenalty)
|
|
|
|
{
|
|
|
|
@if (isTempBanned)
|
|
|
|
{
|
|
|
|
<div id="profile_action_ban_btn" class="profile-action oi oi-lock-unlocked text-success h3 ml-2" title="Ban Client" data-action="ban" aria-hidden="true"></div>
|
|
|
|
<div id="profile_action_unban_btn" class="profile-action oi oi-lock-locked penalties-color-tempban h3 ml-2" title="Unban Client" data-action="unban" aria-hidden="true"></div>
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
<div id="profile_action_unban_btn" class="profile-action oi oi-lock-locked text-danger h3 ml-2" title="Unban Client" data-action="unban" aria-hidden="true"></div>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-03-26 22:02:11 -04:00
|
|
|
@if (Model.LevelInt != -1)
|
|
|
|
{
|
|
|
|
<div id="profile_action_edit_btn" class="profile-action oi oi-cog text-muted h3 ml-2" title="Client Options" data-action="edit" aria-hidden="true"></div>
|
|
|
|
}
|
|
|
|
</div>
|
2019-03-25 22:12:16 -04:00
|
|
|
}
|
2019-03-26 22:02:11 -04:00
|
|
|
</div>
|
2019-03-25 22:12:16 -04:00
|
|
|
|
2019-03-26 22:02:11 -04:00
|
|
|
<div id="profile_info" class="row d-block d-lg-flex flex-row border-bottom border-top pt-2 pb-2">
|
2019-03-30 18:21:01 -04:00
|
|
|
@foreach (var metaColumn in informationMeta)
|
|
|
|
{
|
|
|
|
<div class="text-center text-lg-left mr-0 mr-lg-4">
|
|
|
|
@foreach (var meta in metaColumn)
|
|
|
|
{
|
2019-04-21 17:28:13 -04:00
|
|
|
<div class="profile-meta-entry" title="@(string.IsNullOrEmpty(meta.Extra) ? meta.Key : meta.Extra)">
|
2019-03-30 18:21:01 -04:00
|
|
|
<span class="profile-meta-value text-primary">@meta.Value</span>
|
|
|
|
<span class="profile-meta-title text-muted"> @meta.Key</span>
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
</div>
|
|
|
|
}
|
2018-02-21 20:29:23 -05:00
|
|
|
</div>
|
2018-02-24 00:56:03 -05:00
|
|
|
|
2018-02-22 01:06:21 -05:00
|
|
|
<div class="row d-md-flex pt-2">
|
2018-02-21 20:29:23 -05:00
|
|
|
<div id="profile_events" class="text-muted text-left ml-sm-0">
|
2019-03-27 20:40:26 -04:00
|
|
|
@await Component.InvokeAsync("ProfileMetaList", new { clientId = Model.ClientId, count = 30, offset = 0 })
|
2018-02-21 20:29:23 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2019-03-29 22:56:56 -04:00
|
|
|
<div class="row">
|
|
|
|
<div class="oi oi-chevron-bottom text-center mt-2 btn btn-primary btn-block loader-load-more" title="Load more meta" data-action="unban" aria-hidden="true"></div>
|
|
|
|
</div>
|
|
|
|
|
2018-03-27 00:54:20 -04:00
|
|
|
@section targetid {
|
|
|
|
<input type="hidden" name="targetId" value="@Model.ClientId" />
|
|
|
|
}
|
|
|
|
|
2018-02-21 20:29:23 -05:00
|
|
|
@section scripts {
|
2018-04-09 23:33:42 -04:00
|
|
|
<environment include="Development">
|
2019-03-27 20:40:26 -04:00
|
|
|
<script type="text/javascript" src="~/js/loader.js"></script>
|
2018-04-09 23:33:42 -04:00
|
|
|
<script type="text/javascript" src="~/js/profile.js"></script>
|
|
|
|
</environment>
|
2019-03-27 20:40:26 -04:00
|
|
|
<script>initLoader('/Client/Meta/@Model.ClientId', '#profile_events', 30);</script>
|
2018-04-09 23:33:42 -04:00
|
|
|
}
|