feature: flag permissions

feature: flag permissions
This commit is contained in:
Gary Sharp
2025-07-20 10:45:55 +10:00
parent 7deead494b
commit be7ee4cae8
72 changed files with 5590 additions and 2109 deletions
+9 -14
View File
@@ -1,15 +1,8 @@
@model Disco.Web.Models.User.ShowModel
@using Disco.Services.Users.UserFlags;
@{
Authorization.Require(Claims.User.ShowFlagAssignments);
var hasRemove = Authorization.Has(Claims.User.Actions.RemoveFlags);
var hasEdit = Authorization.Has(Claims.User.Actions.EditFlags);
var hasUserFlagShow = Authorization.Has(Claims.Config.UserFlag.Show);
var activeAssignmentCount = Model.User.UserFlagAssignments == null ? 0 : Model.User.UserFlagAssignments.Count(a => !a.RemovedDate.HasValue);
var flagAssignments = Model.User.UserFlagAssignments.Select(a => Tuple.Create(a, UserFlagService.GetUserFlag(a.UserFlagId))).ToList();
var flagAssignments = Model.User.UserFlagAssignments.Select(a => Tuple.Create(a, UserFlagService.GetUserFlag(a.UserFlagId))).Where(g => g.Item2.permission.CanShow()).ToList();
var activeAssignmentCount = flagAssignments.Count(a => !a.Item1.RemovedDate.HasValue);
}
<div id="UserDetailTab-Flags" class="UserPart">
@if (flagAssignments.Count > 0)
@@ -25,14 +18,14 @@
{
<tr data-userflagassignmentid="@fa.Item1.Id" data-flagassignmentaddeddate="@(fa.Item1.AddedDate.ToString("s"))" class="@(!fa.Item1.RemovedDate.HasValue ? "added" : "removed")">
<td class="name">
<i class="fa fa-@(fa.Item2.Icon) fa-fw fa-lg d-@(fa.Item2.IconColour)"></i>
@if (hasUserFlagShow)
<i class="fa fa-@(fa.Item2.flag.Icon) fa-fw fa-lg d-@(fa.Item2.flag.IconColour)"></i>
@if (Authorization.Has(Claims.Config.UserFlag.Show))
{
@Html.ActionLink(fa.Item2.Name, MVC.Config.UserFlag.Index(fa.Item2.Id))
@Html.ActionLink(fa.Item2.flag.Name, MVC.Config.UserFlag.Index(fa.Item2.flag.Id))
}
else
{
@fa.Item2.Name
@fa.Item2.flag.Name
}
</td>
<td class="added">
@@ -43,7 +36,7 @@
}
</td>
<td class="comments">
@if (hasEdit)
@if (fa.Item2.permission.CanEdit())
{
<div class="editable"><i class="fa fa-fw fa-edit" title="Edit Comments"></i></div>
}
@@ -77,6 +70,7 @@
<div id="User_Show_Flags_Actions_Remove_Dialog" class="dialog" title="Remove this flag from the user?">
@using (Html.BeginForm(MVC.API.UserFlagAssignment.RemoveUser()))
{
@Html.AntiForgeryToken()
<input id="User_Show_Flags_Actions_Remove_Dialog_Id" type="hidden" name="id" value="" />
<p>
<i class="fa fa-exclamation-triangle fa-lg"></i>&nbsp;Are you sure?
@@ -86,6 +80,7 @@
<div id="User_Show_Flags_Actions_EditComments_Dialog" class="dialog" title="Edit the Comments">
@using (Html.BeginForm(MVC.API.UserFlagAssignment.UpdateComments()))
{
@Html.AntiForgeryToken()
<input id="User_Show_Flags_Actions_EditComments_Dialog_Id" type="hidden" name="id" value="" />
<input type="hidden" name="redirect" value="true" />
<h4>Comments:</h4>
@@ -52,15 +52,8 @@ namespace Disco.Web.Views.User.UserParts
#line 3 "..\..\Views\User\UserParts\_Flags.cshtml"
Authorization.Require(Claims.User.ShowFlagAssignments);
var hasRemove = Authorization.Has(Claims.User.Actions.RemoveFlags);
var hasEdit = Authorization.Has(Claims.User.Actions.EditFlags);
var hasUserFlagShow = Authorization.Has(Claims.Config.UserFlag.Show);
var activeAssignmentCount = Model.User.UserFlagAssignments == null ? 0 : Model.User.UserFlagAssignments.Count(a => !a.RemovedDate.HasValue);
var flagAssignments = Model.User.UserFlagAssignments.Select(a => Tuple.Create(a, UserFlagService.GetUserFlag(a.UserFlagId))).ToList();
var flagAssignments = Model.User.UserFlagAssignments.Select(a => Tuple.Create(a, UserFlagService.GetUserFlag(a.UserFlagId))).Where(g => g.Item2.permission.CanShow()).ToList();
var activeAssignmentCount = flagAssignments.Count(a => !a.Item1.RemovedDate.HasValue);
#line default
@@ -74,13 +67,13 @@ WriteLiteral(" class=\"UserPart\"");
WriteLiteral(">\r\n");
#line 15 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 8 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
#line hidden
#line 15 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 8 "..\..\Views\User\UserParts\_Flags.cshtml"
if (flagAssignments.Count > 0)
{
@@ -110,13 +103,13 @@ WriteLiteral(" class=\"removed\"");
WriteLiteral(">Removed</th>\r\n </tr>\r\n");
#line 24 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 17 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
#line hidden
#line 24 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 17 "..\..\Views\User\UserParts\_Flags.cshtml"
foreach (var fa in flagAssignments.OrderByDescending(a => a.Item1.AddedDate))
{
@@ -128,7 +121,7 @@ WriteLiteral(" <tr");
WriteLiteral(" data-userflagassignmentid=\"");
#line 26 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 19 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(fa.Item1.Id);
@@ -139,7 +132,7 @@ WriteLiteral("\"");
WriteLiteral(" data-flagassignmentaddeddate=\"");
#line 26 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 19 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(fa.Item1.AddedDate.ToString("s"));
@@ -147,14 +140,14 @@ WriteLiteral(" data-flagassignmentaddeddate=\"");
#line hidden
WriteLiteral("\"");
WriteAttribute("class", Tuple.Create(" class=\"", 1240), Tuple.Create("\"", 1303)
WriteAttribute("class", Tuple.Create(" class=\"", 943), Tuple.Create("\"", 1006)
#line 26 "..\..\Views\User\UserParts\_Flags.cshtml"
, Tuple.Create(Tuple.Create("", 1248), Tuple.Create<System.Object, System.Int32>(!fa.Item1.RemovedDate.HasValue ? "added" : "removed"
#line 19 "..\..\Views\User\UserParts\_Flags.cshtml"
, Tuple.Create(Tuple.Create("", 951), Tuple.Create<System.Object, System.Int32>(!fa.Item1.RemovedDate.HasValue ? "added" : "removed"
#line default
#line hidden
, 1248), false)
, 951), false)
);
WriteLiteral(">\r\n <td");
@@ -163,54 +156,54 @@ WriteLiteral(" class=\"name\"");
WriteLiteral(">\r\n <i");
WriteAttribute("class", Tuple.Create(" class=\"", 1372), Tuple.Create("\"", 1439)
, Tuple.Create(Tuple.Create("", 1380), Tuple.Create("fa", 1380), true)
, Tuple.Create(Tuple.Create(" ", 1382), Tuple.Create("fa-", 1383), true)
WriteAttribute("class", Tuple.Create(" class=\"", 1075), Tuple.Create("\"", 1152)
, Tuple.Create(Tuple.Create("", 1083), Tuple.Create("fa", 1083), true)
, Tuple.Create(Tuple.Create(" ", 1085), Tuple.Create("fa-", 1086), true)
#line 28 "..\..\Views\User\UserParts\_Flags.cshtml"
, Tuple.Create(Tuple.Create("", 1386), Tuple.Create<System.Object, System.Int32>(fa.Item2.Icon
#line 21 "..\..\Views\User\UserParts\_Flags.cshtml"
, Tuple.Create(Tuple.Create("", 1089), Tuple.Create<System.Object, System.Int32>(fa.Item2.flag.Icon
#line default
#line hidden
, 1386), false)
, Tuple.Create(Tuple.Create(" ", 1402), Tuple.Create("fa-fw", 1403), true)
, Tuple.Create(Tuple.Create(" ", 1408), Tuple.Create("fa-lg", 1409), true)
, Tuple.Create(Tuple.Create(" ", 1414), Tuple.Create("d-", 1415), true)
, 1089), false)
, Tuple.Create(Tuple.Create(" ", 1110), Tuple.Create("fa-fw", 1111), true)
, Tuple.Create(Tuple.Create(" ", 1116), Tuple.Create("fa-lg", 1117), true)
, Tuple.Create(Tuple.Create(" ", 1122), Tuple.Create("d-", 1123), true)
#line 28 "..\..\Views\User\UserParts\_Flags.cshtml"
, Tuple.Create(Tuple.Create("", 1417), Tuple.Create<System.Object, System.Int32>(fa.Item2.IconColour
#line 21 "..\..\Views\User\UserParts\_Flags.cshtml"
, Tuple.Create(Tuple.Create("", 1125), Tuple.Create<System.Object, System.Int32>(fa.Item2.flag.IconColour
#line default
#line hidden
, 1417), false)
, 1125), false)
);
WriteLiteral("></i>\r\n");
#line 29 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 22 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
#line hidden
#line 29 "..\..\Views\User\UserParts\_Flags.cshtml"
if (hasUserFlagShow)
#line 22 "..\..\Views\User\UserParts\_Flags.cshtml"
if (Authorization.Has(Claims.Config.UserFlag.Show))
{
#line default
#line hidden
#line 31 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(Html.ActionLink(fa.Item2.Name, MVC.Config.UserFlag.Index(fa.Item2.Id)));
#line 24 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(Html.ActionLink(fa.Item2.flag.Name, MVC.Config.UserFlag.Index(fa.Item2.flag.Id)));
#line default
#line hidden
#line 31 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 24 "..\..\Views\User\UserParts\_Flags.cshtml"
}
else
{
@@ -219,15 +212,15 @@ WriteLiteral("></i>\r\n");
#line default
#line hidden
#line 35 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(fa.Item2.Name);
#line 28 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(fa.Item2.flag.Name);
#line default
#line hidden
#line 35 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 28 "..\..\Views\User\UserParts\_Flags.cshtml"
}
@@ -242,7 +235,7 @@ WriteLiteral(">\r\n");
WriteLiteral(" ");
#line 39 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 32 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(CommonHelpers.FriendlyDateAndUser(fa.Item1.AddedDate, fa.Item1.AddedUser));
@@ -251,13 +244,13 @@ WriteLiteral(" ");
WriteLiteral("\r\n");
#line 40 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 33 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
#line hidden
#line 40 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 33 "..\..\Views\User\UserParts\_Flags.cshtml"
if (fa.Item1.OnAssignmentExpressionResult != null)
{
@@ -271,7 +264,7 @@ WriteLiteral(" class=\"expressionResult\"");
WriteLiteral(">");
#line 42 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 35 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(fa.Item1.OnAssignmentExpressionResult);
@@ -280,7 +273,7 @@ WriteLiteral(">");
WriteLiteral("</div>\r\n");
#line 43 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 36 "..\..\Views\User\UserParts\_Flags.cshtml"
}
@@ -293,14 +286,14 @@ WriteLiteral(" class=\"comments\"");
WriteLiteral(">\r\n");
#line 46 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 39 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
#line hidden
#line 46 "..\..\Views\User\UserParts\_Flags.cshtml"
if (hasEdit)
#line 39 "..\..\Views\User\UserParts\_Flags.cshtml"
if (fa.Item2.permission.CanEdit())
{
@@ -319,7 +312,7 @@ WriteLiteral(" title=\"Edit Comments\"");
WriteLiteral("></i></div>\r\n");
#line 49 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 42 "..\..\Views\User\UserParts\_Flags.cshtml"
}
@@ -328,7 +321,7 @@ WriteLiteral("></i></div>\r\n");
WriteLiteral(" ");
#line 50 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 43 "..\..\Views\User\UserParts\_Flags.cshtml"
if (fa.Item1.Comments == null)
{
@@ -342,7 +335,7 @@ WriteLiteral(" class=\"comments smallMessage\"");
WriteLiteral(">[no comments]</div>\r\n");
#line 53 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 46 "..\..\Views\User\UserParts\_Flags.cshtml"
}
else
{
@@ -357,7 +350,7 @@ WriteLiteral(" class=\"comments\"");
WriteLiteral(">");
#line 56 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 49 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(fa.Item1.Comments.ToHtmlComment());
@@ -372,7 +365,7 @@ WriteLiteral(" class=\"commentsRaw\"");
WriteLiteral(">");
#line 57 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 50 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(fa.Item1.Comments);
@@ -381,7 +374,7 @@ WriteLiteral(">");
WriteLiteral("</div>\r\n");
#line 58 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 51 "..\..\Views\User\UserParts\_Flags.cshtml"
}
@@ -389,27 +382,27 @@ WriteLiteral("</div>\r\n");
#line hidden
WriteLiteral(" </td>\r\n <td");
WriteAttribute("class", Tuple.Create(" class=\"", 2954), Tuple.Create("\"", 3017)
, Tuple.Create(Tuple.Create("", 2962), Tuple.Create("removed", 2962), true)
WriteAttribute("class", Tuple.Create(" class=\"", 2735), Tuple.Create("\"", 2798)
, Tuple.Create(Tuple.Create("", 2743), Tuple.Create("removed", 2743), true)
#line 60 "..\..\Views\User\UserParts\_Flags.cshtml"
, Tuple.Create(Tuple.Create("", 2969), Tuple.Create<System.Object, System.Int32>(!fa.Item1.RemovedDate.HasValue ? " na" : null
#line 53 "..\..\Views\User\UserParts\_Flags.cshtml"
, Tuple.Create(Tuple.Create("", 2750), Tuple.Create<System.Object, System.Int32>(!fa.Item1.RemovedDate.HasValue ? " na" : null
#line default
#line hidden
, 2969), false)
, 2750), false)
);
WriteLiteral(">\r\n");
#line 61 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 54 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
#line hidden
#line 61 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 54 "..\..\Views\User\UserParts\_Flags.cshtml"
if (fa.Item1.RemovedDate.HasValue)
{
@@ -417,14 +410,14 @@ WriteLiteral(">\r\n");
#line default
#line hidden
#line 63 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 56 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(CommonHelpers.FriendlyDateAndUser(fa.Item1.RemovedDate.Value, fa.Item1.RemovedUser));
#line default
#line hidden
#line 63 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 56 "..\..\Views\User\UserParts\_Flags.cshtml"
if (fa.Item1.OnUnassignmentExpressionResult != null)
{
@@ -439,7 +432,7 @@ WriteLiteral(" class=\"expressionResult\"");
WriteLiteral(">");
#line 66 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 59 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(fa.Item1.OnUnassignmentExpressionResult);
@@ -448,7 +441,7 @@ WriteLiteral(">");
WriteLiteral("</div>\r\n");
#line 67 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 60 "..\..\Views\User\UserParts\_Flags.cshtml"
}
}
else if (fa.Item1.CanRemove())
@@ -466,7 +459,7 @@ WriteLiteral(" class=\"button small remove\"");
WriteLiteral(">Remove</a>\r\n");
#line 72 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 65 "..\..\Views\User\UserParts\_Flags.cshtml"
}
@@ -475,7 +468,7 @@ WriteLiteral(">Remove</a>\r\n");
WriteLiteral(" </td>\r\n </tr>\r\n");
#line 75 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 68 "..\..\Views\User\UserParts\_Flags.cshtml"
}
@@ -494,15 +487,29 @@ WriteLiteral(" title=\"Remove this flag from the user?\"");
WriteLiteral(">\r\n");
#line 78 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 71 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
#line hidden
#line 78 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 71 "..\..\Views\User\UserParts\_Flags.cshtml"
using (Html.BeginForm(MVC.API.UserFlagAssignment.RemoveUser()))
{
#line default
#line hidden
#line 73 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(Html.AntiForgeryToken());
#line default
#line hidden
#line 73 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
@@ -526,7 +533,7 @@ WriteLiteral(" class=\"fa fa-exclamation-triangle fa-lg\"");
WriteLiteral("></i>&nbsp;Are you sure?\r\n </p>\r\n");
#line 84 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 78 "..\..\Views\User\UserParts\_Flags.cshtml"
}
@@ -545,15 +552,29 @@ WriteLiteral(" title=\"Edit the Comments\"");
WriteLiteral(">\r\n");
#line 87 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 81 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
#line hidden
#line 87 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 81 "..\..\Views\User\UserParts\_Flags.cshtml"
using (Html.BeginForm(MVC.API.UserFlagAssignment.UpdateComments()))
{
#line default
#line hidden
#line 83 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(Html.AntiForgeryToken());
#line default
#line hidden
#line 83 "..\..\Views\User\UserParts\_Flags.cshtml"
#line default
@@ -593,7 +614,7 @@ WriteLiteral(" class=\"block\"");
WriteLiteral("></textarea>\r\n </p>\r\n");
#line 95 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 90 "..\..\Views\User\UserParts\_Flags.cshtml"
}
@@ -651,7 +672,7 @@ WriteLiteral(">\r\n $(function () {\r\n var userFlags
";\r\n });\r\n </script>\r\n");
#line 174 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 169 "..\..\Views\User\UserParts\_Flags.cshtml"
}
else
{
@@ -666,7 +687,7 @@ WriteLiteral(" class=\"none\"");
WriteLiteral(">This user has no associated flags</div>\r\n");
#line 178 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 173 "..\..\Views\User\UserParts\_Flags.cshtml"
}
@@ -676,7 +697,7 @@ WriteLiteral(" <script>\r\n $(\'#UserDetailTabItems\').append(\'<li><a
"b-Flags\">Flags [");
#line 180 "..\..\Views\User\UserParts\_Flags.cshtml"
#line 175 "..\..\Views\User\UserParts\_Flags.cshtml"
Write(activeAssignmentCount);
+17 -16
View File
@@ -236,12 +236,13 @@
</script>
}
}
@if (Model.User.CanAddUserFlags() && Model.AvailableUserFlags != null && Model.AvailableUserFlags.Count > 0)
@if (Model.AvailableUserFlags != null && Model.AvailableUserFlags.Count > 0)
{
@Html.ActionLinkSmallButton("Add Flag", MVC.API.UserFlagAssignment.AddUser(), "User_Show_Details_Actions_AddFlag_Button")
<button id="User_Show_Details_Actions_AddFlag_Button" type="button" class="button small">Add Flag</button>
<div id="User_Show_Details_Actions_AddFlag_Dialog" class="dialog" title="Add User Flag">
@using (Html.BeginForm(MVC.API.UserFlagAssignment.AddUser()))
{
@Html.AntiForgeryToken()
<input id="User_Show_Details_Actions_AddFlag_Dialog_Id" type="hidden" name="id" />
<input id="User_Show_Details_Actions_AddFlag_Dialog_UserId" type="hidden" name="UserId" value="@Model.User.UserId" />
<div class="flagPicker">
@@ -265,7 +266,6 @@
$(function () {
const button = $('#User_Show_Details_Actions_AddFlag_Button');
let buttonDialog = null;
const buttonLink = button.attr('href');
let flagPicker = null;
let flagAddId = null;
@@ -285,7 +285,7 @@
flagAddComments.focus().select();
}
button.attr('href', '#').click(function (e) {
button.click(function (e) {
e.preventDefault();
if (!buttonDialog) {
@@ -302,10 +302,9 @@
},
"Add Flag": function () {
if (!!flagAddId.val()) {
const $this = $(this);
$this.dialog("disable");
$this.dialog("option", "buttons", null);
buttonDialog.find('form').submit();
buttonDialog
.dialog("option", "buttons", null)
.find('form').submit();
} else {
alert('Select a User Flag');
}
@@ -437,20 +436,22 @@
<span class="User_Show_AssignedDevices_CurrentAssignment_Assigned">@CommonHelpers.FriendlyDate(assignment.AssignedDate)</span>
</td>
</tr>
@if (Authorization.Has(Claims.Device.ShowFlagAssignments) &&
assignment.Device.DeviceFlagAssignments.Any(a => a.RemovedDate.HasValue))
@if (assignment.Device.DeviceFlagAssignments.CanShowAny())
{
<tr>
<td colspan="2">
<div class="User_Show_Assigned_Devices_CurrentAssignment_Flags">
@foreach (var flag in assignment.Device.DeviceFlagAssignments.Where(f => !f.RemovedDate.HasValue).Select(f => Tuple.Create(f, DeviceFlagService.GetDeviceFlag(f.DeviceFlagId))))
{
<i class="flag fa fa-@(flag.Item2.Icon) fa-fw d-@(flag.Item2.IconColour)">
<span class="details">
<span class="name">@flag.Item2.Name</span>@if (flag.Item1.Comments != null)
{<span class="comments">@flag.Item1.Comments.ToHtmlComment()</span>}<span class="added">@CommonHelpers.FriendlyDateAndUser(flag.Item1.AddedDate, flag.Item1.AddedUserId)</span>
</span>
</i>
if (flag.Item2.permission.CanShow())
{
<i class="flag fa fa-@(flag.Item2.flag.Icon) fa-fw d-@(flag.Item2.flag.IconColour)">
<span class="details">
<span class="name">@flag.Item2.flag.Name</span>@if (flag.Item1.Comments != null)
{<span class="comments">@flag.Item1.Comments.ToHtmlComment()</span>}<span class="added">@CommonHelpers.FriendlyDateAndUser(flag.Item1.AddedDate, flag.Item1.AddedUserId)</span>
</span>
</i>
}
}
<script type="text/javascript">
$(function () {
@@ -893,26 +893,22 @@ WriteLiteral(" ");
#line 239 "..\..\Views\User\UserParts\_Subject.cshtml"
if (Model.User.CanAddUserFlags() && Model.AvailableUserFlags != null && Model.AvailableUserFlags.Count > 0)
if (Model.AvailableUserFlags != null && Model.AvailableUserFlags.Count > 0)
{
#line default
#line hidden
#line 241 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(Html.ActionLinkSmallButton("Add Flag", MVC.API.UserFlagAssignment.AddUser(), "User_Show_Details_Actions_AddFlag_Button"));
#line default
#line hidden
#line 241 "..\..\Views\User\UserParts\_Subject.cshtml"
WriteLiteral(" <button");
WriteLiteral(" id=\"User_Show_Details_Actions_AddFlag_Button\"");
WriteLiteral(" type=\"button\"");
WriteLiteral(" class=\"button small\"");
WriteLiteral(">Add Flag</button>\r\n");
#line default
#line hidden
WriteLiteral(" <div");
WriteLiteral(" id=\"User_Show_Details_Actions_AddFlag_Dialog\"");
@@ -933,6 +929,20 @@ WriteLiteral(">\r\n");
#line 243 "..\..\Views\User\UserParts\_Subject.cshtml"
using (Html.BeginForm(MVC.API.UserFlagAssignment.AddUser()))
{
#line default
#line hidden
#line 245 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(Html.AntiForgeryToken());
#line default
#line hidden
#line 245 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
@@ -955,14 +965,14 @@ WriteLiteral(" type=\"hidden\"");
WriteLiteral(" name=\"UserId\"");
WriteAttribute("value", Tuple.Create(" value=\"", 16008), Tuple.Create("\"", 16034)
WriteAttribute("value", Tuple.Create(" value=\"", 16023), Tuple.Create("\"", 16049)
#line 246 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 16016), Tuple.Create<System.Object, System.Int32>(Model.User.UserId
#line 247 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 16031), Tuple.Create<System.Object, System.Int32>(Model.User.UserId
#line default
#line hidden
, 16016), false)
, 16031), false)
);
WriteLiteral(" />\r\n");
@@ -984,13 +994,13 @@ WriteLiteral(" autocomplete=\"off\"");
WriteLiteral(" />\r\n");
#line 249 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 250 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 249 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 250 "..\..\Views\User\UserParts\_Subject.cshtml"
foreach (var userFlag in Model.AvailableUserFlags.OrderBy(jq => jq.Name))
{
@@ -1004,7 +1014,7 @@ WriteLiteral(" class=\"flag\"");
WriteLiteral(" data-userflagid=\"");
#line 251 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 252 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(userFlag.Id);
@@ -1015,7 +1025,7 @@ WriteLiteral("\"");
WriteLiteral(" data-userflagname=\"");
#line 251 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 252 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(userFlag.Name);
@@ -1025,32 +1035,32 @@ WriteLiteral("\"");
WriteLiteral(">\r\n <i");
WriteAttribute("class", Tuple.Create(" class=\"", 16599), Tuple.Create("\"", 16666)
, Tuple.Create(Tuple.Create("", 16607), Tuple.Create("fa", 16607), true)
, Tuple.Create(Tuple.Create(" ", 16609), Tuple.Create("fa-", 16610), true)
WriteAttribute("class", Tuple.Create(" class=\"", 16614), Tuple.Create("\"", 16681)
, Tuple.Create(Tuple.Create("", 16622), Tuple.Create("fa", 16622), true)
, Tuple.Create(Tuple.Create(" ", 16624), Tuple.Create("fa-", 16625), true)
#line 252 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 16613), Tuple.Create<System.Object, System.Int32>(userFlag.Icon
#line 253 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 16628), Tuple.Create<System.Object, System.Int32>(userFlag.Icon
#line default
#line hidden
, 16613), false)
, Tuple.Create(Tuple.Create(" ", 16629), Tuple.Create("fa-fw", 16630), true)
, Tuple.Create(Tuple.Create(" ", 16635), Tuple.Create("fa-lg", 16636), true)
, Tuple.Create(Tuple.Create(" ", 16641), Tuple.Create("d-", 16642), true)
, 16628), false)
, Tuple.Create(Tuple.Create(" ", 16644), Tuple.Create("fa-fw", 16645), true)
, Tuple.Create(Tuple.Create(" ", 16650), Tuple.Create("fa-lg", 16651), true)
, Tuple.Create(Tuple.Create(" ", 16656), Tuple.Create("d-", 16657), true)
#line 252 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 16644), Tuple.Create<System.Object, System.Int32>(userFlag.IconColour
#line 253 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 16659), Tuple.Create<System.Object, System.Int32>(userFlag.IconColour
#line default
#line hidden
, 16644), false)
, 16659), false)
);
WriteLiteral("></i>");
#line 252 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 253 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(userFlag.Name);
@@ -1059,7 +1069,7 @@ WriteLiteral("></i>");
WriteLiteral("\r\n </div>\r\n");
#line 254 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 255 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1083,7 +1093,7 @@ WriteLiteral("></textarea>\r\n </div>\r\n
" </div>\r\n");
#line 262 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 263 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1097,72 +1107,69 @@ WriteLiteral(" type=\"text/javascript\"");
WriteLiteral(">\r\n $(function () {\r\n " +
" const button = $(\'#User_Show_Details_Actions_AddFlag_Button\');\r\n " +
" let buttonDialog = null;\r\n " +
" const buttonLink = button.attr(\'href\');\r\n\r\n " +
" let flagPicker = null;\r\n let flagAddI" +
"d = null;\r\n let flagAddComments = null;\r\n " +
" let details = null;\r\n\r\n " +
" function flagSelected() {\r\n co" +
"nst flag = $(this);\r\n\r\n flagPicker.childr" +
"en().removeClass(\'selected\');\r\n flag.addC" +
"lass(\'selected\');\r\n\r\n flagAddId.val(flag." +
"attr(\'data-userflagid\'));\r\n\r\n details.sho" +
"w();\r\n\r\n flagAddComments.focus().select()" +
";\r\n }\r\n\r\n " +
"button.attr(\'href\', \'#\').click(function (e) {\r\n " +
" e.preventDefault();\r\n\r\n if (!butto" +
"nDialog) {\r\n buttonDialog = $(\'#User_" +
"Show_Details_Actions_AddFlag_Dialog\');\r\n " +
" buttonDialog.dialog({\r\n width" +
": 600,\r\n height: 410,\r\n " +
" resizable: false,\r\n " +
" modal: true,\r\n " +
" autoOpen: false,\r\n buttons" +
": {\r\n Cancel: function () {\r\n" +
" $(this).dialog(\"close\");" +
"\r\n },\r\n " +
" \"Add Flag\": function () {\r\n " +
" if (!!flagAddId.val()) {\r\n " +
" const $this = $(this);\r\n " +
" $this.dialog(\"disable\");\r\n " +
" $this.dialog(\"option\", \"buttons" +
"\", null);\r\n buttonDia" +
"log.find(\'form\').submit();\r\n " +
" } else {\r\n alert(" +
"\'Select a User Flag\');\r\n " +
"}\r\n }\r\n " +
" }\r\n });\r\n\r\n" +
" flagAddId = $(\'#User_Show_Details_Ac" +
"tions_AddFlag_Dialog_Id\');\r\n flagAddC" +
"omments = buttonDialog.find(\'#User_Show_Details_Actions_AddFlag_Dialog_Comments\'" +
");\r\n flagPicker = buttonDialog.find(\'" +
".flagPicker\');\r\n details = buttonDial" +
"og.find(\'.details\');\r\n\r\n $(\'#User_Sho" +
"w_Details_Actions_AddFlag_Dialog_Filter\').on(\'keyup\', function (e) {\r\n " +
" const filter = $(e.currentTarget).val().to" +
"LowerCase();\r\n if (filter) {\r\n " +
" flagPicker.children(\'div.flag\')" +
".each(function () {\r\n con" +
"st $this = $(this);\r\n if " +
"($this.attr(\'data-userflagname\').toLowerCase().indexOf(filter) >= 0) {\r\n " +
" $this.css(\'display\', \'block\'" +
");\r\n } else {\r\n " +
" $this.css(\'display\', \'none\');\r" +
"\n }\r\n " +
" });\r\n " +
" } else {\r\n flagPicker.ch" +
"ildren(\'div.flag\').each(function () { $(this).css(\'display\', \'block\'); });\r\n " +
" }\r\n " +
" });\r\n\r\n flagPicker.on(\'cli" +
"ck\', \'div.flag\', flagSelected);\r\n }\r\n\r\n " +
" $(\'#User_Show_Details_Actions_AddFlag_Dial" +
"og_Filter\').val(\'\');\r\n buttonDialog.dialo" +
"g(\'open\');\r\n return false;\r\n " +
" });\r\n });\r\n " +
" </script>\r\n");
" let buttonDialog = null;\r\n\r\n " +
" let flagPicker = null;\r\n let flagA" +
"ddId = null;\r\n let flagAddComments = null;\r\n " +
" let details = null;\r\n\r\n " +
" function flagSelected() {\r\n " +
" const flag = $(this);\r\n\r\n flagPicker.chi" +
"ldren().removeClass(\'selected\');\r\n flag.a" +
"ddClass(\'selected\');\r\n\r\n flagAddId.val(fl" +
"ag.attr(\'data-userflagid\'));\r\n\r\n details." +
"show();\r\n\r\n flagAddComments.focus().selec" +
"t();\r\n }\r\n\r\n " +
" button.click(function (e) {\r\n e.preven" +
"tDefault();\r\n\r\n if (!buttonDialog) {\r\n " +
" buttonDialog = $(\'#User_Show_Details_Ac" +
"tions_AddFlag_Dialog\');\r\n buttonDialo" +
"g.dialog({\r\n width: 600,\r\n " +
" height: 410,\r\n " +
" resizable: false,\r\n " +
" modal: true,\r\n autoOpen" +
": false,\r\n buttons: {\r\n " +
" Cancel: function () {\r\n " +
" $(this).dialog(\"close\");\r\n " +
" },\r\n " +
" \"Add Flag\": function () {\r\n " +
" if (!!flagAddId.val()) {\r\n " +
" buttonDialog\r\n " +
" .dialog(\"option\", \"buttons\", null)\r\n " +
" .find(\'form\').submit();\r\n " +
" } else {\r\n " +
" alert(\'Select a User Flag\');\r\n " +
" }\r\n " +
" }\r\n }\r\n " +
" });\r\n\r\n " +
" flagAddId = $(\'#User_Show_Details_Actions_AddFlag_Dialog_Id\');\r\n " +
" flagAddComments = buttonDialog.find(\'#User_Show_D" +
"etails_Actions_AddFlag_Dialog_Comments\');\r\n " +
" flagPicker = buttonDialog.find(\'.flagPicker\');\r\n " +
" details = buttonDialog.find(\'.details\');\r\n\r\n " +
" $(\'#User_Show_Details_Actions_AddFlag_Dialog_Filter\')" +
".on(\'keyup\', function (e) {\r\n con" +
"st filter = $(e.currentTarget).val().toLowerCase();\r\n " +
" if (filter) {\r\n " +
" flagPicker.children(\'div.flag\').each(function () {\r\n " +
" const $this = $(this);\r\n " +
" if ($this.attr(\'data-userflagname\').toLowerC" +
"ase().indexOf(filter) >= 0) {\r\n " +
" $this.css(\'display\', \'block\');\r\n " +
" } else {\r\n " +
" $this.css(\'display\', \'none\');\r\n " +
" }\r\n });\r\n " +
" } else {\r\n " +
" flagPicker.children(\'div.flag\').each(function () { $(t" +
"his).css(\'display\', \'block\'); });\r\n " +
" }\r\n });\r\n\r\n " +
" flagPicker.on(\'click\', \'div.flag\', flagSelected);\r\n " +
" }\r\n\r\n $(\'" +
"#User_Show_Details_Actions_AddFlag_Dialog_Filter\').val(\'\');\r\n " +
" buttonDialog.dialog(\'open\');\r\n " +
" return false;\r\n });\r\n " +
" });\r\n </script>\r\n");
#line 346 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 345 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1171,13 +1178,13 @@ WriteLiteral(">\r\n $(function () {\r\n
WriteLiteral(" </div>\r\n </div>\r\n </td>\r\n");
#line 350 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 349 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 350 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 349 "..\..\Views\User\UserParts\_Subject.cshtml"
if (Authorization.Has(Claims.User.ShowAssignments))
{
@@ -1195,13 +1202,13 @@ WriteLiteral(" id=\"User_Show_AssignedDevices_Active\"");
WriteLiteral(">\r\n <h3>Current Device Assignments</h3>\r\n");
#line 356 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 355 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 356 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 355 "..\..\Views\User\UserParts\_Subject.cshtml"
if (currentDeviceAssignments.Count > 0)
{
foreach (var assignment in currentDeviceAssignments)
@@ -1217,7 +1224,7 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment clearfix\"");
WriteLiteral(" data-deviceserialnumber=\"");
#line 360 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 359 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(assignment.DeviceSerialNumber);
@@ -1228,13 +1235,13 @@ WriteLiteral("\"");
WriteLiteral(">\r\n");
#line 361 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 360 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 361 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 360 "..\..\Views\User\UserParts\_Subject.cshtml"
if (Authorization.Has(Claims.Device.Show))
{
@@ -1243,14 +1250,14 @@ WriteLiteral(">\r\n");
#line hidden
WriteLiteral(" <a");
WriteAttribute("href", Tuple.Create(" href=\"", 23450), Tuple.Create("\"", 23517)
WriteAttribute("href", Tuple.Create(" href=\"", 23264), Tuple.Create("\"", 23331)
#line 363 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 23457), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Device.Show(assignment.Device.SerialNumber))
#line 362 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 23271), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.Device.Show(assignment.Device.SerialNumber))
#line default
#line hidden
, 23457), false)
, 23271), false)
);
WriteLiteral(">\r\n <img");
@@ -1259,20 +1266,20 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment_Image\"");
WriteLiteral(" alt=\"Model Image\"");
WriteAttribute("src", Tuple.Create(" src=\"", 23649), Tuple.Create("\"", 23770)
WriteAttribute("src", Tuple.Create(" src=\"", 23463), Tuple.Create("\"", 23584)
#line 364 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 23655), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.DeviceModel.Image(assignment.Device.DeviceModel.Id, assignment.Device.DeviceModel.ImageHash()))
#line 363 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 23469), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.DeviceModel.Image(assignment.Device.DeviceModel.Id, assignment.Device.DeviceModel.ImageHash()))
#line default
#line hidden
, 23655), false)
, 23469), false)
);
WriteLiteral(" />\r\n </a>\r\n");
#line 366 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 365 "..\..\Views\User\UserParts\_Subject.cshtml"
}
else
{
@@ -1286,20 +1293,20 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment_Image\"");
WriteLiteral(" alt=\"Model Image\"");
WriteAttribute("src", Tuple.Create(" src=\"", 24082), Tuple.Create("\"", 24203)
WriteAttribute("src", Tuple.Create(" src=\"", 23896), Tuple.Create("\"", 24017)
#line 369 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 24088), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.DeviceModel.Image(assignment.Device.DeviceModel.Id, assignment.Device.DeviceModel.ImageHash()))
#line 368 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 23902), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.DeviceModel.Image(assignment.Device.DeviceModel.Id, assignment.Device.DeviceModel.ImageHash()))
#line default
#line hidden
, 24088), false)
, 23902), false)
);
WriteLiteral(" />\r\n");
#line 370 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 369 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1327,13 +1334,13 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment_SerialNumber\
WriteLiteral(" data-clipboard>\r\n");
#line 380 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 379 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 380 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 379 "..\..\Views\User\UserParts\_Subject.cshtml"
if (Authorization.Has(Claims.Device.Show))
{
@@ -1341,14 +1348,14 @@ WriteLiteral(" data-clipboard>\r\n");
#line default
#line hidden
#line 382 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 381 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(Html.ActionLink(assignment.Device.SerialNumber, MVC.Device.Show(assignment.Device.SerialNumber)));
#line default
#line hidden
#line 382 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 381 "..\..\Views\User\UserParts\_Subject.cshtml"
}
else
@@ -1358,14 +1365,14 @@ WriteLiteral(" data-clipboard>\r\n");
#line default
#line hidden
#line 386 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 385 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(assignment.Device.SerialNumber);
#line default
#line hidden
#line 386 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 385 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1375,13 +1382,13 @@ WriteLiteral(" data-clipboard>\r\n");
WriteLiteral(" </span>\r\n");
#line 389 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 388 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 389 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 388 "..\..\Views\User\UserParts\_Subject.cshtml"
if (!string.IsNullOrWhiteSpace(assignment.Device.ComputerName))
{
@@ -1397,7 +1404,7 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment_ComputerName\
WriteLiteral(" data-clipboard>");
#line 391 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 390 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(assignment.Device.ComputerName);
@@ -1408,7 +1415,7 @@ WriteLiteral("</span>)");
WriteLiteral("\r\n");
#line 392 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 391 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1418,13 +1425,13 @@ WriteLiteral(" </td>\r\n
" </tr>\r\n");
#line 395 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 394 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 395 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 394 "..\..\Views\User\UserParts\_Subject.cshtml"
if (!string.IsNullOrEmpty(assignment.Device.AssetNumber))
{
@@ -1441,7 +1448,7 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment_Asset\"");
WriteLiteral(" data-clipboard>");
#line 400 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 399 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(assignment.Device.AssetNumber);
@@ -1451,7 +1458,7 @@ WriteLiteral("</span>\r\n
" </tr>\r\n");
#line 403 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 402 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1460,7 +1467,7 @@ WriteLiteral("</span>\r\n
WriteLiteral(" ");
#line 404 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 403 "..\..\Views\User\UserParts\_Subject.cshtml"
if (assignment.Device.DeviceModelId.HasValue)
{
@@ -1479,7 +1486,7 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment_Model\"");
WriteLiteral(">");
#line 411 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 410 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(assignment.Device.DeviceModel.ToString());
@@ -1489,7 +1496,7 @@ WriteLiteral("</span>\r\n
" </tr>\r\n");
#line 414 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 413 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1507,7 +1514,7 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment_Profile\"");
WriteLiteral(">");
#line 420 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 419 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(assignment.Device.DeviceProfile.ToString());
@@ -1517,13 +1524,13 @@ WriteLiteral("</span>\r\n
" </tr>\r\n");
#line 423 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 422 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 423 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 422 "..\..\Views\User\UserParts\_Subject.cshtml"
if (assignment.Device.DeviceBatchId.HasValue)
{
@@ -1542,7 +1549,7 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment_Batch\"");
WriteLiteral(">");
#line 430 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 429 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(assignment.Device.DeviceBatch.ToString());
@@ -1552,7 +1559,7 @@ WriteLiteral("</span>\r\n
" </tr>\r\n");
#line 433 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 432 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1568,7 +1575,7 @@ WriteLiteral(" class=\"User_Show_AssignedDevices_CurrentAssignment_Assigned\"");
WriteLiteral(">");
#line 437 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 436 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(CommonHelpers.FriendlyDate(assignment.AssignedDate));
@@ -1578,15 +1585,14 @@ WriteLiteral("</span>\r\n
" </tr>\r\n");
#line 440 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 439 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 440 "..\..\Views\User\UserParts\_Subject.cshtml"
if (Authorization.Has(Claims.Device.ShowFlagAssignments) &&
assignment.Device.DeviceFlagAssignments.Any(a => a.RemovedDate.HasValue))
#line 439 "..\..\Views\User\UserParts\_Subject.cshtml"
if (assignment.Device.DeviceFlagAssignments.CanShowAny())
{
@@ -1604,50 +1610,52 @@ WriteLiteral(" class=\"User_Show_Assigned_Devices_CurrentAssignment_Flags\"");
WriteLiteral(">\r\n");
#line 446 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 444 "..\..\Views\User\UserParts\_Subject.cshtml"
#line default
#line hidden
#line 446 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 444 "..\..\Views\User\UserParts\_Subject.cshtml"
foreach (var flag in assignment.Device.DeviceFlagAssignments.Where(f => !f.RemovedDate.HasValue).Select(f => Tuple.Create(f, DeviceFlagService.GetDeviceFlag(f.DeviceFlagId))))
{
if (flag.Item2.permission.CanShow())
{
#line default
#line hidden
WriteLiteral(" <i");
WriteLiteral(" <i");
WriteAttribute("class", Tuple.Create(" class=\"", 30837), Tuple.Create("\"", 30907)
, Tuple.Create(Tuple.Create("", 30845), Tuple.Create("flag", 30845), true)
, Tuple.Create(Tuple.Create(" ", 30849), Tuple.Create("fa", 30850), true)
, Tuple.Create(Tuple.Create(" ", 30852), Tuple.Create("fa-", 30853), true)
WriteAttribute("class", Tuple.Create(" class=\"", 30707), Tuple.Create("\"", 30787)
, Tuple.Create(Tuple.Create("", 30715), Tuple.Create("flag", 30715), true)
, Tuple.Create(Tuple.Create(" ", 30719), Tuple.Create("fa", 30720), true)
, Tuple.Create(Tuple.Create(" ", 30722), Tuple.Create("fa-", 30723), true)
#line 448 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 30856), Tuple.Create<System.Object, System.Int32>(flag.Item2.Icon
, Tuple.Create(Tuple.Create("", 30726), Tuple.Create<System.Object, System.Int32>(flag.Item2.flag.Icon
#line default
#line hidden
, 30856), false)
, Tuple.Create(Tuple.Create(" ", 30874), Tuple.Create("fa-fw", 30875), true)
, Tuple.Create(Tuple.Create(" ", 30880), Tuple.Create("d-", 30881), true)
, 30726), false)
, Tuple.Create(Tuple.Create(" ", 30749), Tuple.Create("fa-fw", 30750), true)
, Tuple.Create(Tuple.Create(" ", 30755), Tuple.Create("d-", 30756), true)
#line 448 "..\..\Views\User\UserParts\_Subject.cshtml"
, Tuple.Create(Tuple.Create("", 30883), Tuple.Create<System.Object, System.Int32>(flag.Item2.IconColour
, Tuple.Create(Tuple.Create("", 30758), Tuple.Create<System.Object, System.Int32>(flag.Item2.flag.IconColour
#line default
#line hidden
, 30883), false)
, 30758), false)
);
WriteLiteral(">\r\n <s" +
"pan");
WriteLiteral(">\r\n " +
" <span");
WriteLiteral(" class=\"details\"");
WriteLiteral(">\r\n " +
" <span");
" <span");
WriteLiteral(" class=\"name\"");
@@ -1655,7 +1663,7 @@ WriteLiteral(">");
#line 450 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(flag.Item2.Name);
Write(flag.Item2.flag.Name);
#line default
@@ -1664,8 +1672,8 @@ WriteLiteral("</span>");
#line 450 "..\..\Views\User\UserParts\_Subject.cshtml"
if (flag.Item1.Comments != null)
{
if (flag.Item1.Comments != null)
{
#line default
#line hidden
@@ -1677,7 +1685,7 @@ WriteLiteral(">");
#line 451 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(flag.Item1.Comments.ToHtmlComment());
Write(flag.Item1.Comments.ToHtmlComment());
#line default
@@ -1686,7 +1694,7 @@ WriteLiteral("</span>");
#line 451 "..\..\Views\User\UserParts\_Subject.cshtml"
}
}
#line default
#line hidden
@@ -1698,17 +1706,18 @@ WriteLiteral(">");
#line 451 "..\..\Views\User\UserParts\_Subject.cshtml"
Write(CommonHelpers.FriendlyDateAndUser(flag.Item1.AddedDate, flag.Item1.AddedUserId));
Write(CommonHelpers.FriendlyDateAndUser(flag.Item1.AddedDate, flag.Item1.AddedUserId));
#line default
#line hidden
WriteLiteral("</span>\r\n " +
" </span>\r\n " +
" </i>\r\n");
" </span>\r\n " +
" </i>\r\n");
#line 454 "..\..\Views\User\UserParts\_Subject.cshtml"
}
}
@@ -1761,7 +1770,7 @@ WriteLiteral(">\r\n
" </tr>\r\n");
#line 488 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 489 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1772,7 +1781,7 @@ WriteLiteral(" </tbody>\r\n
" </div>\r\n");
#line 493 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 494 "..\..\Views\User\UserParts\_Subject.cshtml"
}
}
else
@@ -1788,7 +1797,7 @@ WriteLiteral(" class=\"smallMessage\"");
WriteLiteral(">No Current Device Assignments</span>\r\n");
#line 498 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 499 "..\..\Views\User\UserParts\_Subject.cshtml"
}
@@ -1798,7 +1807,7 @@ WriteLiteral(" </div>\r\n </div>\r\n
"\r\n");
#line 502 "..\..\Views\User\UserParts\_Subject.cshtml"
#line 503 "..\..\Views\User\UserParts\_Subject.cshtml"
}