From 815216fd73ce12c8ac16b2a017a463e01c45fad4 Mon Sep 17 00:00:00 2001 From: Gary Sharp Date: Wed, 11 Jun 2014 21:23:32 +1000 Subject: [PATCH] Update #26: User Flags Bulk Assignment Add or Override User Flag assignments in bulk. --- .../User/Flag/UserFlagAssignment.cs | 5 + Disco.Services/Disco.Services.csproj | 3 +- .../Users/UserFlags/UserFlagService.cs | 98 ++++ .../UserFlags/UserFlagsBulkAssignTask.cs | 104 ++++ .../API/Controllers/JobQueueController.cs | 3 +- .../API/Controllers/UserFlagController.cs | 40 +- .../Config/Views/DocumentTemplate/Show.cshtml | 7 +- .../Views/DocumentTemplate/Show.generated.cs | 276 ++++++----- .../Areas/Config/Views/UserFlag/Show.cshtml | 143 +++++- .../Config/Views/UserFlag/Show.generated.cs | 456 ++++++++++++++---- Disco.Web/ClientSource/Style/Config.css | 76 ++- Disco.Web/ClientSource/Style/Config.less | 106 +++- Disco.Web/ClientSource/Style/Config.min.css | 2 +- Disco.Web/T4MVC.cs | 62 +++ 14 files changed, 1150 insertions(+), 231 deletions(-) create mode 100644 Disco.Services/Users/UserFlags/UserFlagsBulkAssignTask.cs diff --git a/Disco.Models/Repository/User/Flag/UserFlagAssignment.cs b/Disco.Models/Repository/User/Flag/UserFlagAssignment.cs index 8e37a622..af195fb8 100644 --- a/Disco.Models/Repository/User/Flag/UserFlagAssignment.cs +++ b/Disco.Models/Repository/User/Flag/UserFlagAssignment.cs @@ -32,5 +32,10 @@ namespace Disco.Models.Repository public virtual User AddedUser { get; set; } [ForeignKey("RemovedUserId")] public virtual User RemovedUser { get; set; } + + public override string ToString() + { + return string.Format("User Flag Id: {0}; User Id: {1}; Added: {2:s}", UserFlagId, UserId, AddedDate); + } } } \ No newline at end of file diff --git a/Disco.Services/Disco.Services.csproj b/Disco.Services/Disco.Services.csproj index dd239a4f..26871d5b 100644 --- a/Disco.Services/Disco.Services.csproj +++ b/Disco.Services/Disco.Services.csproj @@ -300,6 +300,7 @@ + @@ -348,7 +349,7 @@ - + diff --git a/Disco.Services/Users/UserFlags/UserFlagService.cs b/Disco.Services/Users/UserFlags/UserFlagService.cs index 2c08f253..7ad720ab 100644 --- a/Disco.Services/Users/UserFlags/UserFlagService.cs +++ b/Disco.Services/Users/UserFlags/UserFlagService.cs @@ -3,6 +3,7 @@ using Disco.Models.Repository; using Disco.Services.Extensions; using Disco.Services.Tasks; using System; +using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; @@ -88,6 +89,103 @@ namespace Disco.Services.Users.UserFlags } #endregion + #region Bulk Assignment + public static IEnumerable BulkAssignAddUsers(DiscoDataContext Database, UserFlag UserFlag, User Technician, string Comments, List Users, IScheduledTaskStatus Status) + { + if (Users.Count > 0) + { + + double progressInterval; + string comments = string.IsNullOrWhiteSpace(Comments) ? null : Comments.Trim(); + + var addUsers = Users.Where(u => !u.UserFlagAssignments.Any(a => a.UserFlagId == UserFlag.Id && !a.RemovedDate.HasValue)).ToList(); + + progressInterval = (double)100 / addUsers.Count; + + var addedUserAssignments = addUsers.Select((user, index) => + { + Status.UpdateStatus(index * progressInterval, string.Format("Assigning Flag: {0}", user.ToString())); + + var fa = new UserFlagAssignment() + { + UserFlagId = UserFlag.Id, + UserId = user.UserId, + AddedDate = DateTime.Now, + AddedUserId = Technician.UserId, + Comments = comments + }; + + Database.UserFlagAssignments.Add(fa); + Database.SaveChanges(); + return fa; + }).Where(fa => fa != null).ToList(); + + Status.SetFinishedMessage(string.Format("{0} Users/s Added; {1} User/s Skipped", addUsers.Count, (Users.Count - addUsers.Count))); + + return addedUserAssignments; + } + else + { + Status.SetFinishedMessage("No changes found"); + return Enumerable.Empty(); + } + } + + public static IEnumerable BulkAssignOverrideUsers(DiscoDataContext Database, UserFlag UserFlag, User Technician, string Comments, List Users, IScheduledTaskStatus Status) + { + double progressInterval; + string comments = string.IsNullOrWhiteSpace(Comments) ? null : Comments.Trim(); + + Status.UpdateStatus(0, "Calculating assignment changes"); + + var currentAssignments = Database.UserFlagAssignments.Include("User").Where(a => a.UserFlagId == UserFlag.Id && !a.RemovedDate.HasValue).ToList(); + var removeAssignments = currentAssignments.Where(ca => !Users.Any(u => u.UserId.Equals(ca.UserId, StringComparison.OrdinalIgnoreCase))).ToList(); + var addUsers = Users.Where(u => !currentAssignments.Any(ca => ca.UserId.Equals(u.UserId, StringComparison.OrdinalIgnoreCase))).ToList(); + + if (removeAssignments.Count > 0 || addUsers.Count > 0) + { + progressInterval = (double)100 / (removeAssignments.Count + addUsers.Count); + var removedDateTime = DateTime.Now; + + removeAssignments.Select((flagAssignment, index) => + { + Status.UpdateStatus(index * progressInterval, string.Format("Removing Flag: {0}", flagAssignment.User.ToString())); + flagAssignment.RemovedDate = removedDateTime; + flagAssignment.RemovedUserId = Technician.UserId; + Database.SaveChanges(); + return flagAssignment; + }).ToList(); + + var addedUserAssignments = addUsers.Select((user, index) => + { + Status.UpdateStatus((removeAssignments.Count + index) * progressInterval, string.Format("Assigning Flag: {0}", user.ToString())); + + var fa = new UserFlagAssignment() + { + UserFlagId = UserFlag.Id, + UserId = user.UserId, + AddedDate = DateTime.Now, + AddedUserId = Technician.UserId, + Comments = comments + }; + + Database.UserFlagAssignments.Add(fa); + Database.SaveChanges(); + return fa; + }).ToList(); + + Status.SetFinishedMessage(string.Format("{0} Users/s Added; {1} User/s Removed; {2} User/s Skipped", addUsers.Count, removeAssignments.Count, (Users.Count - addUsers.Count))); + + return addedUserAssignments; + } + else + { + Status.SetFinishedMessage("No changes found"); + return Enumerable.Empty(); + } + } + #endregion + public static string RandomUnusedIcon() { return UIHelpers.RandomIcon(_cache.GetUserFlags().Select(f => f.Icon)); diff --git a/Disco.Services/Users/UserFlags/UserFlagsBulkAssignTask.cs b/Disco.Services/Users/UserFlags/UserFlagsBulkAssignTask.cs new file mode 100644 index 00000000..8c39534f --- /dev/null +++ b/Disco.Services/Users/UserFlags/UserFlagsBulkAssignTask.cs @@ -0,0 +1,104 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Services.Interop.ActiveDirectory; +using Disco.Services.Tasks; +using Quartz; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Disco.Services.Users.UserFlags +{ + public class UserFlagBulkAssignTask : ScheduledTask + { + public override string TaskName { get { return "User Flags - Bulk Assign Users"; } } + + public override bool SingleInstanceTask { get { return false; } } + public override bool CancelInitiallySupported { get { return false; } } + public override bool LogExceptionsOnly { get { return true; } } + + protected override void ExecuteTask() + { + int UserFlagId = (int)this.ExecutionContext.JobDetail.JobDataMap["UserFlagId"]; + string TechnicianUserId = (string)this.ExecutionContext.JobDetail.JobDataMap["TechnicianUserId"]; + string Comments = (string)this.ExecutionContext.JobDetail.JobDataMap["Comments"]; + List UserIds = (List)this.ExecutionContext.JobDetail.JobDataMap["UserIds"]; + bool Override = (bool)this.ExecutionContext.JobDetail.JobDataMap["Override"]; + + using (DiscoDataContext Database = new DiscoDataContext()) + { + // Load Flag + var userFlag = Database.UserFlags.FirstOrDefault(uf => uf.Id == UserFlagId); + + if (userFlag == null) + throw new Exception("Invalid User Flag Id"); + Status.UpdateStatus(0, string.Format("Bulk Assigning Users to User Flag: {0}", userFlag.Name), "Preparing to start"); + + // Load Technician + var technician = Database.Users.FirstOrDefault(user => user.UserId == TechnicianUserId); + if (technician == null) + throw new Exception("Invalid Technician User Id"); + + // Parse Users + var userIds = UserIds + .Select(u => u.Contains('\\') ? u : string.Concat(ActiveDirectory.Context.PrimaryDomain.NetBiosName, @"\", u)) + .Distinct(StringComparer.OrdinalIgnoreCase).ToList(); + + Status.UpdateStatus(10, "Loading users from the database"); + var users = Database.Users.Include("UserFlagAssignments").Where(u => userIds.Contains(u.UserId)).ToList(); + + var missingUserIds = userIds.Where(uid => !users.Any(u => u.UserId.Equals(uid, StringComparison.OrdinalIgnoreCase))).ToList(); + + if (missingUserIds.Count > 0) + { + var invalidUsersIds = new List(); + + for (int index = 0; index < missingUserIds.Count; index++) + { + var userId = missingUserIds[index]; + Status.UpdateStatus(20 + (index * ((double)30 / missingUserIds.Count)), string.Format("Loading user from Active Directory: {0}", userId)); + try + { + users.Add(UserService.GetUser(userId, Database, true)); + } + catch (Exception) + { + invalidUsersIds.Add(userId); + } + } + + if (invalidUsersIds.Count > 0) + throw new InvalidOperationException(string.Format("Bulk assignment aborted, invalid User Ids: {0}", string.Join(", ", invalidUsersIds))); + } + users = users.OrderBy(u => u.UserId).ToList(); + + Status.ProgressOffset = 50; + Status.ProgressMultiplier = 0.5; + + if (Override) + { + UserFlagService.BulkAssignOverrideUsers(Database, userFlag, technician, Comments, users, Status); + } + else + { + UserFlagService.BulkAssignAddUsers(Database, userFlag, technician, Comments, users, Status); + } + } + } + + public static ScheduledTaskStatus ScheduleBulkAssignUsers(UserFlag UserFlag, User Technician, string Comments, List UserIds, bool Override) + { + JobDataMap taskData = new JobDataMap() { + {"UserFlagId", UserFlag.Id }, + {"TechnicianUserId", Technician.UserId }, + {"Comments", Comments }, + {"UserIds", UserIds }, + {"Override", Override } + }; + + var instance = new UserFlagBulkAssignTask(); + + return instance.ScheduleTask(taskData); + } + } +} \ No newline at end of file diff --git a/Disco.Web/Areas/API/Controllers/JobQueueController.cs b/Disco.Web/Areas/API/Controllers/JobQueueController.cs index 27b3ad66..55a523bf 100644 --- a/Disco.Web/Areas/API/Controllers/JobQueueController.cs +++ b/Disco.Web/Areas/API/Controllers/JobQueueController.cs @@ -350,8 +350,7 @@ namespace Disco.Web.Areas.API.Controllers var jq = Database.JobQueues.Find(id); if (jq != null) { - - var status = JobQueueDeleteTask.ScheduleNow(id); + var status = JobQueueDeleteTask.ScheduleNow(jq.Id); status.SetFinishedUrl(Url.Action(MVC.Config.JobQueue.Index(null))); if (redirect.HasValue && redirect.Value) diff --git a/Disco.Web/Areas/API/Controllers/UserFlagController.cs b/Disco.Web/Areas/API/Controllers/UserFlagController.cs index 14580b8d..7ad00b63 100644 --- a/Disco.Web/Areas/API/Controllers/UserFlagController.cs +++ b/Disco.Web/Areas/API/Controllers/UserFlagController.cs @@ -1,8 +1,10 @@ using Disco.Models.Repository; using Disco.Services.Authorization; +using Disco.Services.Tasks; using Disco.Services.Users.UserFlags; using Disco.Services.Web; using System; +using System.Linq; using System.Web.Mvc; namespace Disco.Web.Areas.API.Controllers @@ -164,16 +166,15 @@ namespace Disco.Web.Areas.API.Controllers #endregion #region Actions - [DiscoAuthorize(Claims.Config.UserFlag.Delete)] + [DiscoAuthorizeAll(Claims.Config.UserFlag.Configure, Claims.Config.UserFlag.Delete)] public virtual ActionResult Delete(int id, Nullable redirect = false) { try { - var jq = Database.UserFlags.Find(id); - if (jq != null) + var uf = Database.UserFlags.FirstOrDefault(f => f.Id == id); + if (uf != null) { - - var status = UserFlagDeleteTask.ScheduleNow(id); + var status = UserFlagDeleteTask.ScheduleNow(uf.Id); status.SetFinishedUrl(Url.Action(MVC.Config.UserFlag.Index(null))); if (redirect.HasValue && redirect.Value) @@ -191,6 +192,35 @@ namespace Disco.Web.Areas.API.Controllers return Json(string.Format("Error: {0}", ex.Message), JsonRequestBehavior.AllowGet); } } + + [DiscoAuthorizeAll(Claims.Config.UserFlag.Configure, Claims.User.Actions.AddFlags, Claims.User.Actions.RemoveFlags, Claims.User.ShowFlagAssignments)] + public virtual ActionResult BulkAssignUsers(int id, bool Override, string UserIds = null, string Comments = null) + { + if (id < 0) + throw new ArgumentNullException("id"); + var userFlag = Database.UserFlags.FirstOrDefault(f => f.Id == id); + if (userFlag == null) + throw new ArgumentException("Invalid User Flag Id", "id"); + + var userIds = UserIds.Split(new string[] { Environment.NewLine, ",", ";" }, StringSplitOptions.RemoveEmptyEntries).Select(d => d.Trim()).Where(d => !string.IsNullOrEmpty(d)).ToList(); + + var taskStatus = UserFlagBulkAssignTask.ScheduleBulkAssignUsers(userFlag, CurrentUser, Comments, userIds, Override); + taskStatus.SetFinishedUrl(Url.Action(MVC.Config.UserFlag.Index(userFlag.Id))); + return RedirectToAction(MVC.Config.Logging.TaskStatus(taskStatus.SessionId)); + } + [DiscoAuthorizeAll(Claims.Config.UserFlag.Configure, Claims.User.Actions.AddFlags, Claims.User.Actions.RemoveFlags, Claims.User.ShowFlagAssignments)] + public virtual ActionResult AssignedUsers(int id) + { + if (id < 0) + throw new ArgumentNullException("id"); + var userFlag = Database.UserFlags.FirstOrDefault(f => f.Id == id); + if (userFlag == null) + throw new ArgumentException("Invalid User Flag Id", "id"); + + var assignedUsers = Database.UserFlagAssignments.Where(a => a.UserFlagId == userFlag.Id && !a.RemovedDate.HasValue).OrderBy(a => a.UserId).Select(a => a.UserId).ToList(); + + return Json(assignedUsers, JsonRequestBehavior.AllowGet); + } #endregion } } \ No newline at end of file diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.cshtml b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.cshtml index 5072339b..e0f2051d 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.cshtml +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.cshtml @@ -1,4 +1,5 @@ @model Disco.Web.Areas.Config.Models.DocumentTemplate.ShowModel +@using Disco.Services.Interop.ActiveDirectory; @{ Authorization.Require(Claims.Config.DocumentTemplate.Show); @@ -509,9 +510,9 @@ break; case 'User': dialog.find('.scopeDescBulkGenerate').text('User Ids'); - dialog.find('.example1').html('user6
smi0099
rsmith'); - dialog.find('.example2').text('user6,smi0099,rsmith'); - dialog.find('.example3').text('user6;smi0099;rsmith'); + dialog.find('.example1').html('user6
smi0099
@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\\rsmith'); + dialog.find('.example2').text('user6,smi0099,@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\\rsmith'); + dialog.find('.example3').text('user6;smi0099;@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\\rsmith'); break; } diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs index 42a74ff6..b50214af 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs @@ -31,6 +31,12 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate using Disco.Models.Repository; using Disco.Services; using Disco.Services.Authorization; + + #line 2 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + using Disco.Services.Interop.ActiveDirectory; + + #line default + #line hidden using Disco.Services.Web; using Disco.Web; using Disco.Web.Extensions; @@ -45,7 +51,7 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate public override void Execute() { - #line 2 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 3 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Authorization.Require(Claims.Config.DocumentTemplate.Show); @@ -87,7 +93,7 @@ WriteLiteral(">\r\n \r\n \r\n \r\n \r\n \r\n "s:\r\n \r\n \r\n \r\n \r\n " \r\n \r\n \r\n \r\n #line default #line hidden - #line 49 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 50 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.TextBoxFor(model => model.DocumentTemplate.Description)); #line default #line hidden - #line 49 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 50 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 50 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 51 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 50 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 51 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 51 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 52 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 51 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 52 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" @@ -183,7 +189,7 @@ WriteLiteral(@"> url: '"); - #line 72 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 73 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Url.Action(MVC.API.DocumentTemplate.UpdateDescription(Model.DocumentTemplate.Id))); @@ -211,7 +217,7 @@ WriteLiteral(@"', "); - #line 91 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 92 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -228,7 +234,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral("><None Specified>\r\n"); - #line 97 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 98 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -237,14 +243,14 @@ WriteLiteral("><None Specified>\r\n"); #line default #line hidden - #line 100 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 101 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.Description); #line default #line hidden - #line 100 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 101 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } } @@ -256,7 +262,7 @@ WriteLiteral(" \r\n \r\n \r\n "rm:\r\n \r\n \r\n \r\n \r\n " \r\n \r\n \r\n \r\n #line default #line hidden - #line 141 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 142 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.DropDownListFor(model => model.DocumentTemplate.Scope, Model.Scopes.ToSelectListItems(null))); #line default #line hidden - #line 141 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 142 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 142 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 143 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 142 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 143 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" @@ -418,7 +424,7 @@ WriteLiteral(@"> url: '"); - #line 150 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 151 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Url.Action(MVC.API.DocumentTemplate.UpdateScope(Model.DocumentTemplate.Id))); @@ -457,7 +463,7 @@ WriteLiteral(@"', "); - #line 180 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 181 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -468,7 +474,7 @@ WriteLiteral(@"', WriteLiteral("
"); - #line 183 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 184 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.Scope); @@ -477,7 +483,7 @@ WriteLiteral("
"); WriteLiteral("
\r\n"); - #line 184 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 185 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -486,7 +492,7 @@ WriteLiteral("
\r\n"); WriteLiteral(" "); - #line 185 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 186 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig || (Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.Job)) { @@ -500,7 +506,7 @@ WriteLiteral(" id=\"Config_DocumentTemplates_JobSubTypes\""); WriteLiteral(" "); - #line 187 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 188 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.Scope != DocumentTemplate.DocumentTemplateScopes.Job ? "style=\"display: none;\" " : null); @@ -509,13 +515,13 @@ WriteLiteral(" "); WriteLiteral(">\r\n

Filter:

\r\n
\r\n"); - #line 190 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 191 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 190 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 191 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (Model.DocumentTemplate.JobSubTypes.Count > 0) { @@ -525,13 +531,13 @@ WriteLiteral(">\r\n

Filter:

\r\n WriteLiteral("
    \r\n"); - #line 193 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 194 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 193 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 194 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" foreach (var jobType in Model.DocumentTemplate.JobSubTypes.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) { @@ -543,7 +549,7 @@ WriteLiteral("
  • \r\n"); WriteLiteral(" "); - #line 196 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 197 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(jobType.Key.Description); @@ -552,13 +558,13 @@ WriteLiteral(" "); WriteLiteral("\r\n
      \r\n"); - #line 198 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 199 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 198 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 199 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) { @@ -572,7 +578,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral(">[All Sub Types]\r\n"); - #line 201 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 202 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -585,7 +591,7 @@ WriteLiteral(">[All Sub Types]\r\n"); WriteLiteral("
    • "); - #line 206 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 207 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(jobSubType.Description); @@ -594,7 +600,7 @@ WriteLiteral("
    • "); WriteLiteral("
    • \r\n"); - #line 207 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 208 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } } @@ -605,7 +611,7 @@ WriteLiteral("
    \r\n "
  • \r\n"); - #line 211 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 212 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -614,7 +620,7 @@ WriteLiteral("
\r\n WriteLiteral(" \r\n"); - #line 213 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 214 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -629,7 +635,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral("><No Filter>\r\n"); - #line 217 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 218 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -638,13 +644,13 @@ WriteLiteral("><No Filter>\r\n"); WriteLiteral("
\r\n"); - #line 219 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 220 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 219 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 220 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { @@ -672,13 +678,13 @@ WriteLiteral(" title=\"Job Type Filter\""); WriteLiteral(">\r\n"); - #line 223 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 224 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 223 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 224 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" using (Html.BeginForm(MVC.API.DocumentTemplate.UpdateJobSubTypes(Model.DocumentTemplate.Id, null, true))) { var selectedTypes = Model.DocumentTemplate.JobSubTypes.Select(jst => jst.JobType).Distinct().ToList(); @@ -695,35 +701,35 @@ WriteLiteral(" class=\"jobTypes\""); WriteLiteral(">\r\n

\r\n " + " (jt.Id + #line 231 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" +, Tuple.Create(Tuple.Create("", 12070), Tuple.Create(jt.Id #line default #line hidden -, 12022), false) +, 12070), false) ); WriteLiteral(" class=\"jobType\""); WriteLiteral(" type=\"checkbox\""); -WriteAttribute("value", Tuple.Create(" value=\"", 12063), Tuple.Create("\"", 12079) +WriteAttribute("value", Tuple.Create(" value=\"", 12111), Tuple.Create("\"", 12127) - #line 230 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - , Tuple.Create(Tuple.Create("", 12071), Tuple.Create(jt.Id + #line 231 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + , Tuple.Create(Tuple.Create("", 12119), Tuple.Create(jt.Id #line default #line hidden -, 12071), false) +, 12119), false) ); WriteLiteral(" "); - #line 230 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 231 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(selectedTypes.Contains(jt) ? "checked=\"checked\"" : null); @@ -731,21 +737,21 @@ WriteLiteral(" "); #line hidden WriteLiteral(" />(jt.Id + #line 231 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + , Tuple.Create(Tuple.Create("", 12210), Tuple.Create(jt.Id #line default #line hidden -, 12162), false) +, 12210), false) ); WriteLiteral(">"); - #line 230 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 231 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(jt.Description); @@ -753,15 +759,15 @@ WriteLiteral(">"); #line hidden WriteLiteral("

\r\n (jt.Id + #line 232 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" +, Tuple.Create(Tuple.Create("", 12308), Tuple.Create(jt.Id #line default #line hidden -, 12260), false) +, 12308), false) ); WriteLiteral(" class=\"jobSubTypes\""); @@ -771,7 +777,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 232 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 233 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div")); @@ -782,7 +788,7 @@ WriteLiteral("\r\n"); WriteLiteral(" "); - #line 233 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 234 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.DocumentTemplate.JobSubTypes), 2)); @@ -792,7 +798,7 @@ WriteLiteral("\r\n \r\n " \r\n"); - #line 236 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 237 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } } @@ -845,7 +851,7 @@ WriteLiteral(" \r\n"); - #line 301 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 302 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -854,7 +860,7 @@ WriteLiteral(" \r\n"); +"example1\').html(\'user6
smi0099
"); - #line 523 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 513 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(ActiveDirectory.Context.PrimaryDomain.NetBiosName); + + + #line default + #line hidden +WriteLiteral("\\\\rsmith\');\r\n dialog.find(\'.example2\').text(\'user6,smi" + +"0099,"); + + + #line 514 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(ActiveDirectory.Context.PrimaryDomain.NetBiosName); + + + #line default + #line hidden +WriteLiteral("\\\\rsmith\');\r\n dialog.find(\'.example3\').text(\'user6;smi" + +"0099;"); + + + #line 515 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(ActiveDirectory.Context.PrimaryDomain.NetBiosName); + + + #line default + #line hidden +WriteLiteral("\\\\rsmith\');\r\n break;\r\n }\r\n\r\n " + +" dialog.dialog(\'open\');\r\n return false;\r\n " + +" });\r\n });\r\n \r\n"); + + + #line 524 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -1364,7 +1396,7 @@ WriteLiteral(" + } + + + @if (canDelete) { @Html.ActionLinkButton("Delete", MVC.API.UserFlag.Delete(Model.UserFlag.Id, true), "Config_UserFlags_Actions_Delete_Button") diff --git a/Disco.Web/Areas/Config/Views/UserFlag/Show.generated.cs b/Disco.Web/Areas/Config/Views/UserFlag/Show.generated.cs index e2058232..52a5504d 100644 --- a/Disco.Web/Areas/Config/Views/UserFlag/Show.generated.cs +++ b/Disco.Web/Areas/Config/Views/UserFlag/Show.generated.cs @@ -32,6 +32,12 @@ namespace Disco.Web.Areas.Config.Views.UserFlag using Disco.Services; using Disco.Services.Authorization; + #line 3 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + using Disco.Services.Interop.ActiveDirectory; + + #line default + #line hidden + #line 2 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" using Disco.Services.Users.UserFlags; @@ -51,7 +57,7 @@ namespace Disco.Web.Areas.Config.Views.UserFlag public override void Execute() { - #line 3 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 4 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Authorization.Require(Claims.Config.UserFlag.Show); @@ -59,6 +65,7 @@ namespace Disco.Web.Areas.Config.Views.UserFlag 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); Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); @@ -83,7 +90,7 @@ WriteLiteral(">Id:\r\n \r\n
\r\n \r\n \r\n " \r\n \r\n \r\n \r\n " \r\n \r\n \r\n \r\n " \r\n \r\n \r\n \r\n WriteLiteral(" user"); - #line 84 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 86 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Model.CurrentAssignmentCount != 1 ? "s" : null); @@ -340,7 +347,7 @@ WriteLiteral(" user"); WriteLiteral(" currently assigned\r\n
"); - #line 85 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 87 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Model.TotalAssignmentCount); @@ -349,7 +356,7 @@ WriteLiteral(" currently assigned
\r\n
"); WriteLiteral(" total user historical assignment"); - #line 85 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 87 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Model.TotalAssignmentCount != 1 ? "s" : null); @@ -363,7 +370,7 @@ WriteLiteral(" id=\"Config_UserFlags_Icon\""); WriteLiteral(" data-icon=\""); - #line 92 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 94 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Model.UserFlag.Icon); @@ -374,7 +381,7 @@ WriteLiteral("\""); WriteLiteral(" data-colour=\""); - #line 92 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 94 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Model.UserFlag.IconColour); @@ -382,37 +389,37 @@ WriteLiteral(" data-colour=\""); #line hidden WriteLiteral("\""); -WriteAttribute("class", Tuple.Create(" class=\"", 3620), Tuple.Create("\"", 3693) -, Tuple.Create(Tuple.Create("", 3628), Tuple.Create("fa", 3628), true) -, Tuple.Create(Tuple.Create(" ", 3630), Tuple.Create("fa-", 3631), true) +WriteAttribute("class", Tuple.Create(" class=\"", 3815), Tuple.Create("\"", 3888) +, Tuple.Create(Tuple.Create("", 3823), Tuple.Create("fa", 3823), true) +, Tuple.Create(Tuple.Create(" ", 3825), Tuple.Create("fa-", 3826), true) - #line 92 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" - , Tuple.Create(Tuple.Create("", 3634), Tuple.Create(Model.UserFlag.Icon + #line 94 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + , Tuple.Create(Tuple.Create("", 3829), Tuple.Create(Model.UserFlag.Icon #line default #line hidden -, 3634), false) -, Tuple.Create(Tuple.Create(" ", 3656), Tuple.Create("fa-4x", 3657), true) -, Tuple.Create(Tuple.Create(" ", 3662), Tuple.Create("d-", 3663), true) +, 3829), false) +, Tuple.Create(Tuple.Create(" ", 3851), Tuple.Create("fa-4x", 3852), true) +, Tuple.Create(Tuple.Create(" ", 3857), Tuple.Create("d-", 3858), true) - #line 92 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" - , Tuple.Create(Tuple.Create("", 3665), Tuple.Create(Model.UserFlag.IconColour + #line 94 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + , Tuple.Create(Tuple.Create("", 3860), Tuple.Create(Model.UserFlag.IconColour #line default #line hidden -, 3665), false) +, 3860), false) ); WriteLiteral(">\r\n"); - #line 93 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 95 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" #line default #line hidden - #line 93 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 95 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" if (canConfig) { @@ -442,13 +449,13 @@ WriteLiteral(" class=\"icons\""); WriteLiteral(">\r\n"); - #line 100 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 102 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" #line default #line hidden - #line 100 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 102 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" foreach (var icon in Model.Icons) { @@ -460,7 +467,7 @@ WriteLiteral("
\r\n "save() {\r\n var url = \'"); - #line 169 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 171 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Url.Action(MVC.API.UserFlag.UpdateIconAndColour(id: Model.UserFlag.Id, redirect: true))); @@ -636,7 +643,7 @@ WriteLiteral(@"', "); - #line 191 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 193 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" } @@ -645,8 +652,8 @@ WriteLiteral(@"', WriteLiteral(" \r\n \r\n
Id:\r\n " "); - #line 35 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 36 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.DisplayFor(model => model.DocumentTemplate.Id)); @@ -97,7 +103,7 @@ WriteLiteral("\r\n
"); - #line 41 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 42 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.DisplayFor(model => model.StoredInstanceCount)); @@ -107,7 +113,7 @@ WriteLiteral("\r\n
"); - #line 47 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 48 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { @@ -115,42 +121,42 @@ WriteLiteral("\r\n
"); - #line 108 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 109 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { @@ -272,7 +278,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 110 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 111 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.FlattenForm ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -281,20 +287,20 @@ WriteLiteral(" "); WriteLiteral("/>\r\n"); - #line 111 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 112 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 111 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 112 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 111 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 112 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" @@ -313,7 +319,7 @@ WriteLiteral(@"> $.getJSON('"); - #line 118 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 119 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Url.Action(MVC.API.DocumentTemplate.UpdateFlattenForm(Model.DocumentTemplate.Id))); @@ -333,7 +339,7 @@ WriteLiteral(@"', data, function (response, result) { "); - #line 129 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 130 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -350,7 +356,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 132 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 133 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.FlattenForm ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -359,7 +365,7 @@ WriteLiteral(" "); WriteLiteral(" disabled=\"disabled\" />\r\n"); - #line 133 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 134 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -369,7 +375,7 @@ WriteLiteral("
"); - #line 139 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 140 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { @@ -377,28 +383,28 @@ WriteLiteral("
\r\n"); WriteLiteral(" "); - #line 20 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 22 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Html.DisplayFor(model => model.UserFlag.Id)); @@ -93,49 +100,49 @@ WriteLiteral("\r\n
"); - #line 26 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 28 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" if (canConfig) { #line default #line hidden - #line 27 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 29 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Html.EditorFor(model => model.UserFlag.Name)); #line default #line hidden - #line 27 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 29 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" #line default #line hidden - #line 28 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 30 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 28 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 30 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" #line default #line hidden - #line 29 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 31 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 29 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 31 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" @@ -150,7 +157,7 @@ WriteLiteral(">\r\n $(function () {\r\n " \'Invalid Name\',\r\n \'"); - #line 35 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 37 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Url.Action(MVC.API.UserFlag.UpdateName(Model.UserFlag.Id))); @@ -160,7 +167,7 @@ WriteLiteral("\',\r\n \'FlagName\'\r\n " });\r\n \r\n"); - #line 40 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 42 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" } else { @@ -169,14 +176,14 @@ WriteLiteral("\',\r\n \'FlagName\'\r\n #line default #line hidden - #line 43 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 45 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Model.UserFlag.Name); #line default #line hidden - #line 43 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 45 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" } @@ -187,49 +194,49 @@ WriteLiteral("
"); - #line 50 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 52 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" if (canConfig) { #line default #line hidden - #line 51 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 53 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Html.EditorFor(model => model.UserFlag.Description)); #line default #line hidden - #line 51 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 53 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" #line default #line hidden - #line 52 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 54 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 52 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 54 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" #line default #line hidden - #line 53 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 55 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 53 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 55 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" @@ -245,7 +252,7 @@ WriteLiteral(">\r\n $(function () {\r\n " \'"); - #line 59 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 61 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Url.Action(MVC.API.UserFlag.UpdateDescription(Model.UserFlag.Id))); @@ -255,7 +262,7 @@ WriteLiteral("\',\r\n \'Description\'\r\n " });\r\n \r\n"); - #line 64 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 66 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" } else { @@ -266,13 +273,13 @@ WriteLiteral("\',\r\n \'Description\'\r\n WriteLiteral("
\r\n");
 
             
-            #line 68 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
+            #line 70 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
                     
             
             #line default
             #line hidden
             
-            #line 68 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
+            #line 70 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
                      if (string.IsNullOrEmpty(Model.UserFlag.Description))
                     {
 
@@ -286,7 +293,7 @@ WriteLiteral("<None>");
 WriteLiteral("\r\n");
 
             
-            #line 71 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
+            #line 73 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
                     }
                     else
                     {
@@ -295,14 +302,14 @@ WriteLiteral("\r\n");
             #line default
             #line hidden
             
-            #line 74 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
+            #line 76 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
                    Write(Model.UserFlag.Description.ToHtmlComment());
 
             
             #line default
             #line hidden
             
-            #line 74 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
+            #line 76 "..\..\Areas\Config\Views\UserFlag\Show.cshtml"
                                                                    
                     }
 
@@ -312,7 +319,7 @@ WriteLiteral("\r\n");
 WriteLiteral("                    
\r\n"); - #line 77 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 79 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" } @@ -322,7 +329,7 @@ WriteLiteral("
\r\n
"); - #line 84 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 86 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Model.CurrentAssignmentCount); @@ -331,7 +338,7 @@ WriteLiteral("
\r\n\r\n"); - #line 196 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" - if (canDelete || canShowUsers) + #line 198 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + if (canBulkAssignment || canDelete || canShowUsers) { @@ -659,13 +666,274 @@ WriteLiteral(" class=\"actionBar\""); WriteLiteral(">\r\n"); - #line 199 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 201 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" #line default #line hidden - #line 199 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 201 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + if (canBulkAssignment) + { + + + #line default + #line hidden +WriteLiteral(" Bulk Assign Users\r\n"); + +WriteLiteral(" \r\n

\r\n Select the mode used to assign users:" + +"\r\n

\r\n
\r\n \r\n
Add
+

+ Specified users will have this flag added. Users who already have this flag will be skipped. +

+
+ \r\n
Override
+

+ 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. +

+ + + +"); + +WriteLiteral(" \r\n \r\n
\r\n Enter multiple User" + +" Ids separated by <new line>, commas (," + +") or semicolons (;).\r\n
\r\n " + +" \r\n

Examples:

\r\n \r\n user6
\r\n smi0099\r\n"); + +WriteLiteral(" "); + + + #line 234 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + Write(ActiveDirectory.Context.PrimaryDomain.NetBiosName); + + + #line default + #line hidden +WriteLiteral("\\rsmith\r\n \r\n user6,smi0099,"); + + + #line 236 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + Write(ActiveDirectory.Context.PrimaryDomain.NetBiosName); + + + #line default + #line hidden +WriteLiteral("\\rsmith\r\n user6;smi0099;"); + + + #line 237 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + Write(ActiveDirectory.Context.PrimaryDomain.NetBiosName); + + + #line default + #line hidden +WriteLiteral("\\rsmith\r\n \r\n \r\n " + +" \r\n

Loading current assignments...

\r\n \r\n " + +" \r\n \r\n

Comments:

\r\n \r\n \r\n \r\n"); + +WriteLiteral(" +"); + + + #line 336 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + } + + + #line default + #line hidden +WriteLiteral("\r\n\r\n\r\n"); + + + #line 340 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + + + #line default + #line hidden + + #line 340 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" if (canDelete) { @@ -673,14 +941,14 @@ WriteLiteral(">\r\n"); #line default #line hidden - #line 201 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 342 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Html.ActionLinkButton("Delete", MVC.API.UserFlag.Delete(Model.UserFlag.Id, true), "Config_UserFlags_Actions_Delete_Button")); #line default #line hidden - #line 201 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 342 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" @@ -700,13 +968,13 @@ WriteLiteral(">\r\n This item will be permanently deleted "covered.
\r\n
\r\n"); - #line 207 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 348 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" #line default #line hidden - #line 207 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 348 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" if (Model.CurrentAssignmentCount > 0) { @@ -716,7 +984,7 @@ WriteLiteral(">\r\n This item will be permanently deleted WriteLiteral(" "); - #line 209 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 350 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Model.CurrentAssignmentCount); @@ -725,7 +993,7 @@ WriteLiteral(" "); WriteLiteral(" user"); - #line 209 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 350 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Model.CurrentAssignmentCount != 1 ? "s are" : " is"); @@ -738,7 +1006,7 @@ WriteLiteral("
\r\n"); WriteLiteral("
\r\n"); - #line 212 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 353 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" } @@ -781,7 +1049,7 @@ WriteLiteral(@"> "); - #line 244 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 385 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" } @@ -790,7 +1058,7 @@ WriteLiteral(@"> WriteLiteral(" "); - #line 245 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 386 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" if (canShowUsers) { @@ -798,14 +1066,14 @@ WriteLiteral(" "); #line default #line hidden - #line 247 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 388 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" Write(Html.ActionLinkButton(string.Format("Show {0} user{1}", Model.CurrentAssignmentCount, (Model.CurrentAssignmentCount == 1 ? null : "s")), MVC.Search.Query(Model.UserFlag.Id.ToString(), "UserFlag"), "Config_UserFlags_Actions_ShowUsers_Button")); #line default #line hidden - #line 247 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 388 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" } @@ -815,7 +1083,7 @@ WriteLiteral(" "); WriteLiteral(" \r\n"); - #line 250 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" + #line 391 "..\..\Areas\Config\Views\UserFlag\Show.cshtml" } #line default diff --git a/Disco.Web/ClientSource/Style/Config.css b/Disco.Web/ClientSource/Style/Config.css index 4fa42f31..b6aad4fc 100644 --- a/Disco.Web/ClientSource/Style/Config.css +++ b/Disco.Web/ClientSource/Style/Config.css @@ -647,7 +647,7 @@ div.logEventsViewport table.logEventsViewport > tbody > tr > td.eventType { width: 100px; } #dialogBulkGenerate textarea { - width: 100%; + width: calc(100% - .5em); height: 200px; margin: 0 auto; } @@ -1225,3 +1225,77 @@ div.logEventsViewport table.logEventsViewport > tbody > tr > td.eventType { opacity: 1; color: inherit; } +#Config_UserFlags_BulkAssign_ModeDialog > div { + margin-top: 6px; + background-color: #ffffff; + line-height: 1.3em; + border: 1px solid #ddd; +} +#Config_UserFlags_BulkAssign_ModeDialog > div > div { + display: block; + padding: 4px; + cursor: pointer; +} +#Config_UserFlags_BulkAssign_ModeDialog > div > div:not(:last-child) { + border-bottom: 1px dashed #ddd; +} +#Config_UserFlags_BulkAssign_ModeDialog > div > div h5 { + font-size: 1.1em; + padding: 4px 0; +} +#Config_UserFlags_BulkAssign_ModeDialog > div > div i { + margin-right: 4px; +} +#Config_UserFlags_BulkAssign_ModeDialog > div > div.add:hover { + background-color: #edffda; +} +#Config_UserFlags_BulkAssign_ModeDialog > div > div.add i { + color: #60a917; +} +#Config_UserFlags_BulkAssign_ModeDialog > div > div.override:hover { + background-color: #ffd8d4; +} +#Config_UserFlags_BulkAssign_ModeDialog > div > div.override i { + color: #e51400; +} +#Config_UserFlags_BulkAssign_AssignDialog .brief { + margin: 0 0 8px 0; +} +#Config_UserFlags_BulkAssign_AssignDialog .brief .scopeDescBulkGenerate { + font-weight: bold; +} +#Config_UserFlags_BulkAssign_AssignDialog .brief div.examples { + margin: 8px auto; + width: 300px; +} +#Config_UserFlags_BulkAssign_AssignDialog .brief div.examples div { + margin: 2px 4px 2px 0; + width: 150px; + float: left; +} +#Config_UserFlags_BulkAssign_AssignDialog .brief div.examples div.example1 { + width: 100px; +} +#Config_UserFlags_BulkAssign_AssignDialog div.loading { + display: none; + padding: 40px 0; + text-align: center; +} +#Config_UserFlags_BulkAssign_AssignDialog div.loading i { + margin-right: 10px; + color: #1e6dab; +} +#Config_UserFlags_BulkAssign_AssignDialog #Config_UserFlags_BulkAssign_AssignDialog_UserIds { + height: 200px; + margin-bottom: 8px; +} +#Config_UserFlags_BulkAssign_AssignDialog textarea { + width: calc(100% - .5em); + margin: 0; +} +#Config_UserFlags_BulkAssign_AssignDialog.loading > div.loading { + display: block; +} +#Config_UserFlags_BulkAssign_AssignDialog.loading > form { + display: none; +} diff --git a/Disco.Web/ClientSource/Style/Config.less b/Disco.Web/ClientSource/Style/Config.less index ebcd3e5a..64ee978e 100644 --- a/Disco.Web/ClientSource/Style/Config.less +++ b/Disco.Web/ClientSource/Style/Config.less @@ -685,7 +685,7 @@ div.logEventsViewport { } textarea { - width: 100%; + width: calc(~"100% - .5em"); height: 200px; margin: 0 auto; } @@ -1429,4 +1429,108 @@ div.logEventsViewport { } } } +} + +#Config_UserFlags_BulkAssign_ModeDialog { + & > div { + margin-top: 6px; + background-color: @white; + line-height: 1.3em; + border: 1px solid #ddd; + + & > div { + display: block; + padding: 4px; + cursor: pointer; + + &:not(:last-child) { + border-bottom: 1px dashed #ddd; + } + + h5 { + font-size: 1.1em; + padding: 4px 0; + } + + i { + margin-right: 4px; + } + + &.add { + &:hover { + background-color: hsv(hsvhue(@StatusSuccess), hsvsaturation(@StatusSuccess) / 6, 100%); + } + + i { + color: @StatusSuccess; + } + } + + &.override { + &:hover { + background-color: hsv(hsvhue(@StatusError), hsvsaturation(@StatusError) / 6, 100%); + } + + i { + color: @StatusError; + } + } + } + } +} + +#Config_UserFlags_BulkAssign_AssignDialog { + .brief { + margin: 0 0 8px 0; + + .scopeDescBulkGenerate { + font-weight: bold; + } + + div.examples { + margin: 8px auto; + width: 300px; + + div { + margin: 2px 4px 2px 0; + width: 150px; + float: left; + + &.example1 { + width: 100px; + } + } + } + } + + div.loading { + display: none; + padding: 40px 0; + text-align: center; + + i { + margin-right: 10px; + color: @StatusInformation; + } + } + + #Config_UserFlags_BulkAssign_AssignDialog_UserIds { + height: 200px; + margin-bottom: 8px; + } + + textarea { + width: calc(~"100% - .5em"); + margin: 0; + } + + &.loading { + & > div.loading { + display: block; + } + + & > form { + display: none; + } + } } \ No newline at end of file diff --git a/Disco.Web/ClientSource/Style/Config.min.css b/Disco.Web/ClientSource/Style/Config.min.css index 863e5674..b629a765 100644 --- a/Disco.Web/ClientSource/Style/Config.min.css +++ b/Disco.Web/ClientSource/Style/Config.min.css @@ -1 +1 @@ -.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}#updateAvailableContainer{float:right;border:1px dashed #ddd;background-color:#fff;font-size:.6em;line-height:1em;padding:10px 10px 4px 70px;text-align:right;height:50px}#updateAvailableContainer i{position:absolute;display:block;height:64px;width:64px;vertical-align:middle;margin-left:-70px;font-size:50px;color:#e51400}#updateAvailableContainer a.button{font-size:12px;margin-top:8px}#expressionEditor #expressionEditorExceptionContainer{display:none;border:1px dashed #ff9696;background-color:#ffd8d8;margin:10px 0;padding:10px}#expressionEditor #expressionEditorContainer{border:1px solid #1e6dab;background-color:#f4f4f4;height:100px}.expressionTree span.dynatree-node span.dynatree-icon{background-image:url(data:image/png;base64,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);background-position-y:0}.expressionTree span.dynatree-node.object span.dynatree-icon{background-position-x:0}.expressionTree span.dynatree-node.parameter span.dynatree-icon{background-position-x:-16px}.expressionTree span.dynatree-node.function span.dynatree-icon{background-position-x:-32px}.expressionTree span.dynatree-node.property span.dynatree-icon{background-position-x:-48px}table.expressionsTable{border:solid 1px #f4f4f4;border-collapse:collapse}table.expressionsTable>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}table.expressionsTable>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}table.expressionsTable>thead>tr>th,table.expressionsTable>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}table.expressionsTable>tbody>tr:hover>td{background-color:#fefefe}table.expressionsTable>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}table.expressionsTable>tfoot>tr>th,table.expressionsTable>tfoot>tr>td{background-color:#f4f4f4}table.expressionsTable td.parseError{background-color:#ffd8d8}#AttachmentType_FilterExpression{width:375px}#deviceComponents{border:solid 1px #f4f4f4;border-collapse:collapse}#deviceComponents>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}#deviceComponents>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}#deviceComponents>thead>tr>th,#deviceComponents>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}#deviceComponents>tbody>tr:hover>td{background-color:#fefefe}#deviceComponents>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}#deviceComponents>tfoot>tr>th,#deviceComponents>tfoot>tr>td{background-color:#f4f4f4}#deviceComponents tr th.actions{width:20px}#deviceComponents tr input.description{width:300px}#deviceComponents tr input.cost{width:75px}#deviceComponents tr i.remove{font-size:1.6em;color:#e51400;cursor:pointer;opacity:.8}#deviceComponents tr i.remove:hover{opacity:1}#deviceComponents tr i.fa-list-alt{color:#1e6dab;font-size:1.6em;cursor:pointer}#deviceComponents tr i.fa-asterisk{color:#fa6800;font-size:1em;left:10px;top:3px;cursor:pointer}#deviceComponents tr input.updating{background-position:right center;background-repeat:no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA)}#organisationAddresses{font-size:.9em}#organisationAddresses tr:not(:last-child){border-bottom:1px dashed #aaa}#organisationAddresses th{padding:2px;font-weight:bold;width:200px}#organisationAddresses td{padding:2px;vertical-align:middle}#organisationAddresses tr:nth-child(even){background-color:#fff}#organisationAddresses i.fa{font-size:1.7em;cursor:pointer}#organisationAddresses i.fa.delete{color:#e51400;opacity:.8}#organisationAddresses i.fa.delete:hover{opacity:1}#organisationAddresses i.fa.edit{color:#1e6dab}ul#loggingEntries{overflow:auto;max-height:230px;padding-left:20px}table.deviceProfileTable th.name{width:300px}table.deviceProfileTable th.type{width:120px}table.deviceProfileTable th.deviceCount{width:120px}#configurationDeviceProfileShow #ComputerNameTemplate{width:300px}#configurationDeviceProfileShow #expressionBrowserAnchor{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACKUlEQVQ4jaWTTU4UURDHf/W6gXFgJlHZKFvEe3gBvYhewXgGTXRpOILhGESGgEuNjB9N/BgCTJjufvXhonsQ176kkqpFVf2q6v8kIvifV77b2wsAU6MsCop/LCEpISIkEUAoioSZYWZczOeUp6en1ZPHT+4FQXgQERDBMrZlHACOpIKcM23bMN3fr0pEcDfub21x9/YdIhwR6QoJWFY8wF2JAHfH3fh8MoUISoGugxnPnj1lZ2eHg/cHTL9MMTdy09K0LVkVy8rsbMZkMukpoRQRRBIAZ2czNjbWWV1bZXY2I6WCpq5pmgY1ZXoypaoqAEQSsSQQ6Tb67es3Xr9+Q103PHy4w+Fkgpoxn1/y8eMn6rq+3v4yp0TkOvpeVaytreHuHB4egggXFxdUVUVZrrKxXmJuLBYLut15PwIwGo1IqTuTSGJlJfj1+xdXV1eMx2PCnTZn3B1VRZY6kJ5gc3MTEenO1Cy4nF9SpILxaIya4maUqrgqdU8QEd0IArgbOStFmVFVNCuqirtjalgYboa5A3KDIAJEGA7XiQiauiZnZTgcXhdwM7RXX1ZlsbgCEUTkL8GD7W3UjMGtAUUqMDMiosf3niqTVbk1GLDUT5nV5Oj4A293d1G1647m3qvOb/hGBLRty9HxB8xM5OWrV49+/vj5wuk07x4CEZ2clxcWUuqclFIgiSIJo9Houdz8zufn56siMgBKoACkNwdcRDIRzWg8bpY5fwBYR4lbku/2TAAAAABJRU5ErkJggg==);text-decoration:none}#configurationDeviceProfileShow #displayComputerNameTemplate{margin:0 0 6px 0}#configurationDeviceProfileShow #displayOrganisationalUnit{margin:0 0 6px 0}.organisationalUnitTree span.fancytree-node{padding:1px;border:none}.organisationalUnitTree span.fancytree-node>span.fancytree-icon{background:none;display:inline-block;font-family:FontAwesome;font-size:1.2em;width:14px}.organisationalUnitTree span.fancytree-ico-ef>span.fancytree-icon:before{color:#1e6dab;font-size:1em;content:""}.organisationalUnitTree span.fancytree-ico-cf>span.fancytree-icon:before{color:#1e6dab;font-size:1em;content:""}.organisationalUnitTree ul.fancytree-container>li>span>span.fancytree-icon:before{color:#fa6800;font-size:1em;content:""}.organisationalUnitTree span.fancytree-node.fancytree-selected{font-style:normal;background:none}#Config_System_AD_SearchScope_Dialog_Loading,#dialogOrganisationalUnit_Loading{text-align:center;padding:40px 0}#configurationDocumentTemplateExpressionBrowser{padding-right:275px;background-image:url(data:image/png;base64,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);background-position:right top;background-repeat:no-repeat}#Logging_Task_Status{width:520px;margin:40px auto 60px auto}#Logging_Task_Status th.process{text-align:left;font-weight:bold;background-color:#f4f4f4;min-height:30px;vertical-align:middle}#Logging_Task_Status td.description{font-size:.9em;min-height:60px}#Logging_Task_Status td.progress{padding:8px 10px}#Logging_Task_Status td.finishedMessage i{display:none}#Logging_Task_Status td.finishedRedirect{position:relative}#Logging_Task_Status td.finishedRedirect i{color:#1e6dab;position:absolute;right:10px;top:calc(57% - .5em);display:inline-block}#Logging_Task_Status td.exception{background-color:#ffd8d8}div.logEventsViewport{border:1px solid #bbb;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}div.logEventsViewport div.logEventsViewportContainer{overflow-y:auto;overflow-x:hidden}div.logEventsViewport div.logEventsViewportContainer .logEventsViewportNoLogs{padding-top:20px;text-align:center;font-style:italic}div.logEventsViewport table.logEventsViewport{padding:0;margin:0;background-color:#bbb;table-layout:fixed}div.logEventsViewport table.logEventsViewport>thead>tr{background-color:#eee}div.logEventsViewport table.logEventsViewport>thead>tr>th{padding:4px 2px;font-weight:bold;border-bottom:1px solid #bbb}div.logEventsViewport table.logEventsViewport>thead>tr>th.icon{width:20px}div.logEventsViewport table.logEventsViewport>thead>tr>th.timestamp{width:155px}div.logEventsViewport table.logEventsViewport>thead>tr>th.eventType{width:180px}div.logEventsViewport table.logEventsViewport>tbody>tr{background-color:#fff}div.logEventsViewport table.logEventsViewport>tbody>tr:nth-child(even){background-color:#eee}div.logEventsViewport table.logEventsViewport>tbody>tr>td{padding:2px}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon{width:20px;vertical-align:middle;text-align:center}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon>i{display:block;font-size:1.2em}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon>i.fa-info-circle{color:#1e6dab}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-triangle{color:#f0a30a}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-circle{color:#e51400}div.logEventsViewport table.logEventsViewport>tbody>tr>td.timestamp{width:155px}div.logEventsViewport table.logEventsViewport>tbody>tr>td.eventType{width:180px}#enrolStatus #sessions .session{width:280px;padding:4px 4px 4px 72px;margin:8px;border:5px solid #efefef;-moz-border-radius:0 20px 0 0;-webkit-border-radius:0 20px 0 0;border-radius:0 20px 0 0;background-color:#f5f5f5;background-repeat:no-repeat,no-repeat;background-position:36px 36px,4px 4px;-moz-background-size:32px,64px;-o-background-size:32px,64px;-webkit-background-size:32px,64px;background-size:32px,64px;min-height:72px;cursor:pointer}#enrolStatus #sessions .session>h3{padding-bottom:3px;border-bottom:1px dashed #ccc}#enrolStatus #sessions .session>h3 span.details{font-size:.8em}#enrolStatus #sessions .session>p.sessionStart{color:#888;font-size:.8em;margin-bottom:2px}#enrolStatus #sessions .session>p.sessionStatus{font-size:.9em;height:1.6em;overflow:hidden;margin-bottom:3px}#enrolStatus #sessions .session:hover{border:5px solid #6c7a87;background-color:#dfe1f8}#dialogSession .sessionHeader{width:400px;float:left;padding:0 0 0 134px;background-repeat:no-repeat,no-repeat;background-position:96px 96px,0 0;-moz-background-size:32px,128px;-o-background-size:32px,128px;-webkit-background-size:32px,128px;background-size:32px,128px;min-height:134px}#dialogSession .sessionHeader>h2{padding-bottom:0}#dialogSession .sessionHeader>table{margin-top:4px}#dialogSession .sessionHeader>table th{width:128px;text-align:right}#dialogSession .sessionHeader>table td,#dialogSession .sessionHeader>table th{padding:1px 2px}#dialogSession .sessionProgress{width:320px;float:right;text-align:right}#dialogSession .sessionProgress>p.sessionStart{color:#888;margin-bottom:2px}#dialogSession .sessionProgress>p.sessionStatus{height:1.6em;overflow:hidden;margin-bottom:3px}#dialogSession .sessionInfoContainer>div{float:left;width:428px;overflow:auto}#dialogSession .sessionInfoContainer .sessionInfoMessages{height:440px;border:1px solid #bbb;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;background-color:#fff}#dialogSession .sessionInfoContainer .sessionInfoMessages div.logEventsViewportContainer{overflow:auto}#dialogSession .sessionInfoContainer .sessionInfoMessages div.logEventsViewportContainer .logEventsViewportNoLogs{padding-top:20px;text-align:center;font-style:italic}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport{padding:0;margin:0;background-color:#fff}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr{background-color:#eee}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr>th{padding:4px 2px;font-weight:bold;border-bottom:1px solid #bbb}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr>th.icon{width:20px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr>th.timestamp{width:155px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr>th.eventType{width:180px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr{background-color:#fff}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr:nth-child(even){background-color:#eee}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td{padding:2px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon{width:20px;vertical-align:middle;text-align:center}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i{display:block;font-size:1.2em}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-info-circle{color:#1e6dab}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-triangle{color:#f0a30a}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-circle{color:#e51400}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.timestamp{width:155px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.eventType{width:180px}#dialogSession .sessionInfoContainer .sessionInfoConsole{margin-left:6px;background-color:#222;color:#0f0;font-family:Consolas,"Courier New",monospace;border:4px solid #ccc;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;padding:2px;height:430px}#Config_DocumentTemplates_JobSubTypes{border:1px dashed #d8d8d8;background-color:#fff;padding:4px;margin-top:6px}#Config_DocumentTemplates_JobSubTypes>h4{margin-bottom:4px}#Config_DocumentTemplates_JobSubTypes #Config_DocumentTemplates_JobSubTypes_Update{margin-top:4px}#Config_DocumentTemplates_JobSubTypes_Update_Dialog #Config_DocumentTemplates_JobSubTypes_Update_Dialog_Types{margin:0 0 8px 0}#Config_DocumentTemplates_JobSubTypes_Update_Dialog .jobTypes{padding:6px 0}#Config_DocumentTemplates_JobSubTypes_Update_Dialog .jobTypes .jobSubTypes{background-color:#f2f2f2;border-left:4px solid #d8d8d8;padding:4px 0 4px 8px;margin:4px 0 0 6px}#Config_DocumentTemplates_JobSubTypes_Update_Dialog .checkboxBulkSelectContainer{font-size:.8em}#dialogBulkGenerate .brief{margin:0 0 8px 0}#dialogBulkGenerate .brief .scopeDescBulkGenerate{font-weight:bold}#dialogBulkGenerate .brief div.examples{margin:8px auto;width:300px}#dialogBulkGenerate .brief div.examples div{margin:2px 4px 2px 0;width:150px;float:left}#dialogBulkGenerate .brief div.examples div.example1{width:100px}#dialogBulkGenerate textarea{width:100%;height:200px;margin:0 auto}#importStatus #sessions .session{padding:4px;margin-bottom:10px;border:1px solid #efefef;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;background-color:#f5f5f5;min-height:72px}#importStatus #sessions .session .sessionLeftPane{width:48%;float:left}#importStatus #sessions .session .sessionLeftPane>h3{padding-bottom:3px;border-bottom:1px dashed #ccc}#importStatus #sessions .session .sessionLeftPane>h3 span.details{font-size:.8em}#importStatus #sessions .session .sessionRightPane{width:48%;float:right;text-align:right}#importStatus #sessions .session .sessionRightPane>p.sessionStart{color:#888;font-size:.8em;margin-bottom:2px}#importStatus #sessions .session .sessionRightPane>p.sessionStatus{font-size:.9em;height:1.6em;overflow:hidden;margin-bottom:3px}#importStatus #sessions .session .sessionPages>.sessionPage{min-height:56px;min-width:256px;float:left;margin:3px 0 3px 0;padding:170px 0 0 0;background-color:#fff;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;border:1px solid #eee;background-repeat:no-repeat;background-position:center top}#importStatus #sessions .session .sessionPages>.sessionPage>.sessionPageDetails{height:84px;padding:2px 4px 0 4px;background-color:rgba(255,255,255,.8)}#importStatus #sessions .session .sessionPages>.sessionPage>.sessionPageDetails p.sessionStatus{font-size:.9em;height:1.6em;margin-bottom:3px}#importStatus #sessions .session .sessionInfoMessages{margin-top:6px;border:1px solid #bbb;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;background-color:#fff}#importStatus #sessions .session .sessionInfoMessages div.logEventsViewportContainer{max-height:220px;overflow:auto}#importStatus #sessions .session .sessionInfoMessages div.logEventsViewportContainer .logEventsViewportNoLogs{padding-top:20px;text-align:center;font-style:italic}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport{padding:0;margin:0;background-color:#fff}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr{background-color:#eee}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr>th{padding:4px 2px;font-weight:bold;border-bottom:1px solid #bbb}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr>th.icon{width:20px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr>th.timestamp{width:155px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr>th.eventType{width:180px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr{background-color:#fff}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr:nth-child(even){background-color:#eee}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td{padding:2px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon{width:20px;vertical-align:middle;text-align:center}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i{display:block;font-size:1.2em}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-info-circle{color:#1e6dab}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-triangle{color:#f0a30a}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-circle{color:#e51400}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.timestamp{width:155px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.eventType{width:180px}#undetectedPagesContainer #undetectedPages{list-style:none;margin:0;padding:0}#undetectedPagesContainer #undetectedPages>.undetectedPage{float:left;margin:4px;border:1px solid #f4f4f4;background-color:#fcfcfc;height:256px;width:256px;background-position:top center;background-repeat:no-repeat;cursor:pointer}#undetectedPagesContainer #undetectedPages>.undetectedPage>.pageDetails{margin-top:232px;height:24px;text-align:center}#undetectedPagesContainer #undetectedPages>.undetectedPage:hover{border:1px solid #d8d8d8;background-color:#f4f4f4}#undetectedPageDialog>.pagePreview{height:700px;background-position:top center;background-repeat:no-repeat}#undetectedPageDialog .actions{border-top:1px solid #d1d1d1;padding-top:8px;margin-top:8px;text-align:right}#Config_DeviceBatches #Config_DeviceBatches_List tr.decommissioned{display:none}#Config_DeviceBatches #Config_DeviceBatches_List tr.decommissioned>td{background-color:#f7f7f7;color:#888}#Config_DeviceBatches #Config_DeviceBatches_List tr.decommissioned:nth-child(odd)>td{background-color:#f2f2f2}#Config_DeviceBatches_ShowDecommissioned{position:absolute;right:30px;bottom:8px;font-size:.5em;line-height:1em;text-align:right}.deviceBatches #DeviceBatch_PurchaseDetails_Container{padding:5px 0 5px 5px}.deviceBatches #DeviceBatch_PurchaseDetails{width:570px;height:200px}.deviceBatches #DeviceBatch_WarrantyDetails_Container{padding:5px 0 5px 5px}.deviceBatches #DeviceBatch_WarrantyDetails{width:570px;height:200px}.deviceBatches #DeviceBatch_InsuranceDetails_Container{padding:5px 0 5px 5px}.deviceBatches #DeviceBatch_InsuranceDetails{width:570px;height:200px}.deviceBatches #DeviceBatch_Comments{width:570px;height:200px}#plugins .pageMenuArea a>h3{display:inline;color:#335a87}#plugins .pageMenuArea a>h3:hover{color:#5e8cc2}#plugins .pageMenuArea .pageMenuBlurb{padding-left:18px}#plugins .pageMenuArea .pageMenuBlurb i{font-size:.9em}#plugins #pageMenu td .pageMenuArea:not(:last-child){padding-bottom:5px;margin-bottom:10px}#plugins #pageMenu td .pageMenuArea>a,#plugins #pageMenu td .pageMenuArea>h3{color:#333}#plugins #pageMenu td .pageMenuArea>a:hover,#plugins #pageMenu td .pageMenuArea>h3:hover{color:#335a87}#pluginCatalog #pluginCatalogHeading{margin-bottom:20px;text-align:right}#pluginCatalog .pluginItem .pluginItemBlurb{margin:4px 0 4px 2px;padding:0 4px;border-left:4px solid #f4f4f4}#pluginCatalog .pluginItem .pluginItemBlurb *{padding:0;margin:0}#pluginCatalog .pluginItem .pageMenuBlurb i{font-size:.9em}#pluginCatalog .pluginItem>h2:first-child{min-height:22px}#pluginCatalog .pluginItem>h2:first-child i{font-size:.9em;padding-right:4px;color:#333}#pluginCatalog .pluginItem>h2:first-child a{float:right;font-size:12px}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-node{padding:1px;border:none}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-node>span.fancytree-icon{background:none;display:inline-block;font-family:FontAwesome;font-size:1.2em;width:14px}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-ico-ef>span.fancytree-icon:before{color:#9e9e9e;font-size:1em;content:""}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-ico-cf>span.fancytree-icon:before{color:#9e9e9e;font-size:1em;content:""}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-ico-c>span.fancytree-icon:before{color:#e51400;content:""}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-ico-c.fancytree-selected>span.fancytree-icon:before{color:#60a917;content:""}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-node.fancytree-selected{font-style:normal;background:none}#Config_AuthRoles_Subjects li,#Config_AuthRoles_Subjects_Update_Dialog_List li{padding:4px 0 4px 4px}#Config_AuthRoles_Subjects li i.fa-user,#Config_AuthRoles_Subjects_Update_Dialog_List li i.fa-user,#Config_AuthRoles_Subjects li i.fa-users,#Config_AuthRoles_Subjects_Update_Dialog_List li i.fa-users{min-width:22px}#Config_AuthRoles_Subjects_Update_Dialog{display:none}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_ListContainer{height:280px;overflow-y:auto;background-color:#fff;border:1px solid #d8d8d8}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_None{padding-top:15px;display:block;text-align:center}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_AddContainer{padding-top:10px;padding-left:10px}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li{cursor:pointer}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li:hover{background-color:#f4f4f4}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li:hover .remove{opacity:.8}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li .remove{margin-top:2px;padding-right:6px;float:right;cursor:pointer;opacity:0;color:#e51400;font-size:1.3em}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li .remove:hover{opacity:1}#Config_Location{margin-top:10px}#Config_Location #Config_Location_Unrestricted,#Config_Location #Config_Location_List,#Config_Location #Config_Location_Optional,#Config_Location #Config_Location_Restricted{display:none;margin-top:6px}#Config_Location_List_Dialog{display:none}#Config_Location_List_Dialog #Config_Location_List_Dialog_ListContainer{height:280px;overflow-y:auto;background-color:#fff;border:1px solid #d8d8d8}#Config_Location_List_Dialog #Config_Location_List_Dialog_None{padding-top:15px;display:block;text-align:center}#Config_Location_List_Dialog #Config_Location_List_Dialog_AddContainer{padding-top:10px;padding-left:10px}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li{padding:2px 0 2px 4px;cursor:pointer}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li:hover{background-color:#f4f4f4}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li:hover .remove{opacity:.8}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li .remove{margin-top:2px;padding-right:6px;float:right;cursor:pointer;opacity:0;color:#e51400;font-size:1.3em}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li .remove:hover{opacity:1}#Config_Location_ListImport_Dialog{display:none}#Config_Location_ListImport_Dialog #Config_Location_ListImport_Dialog_Overwrite_Container{margin:6px 0}#Config_Location_ListImport_Dialog #Config_Location_ListImport_Dialog_LocationList{width:100%;height:200px;margin:0 auto}#Config_JobQueues_Index i{width:1.2857142857142858em;text-align:center}#Config_JobQueues_Icon{display:block;margin:0 0 10px 10px}#Config_JobQueues_Icon_Update_Dialog{display:none}#Config_JobQueues_Icon_Update_Dialog div.colours{text-align:center;font-size:30px}#Config_JobQueues_Icon_Update_Dialog div.colours i{cursor:pointer;padding:1px;opacity:.9}#Config_JobQueues_Icon_Update_Dialog div.colours i:hover{opacity:1}#Config_JobQueues_Icon_Update_Dialog div.colours i.selected{opacity:1}#Config_JobQueues_Icon_Update_Dialog div.icons{text-align:center;font-size:34px;background-color:#fff;border:1px solid #d1d1d1;margin:6px 0 14px 0}#Config_JobQueues_Icon_Update_Dialog div.icons i{width:1.2857142857142858em;text-align:center;cursor:pointer;padding:6px 0;color:#333;opacity:.6}#Config_JobQueues_Icon_Update_Dialog div.icons i:hover{opacity:.9;color:inherit}#Config_JobQueues_Icon_Update_Dialog div.icons i.selected{opacity:1;color:inherit}#Config_JobQueues_JobSubTypes_Update{margin:8px 0}#Config_JobQueues_JobSubTypes_Update_Dialog #Config_JobQueues_JobSubTypes_Update_Dialog_Types{margin:0 0 8px 0}#Config_JobQueues_JobSubTypes_Update_Dialog .jobTypes{padding:6px 0}#Config_JobQueues_JobSubTypes_Update_Dialog .jobTypes .jobSubTypes{background-color:#f2f2f2;border-left:4px solid #d8d8d8;padding:4px 0 4px 8px;margin:4px 0 0 6px}#Config_JobQueues_JobSubTypes_Update_Dialog .checkboxBulkSelectContainer{font-size:.8em}#Config_JobQueues_Subjects li,#Config_JobQueues_Subjects_Update_Dialog_List li{padding:4px 0 4px 4px}#Config_JobQueues_Subjects li i.fa-user,#Config_JobQueues_Subjects_Update_Dialog_List li i.fa-user,#Config_JobQueues_Subjects li i.fa-users,#Config_JobQueues_Subjects_Update_Dialog_List li i.fa-users{width:1.2857142857142858em;text-align:center}#Config_JobQueues_Subjects_Update_Dialog{display:none}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_ListContainer{height:280px;overflow-y:auto;background-color:#fff;border:1px solid #d8d8d8}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_None{padding-top:15px;display:block;text-align:center}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_AddContainer{padding-top:10px;padding-left:10px}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li{cursor:pointer}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li:hover{background-color:#f4f4f4}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li:hover .remove{opacity:.8}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li .remove{margin-top:2px;padding-right:6px;float:right;cursor:pointer;opacity:0;color:#e51400;font-size:1.3em}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li .remove:hover{opacity:1}#Config_UserFlags_Index i{width:1.2857142857142858em;text-align:center}#Config_UserFlags_Icon{display:block;margin:0 0 10px 10px}#Config_UserFlags_Icon_Update_Dialog{display:none}#Config_UserFlags_Icon_Update_Dialog div.colours{text-align:center;font-size:30px}#Config_UserFlags_Icon_Update_Dialog div.colours i{cursor:pointer;padding:1px;opacity:.9}#Config_UserFlags_Icon_Update_Dialog div.colours i:hover{opacity:1}#Config_UserFlags_Icon_Update_Dialog div.colours i.selected{opacity:1}#Config_UserFlags_Icon_Update_Dialog div.icons{text-align:center;font-size:34px;background-color:#fff;border:1px solid #d1d1d1;margin:6px 0 14px 0}#Config_UserFlags_Icon_Update_Dialog div.icons i{width:1.2857142857142858em;text-align:center;cursor:pointer;padding:6px 0;color:#333;opacity:.6}#Config_UserFlags_Icon_Update_Dialog div.icons i:hover{opacity:.9;color:inherit}#Config_UserFlags_Icon_Update_Dialog div.icons i.selected{opacity:1;color:inherit} \ No newline at end of file +.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}#updateAvailableContainer{float:right;border:1px dashed #ddd;background-color:#fff;font-size:.6em;line-height:1em;padding:10px 10px 4px 70px;text-align:right;height:50px}#updateAvailableContainer i{position:absolute;display:block;height:64px;width:64px;vertical-align:middle;margin-left:-70px;font-size:50px;color:#e51400}#updateAvailableContainer a.button{font-size:12px;margin-top:8px}#expressionEditor #expressionEditorExceptionContainer{display:none;border:1px dashed #ff9696;background-color:#ffd8d8;margin:10px 0;padding:10px}#expressionEditor #expressionEditorContainer{border:1px solid #1e6dab;background-color:#f4f4f4;height:100px}.expressionTree span.dynatree-node span.dynatree-icon{background-image:url(data:image/png;base64,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);background-position-y:0}.expressionTree span.dynatree-node.object span.dynatree-icon{background-position-x:0}.expressionTree span.dynatree-node.parameter span.dynatree-icon{background-position-x:-16px}.expressionTree span.dynatree-node.function span.dynatree-icon{background-position-x:-32px}.expressionTree span.dynatree-node.property span.dynatree-icon{background-position-x:-48px}table.expressionsTable{border:solid 1px #f4f4f4;border-collapse:collapse}table.expressionsTable>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}table.expressionsTable>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}table.expressionsTable>thead>tr>th,table.expressionsTable>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}table.expressionsTable>tbody>tr:hover>td{background-color:#fefefe}table.expressionsTable>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}table.expressionsTable>tfoot>tr>th,table.expressionsTable>tfoot>tr>td{background-color:#f4f4f4}table.expressionsTable td.parseError{background-color:#ffd8d8}#AttachmentType_FilterExpression{width:375px}#deviceComponents{border:solid 1px #f4f4f4;border-collapse:collapse}#deviceComponents>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}#deviceComponents>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}#deviceComponents>thead>tr>th,#deviceComponents>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}#deviceComponents>tbody>tr:hover>td{background-color:#fefefe}#deviceComponents>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}#deviceComponents>tfoot>tr>th,#deviceComponents>tfoot>tr>td{background-color:#f4f4f4}#deviceComponents tr th.actions{width:20px}#deviceComponents tr input.description{width:300px}#deviceComponents tr input.cost{width:75px}#deviceComponents tr i.remove{font-size:1.6em;color:#e51400;cursor:pointer;opacity:.8}#deviceComponents tr i.remove:hover{opacity:1}#deviceComponents tr i.fa-list-alt{color:#1e6dab;font-size:1.6em;cursor:pointer}#deviceComponents tr i.fa-asterisk{color:#fa6800;font-size:1em;left:10px;top:3px;cursor:pointer}#deviceComponents tr input.updating{background-position:right center;background-repeat:no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA)}#organisationAddresses{font-size:.9em}#organisationAddresses tr:not(:last-child){border-bottom:1px dashed #aaa}#organisationAddresses th{padding:2px;font-weight:bold;width:200px}#organisationAddresses td{padding:2px;vertical-align:middle}#organisationAddresses tr:nth-child(even){background-color:#fff}#organisationAddresses i.fa{font-size:1.7em;cursor:pointer}#organisationAddresses i.fa.delete{color:#e51400;opacity:.8}#organisationAddresses i.fa.delete:hover{opacity:1}#organisationAddresses i.fa.edit{color:#1e6dab}ul#loggingEntries{overflow:auto;max-height:230px;padding-left:20px}table.deviceProfileTable th.name{width:300px}table.deviceProfileTable th.type{width:120px}table.deviceProfileTable th.deviceCount{width:120px}#configurationDeviceProfileShow #ComputerNameTemplate{width:300px}#configurationDeviceProfileShow #expressionBrowserAnchor{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACKUlEQVQ4jaWTTU4UURDHf/W6gXFgJlHZKFvEe3gBvYhewXgGTXRpOILhGESGgEuNjB9N/BgCTJjufvXhonsQ176kkqpFVf2q6v8kIvifV77b2wsAU6MsCop/LCEpISIkEUAoioSZYWZczOeUp6en1ZPHT+4FQXgQERDBMrZlHACOpIKcM23bMN3fr0pEcDfub21x9/YdIhwR6QoJWFY8wF2JAHfH3fh8MoUISoGugxnPnj1lZ2eHg/cHTL9MMTdy09K0LVkVy8rsbMZkMukpoRQRRBIAZ2czNjbWWV1bZXY2I6WCpq5pmgY1ZXoypaoqAEQSsSQQ6Tb67es3Xr9+Q103PHy4w+Fkgpoxn1/y8eMn6rq+3v4yp0TkOvpeVaytreHuHB4egggXFxdUVUVZrrKxXmJuLBYLut15PwIwGo1IqTuTSGJlJfj1+xdXV1eMx2PCnTZn3B1VRZY6kJ5gc3MTEenO1Cy4nF9SpILxaIya4maUqrgqdU8QEd0IArgbOStFmVFVNCuqirtjalgYboa5A3KDIAJEGA7XiQiauiZnZTgcXhdwM7RXX1ZlsbgCEUTkL8GD7W3UjMGtAUUqMDMiosf3niqTVbk1GLDUT5nV5Oj4A293d1G1647m3qvOb/hGBLRty9HxB8xM5OWrV49+/vj5wuk07x4CEZ2clxcWUuqclFIgiSIJo9Houdz8zufn56siMgBKoACkNwdcRDIRzWg8bpY5fwBYR4lbku/2TAAAAABJRU5ErkJggg==);text-decoration:none}#configurationDeviceProfileShow #displayComputerNameTemplate{margin:0 0 6px 0}#configurationDeviceProfileShow #displayOrganisationalUnit{margin:0 0 6px 0}.organisationalUnitTree span.fancytree-node{padding:1px;border:none}.organisationalUnitTree span.fancytree-node>span.fancytree-icon{background:none;display:inline-block;font-family:FontAwesome;font-size:1.2em;width:14px}.organisationalUnitTree span.fancytree-ico-ef>span.fancytree-icon:before{color:#1e6dab;font-size:1em;content:""}.organisationalUnitTree span.fancytree-ico-cf>span.fancytree-icon:before{color:#1e6dab;font-size:1em;content:""}.organisationalUnitTree ul.fancytree-container>li>span>span.fancytree-icon:before{color:#fa6800;font-size:1em;content:""}.organisationalUnitTree span.fancytree-node.fancytree-selected{font-style:normal;background:none}#Config_System_AD_SearchScope_Dialog_Loading,#dialogOrganisationalUnit_Loading{text-align:center;padding:40px 0}#configurationDocumentTemplateExpressionBrowser{padding-right:275px;background-image:url(data:image/png;base64,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);background-position:right top;background-repeat:no-repeat}#Logging_Task_Status{width:520px;margin:40px auto 60px auto}#Logging_Task_Status th.process{text-align:left;font-weight:bold;background-color:#f4f4f4;min-height:30px;vertical-align:middle}#Logging_Task_Status td.description{font-size:.9em;min-height:60px}#Logging_Task_Status td.progress{padding:8px 10px}#Logging_Task_Status td.finishedMessage i{display:none}#Logging_Task_Status td.finishedRedirect{position:relative}#Logging_Task_Status td.finishedRedirect i{color:#1e6dab;position:absolute;right:10px;top:calc(57% - .5em);display:inline-block}#Logging_Task_Status td.exception{background-color:#ffd8d8}div.logEventsViewport{border:1px solid #bbb;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}div.logEventsViewport div.logEventsViewportContainer{overflow-y:auto;overflow-x:hidden}div.logEventsViewport div.logEventsViewportContainer .logEventsViewportNoLogs{padding-top:20px;text-align:center;font-style:italic}div.logEventsViewport table.logEventsViewport{padding:0;margin:0;background-color:#bbb;table-layout:fixed}div.logEventsViewport table.logEventsViewport>thead>tr{background-color:#eee}div.logEventsViewport table.logEventsViewport>thead>tr>th{padding:4px 2px;font-weight:bold;border-bottom:1px solid #bbb}div.logEventsViewport table.logEventsViewport>thead>tr>th.icon{width:20px}div.logEventsViewport table.logEventsViewport>thead>tr>th.timestamp{width:155px}div.logEventsViewport table.logEventsViewport>thead>tr>th.eventType{width:180px}div.logEventsViewport table.logEventsViewport>tbody>tr{background-color:#fff}div.logEventsViewport table.logEventsViewport>tbody>tr:nth-child(even){background-color:#eee}div.logEventsViewport table.logEventsViewport>tbody>tr>td{padding:2px}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon{width:20px;vertical-align:middle;text-align:center}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon>i{display:block;font-size:1.2em}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon>i.fa-info-circle{color:#1e6dab}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-triangle{color:#f0a30a}div.logEventsViewport table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-circle{color:#e51400}div.logEventsViewport table.logEventsViewport>tbody>tr>td.timestamp{width:155px}div.logEventsViewport table.logEventsViewport>tbody>tr>td.eventType{width:180px}#enrolStatus #sessions .session{width:280px;padding:4px 4px 4px 72px;margin:8px;border:5px solid #efefef;-moz-border-radius:0 20px 0 0;-webkit-border-radius:0 20px 0 0;border-radius:0 20px 0 0;background-color:#f5f5f5;background-repeat:no-repeat,no-repeat;background-position:36px 36px,4px 4px;-moz-background-size:32px,64px;-o-background-size:32px,64px;-webkit-background-size:32px,64px;background-size:32px,64px;min-height:72px;cursor:pointer}#enrolStatus #sessions .session>h3{padding-bottom:3px;border-bottom:1px dashed #ccc}#enrolStatus #sessions .session>h3 span.details{font-size:.8em}#enrolStatus #sessions .session>p.sessionStart{color:#888;font-size:.8em;margin-bottom:2px}#enrolStatus #sessions .session>p.sessionStatus{font-size:.9em;height:1.6em;overflow:hidden;margin-bottom:3px}#enrolStatus #sessions .session:hover{border:5px solid #6c7a87;background-color:#dfe1f8}#dialogSession .sessionHeader{width:400px;float:left;padding:0 0 0 134px;background-repeat:no-repeat,no-repeat;background-position:96px 96px,0 0;-moz-background-size:32px,128px;-o-background-size:32px,128px;-webkit-background-size:32px,128px;background-size:32px,128px;min-height:134px}#dialogSession .sessionHeader>h2{padding-bottom:0}#dialogSession .sessionHeader>table{margin-top:4px}#dialogSession .sessionHeader>table th{width:128px;text-align:right}#dialogSession .sessionHeader>table td,#dialogSession .sessionHeader>table th{padding:1px 2px}#dialogSession .sessionProgress{width:320px;float:right;text-align:right}#dialogSession .sessionProgress>p.sessionStart{color:#888;margin-bottom:2px}#dialogSession .sessionProgress>p.sessionStatus{height:1.6em;overflow:hidden;margin-bottom:3px}#dialogSession .sessionInfoContainer>div{float:left;width:428px;overflow:auto}#dialogSession .sessionInfoContainer .sessionInfoMessages{height:440px;border:1px solid #bbb;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;background-color:#fff}#dialogSession .sessionInfoContainer .sessionInfoMessages div.logEventsViewportContainer{overflow:auto}#dialogSession .sessionInfoContainer .sessionInfoMessages div.logEventsViewportContainer .logEventsViewportNoLogs{padding-top:20px;text-align:center;font-style:italic}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport{padding:0;margin:0;background-color:#fff}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr{background-color:#eee}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr>th{padding:4px 2px;font-weight:bold;border-bottom:1px solid #bbb}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr>th.icon{width:20px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr>th.timestamp{width:155px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>thead>tr>th.eventType{width:180px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr{background-color:#fff}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr:nth-child(even){background-color:#eee}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td{padding:2px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon{width:20px;vertical-align:middle;text-align:center}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i{display:block;font-size:1.2em}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-info-circle{color:#1e6dab}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-triangle{color:#f0a30a}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-circle{color:#e51400}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.timestamp{width:155px}#dialogSession .sessionInfoContainer .sessionInfoMessages table.logEventsViewport>tbody>tr>td.eventType{width:180px}#dialogSession .sessionInfoContainer .sessionInfoConsole{margin-left:6px;background-color:#222;color:#0f0;font-family:Consolas,"Courier New",monospace;border:4px solid #ccc;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;padding:2px;height:430px}#Config_DocumentTemplates_JobSubTypes{border:1px dashed #d8d8d8;background-color:#fff;padding:4px;margin-top:6px}#Config_DocumentTemplates_JobSubTypes>h4{margin-bottom:4px}#Config_DocumentTemplates_JobSubTypes #Config_DocumentTemplates_JobSubTypes_Update{margin-top:4px}#Config_DocumentTemplates_JobSubTypes_Update_Dialog #Config_DocumentTemplates_JobSubTypes_Update_Dialog_Types{margin:0 0 8px 0}#Config_DocumentTemplates_JobSubTypes_Update_Dialog .jobTypes{padding:6px 0}#Config_DocumentTemplates_JobSubTypes_Update_Dialog .jobTypes .jobSubTypes{background-color:#f2f2f2;border-left:4px solid #d8d8d8;padding:4px 0 4px 8px;margin:4px 0 0 6px}#Config_DocumentTemplates_JobSubTypes_Update_Dialog .checkboxBulkSelectContainer{font-size:.8em}#dialogBulkGenerate .brief{margin:0 0 8px 0}#dialogBulkGenerate .brief .scopeDescBulkGenerate{font-weight:bold}#dialogBulkGenerate .brief div.examples{margin:8px auto;width:300px}#dialogBulkGenerate .brief div.examples div{margin:2px 4px 2px 0;width:150px;float:left}#dialogBulkGenerate .brief div.examples div.example1{width:100px}#dialogBulkGenerate textarea{width:calc(100% - .5em);height:200px;margin:0 auto}#importStatus #sessions .session{padding:4px;margin-bottom:10px;border:1px solid #efefef;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;background-color:#f5f5f5;min-height:72px}#importStatus #sessions .session .sessionLeftPane{width:48%;float:left}#importStatus #sessions .session .sessionLeftPane>h3{padding-bottom:3px;border-bottom:1px dashed #ccc}#importStatus #sessions .session .sessionLeftPane>h3 span.details{font-size:.8em}#importStatus #sessions .session .sessionRightPane{width:48%;float:right;text-align:right}#importStatus #sessions .session .sessionRightPane>p.sessionStart{color:#888;font-size:.8em;margin-bottom:2px}#importStatus #sessions .session .sessionRightPane>p.sessionStatus{font-size:.9em;height:1.6em;overflow:hidden;margin-bottom:3px}#importStatus #sessions .session .sessionPages>.sessionPage{min-height:56px;min-width:256px;float:left;margin:3px 0 3px 0;padding:170px 0 0 0;background-color:#fff;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;border:1px solid #eee;background-repeat:no-repeat;background-position:center top}#importStatus #sessions .session .sessionPages>.sessionPage>.sessionPageDetails{height:84px;padding:2px 4px 0 4px;background-color:rgba(255,255,255,.8)}#importStatus #sessions .session .sessionPages>.sessionPage>.sessionPageDetails p.sessionStatus{font-size:.9em;height:1.6em;margin-bottom:3px}#importStatus #sessions .session .sessionInfoMessages{margin-top:6px;border:1px solid #bbb;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;background-color:#fff}#importStatus #sessions .session .sessionInfoMessages div.logEventsViewportContainer{max-height:220px;overflow:auto}#importStatus #sessions .session .sessionInfoMessages div.logEventsViewportContainer .logEventsViewportNoLogs{padding-top:20px;text-align:center;font-style:italic}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport{padding:0;margin:0;background-color:#fff}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr{background-color:#eee}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr>th{padding:4px 2px;font-weight:bold;border-bottom:1px solid #bbb}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr>th.icon{width:20px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr>th.timestamp{width:155px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>thead>tr>th.eventType{width:180px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr{background-color:#fff}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr:nth-child(even){background-color:#eee}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td{padding:2px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon{width:20px;vertical-align:middle;text-align:center}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i{display:block;font-size:1.2em}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-info-circle{color:#1e6dab}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-triangle{color:#f0a30a}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.icon>i.fa-exclamation-circle{color:#e51400}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.timestamp{width:155px}#importStatus #sessions .session .sessionInfoMessages table.logEventsViewport>tbody>tr>td.eventType{width:180px}#undetectedPagesContainer #undetectedPages{list-style:none;margin:0;padding:0}#undetectedPagesContainer #undetectedPages>.undetectedPage{float:left;margin:4px;border:1px solid #f4f4f4;background-color:#fcfcfc;height:256px;width:256px;background-position:top center;background-repeat:no-repeat;cursor:pointer}#undetectedPagesContainer #undetectedPages>.undetectedPage>.pageDetails{margin-top:232px;height:24px;text-align:center}#undetectedPagesContainer #undetectedPages>.undetectedPage:hover{border:1px solid #d8d8d8;background-color:#f4f4f4}#undetectedPageDialog>.pagePreview{height:700px;background-position:top center;background-repeat:no-repeat}#undetectedPageDialog .actions{border-top:1px solid #d1d1d1;padding-top:8px;margin-top:8px;text-align:right}#Config_DeviceBatches #Config_DeviceBatches_List tr.decommissioned{display:none}#Config_DeviceBatches #Config_DeviceBatches_List tr.decommissioned>td{background-color:#f7f7f7;color:#888}#Config_DeviceBatches #Config_DeviceBatches_List tr.decommissioned:nth-child(odd)>td{background-color:#f2f2f2}#Config_DeviceBatches_ShowDecommissioned{position:absolute;right:30px;bottom:8px;font-size:.5em;line-height:1em;text-align:right}.deviceBatches #DeviceBatch_PurchaseDetails_Container{padding:5px 0 5px 5px}.deviceBatches #DeviceBatch_PurchaseDetails{width:570px;height:200px}.deviceBatches #DeviceBatch_WarrantyDetails_Container{padding:5px 0 5px 5px}.deviceBatches #DeviceBatch_WarrantyDetails{width:570px;height:200px}.deviceBatches #DeviceBatch_InsuranceDetails_Container{padding:5px 0 5px 5px}.deviceBatches #DeviceBatch_InsuranceDetails{width:570px;height:200px}.deviceBatches #DeviceBatch_Comments{width:570px;height:200px}#plugins .pageMenuArea a>h3{display:inline;color:#335a87}#plugins .pageMenuArea a>h3:hover{color:#5e8cc2}#plugins .pageMenuArea .pageMenuBlurb{padding-left:18px}#plugins .pageMenuArea .pageMenuBlurb i{font-size:.9em}#plugins #pageMenu td .pageMenuArea:not(:last-child){padding-bottom:5px;margin-bottom:10px}#plugins #pageMenu td .pageMenuArea>a,#plugins #pageMenu td .pageMenuArea>h3{color:#333}#plugins #pageMenu td .pageMenuArea>a:hover,#plugins #pageMenu td .pageMenuArea>h3:hover{color:#335a87}#pluginCatalog #pluginCatalogHeading{margin-bottom:20px;text-align:right}#pluginCatalog .pluginItem .pluginItemBlurb{margin:4px 0 4px 2px;padding:0 4px;border-left:4px solid #f4f4f4}#pluginCatalog .pluginItem .pluginItemBlurb *{padding:0;margin:0}#pluginCatalog .pluginItem .pageMenuBlurb i{font-size:.9em}#pluginCatalog .pluginItem>h2:first-child{min-height:22px}#pluginCatalog .pluginItem>h2:first-child i{font-size:.9em;padding-right:4px;color:#333}#pluginCatalog .pluginItem>h2:first-child a{float:right;font-size:12px}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-node{padding:1px;border:none}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-node>span.fancytree-icon{background:none;display:inline-block;font-family:FontAwesome;font-size:1.2em;width:14px}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-ico-ef>span.fancytree-icon:before{color:#9e9e9e;font-size:1em;content:""}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-ico-cf>span.fancytree-icon:before{color:#9e9e9e;font-size:1em;content:""}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-ico-c>span.fancytree-icon:before{color:#e51400;content:""}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-ico-c.fancytree-selected>span.fancytree-icon:before{color:#60a917;content:""}#Config_AuthRoles_Show #Config_AuthRoles_Claims_Tree span.fancytree-node.fancytree-selected{font-style:normal;background:none}#Config_AuthRoles_Subjects li,#Config_AuthRoles_Subjects_Update_Dialog_List li{padding:4px 0 4px 4px}#Config_AuthRoles_Subjects li i.fa-user,#Config_AuthRoles_Subjects_Update_Dialog_List li i.fa-user,#Config_AuthRoles_Subjects li i.fa-users,#Config_AuthRoles_Subjects_Update_Dialog_List li i.fa-users{min-width:22px}#Config_AuthRoles_Subjects_Update_Dialog{display:none}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_ListContainer{height:280px;overflow-y:auto;background-color:#fff;border:1px solid #d8d8d8}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_None{padding-top:15px;display:block;text-align:center}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_AddContainer{padding-top:10px;padding-left:10px}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li{cursor:pointer}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li:hover{background-color:#f4f4f4}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li:hover .remove{opacity:.8}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li .remove{margin-top:2px;padding-right:6px;float:right;cursor:pointer;opacity:0;color:#e51400;font-size:1.3em}#Config_AuthRoles_Subjects_Update_Dialog #Config_AuthRoles_Subjects_Update_Dialog_List li .remove:hover{opacity:1}#Config_Location{margin-top:10px}#Config_Location #Config_Location_Unrestricted,#Config_Location #Config_Location_List,#Config_Location #Config_Location_Optional,#Config_Location #Config_Location_Restricted{display:none;margin-top:6px}#Config_Location_List_Dialog{display:none}#Config_Location_List_Dialog #Config_Location_List_Dialog_ListContainer{height:280px;overflow-y:auto;background-color:#fff;border:1px solid #d8d8d8}#Config_Location_List_Dialog #Config_Location_List_Dialog_None{padding-top:15px;display:block;text-align:center}#Config_Location_List_Dialog #Config_Location_List_Dialog_AddContainer{padding-top:10px;padding-left:10px}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li{padding:2px 0 2px 4px;cursor:pointer}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li:hover{background-color:#f4f4f4}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li:hover .remove{opacity:.8}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li .remove{margin-top:2px;padding-right:6px;float:right;cursor:pointer;opacity:0;color:#e51400;font-size:1.3em}#Config_Location_List_Dialog #Config_Location_List_Dialog_List li .remove:hover{opacity:1}#Config_Location_ListImport_Dialog{display:none}#Config_Location_ListImport_Dialog #Config_Location_ListImport_Dialog_Overwrite_Container{margin:6px 0}#Config_Location_ListImport_Dialog #Config_Location_ListImport_Dialog_LocationList{width:100%;height:200px;margin:0 auto}#Config_JobQueues_Index i{width:1.2857142857142858em;text-align:center}#Config_JobQueues_Icon{display:block;margin:0 0 10px 10px}#Config_JobQueues_Icon_Update_Dialog{display:none}#Config_JobQueues_Icon_Update_Dialog div.colours{text-align:center;font-size:30px}#Config_JobQueues_Icon_Update_Dialog div.colours i{cursor:pointer;padding:1px;opacity:.9}#Config_JobQueues_Icon_Update_Dialog div.colours i:hover{opacity:1}#Config_JobQueues_Icon_Update_Dialog div.colours i.selected{opacity:1}#Config_JobQueues_Icon_Update_Dialog div.icons{text-align:center;font-size:34px;background-color:#fff;border:1px solid #d1d1d1;margin:6px 0 14px 0}#Config_JobQueues_Icon_Update_Dialog div.icons i{width:1.2857142857142858em;text-align:center;cursor:pointer;padding:6px 0;color:#333;opacity:.6}#Config_JobQueues_Icon_Update_Dialog div.icons i:hover{opacity:.9;color:inherit}#Config_JobQueues_Icon_Update_Dialog div.icons i.selected{opacity:1;color:inherit}#Config_JobQueues_JobSubTypes_Update{margin:8px 0}#Config_JobQueues_JobSubTypes_Update_Dialog #Config_JobQueues_JobSubTypes_Update_Dialog_Types{margin:0 0 8px 0}#Config_JobQueues_JobSubTypes_Update_Dialog .jobTypes{padding:6px 0}#Config_JobQueues_JobSubTypes_Update_Dialog .jobTypes .jobSubTypes{background-color:#f2f2f2;border-left:4px solid #d8d8d8;padding:4px 0 4px 8px;margin:4px 0 0 6px}#Config_JobQueues_JobSubTypes_Update_Dialog .checkboxBulkSelectContainer{font-size:.8em}#Config_JobQueues_Subjects li,#Config_JobQueues_Subjects_Update_Dialog_List li{padding:4px 0 4px 4px}#Config_JobQueues_Subjects li i.fa-user,#Config_JobQueues_Subjects_Update_Dialog_List li i.fa-user,#Config_JobQueues_Subjects li i.fa-users,#Config_JobQueues_Subjects_Update_Dialog_List li i.fa-users{width:1.2857142857142858em;text-align:center}#Config_JobQueues_Subjects_Update_Dialog{display:none}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_ListContainer{height:280px;overflow-y:auto;background-color:#fff;border:1px solid #d8d8d8}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_None{padding-top:15px;display:block;text-align:center}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_AddContainer{padding-top:10px;padding-left:10px}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li{cursor:pointer}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li:hover{background-color:#f4f4f4}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li:hover .remove{opacity:.8}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li .remove{margin-top:2px;padding-right:6px;float:right;cursor:pointer;opacity:0;color:#e51400;font-size:1.3em}#Config_JobQueues_Subjects_Update_Dialog #Config_JobQueues_Subjects_Update_Dialog_List li .remove:hover{opacity:1}#Config_UserFlags_Index i{width:1.2857142857142858em;text-align:center}#Config_UserFlags_Icon{display:block;margin:0 0 10px 10px}#Config_UserFlags_Icon_Update_Dialog{display:none}#Config_UserFlags_Icon_Update_Dialog div.colours{text-align:center;font-size:30px}#Config_UserFlags_Icon_Update_Dialog div.colours i{cursor:pointer;padding:1px;opacity:.9}#Config_UserFlags_Icon_Update_Dialog div.colours i:hover{opacity:1}#Config_UserFlags_Icon_Update_Dialog div.colours i.selected{opacity:1}#Config_UserFlags_Icon_Update_Dialog div.icons{text-align:center;font-size:34px;background-color:#fff;border:1px solid #d1d1d1;margin:6px 0 14px 0}#Config_UserFlags_Icon_Update_Dialog div.icons i{width:1.2857142857142858em;text-align:center;cursor:pointer;padding:6px 0;color:#333;opacity:.6}#Config_UserFlags_Icon_Update_Dialog div.icons i:hover{opacity:.9;color:inherit}#Config_UserFlags_Icon_Update_Dialog div.icons i.selected{opacity:1;color:inherit}#Config_UserFlags_BulkAssign_ModeDialog>div{margin-top:6px;background-color:#fff;line-height:1.3em;border:1px solid #ddd}#Config_UserFlags_BulkAssign_ModeDialog>div>div{display:block;padding:4px;cursor:pointer}#Config_UserFlags_BulkAssign_ModeDialog>div>div:not(:last-child){border-bottom:1px dashed #ddd}#Config_UserFlags_BulkAssign_ModeDialog>div>div h5{font-size:1.1em;padding:4px 0}#Config_UserFlags_BulkAssign_ModeDialog>div>div i{margin-right:4px}#Config_UserFlags_BulkAssign_ModeDialog>div>div.add:hover{background-color:#edffda}#Config_UserFlags_BulkAssign_ModeDialog>div>div.add i{color:#60a917}#Config_UserFlags_BulkAssign_ModeDialog>div>div.override:hover{background-color:#ffd8d4}#Config_UserFlags_BulkAssign_ModeDialog>div>div.override i{color:#e51400}#Config_UserFlags_BulkAssign_AssignDialog .brief{margin:0 0 8px 0}#Config_UserFlags_BulkAssign_AssignDialog .brief .scopeDescBulkGenerate{font-weight:bold}#Config_UserFlags_BulkAssign_AssignDialog .brief div.examples{margin:8px auto;width:300px}#Config_UserFlags_BulkAssign_AssignDialog .brief div.examples div{margin:2px 4px 2px 0;width:150px;float:left}#Config_UserFlags_BulkAssign_AssignDialog .brief div.examples div.example1{width:100px}#Config_UserFlags_BulkAssign_AssignDialog div.loading{display:none;padding:40px 0;text-align:center}#Config_UserFlags_BulkAssign_AssignDialog div.loading i{margin-right:10px;color:#1e6dab}#Config_UserFlags_BulkAssign_AssignDialog #Config_UserFlags_BulkAssign_AssignDialog_UserIds{height:200px;margin-bottom:8px}#Config_UserFlags_BulkAssign_AssignDialog textarea{width:calc(100% - .5em);margin:0}#Config_UserFlags_BulkAssign_AssignDialog.loading>div.loading{display:block}#Config_UserFlags_BulkAssign_AssignDialog.loading>form{display:none} \ No newline at end of file diff --git a/Disco.Web/T4MVC.cs b/Disco.Web/T4MVC.cs index bb8f43db..984fb37b 100644 --- a/Disco.Web/T4MVC.cs +++ b/Disco.Web/T4MVC.cs @@ -11125,6 +11125,18 @@ namespace Disco.Web.Areas.API.Controllers { return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Delete); } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult BulkAssignUsers() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.BulkAssignUsers); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult AssignedUsers() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AssignedUsers); + } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public UserFlagController Actions { get { return MVC.API.UserFlag; } } @@ -11148,6 +11160,8 @@ namespace Disco.Web.Areas.API.Controllers public readonly string UpdateIconColour = "UpdateIconColour"; public readonly string UpdateIconAndColour = "UpdateIconAndColour"; public readonly string Delete = "Delete"; + public readonly string BulkAssignUsers = "BulkAssignUsers"; + public readonly string AssignedUsers = "AssignedUsers"; } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] @@ -11160,6 +11174,8 @@ namespace Disco.Web.Areas.API.Controllers public const string UpdateIconColour = "UpdateIconColour"; public const string UpdateIconAndColour = "UpdateIconAndColour"; public const string Delete = "Delete"; + public const string BulkAssignUsers = "BulkAssignUsers"; + public const string AssignedUsers = "AssignedUsers"; } @@ -11234,6 +11250,25 @@ namespace Disco.Web.Areas.API.Controllers public readonly string id = "id"; public readonly string redirect = "redirect"; } + static readonly ActionParamsClass_BulkAssignUsers s_params_BulkAssignUsers = new ActionParamsClass_BulkAssignUsers(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_BulkAssignUsers BulkAssignUsersParams { get { return s_params_BulkAssignUsers; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_BulkAssignUsers + { + public readonly string id = "id"; + public readonly string Override = "Override"; + public readonly string UserIds = "UserIds"; + public readonly string Comments = "Comments"; + } + static readonly ActionParamsClass_AssignedUsers s_params_AssignedUsers = new ActionParamsClass_AssignedUsers(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_AssignedUsers AssignedUsersParams { get { return s_params_AssignedUsers; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_AssignedUsers + { + public readonly string id = "id"; + } static readonly ViewsClass s_views = new ViewsClass(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ViewsClass Views { get { return s_views; } } @@ -11352,6 +11387,33 @@ namespace Disco.Web.Areas.API.Controllers return callInfo; } + [NonAction] + partial void BulkAssignUsersOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id, bool Override, string UserIds, string Comments); + + [NonAction] + public override System.Web.Mvc.ActionResult BulkAssignUsers(int id, bool Override, string UserIds, string Comments) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.BulkAssignUsers); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Override", Override); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "UserIds", UserIds); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Comments", Comments); + BulkAssignUsersOverride(callInfo, id, Override, UserIds, Comments); + return callInfo; + } + + [NonAction] + partial void AssignedUsersOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id); + + [NonAction] + public override System.Web.Mvc.ActionResult AssignedUsers(int id) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AssignedUsers); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + AssignedUsersOverride(callInfo, id); + return callInfo; + } + } }