234 lines
12 KiB
Plaintext
234 lines
12 KiB
Plaintext
@inherits Umbraco.Web.Macros.PartialViewMacroPage
|
|
@using Marketplace.Interfaces
|
|
@using Marketplace.Providers
|
|
@using uForum.Extensions
|
|
@{
|
|
var memberId = Request["id"];
|
|
int id = 0;
|
|
}
|
|
@if (!string.IsNullOrEmpty(memberId) && int.TryParse(memberId, out id))
|
|
{
|
|
var member = Members.GetById(id);
|
|
if (member == null)
|
|
{
|
|
<p>Member does not exist</p>
|
|
}
|
|
else
|
|
{
|
|
var ts = new uForum.Services.TopicService(UmbracoContext.Application.DatabaseContext);
|
|
|
|
var topics = ts.GetLatestTopicsForMember(member.Id);
|
|
|
|
var roles = member.GetRoles();
|
|
|
|
var provider = (IListingProvider)MarketplaceProviderManager.Providers["ListingProvider"];
|
|
var projects = provider.GetListingsByVendor(member.Id, true, true).OrderByDescending(x => x.CreateDate);
|
|
|
|
var contribProjects = provider.GetListingsForContributor(member.Id).OrderByDescending(x => x.CreateDate);
|
|
var currentMember = Members.GetCurrentMember();
|
|
var reputationCurrent = member.GetPropertyValue<int>("reputationCurrent");
|
|
|
|
<div class="public-member">
|
|
<div class="row">
|
|
<div class="col-md-8">
|
|
<div class="row">
|
|
<div class="col-xs-12">
|
|
<div class="member-details">
|
|
@Html.Raw(our.Utils.GetMemberAvatar(member, 125))
|
|
<div class="text">
|
|
<h3>@member.Name</h3>
|
|
@if (member.HasValue("twitter"))
|
|
{
|
|
var twitterHandle = member.GetPropertyValue<string>("twitter").Replace("@", string.Empty);
|
|
<small><a href="https://twitter.com/@twitterHandle">@<span>@twitterHandle</span></a></small>
|
|
}
|
|
</div>
|
|
</div> <!-- .member-details -->
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="member-details">
|
|
@if (roles.Any())
|
|
{
|
|
<span class="roles">
|
|
@foreach (var role in roles)
|
|
{
|
|
<span class="@role">@role</span>
|
|
}
|
|
</span>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="member-details">
|
|
<small>
|
|
@member.Name
|
|
@if (member.HasValue("location"))
|
|
{
|
|
<span> is from <span>@member.GetPropertyValue("location")</span></span>
|
|
}
|
|
@if (member.HasValue("company"))
|
|
{
|
|
<span> works at <span>@member.GetPropertyValue("company")</span></span>
|
|
}
|
|
and has <em class="karma-points">@member.GetPropertyValue("reputationCurrent")</em> <span></span> karma points
|
|
</small>
|
|
</div>
|
|
<div class="member-bio">
|
|
<p>@member.GetPropertyValue("profileText")</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="package-forum-activity">
|
|
<h3>Activity</h3>
|
|
@foreach (var topic in topics)
|
|
{
|
|
var cat = Umbraco.TypedContent(topic.ParentId);
|
|
// if cat == null then it's been hidden/unpublished (example: v5 forum)
|
|
// if this is the case: don't show forum post in list
|
|
if (cat != null)
|
|
{
|
|
var mem = Members.GetById(topic.LatestReplyAuthor) ?? Members.GetById(topic.MemberId);
|
|
|
|
<a href="@topic.GetUrl()" class="forum-thread @(topic.Answer != 0 ? "solved" : null)">
|
|
<div class="row flex-center">
|
|
<div class="col-xs-2">
|
|
@Html.Raw(our.Utils.GetMemberAvatar(mem, 75))
|
|
</div>
|
|
<div class="col-xs-10">
|
|
<div class="forum-thread-text">
|
|
<h3>@topic.Title</h3>
|
|
<p>Reply by @mem.Name @topic.Updated.ConvertToRelativeTime()</p>
|
|
</div>
|
|
|
|
<div class="category frontend"><span class="cat">@cat.Name</span></div>
|
|
</div>
|
|
|
|
</div>
|
|
</a>
|
|
}
|
|
}
|
|
<a class="goto" href="/forum">Go to forum →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@if (projects.Any())
|
|
{
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="package-forum-activity">
|
|
<h3>Packages created</h3>
|
|
@foreach (var project in projects.Where(x => x.Live))
|
|
{
|
|
<a href="@project.NiceUrl" class="forum-thread">
|
|
<div class="row">
|
|
<div class="col-xs-2">
|
|
@if (string.IsNullOrWhiteSpace(project.DefaultScreenshot.Trim()))
|
|
{
|
|
<i class="icon-Box" style="font-size: 30px; padding-top: 5px; display: inline-block; color: black;"></i>
|
|
}
|
|
else
|
|
{
|
|
<img src="@our.Utils.GetScreenshotPath(project.DefaultScreenshot)?width=100&height=100&mode=crop" alt="@project.Name">
|
|
}
|
|
</div>
|
|
<div class="col-xs-10">
|
|
<div class="forum-thread-text">
|
|
<h3>@project.Name</h3>
|
|
<p>@Umbraco.StripHtml(Umbraco.Truncate(project.Description, 120))</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
@if (contribProjects.Any())
|
|
{
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="package-forum-activity">
|
|
<h2>Packages contributed to</h2>
|
|
@foreach (var project in contribProjects.Where(x => x.Live))
|
|
{
|
|
<a href="@project.NiceUrl" class="forum-thread">
|
|
<div class="row">
|
|
<div class="col-xs-2">
|
|
@if (string.IsNullOrWhiteSpace(project.DefaultScreenshot.Trim()))
|
|
{
|
|
<i class="icon-Box" style="font-size: 30px; padding-top: 5px; display: inline-block; color: black;"></i>
|
|
}
|
|
else
|
|
{
|
|
<img src="@our.Utils.GetScreenshotPath(project.DefaultScreenshot)?width=100&height=100&mode=crop" alt="@project.Name">
|
|
}
|
|
</div>
|
|
<div class="col-xs-10">
|
|
<div class="forum-thread-text">
|
|
<h3>@project.Name</h3>
|
|
<p>@Umbraco.StripHtml(Umbraco.Truncate(project.Description, 120))</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- .public-member -->
|
|
if (currentMember.IsAdmin())
|
|
{
|
|
var allTopics = ts.GetLatestTopicsForMember(member.Id, false, 1000);
|
|
|
|
<div style="border: 1px solid orange; padding: 4px;">
|
|
<p>Moderator Tools (also known as "with great power comes great responsibility"):</p><br />
|
|
@if (member.GetPropertyValue<bool>("blocked") == false)
|
|
{
|
|
<a href="#" class="block-member" style="color: red" rel="@member.Id">Block this member</a><br />
|
|
}
|
|
else
|
|
{
|
|
<a href="#" class="unblock-member" style="color: green" rel="@member.Id">Unblock this member</a><br />
|
|
<strong class="member-blocked">Member is blocked</strong>
|
|
}
|
|
<br /><br />
|
|
<p><strong>All threads this member was involved in (created or commented)</strong></p>
|
|
<ul style="margin-left: 20px;">
|
|
@foreach (var topic in allTopics)
|
|
{
|
|
<li><a href="@topic.GetUrl()" style="@(topic.IsSpam ? "color: orange;" : "")">@(topic.IsSpam ? "IS MARKED AS SPAM: " : "")@topic.Title</a></li>
|
|
}
|
|
</ul>
|
|
</div>
|
|
}
|
|
<br /><br />
|
|
if (currentMember.IsHq())
|
|
{
|
|
var dbMember = UmbracoContext.Application.Services.MemberService.GetById(member.Id);
|
|
|
|
<div style="border: 1px solid red; padding: 4px;">
|
|
<p>HQ Tools (also known as "with great power comes great responsibility"):</p><br />
|
|
<span>Member is approved? <strong>@dbMember.IsApproved</strong></span><br />
|
|
|
|
<a href="#" class="delete-member-plus" style="color: red" rel="@member.Id">Delete this member including all their topics and comments</a><br />
|
|
@if (reputationCurrent < 71)
|
|
{
|
|
<a href="#" class="approve-member" style="color: green" rel="@member.Id">Give enough karma to to stop spamchecks and allow posting packages</a><br />
|
|
}
|
|
</div>
|
|
}
|
|
}
|
|
}
|
|
|
|
<script type="text/javascript" src="/scripts/powers/uPowers.js"></script> |