Files
OurUmbraco/OurUmbraco.Site/Views/MacroPartials/Members/PublicProfile.cshtml
T
Sebastiaan Janssen 51c402e105 More spam wrangling
2015-07-25 09:47:35 +02:00

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">&commat;<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 &rarr;</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>