@model Disco.Web.Areas.Config.Models.UserFlag.ShowModel @using Disco.Services.Interop.ActiveDirectory; @using Disco.Services.Users.UserFlags; @using Disco.Web.Areas.Config.Models.Shared; @{ Authorization.Require(Claims.Config.UserFlag.Show); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "User Flags", MVC.Config.UserFlag.Index(null), Model.UserFlag.ToString()); var canConfig = Authorization.Has(Claims.Config.UserFlag.Configure); var canDelete = Authorization.Has(Claims.Config.UserFlag.Delete); var canBulkAssignment = Authorization.HasAll(Claims.User.Actions.AddFlags, Claims.User.Actions.RemoveFlags, Claims.User.ShowFlagAssignments); var canShowUsers = Model.CurrentAssignmentCount > 0 && Authorization.HasAll(Claims.User.Search, Claims.User.ShowFlagAssignments); var canExportCurrent = Model.CurrentAssignmentCount > 0 && Authorization.Has(Claims.Config.UserFlag.Export); var canExportAll = Model.TotalAssignmentCount > 0 && Authorization.Has(Claims.Config.UserFlag.Export); var hideAdvanced = Model.Permission.IsDefault() && Model.UserFlag.UserDevicesLinkedGroup == null && Model.UserFlag.UsersLinkedGroup == null && Model.UserFlag.OnAssignmentExpression == null && Model.UserFlag.OnUnassignmentExpression == null; Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); }
| Id: | @Html.DisplayFor(model => model.UserFlag.Id) | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Name: | @if (canConfig) { @Html.EditorFor(model => model.UserFlag.Name) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { @Model.UserFlag.Name } | ||||||||||||||||||||||
| Description: |
@if (canConfig)
{
@Html.EditorFor(model => model.UserFlag.Description)
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
}
else
{
@if (string.IsNullOrEmpty(Model.UserFlag.Description))
{
}
|
||||||||||||||||||||||
| Statistics: |
@Model.CurrentAssignmentCount user@(Model.CurrentAssignmentCount != 1 ? "s" : null) currently assigned
@Model.TotalAssignmentCount total user historical assignment@(Model.TotalAssignmentCount != 1 ? "s" : null)
|
||||||||||||||||||||||
| Icon: |
@if (canConfig)
{
@using (Html.BeginForm(MVC.API.UserFlag.UpdateIconAndColour(id: Model.UserFlag.Id, redirect: true)))
{
@Html.AntiForgeryToken()
}
@foreach (var colour in Model.ThemeColours)
{
}
@foreach (var icon in Model.Icons)
{
}
|
||||||||||||||||||||||
|
Assignment Permission Override: |
@if (!Model.Permission.IsDefault())
{
var permission = Model.Permission;
@if (permission.Inherit)
{
Inheriting from Authorization Roles
}
else
{
Authorization Roles are Ignored
}
if (!permission.HasSubjects())
{
There are no users/groups associated with this permission override
}
else
{
if (permission.IsSimple())
{
All users/groups/roles can view, assign, edit assignments, and remove assignments for this flag.
@using (Html.BeginForm(MVC.API.UserFlag.Permission(Model.UserFlag.Id)))
{
@Html.AntiForgeryToken()
}
Flag actions are normally authorized globally by @if (Authorization.Has(Claims.DiscoAdminAccount)) { Authorization Roles. } else { Authorization Roles. } Overriding individual flag permissions allows for targeted authorization. |
||||||||||||||||||||||
|
On Assignment Expression: |
@if (canConfig)
{
@Html.EditorFor(model => model.UserFlag.OnAssignmentExpression)
@AjaxHelpers.AjaxRemove()
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
}
else
{
if (string.IsNullOrWhiteSpace(Model.UserFlag.OnAssignmentExpression))
{
<None Specified>
}
else
{
@Model.UserFlag.OnAssignmentExpression
}
}
This expression will be evaluated whenever the user flag is assigned to a user. The output of the expression will be shown with the flag assignment. |
||||||||||||||||||||||
|
On Unassignment Expression: |
@if (canConfig)
{
@Html.EditorFor(model => model.UserFlag.OnUnassignmentExpression)
@AjaxHelpers.AjaxRemove()
@AjaxHelpers.AjaxSave()
@AjaxHelpers.AjaxLoader()
}
else
{
if (string.IsNullOrWhiteSpace(Model.UserFlag.OnUnassignmentExpression))
{
<None Specified>
}
else
{
@Model.UserFlag.OnUnassignmentExpression
}
}
This expression will be evaluated whenever the user flag is removed from a user. The output of the expression will be shown with the flag assignment. |
||||||||||||||||||||||
| Linked Groups: |
@Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel()
{
CanConfigure = canConfig,
CategoryDescription = UserFlagUsersManagedGroup.GetCategoryDescription(Model.UserFlag),
Description = UserFlagUsersManagedGroup.GetDescription(Model.UserFlag),
ManagedGroup = Model.UsersLinkedGroup,
IncludeFilterBeginDate = true,
UpdateUrl = Url.Action(MVC.API.UserFlag.UpdateAssignedUsersLinkedGroup(Model.UserFlag.Id, redirect: true))
})
@Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel()
{
CanConfigure = canConfig,
CategoryDescription = UserFlagUserDevicesManagedGroup.GetCategoryDescription(Model.UserFlag),
Description = UserFlagUserDevicesManagedGroup.GetDescription(Model.UserFlag),
ManagedGroup = Model.UserDevicesLinkedGroup,
IncludeFilterBeginDate = true,
UpdateUrl = Url.Action(MVC.API.UserFlag.UpdateAssignedUserDevicesLinkedGroup(Model.UserFlag.Id, redirect: true))
})
@if (canConfig)
{
@Html.Partial(MVC.Config.Shared.Views.LinkedGroupShared)
}
|
||||||||||||||||||||||
Select the mode used to assign users:
Specified users will have this flag added. Users who already have this flag will be skipped.
Specified users will have this flag added. Specified users which already have this flag will be skipped. Users who already have this flag but are not specified will have the flag removed.
<new line>, commas (,) or semicolons (;).
This item will be permanently deleted and cannot be recovered.
@if (Model.CurrentAssignmentCount > 0)
{
@Model.CurrentAssignmentCount user@(Model.CurrentAssignmentCount != 1 ? "s are" : " is") currently assigned
}
Are you sure?