From 1cc7e946465cda6c81fbae519237a4da701cbfab Mon Sep 17 00:00:00 2001 From: Gary Sharp Date: Sat, 26 Jul 2014 20:02:59 +1000 Subject: [PATCH] Feature #67: Advanced document template events OnGenerated and OnImportAttachment allow advanced users to enter expressions which will be evaluated whenever these document template/importing events are triggered. This enables greater automation. --- .../BI/DocumentTemplateBI/DocumentsLog.cs | 478 ++++++++++ .../Importer/DocumentImporterJob.cs | 12 +- .../Importer/DocumentImporterLog.cs | 304 ------ .../BI/Extensions/AttachmentExtensions.cs | 28 +- .../Extensions/DocumentTemplateExtensions.cs | 77 +- Disco.BI/BI/Interop/Pdf/PdfImporter.cs | 36 +- Disco.BI/Disco.BI.csproj | 3 +- Disco.Data/Disco.Data.csproj | 9 +- .../201407260624238_DBv16.Designer.cs | 27 + .../Migrations/201407260624238_DBv16.cs | 22 + .../Migrations/201407260624238_DBv16.resx | 123 +++ .../Repository/Device/DeviceProfile.cs | 4 +- .../DocumentTemplate/DocumentTemplate.cs | 6 +- Disco.Services/Authorization/Claims.cs | 16 +- .../DocumentTemplateClaims.cs | 2 +- Disco.Services/Logging/LogContext.cs | 4 +- Disco.Services/Tasks/ScheduledTasks.cs | 4 +- .../Controllers/DocumentTemplateController.cs | 48 + .../Config/Views/DeviceProfile/Show.cshtml | 353 ++----- .../Views/DeviceProfile/Show.generated.cs | 813 +++++++--------- .../DocumentTemplate/ImportStatus.cshtml | 8 +- .../ImportStatus.generated.cs | 8 +- .../Config/Views/DocumentTemplate/Show.cshtml | 286 ++++-- .../Views/DocumentTemplate/Show.generated.cs | 873 ++++++++++++------ .../Modules/Disco-PropertyChangeHelpers.js | 4 +- .../Disco-PropertyChangeHelpers.min.js | 2 +- .../Disco-PropertyChangeHelpers.min.js.map | 2 +- .../disco.propertychangehelpers.js | 4 +- Disco.Web/ClientSource/Style/Config.css | 16 +- Disco.Web/ClientSource/Style/Config.less | 15 +- Disco.Web/ClientSource/Style/Config.min.css | 2 +- ...PI.DocumentTemplateController.generated.cs | 64 ++ 32 files changed, 2179 insertions(+), 1474 deletions(-) create mode 100644 Disco.BI/BI/DocumentTemplateBI/DocumentsLog.cs delete mode 100644 Disco.BI/BI/DocumentTemplateBI/Importer/DocumentImporterLog.cs create mode 100644 Disco.Data/Migrations/201407260624238_DBv16.Designer.cs create mode 100644 Disco.Data/Migrations/201407260624238_DBv16.cs create mode 100644 Disco.Data/Migrations/201407260624238_DBv16.resx diff --git a/Disco.BI/BI/DocumentTemplateBI/DocumentsLog.cs b/Disco.BI/BI/DocumentTemplateBI/DocumentsLog.cs new file mode 100644 index 00000000..a2249651 --- /dev/null +++ b/Disco.BI/BI/DocumentTemplateBI/DocumentsLog.cs @@ -0,0 +1,478 @@ +using Disco.Models.Repository; +using Disco.Services.Logging; +using Disco.Services.Logging.Models; +using System; +using System.Collections.Generic; +using System.Diagnostics; +namespace Disco.BI.DocumentTemplateBI +{ + public class DocumentsLog : LogBase + { + public enum EventTypeIds + { + ImportStarting = 10, + ImportProgress, + ImportFinished, + ImportWarning = 15, + ImportError, + ImportAttachmentExpressionEvaluated = 50, + ImportPageStarting = 100, + ImportPageImageUpdate = 104, + ImportPageProgress, + ImportPageDetected = 110, + ImportPageUndetected = 115, + ImportPageError = 120, + ImportPageUndetectedStored = 150, + DocumentGenerated = 500, + DocumentGeneratedWithExpression + } + + private const int _ModuleId = 40; + + public static DocumentsLog Current + { + get + { + return (DocumentsLog)LogContext.LogModules[_ModuleId]; + } + } + + public override string ModuleDescription + { + get + { + return "Documents"; + } + } + public override int ModuleId + { + get + { + return _ModuleId; + } + } + public override string ModuleName + { + get + { + return "Documents"; + } + } + private static void Log(DocumentsLog.EventTypeIds EventTypeId, params object[] Args) + { + DocumentsLog.Current.Log((int)EventTypeId, Args); + } + public static void LogImportStarting(string SessionId, string DocumentName) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportStarting, new object[] + { + SessionId, + DocumentName + }); + } + public static void LogImportProgress(string SessionId, int? Progress, string Status) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportProgress, new object[] + { + SessionId, + Progress, + Status + }); + } + public static void LogImportFinished(string SessionId) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportFinished, new object[] + { + SessionId + }); + } + public static void LogImportWarning(string SessionId, string Message) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportWarning, new object[] + { + SessionId, + Message + }); + } + public static void LogImportError(string SessionId, string Message) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportError, new object[] + { + SessionId, + Message + }); + } + public static void LogImportAttachmentExpressionEvaluated(DocumentTemplate template, Device device, DeviceAttachment attachment, string Result) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportAttachmentExpressionEvaluated, new object[] + { + template.Id, + device.SerialNumber, + attachment.Id, + Result + }); + } + public static void LogImportAttachmentExpressionEvaluated(DocumentTemplate template, Job job, JobAttachment attachment, string Result) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportAttachmentExpressionEvaluated, new object[] + { + template.Id, + job.Id, + attachment.Id, + Result + }); + } + public static void LogImportAttachmentExpressionEvaluated(DocumentTemplate template, User user, UserAttachment attachment, string Result) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportAttachmentExpressionEvaluated, new object[] + { + template.Id, + user.UserId, + attachment.Id, + Result + }); + } + public static void LogImportAttachmentExpressionEvaluated(DocumentTemplate Template, object Data, object Attachment, string Result) + { + if (Data is Job) + LogImportAttachmentExpressionEvaluated(Template, (Job)Data, (JobAttachment)Attachment, Result); + else if (Data is User) + LogImportAttachmentExpressionEvaluated(Template, (User)Data, (UserAttachment)Attachment, Result); + else if (Data is Device) + LogImportAttachmentExpressionEvaluated(Template, (Device)Data, (DeviceAttachment)Attachment, Result); + else + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportAttachmentExpressionEvaluated, new object[] + { + Template.Id, + Data.ToString(), + Attachment.ToString(), + Result + }); + } + public static void LogImportPageStarting(string SessionId, int PageNumber) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportPageStarting, new object[] + { + SessionId, + PageNumber + }); + } + public static void LogImportPageImageUpdate(string SessionId, int PageNumber) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportPageImageUpdate, new object[] + { + SessionId, + PageNumber + }); + } + public static void LogImportPageProgress(string SessionId, int PageNumber, int? Progress, string Status) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportPageProgress, new object[] + { + SessionId, + PageNumber, + Progress, + Status + }); + } + public static void LogImportPageDetected(string SessionId, int PageNumber, string DocumentTypeId, string DocumentTypeName, string TargetType, string AssignedId, string AssignedName) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportPageDetected, new object[] + { + SessionId, + PageNumber, + DocumentTypeId, + DocumentTypeName, + TargetType, + AssignedId, + AssignedName + }); + } + public static void LogImportPageUndetected(string SessionId, int PageNumber) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportPageUndetected, new object[] + { + SessionId, + PageNumber + }); + } + public static void LogImportPageError(string SessionId, int PageNumber, string Message) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportPageError, new object[] + { + SessionId, + PageNumber, + Message + }); + } + public static void LogImportPageUndetectedStored(string SessionId, int PageNumber) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.ImportPageUndetectedStored, new object[] + { + SessionId, + PageNumber + }); + } + public static void LogDocumentGenerated(DocumentTemplate Template, Device Device, User Author, string ExpressionResult) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.DocumentGeneratedWithExpression, new object[] + { + Template.Id, + Device.SerialNumber, + Author.UserId, + ExpressionResult + }); + } + public static void LogDocumentGenerated(DocumentTemplate Template, Job Job, User Author, string ExpressionResult) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.DocumentGeneratedWithExpression, new object[] + { + Template.Id, + Job.Id, + Author.UserId, + ExpressionResult + }); + } + public static void LogDocumentGenerated(DocumentTemplate Template, User User, User Author, string ExpressionResult) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.DocumentGeneratedWithExpression, new object[] + { + Template.Id, + User.UserId, + Author.UserId, + ExpressionResult + }); + } + public static void LogDocumentGenerated(DocumentTemplate Template, object Data, User Author, string ExpressionResult) + { + if (Data is Job) + LogDocumentGenerated(Template, (Job)Data, Author, ExpressionResult); + else if (Data is User) + LogDocumentGenerated(Template, (User)Data, Author, ExpressionResult); + else if (Data is Device) + LogDocumentGenerated(Template, (Device)Data, Author, ExpressionResult); + else + DocumentsLog.Log(DocumentsLog.EventTypeIds.DocumentGeneratedWithExpression, new object[] + { + Template.Id, + "UNKNOWN", + Author.UserId, + ExpressionResult + }); + } + public static void LogDocumentGenerated(DocumentTemplate Template, Device Device, User Author) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.DocumentGenerated, new object[] + { + Template.Id, + Device.SerialNumber, + Author.UserId + }); + } + public static void LogDocumentGenerated(DocumentTemplate Template, Job Job, User Author) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.DocumentGenerated, new object[] + { + Template.Id, + Job.Id, + Author.UserId + }); + } + public static void LogDocumentGenerated(DocumentTemplate Template, User User, User Author) + { + DocumentsLog.Log(DocumentsLog.EventTypeIds.DocumentGenerated, new object[] + { + Template.Id, + User.UserId, + Author.UserId + }); + } + public static void LogDocumentGenerated(DocumentTemplate Template, object Data, User Author) + { + if (Data is Job) + LogDocumentGenerated(Template, (Job)Data, Author); + else if (Data is User) + LogDocumentGenerated(Template, (User)Data, Author); + else if (Data is Device) + LogDocumentGenerated(Template, (Device)Data, Author); + else + DocumentsLog.Log(DocumentsLog.EventTypeIds.DocumentGenerated, new object[] + { + Template.Id, + "UNKNOWN", + Author.UserId + }); + } + protected override System.Collections.Generic.List LoadEventTypes() + { + return new System.Collections.Generic.List + { + new LogEventType + { + Id = (int)EventTypeIds.ImportStarting, + ModuleId = _ModuleId, + Name = "Import Starting", + Format = "Starting import of document: {1} (SessionId: {0})", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportProgress, + ModuleId = _ModuleId, + Name = "Import Progress", + Format = "Processing: {1}% Complete; Status: {2}", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = false, + UseDisplay = false + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportFinished, + ModuleId = _ModuleId, + Name = "Import Finished", + Format = "Import of document complete (SessionId: {0})", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportWarning, + ModuleId = _ModuleId, + Name = "Import Warning", + Format = "Import Warning: {1} (SessionId: {0})", + Severity = (int)LogEventType.Severities.Warning, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportError, + ModuleId = _ModuleId, + Name = "Import Error", + Format = "Import Error: {1} (SessionId: {0})", + Severity = (int)LogEventType.Severities.Error, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportAttachmentExpressionEvaluated, + ModuleId = _ModuleId, + Name = "Import Attachment Expression Evaluated", + Format = "The import attachment expression for '{0}' was evaluated for '{1}' (attachment id: {2}) with the result: {3}", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportPageStarting, + ModuleId = _ModuleId, + Name = "Import Page Starting", + Format = "Starting import of page: {1} (SessionId: {0})", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportPageImageUpdate, + ModuleId = _ModuleId, + Name = "Import Page Image Update", + Format = null, + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = false, + UseDisplay = false + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportPageProgress, + ModuleId = _ModuleId, + Name = "Import Page Progress", + Format = "Processing: Page {1}; {2}% Complete; Status: {3}", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = false, + UseDisplay = false + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportPageDetected, + ModuleId = _ModuleId, + Name = "Import Page Assigned", + Format = "Page {1} of type '{3}' assigned to {4}: '{6}'", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportPageUndetected, + ModuleId = _ModuleId, + Name = "Import Page Undetected", + Format = "Page {1} not detected", + Severity = (int)LogEventType.Severities.Warning, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportPageError, + ModuleId = _ModuleId, + Name = "Import Page Error", + Format = "Page {1}, Import Error: {2}", + Severity = (int)LogEventType.Severities.Error, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.ImportPageUndetectedStored, + ModuleId = _ModuleId, + Name = "Import Page Undetected Stored", + Format = null, + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = false, + UseDisplay = false + }, + new LogEventType + { + Id = (int)EventTypeIds.DocumentGenerated, + ModuleId = _ModuleId, + Name = "Document Generated", + Format = "A '{0}' document was generated for '{1}' by '{2}'", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = true, + UseDisplay = true + }, + new LogEventType + { + Id = (int)EventTypeIds.DocumentGeneratedWithExpression, + ModuleId = _ModuleId, + Name = "Document Generated with Expression", + Format = "A '{0}' document was generated for '{1}' by '{2}'. The expression returned: {3}", + Severity = (int)LogEventType.Severities.Information, + UseLive = true, + UsePersist = true, + UseDisplay = true + } + }; + } + } +} diff --git a/Disco.BI/BI/DocumentTemplateBI/Importer/DocumentImporterJob.cs b/Disco.BI/BI/DocumentTemplateBI/Importer/DocumentImporterJob.cs index 6f7f91b4..9584ae33 100644 --- a/Disco.BI/BI/DocumentTemplateBI/Importer/DocumentImporterJob.cs +++ b/Disco.BI/BI/DocumentTemplateBI/Importer/DocumentImporterJob.cs @@ -28,12 +28,12 @@ namespace Disco.BI.DocumentTemplateBI.Importer if (!string.IsNullOrEmpty(friendlyFilename)) friendlyFilename = System.IO.Path.GetFileName(friendlyFilename); - DocumentImporterLog.LogImportStarting(sessionId, friendlyFilename); + DocumentsLog.LogImportStarting(sessionId, friendlyFilename); if (!File.Exists(filename)) { - DocumentImporterLog.LogImportWarning(sessionId, string.Format("File not found: {0}", filename)); - DocumentImporterLog.LogImportFinished(sessionId); + DocumentsLog.LogImportWarning(sessionId, string.Format("File not found: {0}", filename)); + DocumentsLog.LogImportFinished(sessionId); context.Scheduler.DeleteJob(context.JobDetail.Key); return; } @@ -79,7 +79,7 @@ namespace Disco.BI.DocumentTemplateBI.Importer else { // To Many Errors - DocumentImporterLog.LogImportError(sessionId, string.Format("To many errors occurred trying to import '{1}' (SessionId: {0})", sessionId, friendlyFilename)); + DocumentsLog.LogImportError(sessionId, string.Format("To many errors occurred trying to import '{1}' (SessionId: {0})", sessionId, friendlyFilename)); // Move to Errors Folder if (File.Exists(filename)) { @@ -101,14 +101,14 @@ namespace Disco.BI.DocumentTemplateBI.Importer } } } - DocumentImporterLog.LogImportFinished(sessionId); + DocumentsLog.LogImportFinished(sessionId); // All Done context.Scheduler.DeleteJob(context.JobDetail.Key); } catch (Exception ex) { - DocumentImporterLog.LogImportWarning(sessionId, string.Format("{0}; Will try again in 10 Seconds", ex.Message)); + DocumentsLog.LogImportWarning(sessionId, string.Format("{0}; Will try again in 10 Seconds", ex.Message)); // Reschedule Job for 10 seconds SimpleTriggerImpl trig = new SimpleTriggerImpl(Guid.NewGuid().ToString(), new DateTimeOffset(DateTime.Now.AddSeconds(10))); context.Scheduler.RescheduleJob(context.Trigger.Key, trig); diff --git a/Disco.BI/BI/DocumentTemplateBI/Importer/DocumentImporterLog.cs b/Disco.BI/BI/DocumentTemplateBI/Importer/DocumentImporterLog.cs deleted file mode 100644 index 12960d6d..00000000 --- a/Disco.BI/BI/DocumentTemplateBI/Importer/DocumentImporterLog.cs +++ /dev/null @@ -1,304 +0,0 @@ -using Disco.Services.Logging; -using Disco.Services.Logging.Models; -using System; -using System.Collections.Generic; -using System.Diagnostics; -namespace Disco.BI.DocumentTemplateBI.Importer -{ - public class DocumentImporterLog : LogBase - { - public enum EventTypeIds - { - ImportStarting = 10, - ImportProgress, - ImportFinished, - ImportWarning = 15, - ImportError, - ImportPageStarting = 100, - ImportPageImageUpdate = 104, - ImportPageProgress, - ImportPageDetected = 110, - ImportPageUndetected = 115, - ImportPageError = 120, - ImportPageUndetectedStored = 150 - } - - private const int _ModuleId = 40; - - public static DocumentImporterLog Current - { - get - { - return (DocumentImporterLog)LogContext.LogModules[_ModuleId]; - } - } - - public override string ModuleDescription - { - get - { - return "Document Importer"; - } - } - public override int ModuleId - { - get - { - return _ModuleId; - } - } - public override string ModuleName - { - get - { - return "DocumentImporter"; - } - } - private static void Log(DocumentImporterLog.EventTypeIds EventTypeId, params object[] Args) - { - DocumentImporterLog.Current.Log((int)EventTypeId, Args); - } - public static void LogImportStarting(string SessionId, string DocumentName) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportStarting, new object[] - { - SessionId, - DocumentName - }); - } - public static void LogImportProgress(string SessionId, int? Progress, string Status) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportProgress, new object[] - { - SessionId, - Progress, - Status - }); - } - public static void LogImportFinished(string SessionId) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportFinished, new object[] - { - SessionId - }); - } - public static void LogImportWarning(string SessionId, string Message) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportWarning, new object[] - { - SessionId, - Message - }); - } - public static void LogImportError(string SessionId, string Message) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportError, new object[] - { - SessionId, - Message - }); - } - public static void LogImportPageStarting(string SessionId, int PageNumber) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportPageStarting, new object[] - { - SessionId, - PageNumber - }); - } - public static void LogImportPageImageUpdate(string SessionId, int PageNumber) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportPageImageUpdate, new object[] - { - SessionId, - PageNumber - }); - } - public static void LogImportPageProgress(string SessionId, int PageNumber, int? Progress, string Status) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportPageProgress, new object[] - { - SessionId, - PageNumber, - Progress, - Status - }); - } - public static void LogImportPageDetected(string SessionId, int PageNumber, string DocumentTypeId, string DocumentTypeName, string TargetType, string AssignedId, string AssignedName) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportPageDetected, new object[] - { - SessionId, - PageNumber, - DocumentTypeId, - DocumentTypeName, - TargetType, - AssignedId, - AssignedName - }); - } - public static void LogImportPageUndetected(string SessionId, int PageNumber) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportPageUndetected, new object[] - { - SessionId, - PageNumber - }); - } - public static void LogImportPageError(string SessionId, int PageNumber, string Message) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportPageError, new object[] - { - SessionId, - PageNumber, - Message - }); - } - public static void LogImportPageUndetectedStored(string SessionId, int PageNumber) - { - DocumentImporterLog.Log(DocumentImporterLog.EventTypeIds.ImportPageUndetectedStored, new object[] - { - SessionId, - PageNumber - }); - } - protected override System.Collections.Generic.List LoadEventTypes() - { - return new System.Collections.Generic.List - { - new LogEventType - { - Id = 10, - ModuleId = 40, - Name = "Import Starting", - Format = "Starting import of document: {1} (SessionId: {0})", - Severity = 0, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 11, - ModuleId = 40, - Name = "Import Progress", - Format = "Processing: {1}% Complete; Status: {2}", - Severity = 0, - UseLive = true, - UsePersist = false, - UseDisplay = false - }, - new LogEventType - { - Id = 12, - ModuleId = 40, - Name = "Import Finished", - Format = "Import of document complete (SessionId: {0})", - Severity = 0, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 15, - ModuleId = 40, - Name = "Import Warning", - Format = "Import Warning: {1} (SessionId: {0})", - Severity = 1, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 16, - ModuleId = 40, - Name = "Import Error", - Format = "Import Error: {1} (SessionId: {0})", - Severity = 2, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 100, - ModuleId = 40, - Name = "Import Page Starting", - Format = "Starting import of page: {1} (SessionId: {0})", - Severity = 0, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 104, - ModuleId = 40, - Name = "Import Page Image Update", - Format = null, - Severity = 0, - UseLive = true, - UsePersist = false, - UseDisplay = false - }, - new LogEventType - { - Id = 105, - ModuleId = 40, - Name = "Import Page Progress", - Format = "Processing: Page {1}; {2}% Complete; Status: {3}", - Severity = 0, - UseLive = true, - UsePersist = false, - UseDisplay = false - }, - new LogEventType - { - Id = 110, - ModuleId = 40, - Name = "Import Page Assigned", - Format = "Page {1} of type '{3}' assigned to {4}: '{6}'", - Severity = 0, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 115, - ModuleId = 40, - Name = "Import Page Undetected", - Format = "Page {1} not detected", - Severity = 1, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 120, - ModuleId = 40, - Name = "Import Page Error", - Format = "Page {1}, Import Error: {2}", - Severity = 2, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 150, - ModuleId = 40, - Name = "Import Page Undetected Stored", - Format = null, - Severity = 0, - UseLive = true, - UsePersist = false, - UseDisplay = false - } - }; - } - } -} diff --git a/Disco.BI/BI/Extensions/AttachmentExtensions.cs b/Disco.BI/BI/Extensions/AttachmentExtensions.cs index c2c5ca4a..d790e59d 100644 --- a/Disco.BI/BI/Extensions/AttachmentExtensions.cs +++ b/Disco.BI/BI/Extensions/AttachmentExtensions.cs @@ -7,6 +7,7 @@ using Disco.Data.Repository; using System.IO; using Disco.BI.DocumentTemplateBI; using Disco.Services.Users; +using Disco.Services.Logging; namespace Disco.BI.Extensions { @@ -15,11 +16,11 @@ namespace Disco.BI.Extensions public static bool ImportPdfAttachment(this DocumentUniqueIdentifier UniqueIdentifier, DiscoDataContext Database, System.IO.Stream PdfContent, byte[] PdfThumbnail) { - UniqueIdentifier.LoadComponents(Database); DocumentTemplate documentTemplate = UniqueIdentifier.DocumentTemplate; string filename; string comments; + object attachment; if (documentTemplate == null) { @@ -42,20 +43,33 @@ namespace Disco.BI.Extensions { case DocumentTemplate.DocumentTemplateScopes.Device: Device d = (Device)UniqueIdentifier.Data; - d.CreateAttachment(Database, creatorUser, filename, DocumentTemplate.PdfMimeType, comments, PdfContent, documentTemplate, PdfThumbnail); - return true; + attachment = d.CreateAttachment(Database, creatorUser, filename, DocumentTemplate.PdfMimeType, comments, PdfContent, documentTemplate, PdfThumbnail); + break; case DocumentTemplate.DocumentTemplateScopes.Job: Job j = (Job)UniqueIdentifier.Data; - j.CreateAttachment(Database, creatorUser, filename, DocumentTemplate.PdfMimeType, comments, PdfContent, documentTemplate, PdfThumbnail); - return true; + attachment = j.CreateAttachment(Database, creatorUser, filename, DocumentTemplate.PdfMimeType, comments, PdfContent, documentTemplate, PdfThumbnail); + break; case DocumentTemplate.DocumentTemplateScopes.User: User u = (User)UniqueIdentifier.Data; - u.CreateAttachment(Database, creatorUser, filename, DocumentTemplate.PdfMimeType, comments, PdfContent, documentTemplate, PdfThumbnail); - return true; + attachment = u.CreateAttachment(Database, creatorUser, filename, DocumentTemplate.PdfMimeType, comments, PdfContent, documentTemplate, PdfThumbnail); + break; default: return false; } + if (documentTemplate != null && !string.IsNullOrWhiteSpace(documentTemplate.OnImportAttachmentExpression)) + { + try + { + var expressionResult = documentTemplate.EvaluateOnAttachmentImportExpression(attachment, Database, creatorUser, UniqueIdentifier.TimeStamp); + DocumentsLog.LogImportAttachmentExpressionEvaluated(documentTemplate, UniqueIdentifier.Data, attachment, expressionResult); + } + catch (Exception ex) + { + SystemLog.LogException("Document Importer - OnImportAttachmentExpression", ex); + } + } + return true; } public static string RepositoryFilename(this DeviceAttachment da, DiscoDataContext Database) diff --git a/Disco.BI/BI/Extensions/DocumentTemplateExtensions.cs b/Disco.BI/BI/Extensions/DocumentTemplateExtensions.cs index 2f80a8e6..62baa538 100644 --- a/Disco.BI/BI/Extensions/DocumentTemplateExtensions.cs +++ b/Disco.BI/BI/Extensions/DocumentTemplateExtensions.cs @@ -75,16 +75,29 @@ namespace Disco.BI.Extensions } public static System.IO.Stream GeneratePdf(this DocumentTemplate dt, DiscoDataContext Database, object Data, User CreatorUser, System.DateTime TimeStamp, DocumentState State, bool FlattenFields = false) { - return Interop.Pdf.PdfGenerator.GenerateFromTemplate(dt, Database, Data, CreatorUser, TimeStamp, State, FlattenFields); + bool generateExpression = !string.IsNullOrEmpty(dt.OnGenerateExpression); + string generateExpressionResult = null; + + if (generateExpression) + generateExpressionResult = dt.EvaluateOnGenerateExpression(Data, Database, CreatorUser, TimeStamp, State); + + var pdfStream = Interop.Pdf.PdfGenerator.GenerateFromTemplate(dt, Database, Data, CreatorUser, TimeStamp, State, FlattenFields); + + if (generateExpression) + DocumentsLog.LogDocumentGenerated(dt, Data, CreatorUser, generateExpressionResult); + else + DocumentsLog.LogDocumentGenerated(dt, Data, CreatorUser); + + return pdfStream; } public static Expression FilterExpressionFromCache(this DocumentTemplate dt) { - return ExpressionCache.GetValue("DocumentTemplateFilterExpression", dt.Id, () => { return Expression.TokenizeSingleDynamic(null, dt.FilterExpression, 0); }); + return ExpressionCache.GetValue("DocumentTemplate_FilterExpression", dt.Id, () => { return Expression.TokenizeSingleDynamic(null, dt.FilterExpression, 0); }); } public static void FilterExpressionInvalidateCache(this DocumentTemplate dt) { - ExpressionCache.InvalidateKey("DocumentTemplateFilterExpression", dt.Id); + ExpressionCache.InvalidateKey("DocumentTemplate_FilterExpression", dt.Id); } public static bool FilterExpressionMatches(this DocumentTemplate dt, object Data, DiscoDataContext Database, User User, System.DateTime TimeStamp, DocumentState State) { @@ -112,6 +125,64 @@ namespace Disco.BI.Extensions } return true; } + + public static Expression OnImportAttachmentExpressionFromCache(this DocumentTemplate dt) + { + return ExpressionCache.GetValue("DocumentTemplate_OnImportExpression", dt.Id, () => { return Expression.TokenizeSingleDynamic(null, dt.OnImportAttachmentExpression, 0); }); + } + public static void OnImportAttachmentExpressionInvalidateCache(this DocumentTemplate dt) + { + ExpressionCache.InvalidateKey("DocumentTemplate_OnImportExpression", dt.Id); + } + public static string EvaluateOnAttachmentImportExpression(this DocumentTemplate dt, object Data, DiscoDataContext Database, User User, System.DateTime TimeStamp) + { + if (!string.IsNullOrEmpty(dt.OnImportAttachmentExpression)) + { + Expression compiledExpression = dt.OnImportAttachmentExpressionFromCache(); + System.Collections.IDictionary evaluatorVariables = Expression.StandardVariables(dt, Database, User, TimeStamp, null); + try + { + object result = compiledExpression.EvaluateFirst(Data, evaluatorVariables); + if (result == null) + return null; + else + return result.ToString(); + } + catch + { + throw; + } + } + return null; + } + + public static Expression OnGenerateExpressionFromCache(this DocumentTemplate dt) + { + return ExpressionCache.GetValue("DocumentTemplate_OnGenerateExpression", dt.Id, () => { return Expression.TokenizeSingleDynamic(null, dt.OnGenerateExpression, 0); }); + } + public static void OnGenerateExpressionInvalidateCache(this DocumentTemplate dt) + { + ExpressionCache.InvalidateKey("DocumentTemplate_OnGenerateExpression", dt.Id); + } + public static string EvaluateOnGenerateExpression(this DocumentTemplate dt, object Data, DiscoDataContext Database, User User, System.DateTime TimeStamp, DocumentState State) + { + if (!string.IsNullOrEmpty(dt.OnGenerateExpression)) + { + Expression compiledExpression = dt.OnGenerateExpressionFromCache(); + System.Collections.IDictionary evaluatorVariables = Expression.StandardVariables(dt, Database, User, TimeStamp, State); + try + { + object result = compiledExpression.EvaluateFirst(Data, evaluatorVariables); + return result.ToString(); + } + catch + { + throw; + } + } + return null; + } + public static string GetDataId(this DocumentTemplate dt, object Data) { if (Data is string) diff --git a/Disco.BI/BI/Interop/Pdf/PdfImporter.cs b/Disco.BI/BI/Interop/Pdf/PdfImporter.cs index 65aa240b..71b21611 100644 --- a/Disco.BI/BI/Interop/Pdf/PdfImporter.cs +++ b/Disco.BI/BI/Interop/Pdf/PdfImporter.cs @@ -307,7 +307,7 @@ namespace Disco.BI.Interop.Pdf { DetectPageResult result = new DetectPageResult() { PageNumber = PageNumber }; - DocumentImporterLog.LogImportPageProgress(SessionId, PageNumber, 10, "Loading Page Images"); + DocumentsLog.LogImportPageProgress(SessionId, PageNumber, 10, "Loading Page Images"); using (DisposableImageCollection pageImages = pdfReader.PdfPageImages(PageNumber)) { @@ -317,13 +317,13 @@ namespace Disco.BI.Interop.Pdf var pageThumbnailFilename = Path.Combine(DataStoreSessionCacheLocation, string.Format("{0}-{1}", SessionId, PageNumber)); result.ThumbnailImage.Montage.SavePng(pageThumbnailFilename); - DocumentImporterLog.LogImportPageImageUpdate(SessionId, PageNumber); + DocumentsLog.LogImportPageImageUpdate(SessionId, PageNumber); double pageProgressInterval = 90 / pageImages.Count; foreach (var pageImageOriginal in pageImages) { - DocumentImporterLog.LogImportPageProgress(SessionId, PageNumber, (int)(10 + (pageProgressInterval * pageImages.IndexOf(pageImageOriginal))), String.Format("Processing Page Image {0} of {1}", pageImages.IndexOf(pageImageOriginal) + 1, pageImages.Count)); + DocumentsLog.LogImportPageProgress(SessionId, PageNumber, (int)(10 + (pageProgressInterval * pageImages.IndexOf(pageImageOriginal))), String.Format("Processing Page Image {0} of {1}", pageImages.IndexOf(pageImageOriginal) + 1, pageImages.Count)); using (var zxingResult = DetectImage(Database, pageImageOriginal, SessionId, detectDocumentTemplates, StateHints)) { @@ -343,7 +343,7 @@ namespace Disco.BI.Interop.Pdf } result.ThumbnailImage.Montage.SavePng(pageThumbnailFilename); - DocumentImporterLog.LogImportPageImageUpdate(SessionId, PageNumber); + DocumentsLog.LogImportPageImageUpdate(SessionId, PageNumber); result.AttachmentThumbnailImage = new MemoryStream(); using (var attachmentThumbImage = pageImages.BuildImageMontage(48, 48, true)) @@ -381,7 +381,7 @@ namespace Disco.BI.Interop.Pdf { var dataStoreUnassignedLocation = DataStore.CreateLocation(Database, "DocumentDropBox_Unassigned"); - DocumentImporterLog.LogImportProgress(SessionId, 0, "Reading File"); + DocumentsLog.LogImportProgress(SessionId, 0, "Reading File"); using (FileStream fs = new FileStream(Filename, FileMode.Open, FileAccess.ReadWrite, FileShare.None)) { @@ -398,8 +398,8 @@ namespace Disco.BI.Interop.Pdf for (int PageNumber = 1; PageNumber <= pdfReader.NumberOfPages; PageNumber++) { - DocumentImporterLog.LogImportProgress(SessionId, (int)(PageNumber * progressInterval), string.Format("Processing Page {0} of {1}", PageNumber, pdfReader.NumberOfPages)); - DocumentImporterLog.LogImportPageStarting(SessionId, PageNumber); + DocumentsLog.LogImportProgress(SessionId, (int)(PageNumber * progressInterval), string.Format("Processing Page {0} of {1}", PageNumber, pdfReader.NumberOfPages)); + DocumentsLog.LogImportPageStarting(SessionId, PageNumber); using (var pageResult = DetectPage(Database, pdfReader, PageNumber, SessionId, dataStoreSessionPagesCacheLocation, detectDocumentTemplates, detectStateHints)) { @@ -409,19 +409,25 @@ namespace Disco.BI.Interop.Pdf pdfPagesAssigned.Add(PageNumber, new Tuple(docId, pageResult.AttachmentThumbnailImage.ToArray())); docId.LoadComponents(Database); - DocumentImporterLog.LogImportPageDetected(SessionId, PageNumber, docId.TemplateTypeId, docId.DocumentTemplate.Description, docId.DocumentTemplate.Scope, docId.DataId, docId.DataDescription); + DocumentsLog.LogImportPageDetected(SessionId, PageNumber, docId.TemplateTypeId, docId.DocumentTemplate.Description, docId.DocumentTemplate.Scope, docId.DataId, docId.DataDescription); } else { // Undetected Page - Write Preview-Images while still in Memory - DocumentImporterLog.LogImportPageUndetected(SessionId, PageNumber); + DocumentsLog.LogImportPageUndetected(SessionId, PageNumber); // Thumbnail: string unassignedImageThumbnailFilename = Path.Combine(dataStoreUnassignedLocation, string.Format("{0}_{1}_thumbnail.png", SessionId, PageNumber)); - pageResult.ThumbnailImage.Montage.SavePng(unassignedImageThumbnailFilename); + if (pageResult.ThumbnailImage != null) + pageResult.ThumbnailImage.Montage.SavePng(unassignedImageThumbnailFilename); + else + Disco.Properties.Resources.MimeType_pdf48.SavePng(unassignedImageThumbnailFilename); // Large Preview string unassignedImageFilename = Path.Combine(dataStoreUnassignedLocation, string.Format("{0}_{1}.jpg", SessionId, PageNumber)); - pageResult.UndetectedPageImage.Montage.SaveJpg(90, unassignedImageFilename); + if (pageResult.UndetectedPageImage != null) + pageResult.UndetectedPageImage.Montage.SaveJpg(90, unassignedImageFilename); + else + Disco.Properties.Resources.MimeType_pdf48.SaveJpg(90, unassignedImageFilename); } } @@ -435,7 +441,7 @@ namespace Disco.BI.Interop.Pdf foreach (var documentPortion in assignedDocuments) { - DocumentImporterLog.LogImportProgress(SessionId, (int)(70 + (assignedDocuments.IndexOf(documentPortion) * progressInterval)), string.Format("Importing Documents {0} of {1}", assignedDocuments.IndexOf(documentPortion) + 1, assignedDocuments.Count)); + DocumentsLog.LogImportProgress(SessionId, (int)(70 + (assignedDocuments.IndexOf(documentPortion) * progressInterval)), string.Format("Importing Documents {0} of {1}", assignedDocuments.IndexOf(documentPortion) + 1, assignedDocuments.Count)); var documentPortionInfo = documentPortion.First().Value; var documentPortionIdentifier = documentPortionInfo.Item1; @@ -506,7 +512,7 @@ namespace Disco.BI.Interop.Pdf //dataStoreUnassignedLocation foreach (var PageNumber in pdfPagesUnassigned) { - DocumentImporterLog.LogImportProgress(SessionId, (int)(90 + (pdfPagesUnassigned.IndexOf(PageNumber) * progressInterval)), string.Format("Processing Undetected Documents {0} of {1}", pdfPagesUnassigned.IndexOf(PageNumber) + 1, pdfPagesUnassigned.Count)); + DocumentsLog.LogImportProgress(SessionId, (int)(90 + (pdfPagesUnassigned.IndexOf(PageNumber) * progressInterval)), string.Format("Processing Undetected Documents {0} of {1}", pdfPagesUnassigned.IndexOf(PageNumber) + 1, pdfPagesUnassigned.Count)); using (MemoryStream msBuilder = new MemoryStream()) { @@ -527,14 +533,14 @@ namespace Disco.BI.Interop.Pdf File.WriteAllBytes(Path.Combine(dataStoreUnassignedLocation, string.Format("{0}_{1}.pdf", SessionId, PageNumber)), msBuilder.ToArray()); - DocumentImporterLog.LogImportPageUndetectedStored(SessionId, PageNumber); + DocumentsLog.LogImportPageUndetectedStored(SessionId, PageNumber); } } } } - DocumentImporterLog.LogImportProgress(SessionId, 100, "Finished Importing Document"); + DocumentsLog.LogImportProgress(SessionId, 100, "Finished Importing Document"); return true; } diff --git a/Disco.BI/Disco.BI.csproj b/Disco.BI/Disco.BI.csproj index 1c3927cf..8e9a73ca 100644 --- a/Disco.BI/Disco.BI.csproj +++ b/Disco.BI/Disco.BI.csproj @@ -152,7 +152,7 @@ - + @@ -189,6 +189,7 @@ ResXFileCodeGenerator Resources.Designer.cs + Designer diff --git a/Disco.Data/Disco.Data.csproj b/Disco.Data/Disco.Data.csproj index f5cab436..591126ae 100644 --- a/Disco.Data/Disco.Data.csproj +++ b/Disco.Data/Disco.Data.csproj @@ -146,6 +146,10 @@ 201407100413342_DBv15.cs + + + 201407260624238_DBv16.cs + @@ -206,6 +210,9 @@ 201407100413342_DBv15.cs + + 201407260624238_DBv16.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -219,7 +226,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + H4sIAAAAAAAEAO19WXPcSJLm+5rtf6DxaXfMRtRVKqlNmjGWKFWTLYlsUlX9SIMygySmkEAOgFSL/df2YX/S/oWNwBmHe1wIHMniS5WY4fBw9/jC43b/f//n/779zx+b5OA7yYs4S98dPnvy9PCApKtsHae37w535c2/vz78z//4n//j7Yf15sfB7y3dC0ZHv0yLd4d3Zbn9y9FRsbojm6h4solXeVZkN+WTVbY5itbZ0fOnT98cPXt2RCiLQ8rr4ODt5S4t4w2p/qB/vs/SFdmWuyj5nK1JUjS/05KriuvBl2hDim20Iu8OT+JilT05icroySXZZkVcZvn94cFxEkdUmCuS3BwebF/+5beCXJV5lt5ebaMyjpKv91tCy2+ipCCN6H/ZvrSV/ulzJv1RlKZZSdllqZf2h51eVLMP1ALlPROr0u7dITXCTXy7yyv+pyURyOkHfyP3wg/0p4s825K8vL8kNw2TqxX95fDgyExJ2cl0b4/kOrrvRPZMavpHmVOUHB58jH+Q9SeS3pZ3nYE/Rz/aX15TqPyWxhRT9Jsy39HSL7skib4lpCM/0tZaiTpxnb9Hyc5VU/pPTbX133ytb496EGihcZKtdhuSll/JZptEJfFBxunavbnZN04WeDHY7iekWOXxtu5jTnU//2lw5T7wfjW00o9xUpL8w49tTorCXW1X0KkCnKe/kpRQv0NmFeJ0s83y8rgso9UdA/uMwnyknawk6ccs37R1/5JlCYlSDzx/j1ek+BSnf5D1r3m2206uDR0K82kF+BJ9j2+rcUwS5Sz7drX7Vo3FhweXJKloirt4W4/cT2RHdy188DHPNpdZAjhEnu76KtvlK9aNMwvir1F+S0pPv9wzCuORQTJaCathEv/9fLAL5aR1qvmn+QaOZ0/dtUYR3vuvkVHeAtcK5W2XsNWi9lrvM+qSU8oTUUMkQrXAyVQlNLSuOtBv/74jO6QN2lJMaqhcERck8pCz8iCIlKxMI6RcDMmo0HiIiFpRI5tJLqNM9hNkETfTz49P0/LFc8Bt0JXoFV2gknaGtb5gM4s8Zd+SSgu7CUS1LtZUZzMPGMtD2tT9PivKttITsoo3UXJ4cJHTfzUbD68PD65WEWMHmdHNb1XG0risqvxa9XGyz4LpEKeFEHt0Nf0MabjTVeZHFg56QK+sW+NB9UjffvTT4H70OUp3N9Gq3OUkd57bDa687ldz1FqPkE41vxxa8Qm5iXZJeUF7y11UkBO28dK6MPrvr/HGg2Xd1fycoYPQ/4jyPErLe1r6PV47YyWU7S7JNorzyYQIMZ8dODjAztUwkripoZP+WhgBZZn5UmQYE0gCzMm8NrFJHkfJl93mG8OM8x618LXbXt7g5e9xUZDSq+7BXe5TtoqCb5vaO7UwM1TGif54EyfEPJTbMPslKld3QcQ6yTZRnLpvbAw1L4VUfJuSNdvGm772T1FRfiHlP7P8j0/ZbZaGGAWPkyT7529ptCvv2IxrxWZhH9I86+YWvput73PCeJlktOJVCZSYmdkaseIXZg6xyjabuNoZDyMez/GSRAXnQ+qRRS4uho7EphWawzAGD7jgSOcmY+OGNFI2FNfdsCwLKhEgQ65M5bdZVzk6jbBVOS6qUIwIKtK4isn7MV3Ti3RK2/PFWOMLNH6tzz6t2WwME0aRsjGPKjhIhhgapvXDxQkpozjRKVBToIILxYjAIo2foP3OuU7YngoVWCFBhFbpPLfJ6S/xTTWMafdsejJUdJUG2yJXCYNt6jb86nKl/7GfsX5XlQXYMmpd7wPaNGL/neBcSl4L3WV56VX1fMdxwzfJms2H8/w2SuOigvfxes0uEwxaBrCF+462Ovuru4kT8izdzrBxQev6tmNaCbtiVdeVCgtn9rzRooSKWgZV0cbOH9KbLK/3SVpzv8/S76yf9WDyXSI0zHE1fRlXm1xsinx8crxaZbt0MEd+FsMW98nxehMPNkCz+KINUVA/dkniTXRLqOOu1idsMHwAN154y80qCDdMt5ugzkv4Vy8Db4PqRn3nJQ08E8AWPgPmBPX65s89Ixg+NNoeZtjNLnbbbRLPcBDVadGubSa2IhsvxjzEYfz/vosaGA3auaxmQuF2aNtzpd+jJF7TUSROdChy4ejXlsNd9Gla7PIw+2gVqyhdkdk6RqNMkIbptJmrZegEsNkNmLjiP/UMRjN5kH2JxW6j+gm28ShTIjMLlDz8WarTjqle2gCzoGo71GP60x4buU6Bwh832S5v6cL63mNyNNx7Xu3ydI56f43p4nYWjS/uspR4HVcPvxL4YUNHFWlfxrZy92NN1A8wnOv2yPvya/lEQipStmrlctcd2uoYwLArLtKAIkrFoJgyjd9OuPehif7MR0Nsd4ACnhkN3ievuMm75N2PyojQl7gOVezLj0l0azKtSgfiASABMQHRDboR1PeHcAMZfIFo3FewMw2NPq8TA5whuL++DVDpFM9vTV1u6HAAOQBouPDuS73Tfkj7YvPcc/pKVncz9euPcUI85p36bSyrmj/HG+JxszpAzWxDoiijzVa3S2F358tvlyCADvKLu7Cv5QP6K8f5IeS3sDmkrXxt97KRsadF5WxJTLJ2dM67A3LEBQu51W9Q+ZXHmgY9FPoAByriHNlnBKn56G5rg5+1s/F6y9V1CIIqnf6SN6fAQP817/Xe39LIUhk3f2R52S/YMhDefrNZOLqtcMe6B2glv3QjzKvv0wXoQ5oszhhuYEw3ZBvWY3qHcb6lbbWecbZcCxDmiv+PLVlR1L1PsiLMCWDNaRzr2NcfQhO2+dPPqdvZzucojW4Jc0ZNuc/B2l9Jsh4qXs9pPmP3Mng+vRq+h16LcEmi9f3HLL8k5S5Pw5hW5Dm3kWspQr124TnOp9k/orikFVEbV8P8igfQ8AmYIarIdVeuROxgPyvzEb7MdeZkCmngEEQEEUsbrmDQpE57Cx55QSvs/gdZwGtOGaCNez8JxJEdbSmZTGwssRRsL4nEtcnEIRYVUyYTxRRLQTElEj9k8QMUKipEKoqrUoAiA2R+YsPO36AA9hGkCkyrUQr5wFc90fcbFZPJYZVEKq0yEqmHRzWdCwskzCFIUouFUHQmicLj2NQQb4GnACQUyiABRQIP+T5lt6hktAyQqfkVkqYtGidMWTPQQRHKmiI0OFlb7iHYZ1JG3TVATD6BCBBSKYckVYk8xW2vk+qkbWkQYfliTFaBxlPUL1lqIy1HhggsUWAyy2SDzvLb+ePke0n7Hk/SeRpvmjtXc3KHAIHAuKTQDN1ifJgn01SxoUFJHo+ZJ6358Zg57DFzNf4Mn20CLgiZjwY5XxbZI9N4m9NlhGyUw2WxLt3Zsp7SoETYk2V+Vv7o+Zfi+ed8iz9R4FeNY7JfYwI9BV6EhvJKPXfEKakEeiG1LsmlF9PV7GP/XUr/nX0W4xO2wqer6jddAOTL+zGhOibji3RJvggTKVg3bDdwHlhfrNQa2iED9Onj9TrULS7GaSb3UNXd9OzJH6pekk32PczBbMNqntPYpvK5zHj16fjDj22ckyKEJS/yOMu52AHCVnJfOMSFV6z0mTVa5wXn1ehK8awaPYnHDuvQ7XTAtYPb7dY3IlsPYRSMo4TF6wi0QvZUrqJyHdEorEALi8uRaAXm6YIMnA9p1PzivnMX4BnWnCvH05VHLOuhCrNK32cJRamzsYfbuopp0I4EwwK/BBoBlAfy3/6LrMrT9QQxOYYcibhndsL80qDbRdwAGGKcRGVUh1Jftyke+Hq4z2ZS7upBA8zlP2VFcZ6fRCycXYg51AcWcNA3pn6Ai52+jnf4XPTrXZzTAYr+8D7aFaRrF9+AgDI/j6FsuEFlIf5x5/qq+dVgGf4RlykpClKwP4sm9AVxDn4x3Bi/7PLbJMrvv96Rm5L2+btsfX5D/UHuapMAEUiaP1mI/CtCguQXuMiSeEW+ZCz04nD4ityuynkcgihFeCu9zykLllA9L79kjtq9HKzdJVnRqX9+Sda7FRGvQltn/B78sqW8IzkdewjtldUMPS9j584ZIHgxbc7zmzbC4fAHKVG8YXmMr+hoFuaFC8dwoq0an2W++600YHqFX12zv60smctOXuAzjfQKtVkX9ZMQU8fuOttezRw//GBL8SgJvsS2mmY2lX/Kbm/D+PWWIzUtdWXVxc2ZdGLnkgmxSMgTtNe73O5E+gl4m3JIx+Cveu5V3zgtOp9RuYyhk6kmNDrF4fs7ZtdL8t+7OFD4VYz3PAcKsjRWZ03ejJeh40UUj6Ii4zuPhu087Dxf0+lpFAd6XQuwXYJ+niPG86BShJqpKkznsfBp+j2r3vysSBzooFRiOdeBKUvtWqfnmHyG0VYebtbUcpxv1tRKMNKsSTc62j4/0fPQvkvRfYpNw6y/dz6LxYZQX0NgR7bW3/mYwP+AFxtffdXvv3fSvv3MR/nuW1fdkaHXVnX0c63myFc2imOfDtLbZjcCFUKzJ2H8xllj7f6ETl9gkLTVFvxUqyvwhY2m0Gceb4HDvh60kHvwsphpKoYXfkh3NVrthi6+57xPuPe3Ih/KxcTpsqAY44+7BB2v6Y2Bx9lPYPBLjNYndnroYOmW8ga+IgjUAk47dXQ2oo93bxCoDLk+qKe00SLYZcIOzA9ogHq8TPjQLxMy1M6awIoJMEcerbGSaLiMZ5bJNISxz8s38cnXJwzgPHJ6jQVEeH5MtTFlXjlDDL4mZwYWUFkoRgIpizQBgqc/zAAn8wc1foyPMmnNs78sfmDxUYy+jI+8gfgzhQTxaSpd0FfQSiXQe2iUyCzzuNFTVBNpAqgYiS1aYIQEHVzy+Ic0yNA/v8drDxf/6uVQV9FVna7Jj2F7sz6PGF4P3gpMS+5x8i9xGrEb+6Yp4qsXr186X+FLGe3gu/PVS7aqbwa5FpQk7D1OyDDgk851/IcNzhWg44ZKg7gtgHCQtzrelXdZHv+rEp1V9JC81TxbZVM+tIRurBdnxegPz3B87TbCWLiiU8u4YOGiLklE5aI2OS2q/BOdGL9Rh54n91RMHg+inp8J6+Sdf1uf33yKb+i31fr33eFTxTDCB1cZS1rR0D4zEZe0F6Qd+XMD+acqRlZD/MJAXL9w7GV5aaLPUgb8jv6np2oz1AbXNUJcUBB827Ee3jyoHdwE5yn5mn2O0nvbJqg+oP/pm8FDEzblVLKYdLrUKAVUoXMPjWSn6Q3rIhXL62aU/pWWFJioNgxOk4TcsmhpLYrcWfweMxyueou9dOdxkeVpdptH27u+oV47sPlrtPqjch+tJV45fEx904/7X+63UdGb8oWLIX7JScTWGbS9j29zQurgLg2nVy7mqDl9pHOudEWnDCq3Z88NZmEGjVZUKZZ0vW+S529evnn18/M3Bru0X1dp0/uW+On1mzcvXv70xmCU9uvT9ILklW9vpf752c9vXr968+y1wRgth6vPV31TvHzx05ufX7x+8cpS9c+87K9e//zszcufX/384pVHR1aDGZg80i/3ykJKcsP/tHVFX7J8w3VNQ+/+a3x7h3VjWNfjosgoypi7FaaIn+nY2m5jctH1xbrp2HbAz/fgj/rJYR8ggqOnQ/suKeNtEq+ocalBnjxRtbSsqTsPkWvqY4VKtf2bUlVzL7eM2bOilI5GUZyW6rQypp1zGyUO+ks8LCenrOG62uSSE7IlKZtfOhjHRgyODyxRV7E0kTYZ7+0RBzgbHF7zSNFjgifFMWcGgJYvijB7LA8AGCTKZLCC7LtfYKKy3cRJq4jJm0nUOKQaQrnxzV5MrgEF16heC9FzMlwhVrCHVsNgZnD9EpWru+smtpK918I+w+FWfeHuxtCK5nVpJrEmg6GpIezwKH+9EFDa+DuB1hF+VpM2sYJ5nB2o5OQY83R01eezIaq+aFVdb6hO57DGluggJPUkLn5MZgwgqD42NI3DXvhBardpvfaewQD8IEYdVvtEoOFOL43AkWgx8HC3YhwBJFdgCaJww55GiAmxhNh53/DUXRWwbHL11sAIuFIuHEznoDRSzAMu2eA2UvBXs5YAMuVGhyUO8MsdI4AOvRfCz6+UqykTOTlMuAkmXpZtYjUJA+5/zTi3rzTjXtNU/2xeuOgn4pov8Xm/+JH7+lNX6eSDsLVIE3lN63axkYf/blkYbRZ4TkCRb5iMjEvpnopxdTomIEVZbJre8MJiICDFprBft5qkmgCOZ0D6UgwXAC0Ev4bMZdsX4gwgrS8eaS9Eo+EEQ7LGCja1N5/P5tmavBxV82gauqVBoOPiqHhuMFzsgOiLFbnyaTAiG3CPsGHjYizciwdGgrgVR4XPqVnJ2rgUV0kDqS0xnXbVjQsw0dQRN6uNAOKXs/ab90lWWMJIJA0EI4np5GsSXIYJkQRb1kYA8ctZkVTPOv9KEjs0qeSBEAUwngVVuBwTIgu3sv1Cgv96AQi7JNH6/mOWX5Jyl6cOWIM/DIo6pIoZ8aeXaHIk6tvAHpMwn0WgkwlkOaLCnwRGpMR8VizCssyAQtjiLvgTOcyJPG6j/UzJJSxgQqREcOZ3MKJyh9dC4y0I4OqnWTXDhrVcOy8EOzYey/JQNxCK5ltczn+iqze2jRALc03W57n6z0aE27IOc+1km9y9PYijXKpS90TDNGYKhAj6HB66aHhPPWCCtU8DKNCoezBc9nLbjJYq9Wj4mW+oxGWYbqTEDb0vA+Wn7NbkiBoSBEK01BE8Lb+p3Y5U7zQORzLeHrgaJrGNk+HpgmJjPpcC1T6dM4EMui9uRM2MrmlkTZp0AT4VnSOA8Ozq4x+NymnXjWICOdjNBjDcOMFStwOcrfb2fPsSouE0XhcxgqX3rb6bvTc1R/xGFDV0Ogi5b+IKnKceqKHKJ8SNZNA9GLI7sfvA/TZtC4TvD4odNeL/ZCM5LsN04zluZxsZhBwnswOLz6dg0/RgVoWg4IISMUx5tKQTZAaMAQa3kUJKQTMXztSs6hoIaFKsCwgT6ByfMIPVTD0OohJMMxiidt6DEdGU9t663dWE9h5gM/g0U41zuDdLmabzdJbNYiOQ8vHcSBUy6RmAAufUU7DYpYX38ntgRr4p3R4kwHReD7Lxnjg967S6BgS459hVIMix8HCIzkl6p/aOrgJO6ypd289qSaLhs2TcW62KPVIqT4h456X0pHCfcZHt3Gw+QF/EWtw6WfYAmKmZsyfEuJJ6e0kQl4VbDsLlNvMBeMtjSfjGMqI7IMyYHn1EdJvyq88JboNs82Hb0GA2giEsFots2y0Jcyb7yVE9+waFtWQLQbTPZgXIYEloPk2/Z9XDhBWJLY4ILD6fBMlQvUvAsUau+VCsaSSrXRn18yUh2GLXTSL3Q6jd3ptc1Rzbb4gM0+3AIfZe+iZc1THOdHd/OgosPJwjaHp+djgJdMFHUWMi36SoO6zeiSCB5f3WNaopsbcEG5HcNbKgMeO4WtmIYS0N0kzghSwawBZ47Julgc8VeJOBboYYqhopJvRpGqPvo4cz77jrPpoEbnNdTrMRZT7g7elVNUATmxtr+s8mgeGs19js5JkPjXt8qa0JnukQptcyMK9HRqslBN+dP9zuQwiw2+SEsAqsK9DieHJPzAGxnyeALiiDTZNehQ2cC5raRo7FBMytBeGf29tATKHHYeYXJwGrxhpuod0YKsoMqEOtv9/IM749Rb8YHX0zvUw1yjHpOLrv0WHUzmMbIMb45fjub1GRYqzFm2DHzrptrJzjUuLF1Fq9p9LFN/GKaWE1Lqsf4MjkaN2hCVQ029CMyzLD2Iy3wB4OzvoTLY7GftVqlUFyhnMtQJkZ0ON8wrUwwAhRlowRITTfaNyWT+QiXU0ThYlQhiUrC2k+Ak1kmAJobaSraxQjfaDIK+8p8ugiOiV5a6i4WGUnURmxAvKjVIzDProiZfumK0tv4ttdXnE/LcmmODyoaThZFSLADiJb2RoQV9XaBqZ8k6vseIOapBPxDAon9xYrllUyY5xdkyraihXOxZJBk+8b59MlZLdiV2XV1XBrEh4beLEVDMSjXgVafFxvGWEs2k05C0b9lBdjxq89rExUfdTtwuOmEulsYI/g3eZTTXex6itnfDRJhJGDpc644G8IN/tOd1YFf0LYVEG0zAz6sEMglz7cgiUrHR8bJsJ7XYSZ9GjajmlzLyzWMe1v4Nnx7K+badkKd/ss+qZ4nIX1T/k80ZKxjp1lR8edkHg2YMVM37vUbRC7sa1fR2lGN34Ja2B7vCvvsjz+VzUFYDMeiK1CpLDlpjLg2HmtDs3cJ+pgqtLLs3d5Fgt/1s0GO73lIV1ZFlgybqd+CmNeR8lKR6KZrE14LUwzMMMJVCateGLcSDb2ETihVoHN7W2RZo5z3YmJGUUmNGkj0eOm6adhRgvJPFEjhbNPNWujFd5EdAlihR70C5N22Ie46bopp9FyKO+pcNYKYECZSGarlQFh7maaAF79bLy+OQmYRCbBpZcoIVMIawONIWRWgBGaNUoQE3Ab6zozyGR6+SVqzBzCxMJgEpnldGbpji3NpoFPOHW6KCecYUyknGeObyZ1s8RoLv35nE4/9HwujPnQ0zjeE6kbSIFctbj6Fm+aoY5b95HJ62q+xZ26spdgdO66akbEKVh5u1FlaU7ocM6soXRCF96E0sncKOPkGZBxGzAbRIZrA1BDZup3hzSWgXgBFhHkD2GVLnk0bA04t7QsuZJdWpTYqLmST9rCev7qGgBg3/gWDW+l+rQNLiVIRoygS6Os6IAkUnY1BZI6eQRveqZm+EXsoMsDrCiAZAJ2tQOS+3ckO9ROVshPi9gCoNQron7gbROA1SR2QbKqai1kk4kVUdCQi9XPaobsqyPbT8r7abCcLksoqh6SJ9TXWkhm0HHsJGWphM2jS2Upq4EksxSNYbukUPnBY1R4YxgA47ZehT8Iapvp4WKzVjV8YauczUrV23JzrVPP5Gx3sP00GfFkpeCceKKN8PMIPbdR+x2Qv81kDLtep0n1NtwsE3W5NgcZbBEwQ5kss5yjTNS9PlzXay1nJRsFBkJuLVxdu6YHE3D5KT5RQ6tZomAbGLJJyRrg+aREa7T3GvT2wDNIjblqlHNH6QyDZJiCFVFzTPkbRc0qBfAK11uENEgag7QkZg3OpFxJluJreY3qMIDMPgZDIKEXUBXUqAtDjaJGVhjRm5xJyWkM1kGjAqDaQAEBhloIevQ/jo3UxCqwgQwJWGRN8BQsomnkS2B6++AZV0bpW6YcITaWMmQW0WuI5xYJZ0U8m8h4gBMC6+FWxOPvQSqB4fdUO/HX+Mx2AgPtjQY269wMuM380jtAqjsneFBtLd2aNJvbOafDeBi1yxfg1xCWQ7B7xoGRm2Cqgds6kr2f+eFA+K7GUELhj2x8Jfr9NLbHoqzbmd4qRrvJEqYo7YENbwrMPoPdLaYcjvHDnYxgMf0IZ/EJ5yGmKNV21jbGtzapr4twHdjSuqDW09hZP+XTRl02Kaef+A2y27jTv6oZsF2dvhCXuKPBLrCZr62Jb6nH0RELc4tobRUVV1HEFBdXsozyBMdgJ1MkXID9iOZzMJ272UY02dgXStFwo3b2spmg6z4byXKTzL+Beg37Z4YvnFQ07KYFMOJEe2vNncpjq1u3bvdsLW/WWr1VOp709qwYnhA1hyaKIaADHMdQMYfNowmI4QSPk9SweqhpDBH4AG3wGHyKRra3BzDG05pKd06KEztopTs7HWiwKc5T1VayuK5i/sgFFhaXVoYib9YnFkDgLdSmpiBdgJ6aMF2KBcWH0EYTagJzjdh70UUOX2wcs7CFjsOwN/JiR3r4bLrRoCM3NqQ2LJIKE7tbPjreo9920IZAgsxnHTJJ1NEmaJKLG7HnHsyEb49qFl1wpK7s7dHV6o5souaHt0eUZEW25S5K6ifBbcHnaLuN09ui/7L55eBqG62oJu///erw4McmSYt3h3dluf3L0VFRsS6ebOJVnhXZTflklW2OonV29Pzp0zdHz54dbWoeRyuhBd5K0nY1lVke3RKplAVtWpOPcV6ULM7Tt6igDfJ+vVHIbENBtdWhEaHU5mwDP7Sfsn9z8aeesFqfXJJtVsRUh3sggpTEs7fvR6oyQ0ilPeGgYMGDcrlaRUmUt6He2jhzq4y9JHqfJbtNKvwkQxXn8TdyL3KofrD//vco2UkyND+pPN4eScaQW+BIaQKpa8iNa9X0alce3vKmiZJFw5tZYDZnAUh5g0MBSfGvT0ixyuMtg5vIRiiw5xcChR/jpCT5hx/bnNAlqiyYWmrP+Tz9lVC3Qe2LcYcpXGo4pQNnXvbzVLwmHaWDtShcSpKyexySofgCF0RUU6lPcfoHWf+aZ7utDAy13J57tcJBeauli/Eb+omFq8fouXn4Ct3H43iJs/odqMyE+3l8jzPXeCHPnQMMFyJLn9HCxGGswaILKyMzkormG4DeZ0UpMqp/WRigmtg8ocAEhieyBhLy9X7MOD5H6e4mWpW7nO0H8gzFEgeOdXQogRUU1dTIo37br/CBYlLqLVbFfGqvSpxU+3ei5QAC126tdhz+d2dp2/NzWvo9XstNgxI510O7QhTn2lpkkoW5gnBewNsBOKwyhTjiwjRfG2Ec53hcFKSEGAoF9vw+ZatIdS79r3MPd1wUPJgrV+jKtwp+BnPtilx5nmSbKE5lpmzusaPrMPaXY2sLCdOkBtcmU9O0eVSUX0j5zyz/41N2m6Wqi4QpHOROkuyfv6XRrryj3ajaPF9/SPNMGic0ZA5TmJyw71QlhAJ7fpUACcRQLHGzd/UtbGiuyAVtq2yziav1LyQrVO7H/ZJEhTr5UMsXNk50UTZDDRdtcHTfUQP9fpyJY+1q+O9dnc/VXZaXKhvu5/mmsc1c5Ty/jdK4qMaq4/Wa7QeBcxqQzmWV1Lvv/kwYc/BY9gKtPnFR5vG3HRNQnQerpQ5bbJzqUfJbGkvTVqjcxVneZHm9tm7Vf5+l35k3l1vaQOpcp0kxDZl9XdU0mHm545PmmYFYCVTuN7yzKVdyvN7EKT7M8zTOg3GZ7wo6HF6SeBPdsseT1bhTRxAHBmUd+VK2R3nb4HXgVA4eoL8F0K6MlDkeTLKwYbENDRxqVKyTfPiOicjXSx0R8T0F382Eq912m8TK4rD71UO29vYeKB52tQ/nyzymutnR/+rG6e+7qMKAyq0vcZ4FaFeeEIV9De2Wy+9REq+pU4ylFQxU7s4dbDOl0J5v9WgZWhUIBY782CNoGK5AsbOsgG3FEg9pQbOqpU7zwObmnTT3Q+7j6ZC7X+PiTGNWfcNz+FgFXWi1GKTgz3SHtQM3++OCrhzu1YFKKHAZXfJUXb+1P9rz+TWm03RVKu5nh3HqLksJtIEpFDisBja0F4NrP7FkUZhufU8YZDfJhfzwjX3sgnL3LcjH61fWWOFvfIfBC5c7yg8zOgbjzN3DoI7PmM5z0mVSx7l9jBOiutf+V4fjz3hDgNPP7lcHDek3RRltpKGe+3mW2Q6QBVwY3iyyhM+8bq5gz72lC7V+Fvl6L6RNbPTzUPyYEip3n4eqCxGxZO4Dsd/SCJVULlsMLpEnIB536/wu1e3nbbox4R5mkBJTC8j81FJXzirE+d8dJt4/tmRVknWdAgA4LQXKHQYfIbGAsteqlLpyBo6LveRswhZIN4mhWLEmVLKEARAa6999uGHWgyl8aoBvj0DlrtzFRAAQf5liWA16W+G07rXWIfuhE3u13Je7SRuVymXTMmaxtqg1qknHSm1/mGJJA2fAi+n+t9KnvJK+Z9fIz8QA/UEaatCq1/D9aDMfYNbzuOR9XPL25WN1v6BPOHh+fp1v8scby+t7f7qnH2dN1oUg+KOc/JAHfvhnwdy8vnU+3OnyQniAr2Xnh0D869FgWFUJYLH7fVpQV+HcgE3E/mdHXuD2IV/gyK9BMcCwK7Hn2MRdU/UVCpz5QTpLRc48Qb3lModTwU/HH35s45wUqvJymcsdzjjLlTtH/a+Lczwhvc4Al7M/9/JCT41OVzKj+hc3DvT7bCdfleJ+d77n1naBe1lJuXTMvoH23d23/yKr8nQtDfD870vqaVIqkCA9TuDp1/MMLMYcZT9lRXGen0TsvjfwUkkpdTgqYLf84b1iqWi+Pv/1Ls7XFxH94X20K4g8fVZK/Tmr/g6m8K/hH3f3+goqAoct37hMSVGQgv1ZNFeqiHxfFSOyr+eXXX5Lf73/ekduStoT7rL1+Q3tH7LH09E5ve2o/mRv8K4IAZ5BwhQONWRJvCJfMvYuQEaUXObL9aoEehVC4lsHYBmg3Jf7+5wuJ5kjzcsvma4aidBltrqiM9L8kqx3KwKdWIAEDger5R2dQKcloZAvSdXRYrl7YDQOHo9a+fymvcovOT2pzOU4lEtrBZ2KKsWevOFzXIBgabMELhlCsFlCe7nff5KAcxhzjvDhBwVwGiXqGCaWuHP8lN3ewtcI1HJ37pfkhnY8NqUCmXPF7rzZ3nRCwCfoCMnSEC5m/AgGci4viD/OtUzGhPpp0c3DKzclLeSUUoctIyRhG7DDpaUcXiO4D2ag9a8V28bDyQbWZaOe77YfkHTMrFpPNawmG8V4OvdnhFxOL/y1o0I0qB5IKQ2Zb13wSIDReNYCT6YQkgF1GG2mn1ihvk/MfgU9JAQIvPmDL6dgEpdJP4tj1cbcEWf7fIk7R2yqApW7c0cAChS789ZMVRCSxUxVoIQ2w2cqKlfPJzEmJuNsnbc1Q7eO29+nvr+85MO6fTha25tz8hZkIfvhgN73eFy1lOOq4VGrdZxNT+cxmsX0GzHL1vC+w/PzfkDm+gx43Jc0j8+DHZAU9qa0zNMbUdPflx4Xk483qR9vUvvGwydcyrFQXZRj6h8TX8djnE56gYRPu9DGTDNyS9fkB8KwLppygldlV5KvxXU/OpwwpNG3RD447n50eqoZ10mSwGeaQpnD4ixJshUcelcqmtqFz9TZj3flXZbH/6qsyZKbhejsClOPzm7BY6lrJb9rZdoD6eJMiWfM/z49nMSkdcoJnZjVz+LsTfwAOFfDU+KwvHzqWRqU8E+1khV+GDcIQ8xGXc3uQjV5Av2FajiBsmlOGZHIBC03TZACXGE5i6EPZqoLvM7AAb7SvEdwgpDCejiOapZhwKSK94godRoLp2l1TOCkx5dE7AQzizyvns0pcw4AOovEsY/Yg9Z3juDTfm3KK+kGP4s0ub74k1mHAKBF3t0/CQKV5MAySTcDbH7p/u6SAzeJeYWMwZWeLP9vpV/RJAmWM/XWJIcH7XqVzm3vi5Jsaihf/XfyPomrdWNL8DlK4xtSlF+zP0j67vD506evDw+Okzgq6jTP7jmIyXpzVBRrYfuXW6r0q1pdtt23fyMK6tr2uCQ34s6u0noqJbBd+/ZIruOtBKGGPZP63WH6PWI3IegS8XP04xNJb8u7d4evnx4efNklCVtEvzu8iRL1uqzMtJIkLMtmJ1lk+r820Y//zbMqc3m7mV9qaBtLnyHXrq3UbmZuAPaNxlQv3E0lHIppWD//yZ23GS6vnHmqGXedW1llCifaDcJYl1c3QAVCXt2a3zeWg8MZBeqJXgDp1MPI8bokNpnw7YwgGTpCDu66z927FyeMhvFPo7mEZ09NMtv7U10O2SncacymANV8tfUE6wvWs/KUUZG0zp3g1au6vAhcTW7dyLNBbFjXQUlqnmuyijdRwqZC9F/MRVGWdPLDZpO0+HnYxgbyvO5xQ9s10E/uDSTmjdU6EHfedSLZEZjWZ6Maxi+d+YJ5ZRvg0n+XMdv5dmXZ55R17wIOQqupZccwjZxadkAdjn3Za6miOWWyWIkIX+tmmO7jqpDrNWhD9S+x7Wfa9kAOMdBIOV9BTg5jX5fo1VskMber1re6spYjWgdlDud4HeavNAld/af+Qh5XXD4rXmIK12HKSrlbh3p6NV9rOI5tjlZLkDs61wsos+neTpWM/di8qgBGgz5pqpbzkiZ2utypQbxlnyjVsOi2s4SSJNV/bICShgbYbTCkQPV3kZpcp/5ML4Dcpv7csDymAziaE5Uubr8Jz7kWgDmSgVQ393wZdCAA0nk+3GHAw6PaLg3thpQu2WLY5bGSKzSsDfrMoeMsaMVcogMWGlDiUG92UJ7QYdM7JT1oAAcipAcdJh6QEzQsTMXsoIGEDWnM/q57AGbLH46shwo1qeZsp5EeJ4ZCJs6wiO4Sc4Zly2XpDDxQ8Ak7w276i6k7dbxN+x5OsIQewdmBE3sANP0NCOe9okAH5T6rYtPFCh+eo9+s0CXA3NvZ7ig7jPzLuLBw7N/J2U9OrRj3z+YCM+Ye0Q2c92PzisEiQg/prK/yDF476jJY2nUrm7dBwGe6VJTmfglVGvywh5NvIHhGPVGQU2W6TMpdbtE8EJ873u2YAZC0vTQVHDznSmLLsEPGOZfkcughEpDZctgCVM1nGdS24QRtclu2+6q33ke4dVbLELcj5DyWQS0HpbIMu9SBk1mGMAyetHIEE4l5K8OIr2apDCo4nKZyrEGrmlUuZNtjqguXwyz24BZZTQha/2PJxwXV44LKru88tIvKC+46I97AmOPuM5Ty8BE24WEzvv+yuUbjAgs4D+E+Y6NLZ+gPkMEI4+KiDt3b4WOihgWrmMowwMGjEG912GpBCrQadIkgpzIMoLmcx3CY8n2mtpoPXdDcm1Ho3OsfSJc3noL6HDiNOP7XYVx1p7buSzk+pKvWEh6GkPMQel+X8YM10Nm4KFHjnQjq0/bZ9RYwPYm5wwweftS0fsMckpTPL+yNA01X8/LFala/dmPTY6YI5vALqz+Yxk+7te++KYZl8dP5Cg9VdCn8Al9Taf4Uk/gNHHal5H3+sEEy9QU2AZCtL6QBpMR8GuFfugsP5ubTVPHavQosN1/Y0VzO0Tf0yEhJzBeQYYDZtOvwCWf5WvboKSa9C3wHDkh8N3BsVrPdjSOylENmrCMVbXq4ZQNHTR/nP4Tok8QNg4wpGVzQ1bYmEVxYLfx2Snxq6hO+hdWAT+4WVAE0tdvA+QKex21E8a383PNhlYQaftGsbUHtA+ZtGyY4kqgt8D4cn7Et7KAFZW0buiOppGobR+QpxllTcrO93Qzkc6T5D+Qj7rcv/VBgT/bwB7zDcu4kD6RrPO6Tj7lPPsrbbyzr2XiYx/OGjXpdf+TnU+Pf5398SiVB6MHd8xv9Av7jPcDHe4D2MUsJkuNrb/vXhU9wEzfOdc4w/2WB+fTvtfs8tskfVnOlTL/FaZTfe0YiYrSDTq7kxGEDN7jEjGHDmAV2wNYdzpBna2873CjrgUF3M5DjqyaF16hXPYaF8UbzX4Gkuiwa+i8GxAFvRRx0KZKX3Hrz1ZV5mBeUPndghyFAk7lqUTDo5XzEgj4e/DBIWKWXWg4yIHEfAWJIwDIQIVYJoBYEEUhe6zXPnwg3XGqqvuq23i5RmSjrh3R9wGaX/bvSRjKW/elJ99vnXVLG2yRe0WrpFE1RWWDTYlPi1P0sMvs3hVlz1lXG7PZHWpR5FKt5Ui/yOF3F2yiRxJfoLKfFzKgdR7nkhGxJyua7qoo2tWkTjXW8pU5hsoGQiEwPAi7u4LXkbnE08Gkr+HYUfhcb8umTJzpgyFlPVK5c2SgQQVNxjAMTbZoXpEopRuSMeLnGE5eMjxKA2UPCxJ5B4aKOyd4gwuQzGmqgCbsS+9FkHjhcQEHoFwKIiz5fxYyQqKIzWwKijuSsNmHz+x64ByAW9ULQ0KUcmXOk4AOBoVioCvl2q39YdOurCs3e7HLQtQX4ADm49eSzBScHs8/zBns/BIccnwUsfTDc6+EOQgcGLuquzKb9ea+9BBZVGKltVg8hBrYN0PAGRyAF0pW58UV7jwHsjsse4KC9bDKuE3gEAlgjf9NnCWAwpBXnRnmZUBjqlcK9chx6IywGO9C1oxmnnmKA56kXIFJ4aXXiKRPstacxh9RG6l3QUkXCC5jH1WOZuS9QcVhfGu5QTwAbq7vcU0CH3V2Bg62OcWgms3gQx2R7cT7G2vlciBg+3vR0uoaeaniwbeVzJSb7bI0tRkgfdcLw521vNQz9bO2txnZ/bPNR2hwOoj9zu8Oh6x8RMCIC8GwBs2NBzAPwiIJRUaAmXZht34nN5PGD6sfmHtLcC1jg65vXekG/mCaeY8Xu1ruXsUDntpPVaOJODWdod2SPWCoZa8k+UW933BQGA57N0vaTLNxnhMCEHn/fDpVEICziTGlerMxxouSOm8UcKPEJbkYeQ+C772LBno8gbrfdZx5A+nafZPyYrfknHD3c2n8Jg8en7Hbkbs9SIEkcqp/2vKsrmZ2Qmmbu5Kx9J+nekzbzhF3atp2X0JnrR+btw3rtW8c6F43UYM2PTu3epbKCeI16kAuk0xkNBXDCLqS6My4d1qxQaI7wR3Tu87X+Qht+EW3eRSod1ePP1PYT+n6nxhfCw84OAS4M7Njb/o84EKqTAvDOhQQhjdbIo4CYskviJRVaoGvhQ4ImQRlS58zjgggFJTnN2P7BHx375yncsQHmCpoTKW0OmAl8RpduBgBFX/YwPAacWgepcgEOg8sGdK1LXTOF9+AzEwFQEYofggdBMzEhtZpSCy0VR4HWKY8gGgNEi1jPmBDUJm96BNDyAMQn1loKfpDkWY/wmR8+mrxmi0TPlMunR+w4YGcpCykeOUBmt0fczI8bJOHeUlAz/grcHyD7ug53hcicS3GGRzFh4HX7k9Z7VASyB6l/dAslImUrhFhO8tBf1XgcjABK2dTafrY0oIwbZ2Yp4Fg4MJYEigkOhh+RsSenxQA8pjo0fsTI3pwk86kpJwwcAwQyFAsezLMzPPcnUvNi3p/JKSeDwcMqChXyxEQtfGBIcX1osli0jH8reQlAmWqI8QLH7HeWVReyhAdsS8DNHM/Y/BzMUl6yKSlapx2P+NywQG4XvvSBjUhoVlwMMUsZkprr8W1qqOurbJdr8GK14yrrcZ6ekISU5OB4xWp+d/g+KlbRWs2adUQr0tR8huaVOpsgtdRE+7Nnzpml4FRsc4DnKzvyltOuC03olhfsoULJpYGhxsWQgMdQHBeBupyApm+0Yk/5ZMzNC7q8HRsLxHL2WOTtwehwnuMRmiNCNSlyZwPZ/njLpQBt2X7TE5r77Dzl1L0OPnRALsiRgI7nYNbINjrsfVJIhs1a6Qhpq+zTc4NzT3zvMiG5bE88DL377pDlRNkuHnnIduJYHQBPe66TbnyvPMfWpGUKeKR2u5zvs4N0XzzzQoG5cN88DMJ75Zw/0G/Ke/pNSb8gefvUNVuTj3FelCdRGX2LCtUds6+uSNnRpzfx7S6v2J+WZHN4UJNwIANorlZ3ZBO9O1x/yygeo2+JzArYyxcrVh2+Uq9KAlUrUxXGqvlOolTKF0LVcb7ErKO8zlBVlClADUUi23qbbKdInU0pXl9FYFsXWo2uBlvmXVJvpI6uHK+qIbGtsUnritTXlOK1VQQWldWH7Uot9c8Qe1Zix7a9wwMybwuxKupyu4r4U1qwMp4Aq7CnsW2h6ivu7hrSVDIZ3mYipZUTgb0H6jaseOJeSeuS7PzRmRgbFqrF1FoCiVWNOvcnFiP1OTi+syYgHlRRVYBUQcusmPfhdqAa+lKkmj5qnG1dmor0tVhVIQUGgaqSSJAqBSrrqvtnL1jNPYWm4oYotq9YeHKD1S0Qaarv6WwkgO7dgm5TJsJcp0hnL4CmWn1lth4aHYHEYtwj245C6m0hpEqTb5OprCd4/MUTbIrH02gmeT2ZufbjXXmX5fG/qgk3WwABtQM0UO0KmVVfMk2kLebSBb84d3HB2ooVIq2rdBJBsxlqmt2bBJLn+W5yaXYCjCsro2TyGksrGrdgVeY24occpTjREcjktbSwW8NrSGvjflPW4PAuj/hp97O8VyMqZaEwt4q6VldwquZaelwVYK1X6SL8rjEFskbleHBlgYxyLQiHmUKgGtsAwKfB1G0Wn9fdqhfTWCY0CS0tjDnZu5JZFa/WwWa1RTKTwMLanJO6+X1WhcU04Tiyj9Fs4oLA/P5AJW79wyLa9CbaJaVVP0a/GLtPOyHFwyD9Vsk11t4ySci2Vrd5uu/an4OoyD0d0Kkpk4VWVZ3gd9/yRaFV7p7QmNWGX9vsr+rq/rvRBKZzS+1xMN9RlcKFmAjaLLT0+rqPwo8B8AYp5wVlgnFM044+lkaBX1j4DHCLMMlZfYG9XlGAi52ueJRFjvxNIJWkVPaIZrqE9wMhPp5qUuJ2RDVdevfFqlZjXMhRjqgHUO6Tikg6bq2yNim8F6+2lHnaoLAuT/UiVWXV1ll4kYkIkKJ3kYo0q0BMFb449Eg4GgilNLkw9nS5dF3FlOmRGaBUElhVQ18be3Ewl9o2KwPDF1MsDCY1j5jiEzaIJg3oUPjDO7hiQVg1Ddg3pb4cDv2pVG7zN8J6gtkdh7Ymd4uh/aT6KZQ6hrbDMxoOb7UxVZOT88HaaVP4yeIK1zBagZsf9YrKl0WEj4ONu0ISOo2+Z1CeuqEwnVjFPrSeQVEkBt9w8E6sMB8szqAyGlduX5RWk2nBGhuSbg2FNHgnqv1YKgyvtpo4ysYIhnRTwxEwh1GECM24FfBAziGQIF8T43Xuy0KpbJ0PCDeHX0qhMAgBrtXx9hKKpzCZabjwTJ3zMI3VZXnxsxWcJOZhmApLaGJnKat0KA/QUBYjmGPej4dhJChNhZ2JjAkuHoaB9OO9NndDiCF/UvXVG9x99gFkk9sqWYGCBP7Kd4eG+kfDyTp8W13gEfTMFNHRwRzB718swATauYyW/gEaw7AsNnyx7wbhX0cY71dooooHOE2CXnpw3wa7hia/zDCqbYiYHUx15HhBLQxvAt0WLk4cEvyzm8DmGMr80RQnUfOYCgjUi1rIFNQ3WJcBXktxDITSUPev5Ag1+FUsbSybobPLM/TVyVnIhyeyKk3EEwulodgoshJu72bmMwEadFN3JuSKgOGHQ4g1lOJxTKKFhl1EybD4mNws0hMnS8BYfGV0gz4vrnR8EKtpqEY1Hg4ti6/GQtgCTGYRQA2ymWvctbHmMcZXpiDP6UyogZ1rVLCQuJvQbCysGOPYRYbqyt4e1W97mx/on2WWR7dNpJ/q17dHl2xXf0Pqv05I9UahZfGW8kxJFdWsZ9rSnKY3WRseS5KoJWmLm4Zk22nrqIyO2ZQvWpW0eEXoSjm9PTz4PUp2lOTD5htZn6bnu3K7K6nKZPMtEfbdWGAtXf1vjxSZ355v2V9FCBWomDFVgZynv+ziZN3J/TFKCqnRMBYsYtevhP5et2VJ/09u7ztOX6gPsmPUmK8LNNY91j5Pr6LvBJfNbEPRYm9P4ug2jzZFw6P/nv5J4bfe/PiP/w8maCeYCzADAA== + + \ No newline at end of file diff --git a/Disco.Models/Repository/Device/DeviceProfile.cs b/Disco.Models/Repository/Device/DeviceProfile.cs index 63419186..193b40cc 100644 --- a/Disco.Models/Repository/Device/DeviceProfile.cs +++ b/Disco.Models/Repository/Device/DeviceProfile.cs @@ -20,14 +20,14 @@ namespace Disco.Models.Repository [Required, StringLength(10)] public string ShortName { get; set; } - [StringLength(500)] + [StringLength(500), DataType(DataType.MultilineText)] public string Description { get; set; } public int? DefaultOrganisationAddress { get; set; } // Migration from DeviceProfile Configuration // 2012-06-14 G# - [Required] + [Required, DataType(DataType.MultilineText)] public string ComputerNameTemplate { get; set; } [Required] diff --git a/Disco.Models/Repository/DocumentTemplate/DocumentTemplate.cs b/Disco.Models/Repository/DocumentTemplate/DocumentTemplate.cs index 558d3f08..df3a0066 100644 --- a/Disco.Models/Repository/DocumentTemplate/DocumentTemplate.cs +++ b/Disco.Models/Repository/DocumentTemplate/DocumentTemplate.cs @@ -18,8 +18,12 @@ namespace Disco.Models.Repository public string Description { get; set; } [Required, StringLength(6)] public string Scope { get; set; } - [StringLength(250), DataType(DataType.MultilineText)] + [DataType(DataType.MultilineText)] public string FilterExpression { get; set; } + [DataType(DataType.MultilineText)] + public string OnGenerateExpression { get; set; } + [DataType(DataType.MultilineText)] + public string OnImportAttachmentExpression { get; set; } // Feature Request 2012-05-10 by G#: https://disco.uservoice.com/forums/159707-feedback/suggestions/2811092-document-template-option-flatten-form-on-generate public bool FlattenForm { get; set; } diff --git a/Disco.Services/Authorization/Claims.cs b/Disco.Services/Authorization/Claims.cs index bd6cb98c..00c33125 100644 --- a/Disco.Services/Authorization/Claims.cs +++ b/Disco.Services/Authorization/Claims.cs @@ -45,8 +45,8 @@ namespace Disco.Services.Authorization { "Config.DeviceProfile.Delete", new Tuple, Action, string, string, bool>(c => c.Config.DeviceProfile.Delete, (c, v) => c.Config.DeviceProfile.Delete = v, "Delete Device Profiles", "Can delete device profiles", false) }, { "Config.DeviceProfile.Show", new Tuple, Action, string, string, bool>(c => c.Config.DeviceProfile.Show, (c, v) => c.Config.DeviceProfile.Show = v, "Show Device Profiles", "Can show device profiles", false) }, { "Config.DocumentTemplate.BulkGenerate", new Tuple, Action, string, string, bool>(c => c.Config.DocumentTemplate.BulkGenerate, (c, v) => c.Config.DocumentTemplate.BulkGenerate = v, "Bulk Generate Document Templates", "Can bulk generate document templates", false) }, + { "Config.DocumentTemplate.ConfigureFilterExpression", new Tuple, Action, string, string, bool>(c => c.Config.DocumentTemplate.ConfigureFilterExpression, (c, v) => c.Config.DocumentTemplate.ConfigureFilterExpression = v, "Configure Advanced Expression", "Can configure filter, generate and import expressions for document templates", false) }, { "Config.DocumentTemplate.Configure", new Tuple, Action, string, string, bool>(c => c.Config.DocumentTemplate.Configure, (c, v) => c.Config.DocumentTemplate.Configure = v, "Configure Document Templates", "Can configure document templates", false) }, - { "Config.DocumentTemplate.ConfigureFilterExpression", new Tuple, Action, string, string, bool>(c => c.Config.DocumentTemplate.ConfigureFilterExpression, (c, v) => c.Config.DocumentTemplate.ConfigureFilterExpression = v, "Configure Filter Expression", "Can configure filter expressions for document templates", false) }, { "Config.DocumentTemplate.Create", new Tuple, Action, string, string, bool>(c => c.Config.DocumentTemplate.Create, (c, v) => c.Config.DocumentTemplate.Create = v, "Create Document Templates", "Can create document templates", false) }, { "Config.DocumentTemplate.Delete", new Tuple, Action, string, string, bool>(c => c.Config.DocumentTemplate.Delete, (c, v) => c.Config.DocumentTemplate.Delete = v, "Delete Document Templates", "Can delete document templates", false) }, { "Config.DocumentTemplate.UndetectedPages", new Tuple, Action, string, string, bool>(c => c.Config.DocumentTemplate.UndetectedPages, (c, v) => c.Config.DocumentTemplate.UndetectedPages = v, "Process Undetected Pages", "Can show and assign imported documents which were not undetected", false) }, @@ -253,8 +253,8 @@ namespace Disco.Services.Authorization }), new ClaimNavigatorItem("Config.DocumentTemplate", "Document Templates", "Permissions related to Document Templates", false, new List() { new ClaimNavigatorItem("Config.DocumentTemplate.BulkGenerate", false), - new ClaimNavigatorItem("Config.DocumentTemplate.Configure", false), new ClaimNavigatorItem("Config.DocumentTemplate.ConfigureFilterExpression", false), + new ClaimNavigatorItem("Config.DocumentTemplate.Configure", false), new ClaimNavigatorItem("Config.DocumentTemplate.Create", false), new ClaimNavigatorItem("Config.DocumentTemplate.Delete", false), new ClaimNavigatorItem("Config.DocumentTemplate.UndetectedPages", false), @@ -559,8 +559,8 @@ namespace Disco.Services.Authorization c.Config.DeviceProfile.Delete = true; c.Config.DeviceProfile.Show = true; c.Config.DocumentTemplate.BulkGenerate = true; - c.Config.DocumentTemplate.Configure = true; c.Config.DocumentTemplate.ConfigureFilterExpression = true; + c.Config.DocumentTemplate.Configure = true; c.Config.DocumentTemplate.Create = true; c.Config.DocumentTemplate.Delete = true; c.Config.DocumentTemplate.UndetectedPages = true; @@ -897,16 +897,16 @@ namespace Disco.Services.Authorization /// public const string BulkGenerate = "Config.DocumentTemplate.BulkGenerate"; + /// Configure Advanced Expression + /// Can configure filter, generate and import expressions for document templates + /// + public const string ConfigureFilterExpression = "Config.DocumentTemplate.ConfigureFilterExpression"; + /// Configure Document Templates /// Can configure document templates /// public const string Configure = "Config.DocumentTemplate.Configure"; - /// Configure Filter Expression - /// Can configure filter expressions for document templates - /// - public const string ConfigureFilterExpression = "Config.DocumentTemplate.ConfigureFilterExpression"; - /// Create Document Templates /// Can create document templates /// diff --git a/Disco.Services/Authorization/Roles/ClaimGroups/Configuration/DocumentTemplate/DocumentTemplateClaims.cs b/Disco.Services/Authorization/Roles/ClaimGroups/Configuration/DocumentTemplate/DocumentTemplateClaims.cs index a5cc4f6a..77920f3e 100644 --- a/Disco.Services/Authorization/Roles/ClaimGroups/Configuration/DocumentTemplate/DocumentTemplateClaims.cs +++ b/Disco.Services/Authorization/Roles/ClaimGroups/Configuration/DocumentTemplate/DocumentTemplateClaims.cs @@ -12,7 +12,7 @@ namespace Disco.Services.Authorization.Roles.ClaimGroups.Configuration.DocumentT [ClaimDetails("Configure Document Templates", "Can configure document templates")] public bool Configure { get; set; } - [ClaimDetails("Configure Filter Expression", "Can configure filter expressions for document templates")] + [ClaimDetails("Configure Advanced Expression", "Can configure filter, generate and import expressions for document templates")] public bool ConfigureFilterExpression { get; set; } [ClaimDetails("Upload Document Templates", "Can upload document templates")] diff --git a/Disco.Services/Logging/LogContext.cs b/Disco.Services/Logging/LogContext.cs index ce9aa7ea..def2a567 100644 --- a/Disco.Services/Logging/LogContext.cs +++ b/Disco.Services/Logging/LogContext.cs @@ -54,9 +54,11 @@ namespace Disco.Services.Logging LogModules = new Dictionary(); // Load all LogModules (Only from Disco Assemblies) var appDomain = AppDomain.CurrentDomain; + var servicesAssemblyName = typeof(LogContext).Assembly.GetName().Name; var logModuleTypes = (from a in appDomain.GetAssemblies() - where !a.GlobalAssemblyCache && !a.IsDynamic && a.FullName.StartsWith("Disco.", StringComparison.OrdinalIgnoreCase) + where !a.GlobalAssemblyCache && !a.IsDynamic && + (a.GetName().Name == servicesAssemblyName || a.GetReferencedAssemblies().Any(ra => ra.Name == servicesAssemblyName)) from type in a.GetTypes() where typeof(LogBase).IsAssignableFrom(type) && !type.IsAbstract select type); diff --git a/Disco.Services/Tasks/ScheduledTasks.cs b/Disco.Services/Tasks/ScheduledTasks.cs index 076ecf1b..62d152f0 100644 --- a/Disco.Services/Tasks/ScheduledTasks.cs +++ b/Disco.Services/Tasks/ScheduledTasks.cs @@ -32,12 +32,12 @@ namespace Disco.Services.Tasks { // Discover DiscoScheduledTask var appDomain = AppDomain.CurrentDomain; - var scheduledTasksHostAssemblyName = typeof(ScheduledTask).Assembly.GetName().Name; + var servicesAssemblyName = typeof(ScheduledTask).Assembly.GetName().Name; var scheduledTaskTypes = (from a in appDomain.GetAssemblies() where !a.GlobalAssemblyCache && !a.IsDynamic && - (a.GetName().Name == scheduledTasksHostAssemblyName || a.GetReferencedAssemblies().Any(ra => ra.Name == scheduledTasksHostAssemblyName)) + (a.GetName().Name == servicesAssemblyName || a.GetReferencedAssemblies().Any(ra => ra.Name == servicesAssemblyName)) from type in a.GetTypes() where typeof(ScheduledTask).IsAssignableFrom(type) && !type.IsAbstract select type); diff --git a/Disco.Web/Areas/API/Controllers/DocumentTemplateController.cs b/Disco.Web/Areas/API/Controllers/DocumentTemplateController.cs index b92e8d5c..f777559f 100644 --- a/Disco.Web/Areas/API/Controllers/DocumentTemplateController.cs +++ b/Disco.Web/Areas/API/Controllers/DocumentTemplateController.cs @@ -21,6 +21,8 @@ namespace Disco.Web.Areas.API.Controllers const string pDescription = "description"; const string pScope = "scope"; const string pFilterExpression = "filterexpression"; + const string pOnGenerateExpression = "ongenerateexpression"; + const string pOnImportAttachmentExpression = "onimportattachmentexpression"; const string pFlattenForm = "flattenform"; [DiscoAuthorize(Claims.Config.DocumentTemplate.Configure)] @@ -50,6 +52,12 @@ namespace Disco.Web.Areas.API.Controllers Authorization.Require(Claims.Config.DocumentTemplate.ConfigureFilterExpression); UpdateFilterExpression(documentTemplate, value); break; + case pOnGenerateExpression: + UpdateOnGenerateExpression(documentTemplate, value); + break; + case pOnImportAttachmentExpression: + UpdateOnImportAttachmentExpression(documentTemplate, value); + break; case pFlattenForm: UpdateFlattenForm(documentTemplate, value); break; @@ -141,6 +149,16 @@ namespace Disco.Web.Areas.API.Controllers { return Update(id, pFilterExpression, FilterExpression, redirect); } + [DiscoAuthorizeAll(Claims.Config.DocumentTemplate.Configure, Claims.Config.DocumentTemplate.ConfigureFilterExpression)] + public virtual ActionResult UpdateOnGenerateExpression(string id, string OnGenerateExpression = null, bool redirect = false) + { + return Update(id, pOnGenerateExpression, OnGenerateExpression, redirect); + } + [DiscoAuthorizeAll(Claims.Config.DocumentTemplate.Configure, Claims.Config.DocumentTemplate.ConfigureFilterExpression)] + public virtual ActionResult UpdateOnImportAttachmentExpression(string id, string OnImportAttachmentExpression = null, bool redirect = false) + { + return Update(id, pOnImportAttachmentExpression, OnImportAttachmentExpression, redirect); + } [DiscoAuthorize(Claims.Config.DocumentTemplate.Configure)] public virtual ActionResult UpdateFlattenForm(string id, string FlattenForm = null, bool redirect = false) { @@ -303,6 +321,36 @@ namespace Disco.Web.Areas.API.Controllers Database.SaveChanges(); } + private void UpdateOnGenerateExpression(Disco.Models.Repository.DocumentTemplate documentTemplate, string OnGenerateExpression) + { + if (string.IsNullOrWhiteSpace(OnGenerateExpression)) + { + documentTemplate.OnGenerateExpression = null; + } + else + { + documentTemplate.OnGenerateExpression = OnGenerateExpression.Trim(); + } + // Invalidate Cache + documentTemplate.OnGenerateExpressionInvalidateCache(); + + Database.SaveChanges(); + } + private void UpdateOnImportAttachmentExpression(Disco.Models.Repository.DocumentTemplate documentTemplate, string OnImportAttachmentExpression) + { + if (string.IsNullOrWhiteSpace(OnImportAttachmentExpression)) + { + documentTemplate.OnImportAttachmentExpression = null; + } + else + { + documentTemplate.OnImportAttachmentExpression = OnImportAttachmentExpression.Trim(); + } + // Invalidate Cache + documentTemplate.OnImportAttachmentExpressionInvalidateCache(); + + Database.SaveChanges(); + } private void UpdateFlattenForm(Disco.Models.Repository.DocumentTemplate documentTemplate, string FlattenForm) { if (string.IsNullOrWhiteSpace(FlattenForm)) diff --git a/Disco.Web/Areas/Config/Views/DeviceProfile/Show.cshtml b/Disco.Web/Areas/Config/Views/DeviceProfile/Show.cshtml index 46470806..b50a54e0 100644 --- a/Disco.Web/Areas/Config/Views/DeviceProfile/Show.cshtml +++ b/Disco.Web/Areas/Config/Views/DeviceProfile/Show.cshtml @@ -9,6 +9,7 @@ var canConfig = Authorization.Has(Claims.Config.DeviceProfile.Configure); var canConfigExpression = Authorization.Has(Claims.Config.DeviceProfile.ConfigureComputerNameTemplate); var canDelete = (Authorization.Has(Claims.Config.DeviceProfile.Delete) && Model.CanDelete); + var canViewPlugins = Authorization.Has(Claims.Config.Plugin.Install); var hideAdvanced = Model.DeviceProfile.AssignedUsersLinkedGroup == null && @@ -18,6 +19,7 @@ { Html.BundleDeferred("~/Style/Fancytree"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-Fancytree"); + Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); } }
@@ -39,41 +41,12 @@ @AjaxHelpers.AjaxLoader() } @@ -93,41 +66,12 @@ @AjaxHelpers.AjaxLoader() } @@ -142,46 +86,17 @@ @if (canConfig) { - @Html.TextBoxFor(model => model.DeviceProfile.Description) + @Html.EditorFor(model => model.DeviceProfile.Description) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } @@ -210,19 +125,12 @@ @AjaxHelpers.AjaxLoader() } @@ -241,19 +149,12 @@ @AjaxHelpers.AjaxLoader() } @@ -273,36 +174,18 @@ Allocate Certificates: - @if (canConfig) + @if (canConfig && Model.CertificateProviders.Count > 0) { @Html.DropDownListFor(model => model.DeviceProfile.CertificateProviderId, Model.CertificateProviders.ToSelectListItems(null, true, "Not Allocated")) @AjaxHelpers.AjaxLoader() } @@ -325,6 +208,14 @@ } } } + @if (canViewPlugins) + { +
+

+ View the Plugin Catalogue to discover and install certificate provider plugins. +

+
+ } @@ -333,46 +224,29 @@ @if (canConfig && canConfigExpression) { - @Html.TextBoxFor(model => model.DeviceProfile.ComputerNameTemplate) + @Html.EditorFor(model => model.DeviceProfile.ComputerNameTemplate) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader()   } @@ -395,19 +269,12 @@ } @@ -434,19 +301,12 @@ } @@ -465,19 +325,12 @@ } @@ -496,19 +349,12 @@ } @@ -668,19 +514,12 @@ } diff --git a/Disco.Web/Areas/Config/Views/DeviceProfile/Show.generated.cs b/Disco.Web/Areas/Config/Views/DeviceProfile/Show.generated.cs index 735ceba8..060212cc 100644 --- a/Disco.Web/Areas/Config/Views/DeviceProfile/Show.generated.cs +++ b/Disco.Web/Areas/Config/Views/DeviceProfile/Show.generated.cs @@ -66,6 +66,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceProfile var canConfig = Authorization.Has(Claims.Config.DeviceProfile.Configure); var canConfigExpression = Authorization.Has(Claims.Config.DeviceProfile.ConfigureComputerNameTemplate); var canDelete = (Authorization.Has(Claims.Config.DeviceProfile.Delete) && Model.CanDelete); + var canViewPlugins = Authorization.Has(Claims.Config.Plugin.Install); var hideAdvanced = Model.DeviceProfile.AssignedUsersLinkedGroup == null && @@ -75,6 +76,7 @@ namespace Disco.Web.Areas.Config.Views.DeviceProfile { Html.BundleDeferred("~/Style/Fancytree"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-Fancytree"); + Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); } @@ -84,15 +86,15 @@ WriteLiteral("\r\n(hideAdvanced ? " Config_HideAdvanced" : null + #line 25 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" +, Tuple.Create(Tuple.Create("", 1206), Tuple.Create(hideAdvanced ? " Config_HideAdvanced" : null #line default #line hidden -, 1046), false) +, 1206), false) ); WriteLiteral(" style=\"width: 640px\""); @@ -106,7 +108,7 @@ WriteLiteral(">Id:\r\n \r\n \r\n"); WriteLiteral(" "); - #line 29 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 31 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.DisplayFor(model => model.DeviceProfile.Id)); @@ -116,7 +118,7 @@ WriteLiteral("\r\n \r\n \r\n \r\n " \r\n "); - #line 35 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 37 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -124,42 +126,42 @@ WriteLiteral("\r\n \r\n \r\n \r\n #line default #line hidden - #line 37 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 39 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.TextBoxFor(model => model.DeviceProfile.Name)); #line default #line hidden - #line 37 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 39 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 38 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 40 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 38 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 40 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 39 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 41 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 39 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 41 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" @@ -169,58 +171,22 @@ WriteLiteral(" - $(function () { - var $Name = $('#DeviceProfile_Name'); - var $NameAjaxSave = $Name.next('.ajaxSave'); - $Name - .watermark('Profile Short Name') - .focus(function () { $Name.select() }) - .keydown(function (e) { - $NameAjaxSave.show(); - if (e.which == 13) { - $(this).blur(); - } - }).blur(function () { - $NameAjaxSave.hide(); - }) - .change(function () { - $NameAjaxSave.hide(); - var $ajaxLoading = $NameAjaxSave.next('.ajaxLoading').show(); - var data = { ProfileName: $Name.val() }; - $.ajax({ - url: '"); +WriteLiteral(">\r\n $(function () {\r\n document.DiscoFun" + +"ctions.PropertyChangeHelper(\r\n $(\'#DeviceProfile_Name" + +"\'),\r\n \'Name\',\r\n \'"); - #line 60 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateName(Model.DeviceProfile.Id))); + #line 47 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateName(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', - dataType: 'json', - data: data, - success: function (d) { - if (d == 'OK') { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } else { - $ajaxLoading.hide(); - alert('Unable to update name: ' + d); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - alert('Unable to update name: ' + textStatus); - $ajaxLoading.hide(); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'ProfileName\'\r\n );\r\n " + +" });\r\n \r\n"); - #line 79 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 52 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -229,14 +195,14 @@ WriteLiteral(@"', #line default #line hidden - #line 82 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 55 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.Name); #line default #line hidden - #line 82 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 55 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -247,7 +213,7 @@ WriteLiteral(" \r\n \r\n \r\n " \r\n "); - #line 89 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 62 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -255,42 +221,42 @@ WriteLiteral(" \r\n \r\n \r\n #line default #line hidden - #line 91 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 64 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.TextBoxFor(model => model.DeviceProfile.ShortName)); #line default #line hidden - #line 91 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 64 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 92 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 65 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 92 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 65 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 93 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 66 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 93 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 66 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" @@ -300,58 +266,23 @@ WriteLiteral(" - $(function () { - var $ShortName = $('#DeviceProfile_ShortName'); - var $ShortNameAjaxSave = $ShortName.next('.ajaxSave'); - $ShortName - .watermark('Profile Short Name') - .focus(function () { $ShortName.select() }) - .keydown(function (e) { - $ShortNameAjaxSave.show(); - if (e.which == 13) { - $(this).blur(); - } - }).blur(function () { - $ShortNameAjaxSave.hide(); - }) - .change(function () { - $ShortNameAjaxSave.hide(); - var $ajaxLoading = $ShortNameAjaxSave.next('.ajaxLoading').show(); - var data = { ShortName: $ShortName.val() }; - $.ajax({ - url: '"); +WriteLiteral(">\r\n $(function () {\r\n document.DiscoFun" + +"ctions.PropertyChangeHelper(\r\n $(\'#DeviceProfile_Shor" + +"tName\'),\r\n \'Short Name\',\r\n " + +" \'"); - #line 114 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateShortName(Model.DeviceProfile.Id))); + #line 72 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateShortName(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', - dataType: 'json', - data: data, - success: function (d) { - if (d == 'OK') { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } else { - $ajaxLoading.hide(); - alert('Unable to update short name: ' + d); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - alert('Unable to update short name: ' + textStatus); - $ajaxLoading.hide(); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'ShortName\'\r\n );\r\n " + +" });\r\n \r\n"); - #line 133 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 77 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -360,14 +291,14 @@ WriteLiteral(@"', #line default #line hidden - #line 136 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 80 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.ShortName); #line default #line hidden - #line 136 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 80 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -378,7 +309,7 @@ WriteLiteral(" \r\n \r\n \r\n " \r\n "); - #line 143 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 87 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -386,42 +317,42 @@ WriteLiteral(" \r\n \r\n \r\n #line default #line hidden - #line 145 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Html.TextBoxFor(model => model.DeviceProfile.Description)); + #line 89 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Html.EditorFor(model => model.DeviceProfile.Description)); #line default #line hidden - #line 145 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - + #line 89 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line default #line hidden - #line 146 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 90 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 146 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 90 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 147 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 91 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 147 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 91 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" @@ -431,58 +362,23 @@ WriteLiteral(" - $(function () { - var $Description = $('#DeviceProfile_Description'); - var $DescriptionAjaxSave = $Description.next('.ajaxSave'); - $Description - .watermark('Profile Description') - .focus(function () { $Description.select() }) - .keydown(function (e) { - $DescriptionAjaxSave.show(); - if (e.which == 13) { - $(this).blur(); - } - }).blur(function () { - $DescriptionAjaxSave.hide(); - }) - .change(function () { - $DescriptionAjaxSave.hide(); - var $ajaxLoading = $DescriptionAjaxSave.next('.ajaxLoading').show(); - var data = { Description: $Description.val() }; - $.ajax({ - url: '"); +WriteLiteral(">\r\n $(function () {\r\n document.DiscoFun" + +"ctions.PropertyChangeHelper(\r\n $(\'#DeviceProfile_Desc" + +"ription\'),\r\n \'Description\',\r\n " + +" \'"); - #line 168 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateDescription(Model.DeviceProfile.Id))); + #line 97 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateDescription(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', - dataType: 'json', - data: data, - success: function (d) { - if (d == 'OK') { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } else { - $ajaxLoading.hide(); - alert('Unable to update description: ' + d); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - alert('Unable to update description: ' + textStatus); - $ajaxLoading.hide(); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'Description\'\r\n );\r\n " + +" });\r\n \r\n"); - #line 187 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 102 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -491,14 +387,14 @@ WriteLiteral(@"', #line default #line hidden - #line 190 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 105 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.Description); #line default #line hidden - #line 190 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 105 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -509,7 +405,7 @@ WriteLiteral(" \r\n \r\n \r\n " \r\n
"); - #line 197 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 112 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceCount.ToString("n0")); @@ -518,7 +414,7 @@ WriteLiteral(" \r\n \r\n \r\n WriteLiteral(" "); - #line 197 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 112 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceCount == 1 ? "devices is a member" : "devices are members"); @@ -527,13 +423,13 @@ WriteLiteral(" "); WriteLiteral(" of this profile.
\r\n"); - #line 198 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 113 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 198 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 113 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (Model.DeviceDecommissionedCount > 0) { @@ -547,7 +443,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral(">"); - #line 200 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 115 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceDecommissionedCount.ToString("n0")); @@ -556,7 +452,7 @@ WriteLiteral(">"); WriteLiteral(" "); - #line 200 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 115 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceDecommissionedCount == 1 ? "device is" : "devices are"); @@ -565,7 +461,7 @@ WriteLiteral(" "); WriteLiteral(" decommissioned.
\r\n"); - #line 201 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 116 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -575,7 +471,7 @@ WriteLiteral(" \r\n \r\n \r\n ":\r\n \r\n "); - #line 207 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 122 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -583,28 +479,28 @@ WriteLiteral(" \r\n \r\n \r\n #line default #line hidden - #line 209 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 124 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.DropDownList("DeviceProfile_DistributionType", Model.DeviceProfileDistributionTypes)); #line default #line hidden - #line 209 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 124 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 210 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 125 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 210 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 125 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" @@ -614,36 +510,23 @@ WriteLiteral(" - $(function () { - $('#DeviceProfile_DistributionType').change(function () { - var $this = $(this); - var $ajaxLoading = $this.next('.ajaxLoading').show(); - var data = { DistributionType: $this.val() }; - $.getJSON('"); +WriteLiteral(">\r\n $(function () {\r\n document.DiscoFun" + +"ctions.PropertyChangeHelper(\r\n $(\'#DeviceProfile_Dist" + +"ributionType\'),\r\n null,\r\n " + +"\'"); - #line 217 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateDistributionType(Model.DeviceProfile.Id))); + #line 131 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateDistributionType(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', data, function (response, result) { - if (result != 'success' || response != 'OK') { - alert('Unable to change Distribution Type:\n' + response); - $ajaxLoading.hide(); - } else { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'DistributionType\'\r\n );\r\n " + +" });\r\n \r\n"); - #line 228 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 136 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -652,14 +535,14 @@ WriteLiteral(@"', data, function (response, result) { #line default #line hidden - #line 231 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 139 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.DistributionType.ToString()); #line default #line hidden - #line 231 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 139 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -670,7 +553,7 @@ WriteLiteral(" \r\n \r\n \r\n " \r\n "); - #line 238 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 146 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -678,28 +561,28 @@ WriteLiteral(" \r\n \r\n \r\n #line default #line hidden - #line 240 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 148 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.DropDownListFor(m => m.DeviceProfile.DefaultOrganisationAddress, Model.OrganisationAddresses.ToSelectListItems(Model.DeviceProfile.DefaultOrganisationAddress, true, "None"))); #line default #line hidden - #line 240 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 148 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 241 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 149 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 241 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 149 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" @@ -709,36 +592,23 @@ WriteLiteral(" - $(function () { - $('#DeviceProfile_DefaultOrganisationAddress').change(function () { - var $this = $(this); - var $ajaxLoading = $this.next('.ajaxLoading').show(); - var data = { DefaultOrganisationAddress: $this.val() }; - $.getJSON('"); +WriteLiteral(">\r\n $(function () {\r\n document.DiscoFun" + +"ctions.PropertyChangeHelper(\r\n $(\'#DeviceProfile_Defa" + +"ultOrganisationAddress\'),\r\n null,\r\n " + +" \'"); - #line 248 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateDefaultOrganisationAddress(Model.DeviceProfile.Id))); + #line 155 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateDefaultOrganisationAddress(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', data, function (response, result) { - if (result != 'success' || response != 'OK') { - alert('Unable to change Address:\n' + response); - $ajaxLoading.hide(); - } else { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'DefaultOrganisationAddress\'\r\n " + +" );\r\n });\r\n \r\n"); - #line 259 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 160 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -755,7 +625,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral("><None Specified>\r\n"); - #line 265 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 166 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -764,14 +634,14 @@ WriteLiteral("><None Specified>\r\n"); #line default #line hidden - #line 268 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 169 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DefaultOrganisationAddress.ToString()); #line default #line hidden - #line 268 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 169 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } } @@ -783,36 +653,36 @@ WriteLiteral(" \r\n \r\n \r\n "ates:\r\n \r\n "); - #line 276 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - if (canConfig) + #line 177 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + if (canConfig && Model.CertificateProviders.Count > 0) { #line default #line hidden - #line 278 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 179 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.DropDownListFor(model => model.DeviceProfile.CertificateProviderId, Model.CertificateProviders.ToSelectListItems(null, true, "Not Allocated"))); #line default #line hidden - #line 278 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 179 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 279 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 180 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 279 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 180 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" @@ -822,47 +692,23 @@ WriteLiteral(" - $(function () { - var $field = $('#DeviceProfile_CertificateProviderId'); - var $ajaxLoading = $field.next('.ajaxLoading'); - $field - .change(function () { - $ajaxLoading.show(); - var data = { CertificateProviderId: $field.val() }; - $.ajax({ - url: '"); +WriteLiteral(">\r\n $(function () {\r\n document.DiscoFun" + +"ctions.PropertyChangeHelper(\r\n $(\'#DeviceProfile_Cert" + +"ificateProviderId\'),\r\n null,\r\n " + +" \'"); - #line 289 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateCertificateProviderId(Model.DeviceProfile.Id))); + #line 186 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateCertificateProviderId(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', - dataType: 'json', - data: data, - success: function (d) { - if (d == 'OK') { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } else { - $ajaxLoading.hide(); - alert('Unable to update Certificate Provider Id: ' + d); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - alert('Unable to update Certificate Provider Id: ' + textStatus); - $ajaxLoading.hide(); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'CertificateProviderId\'\r\n " + +");\r\n });\r\n \r\n"); - #line 308 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 191 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -879,7 +725,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral("><None Allocated>\r\n"); - #line 314 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 197 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -897,7 +743,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral("><None Allocated>\r\n"); - #line 321 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 204 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -906,27 +752,71 @@ WriteLiteral("><None Allocated>\r\n"); #line default #line hidden - #line 324 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 207 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(cp.Name); #line default #line hidden - #line 324 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 207 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } } } + #line default + #line hidden +WriteLiteral(" "); + + + #line 211 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + if (canViewPlugins) + { + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n View the (Url.Action(MVC.Config.Plugins.Install()) + + #line default + #line hidden +, 8933), false) +); + +WriteLiteral(">Plugin Catalogue to discover and install certificate provider plugins.\r\n " + +"

\r\n \r\n"); + + + #line 218 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + } + + #line default #line hidden WriteLiteral(" \r\n \r\n \r\n Computer Name
\r\n Template Expression:\r\n \r\n "); - #line 334 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 225 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig && canConfigExpression) { @@ -934,42 +824,42 @@ WriteLiteral(" \r\n \r\n \r\n #line default #line hidden - #line 336 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Html.TextBoxFor(model => model.DeviceProfile.ComputerNameTemplate)); + #line 227 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Html.EditorFor(model => model.DeviceProfile.ComputerNameTemplate)); #line default #line hidden - #line 336 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - + #line 227 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line default #line hidden - #line 337 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 228 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 337 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 228 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 338 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 229 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 338 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 229 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" @@ -979,14 +869,14 @@ WriteLiteral(" (Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser()) + #line 230 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" +, Tuple.Create(Tuple.Create("", 9570), Tuple.Create(Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser()) #line default #line hidden -, 16564), false) +, 9570), false) ); WriteLiteral("> \r\n"); @@ -997,55 +887,38 @@ WriteLiteral(" type=\"text/javascript\""); WriteLiteral(@"> $(function () { - var $ComputerNameTemplate = $('#DeviceProfile_ComputerNameTemplate'); - var $ajaxSave = $ComputerNameTemplate.next('.ajaxSave'); - $ComputerNameTemplate - .focus(function () { $ComputerNameTemplate.select() }) - .keydown(function (e) { - $ajaxSave.show(); - if (e.which == 13) { - $(this).blur(); - } - }).blur(function () { - $ajaxSave.hide(); - }) - .change(function () { - $ajaxSave.hide(); - var $ajaxLoading = $ajaxSave.next('.ajaxLoading').show(); - var data = { ComputerNameTemplate: $ComputerNameTemplate.val() }; - $.ajax({ - url: '"); + var field = $('#DeviceProfile_ComputerNameTemplate'); + var fieldOriginalWidth, fieldOriginalHeight; + + document.DiscoFunctions.PropertyChangeHelper( + field, + 'None', + '"); - #line 359 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateComputerNameTemplate(Model.DeviceProfile.Id))); + #line 239 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateComputerNameTemplate(Model.DeviceProfile.Id))); #line default #line hidden WriteLiteral(@"', - dataType: 'json', - data: data, - success: function (d) { - if (d == 'OK') { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } else { - $ajaxLoading.hide(); - alert('Unable to update computer name template: ' + d); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - alert('Unable to update computer name template: ' + textStatus); - $ajaxLoading.hide(); - } - }); - }); + 'ComputerNameTemplate' + ); + + field.focus(function () { + fieldOriginalWidth = field.width(); + fieldOriginalHeight = field.height(); + field.css('overflow', 'visible').animate({ width: field.parent().width() - 52, height: 75 }, 200); + }).blur(function () { + field.css('overflow', 'hidden').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight }, 200); + }).attr('placeholder', 'None').attr('spellcheck', 'false'); }); "); - #line 378 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 252 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -1062,13 +935,13 @@ WriteLiteral(" class=\"code\""); WriteLiteral(">\r\n"); - #line 382 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 256 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 382 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 256 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (string.IsNullOrWhiteSpace(Model.DeviceProfile.ComputerNameTemplate)) { @@ -1082,7 +955,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral("><None Specified>\r\n"); - #line 385 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 259 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -1091,14 +964,14 @@ WriteLiteral("><None Specified>\r\n"); #line default #line hidden - #line 388 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 262 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.ComputerNameTemplate); #line default #line hidden - #line 388 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 262 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -1108,7 +981,7 @@ WriteLiteral("><None Specified>\r\n"); WriteLiteral(" \r\n"); - #line 391 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 265 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -1121,13 +994,13 @@ WriteLiteral(" style=\"margin-top: 8px;\""); WriteLiteral(">\r\n"); - #line 393 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 267 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 393 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 267 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -1143,7 +1016,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 395 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 269 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.EnforceComputerNameConvention ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -1157,34 +1030,24 @@ WriteLiteral(" type=\"text/javascript\""); WriteLiteral(@"> $(function () { - $('#DeviceProfile_EnforceComputerNameConvention').click(function () { - var $this = $(this); - var $ajaxLoading = $this.nextAll('.ajaxLoading').show(); - var data = { EnforceComputerNameConvention: $this.is(':checked') }; - $.getJSON('"); + document.DiscoFunctions.PropertyChangeHelper( + $('#DeviceProfile_EnforceComputerNameConvention'), + null, + '"); - #line 402 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateEnforceComputerNameConvention(Model.DeviceProfile.Id))); + #line 275 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateEnforceComputerNameConvention(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', data, function (response, result) { - if (result != 'success' || response != 'OK') { - alert('Unable to change Enforce Computer Name Convention:\n' + response); - $ajaxLoading.hide(); - } else { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'EnforceComputerNameConvention\'\r\n " + +" );\r\n });\r\n " + +" \r\n"); - #line 413 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 280 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -1201,7 +1064,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 416 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 283 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.EnforceComputerNameConvention ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -1210,7 +1073,7 @@ WriteLiteral(" "); WriteLiteral(" disabled=\"disabled\" />\r\n"); - #line 417 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 284 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -1226,7 +1089,7 @@ WriteLiteral(">\r\n Enforce Naming Convention\r\n WriteLiteral(" "); - #line 421 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 288 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); @@ -1244,13 +1107,13 @@ WriteLiteral(">\r\n Note: Computer names are only changed whe "
\r\n"); - #line 432 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 299 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 432 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 299 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -1266,7 +1129,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 434 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 301 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.ProvisionADAccount ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -1280,34 +1143,24 @@ WriteLiteral(" type=\"text/javascript\""); WriteLiteral(@"> $(function () { - $('#DeviceProfile_ProvisionADAccount').click(function () { - var $this = $(this); - var $ajaxLoading = $this.nextAll('.ajaxLoading').show(); - var data = { ProvisionADAccount: $this.is(':checked') }; - $.getJSON('"); + document.DiscoFunctions.PropertyChangeHelper( + $('#DeviceProfile_ProvisionADAccount'), + null, + '"); - #line 441 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateProvisionADAccount(Model.DeviceProfile.Id))); + #line 307 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateProvisionADAccount(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', data, function (response, result) { - if (result != 'success' || response != 'OK') { - alert('Unable to change Provision AD Account:\n' + response); - $ajaxLoading.hide(); - } else { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'ProvisionADAccount\'\r\n " + +" );\r\n });\r\n \r\n"); - #line 452 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 312 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -1324,7 +1177,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 455 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 315 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.ProvisionADAccount ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -1333,7 +1186,7 @@ WriteLiteral(" "); WriteLiteral(" disabled=\"disabled\" />\r\n"); - #line 456 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 316 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -1349,7 +1202,7 @@ WriteLiteral(">\r\n Provision Active Directory Account\r\ WriteLiteral(" "); - #line 460 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 320 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); @@ -1362,13 +1215,13 @@ WriteLiteral(" style=\"margin-top: 8px;\""); WriteLiteral(">\r\n"); - #line 463 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 323 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 463 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 323 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -1384,7 +1237,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 465 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 325 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.AssignedUserLocalAdmin ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -1398,34 +1251,24 @@ WriteLiteral(" type=\"text/javascript\""); WriteLiteral(@"> $(function () { - $('#DeviceProfile_AssignedUserLocalAdmin').click(function () { - var $this = $(this); - var $ajaxLoading = $this.nextAll('.ajaxLoading').show(); - var data = { AssignedUserLocalAdmin: $this.is(':checked') }; - $.getJSON('"); + document.DiscoFunctions.PropertyChangeHelper( + $('#DeviceProfile_AssignedUserLocalAdmin'), + null, + '"); - #line 472 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateAssignedUserLocalAdmin(Model.DeviceProfile.Id))); + #line 331 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateAssignedUserLocalAdmin(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', data, function (response, result) { - if (result != 'success' || response != 'OK') { - alert('Unable to change Assigned User Is Local Administrator:\n' + response); - $ajaxLoading.hide(); - } else { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'AssignedUserLocalAdmin\'\r\n " + +" );\r\n });\r\n \r\n"); - #line 483 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 336 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -1442,7 +1285,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 486 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 339 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.AssignedUserLocalAdmin ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -1451,7 +1294,7 @@ WriteLiteral(" "); WriteLiteral(" disabled=\"disabled\" />\r\n"); - #line 487 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 340 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -1467,7 +1310,7 @@ WriteLiteral(">\r\n Assigned User is Local Administrator\ WriteLiteral(" "); - #line 491 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 344 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); @@ -1480,13 +1323,13 @@ WriteLiteral(" style=\"margin-top: 8px;\""); WriteLiteral(">\r\n"); - #line 494 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 347 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 494 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 347 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -1502,7 +1345,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 496 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 349 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.AllowUntrustedReimageJobEnrolment ? new MvcHtmlString("checked=\"checked\" ") : null); @@ -1516,34 +1359,24 @@ WriteLiteral(" type=\"text/javascript\""); WriteLiteral(@"> $(function () { - $('#DeviceProfile_AllowUntrustedReimageJobEnrolment').click(function () { - var $this = $(this); - var $ajaxLoading = $this.nextAll('.ajaxLoading').show(); - var data = { AllowUntrustedReimageJobEnrolment: $this.is(':checked') }; - $.getJSON('"); + document.DiscoFunctions.PropertyChangeHelper( + $('#DeviceProfile_AllowUntrustedReimageJobEnrolment'), + null, + '"); - #line 503 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateAllowUntrustedReimageJobEnrolment(Model.DeviceProfile.Id))); + #line 355 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateAllowUntrustedReimageJobEnrolment(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', data, function (response, result) { - if (result != 'success' || response != 'OK') { - alert('Unable to change Allow Untrusted Reimage Job Enrolment:\n' + response); - $ajaxLoading.hide(); - } else { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'AllowUntrustedReimageJobEnrolment\'\r\n " + +" );\r\n });\r\n " + +" \r\n"); - #line 514 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 360 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -1560,7 +1393,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 517 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 363 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.AllowUntrustedReimageJobEnrolment ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -1569,7 +1402,7 @@ WriteLiteral(" "); WriteLiteral(" disabled=\"disabled\" />\r\n"); - #line 518 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 364 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -1588,7 +1421,7 @@ WriteLiteral(">\'Software - Reimage\' Job is Open\r\n WriteLiteral(" "); - #line 522 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 368 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); @@ -1598,7 +1431,7 @@ WriteLiteral("\r\n
\r\n \r\n \r " Organisational Unit:\r\n \r\n "); - #line 529 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 375 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -1614,7 +1447,7 @@ WriteLiteral(" class=\"code\""); WriteLiteral(" data-value=\""); - #line 531 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 377 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.OrganisationalUnit); @@ -1627,7 +1460,7 @@ WriteLiteral(">\r\n \r\n"); WriteLiteral(" "); - #line 533 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 379 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.FriendlyOrganisationalUnitName); @@ -1646,20 +1479,20 @@ WriteLiteral(" class=\"button small\""); WriteLiteral(">Change"); - #line 536 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 382 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 536 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 382 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 536 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 382 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" @@ -1682,7 +1515,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 539 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 385 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); @@ -1704,7 +1537,7 @@ WriteLiteral(" type=\"text/javascript\""); WriteLiteral(">\r\n $(function () {\r\n var ouSetUrl = \'"); - #line 546 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 392 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Url.Action(MVC.API.DeviceProfile.UpdateOrganisationalUnit(Model.DeviceProfile.Id, null, true))); @@ -1746,7 +1579,7 @@ WriteLiteral("\';\r\n var ouValue = $(\'#DeviceProfile_Or " $ouTree.css(\'height\', \'100%\');\r\n\r\n $.getJSON(\'"); - #line 596 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 442 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Url.Action(MVC.API.System.DomainOrganisationalUnits())); @@ -1793,7 +1626,7 @@ WriteLiteral("\', null, function (data) {\r\n " \r\n"); - #line 656 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 502 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -1812,7 +1645,7 @@ WriteLiteral(">\r\n \r\n"); WriteLiteral(" "); - #line 661 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 507 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.FriendlyOrganisationalUnitName); @@ -1821,7 +1654,7 @@ WriteLiteral(" "); WriteLiteral("\r\n \r\n \r\n"); - #line 664 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 510 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -1834,13 +1667,13 @@ WriteLiteral(" style=\"margin-top: 8px;\""); WriteLiteral(">\r\n"); - #line 666 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 512 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 666 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 512 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -1856,7 +1689,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 668 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 514 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.EnforceOrganisationalUnit ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -1870,34 +1703,24 @@ WriteLiteral(" type=\"text/javascript\""); WriteLiteral(@"> $(function () { - $('#DeviceProfile_EnforceOrganisationalUnit').click(function () { - var $this = $(this); - var $ajaxLoading = $this.nextAll('.ajaxLoading').show(); - var data = { EnforceOrganisationalUnit: $this.is(':checked') }; - $.getJSON('"); + document.DiscoFunctions.PropertyChangeHelper( + $('#DeviceProfile_EnforceOrganisationalUnit'), + null, + '"); - #line 675 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" - Write(Url.Action(MVC.API.DeviceProfile.UpdateEnforceOrganisationalUnit(Model.DeviceProfile.Id))); + #line 520 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + Write(Url.Action(MVC.API.DeviceProfile.UpdateEnforceOrganisationalUnit(Model.DeviceProfile.Id))); #line default #line hidden -WriteLiteral(@"', data, function (response, result) { - if (result != 'success' || response != 'OK') { - alert('Unable to change Enforce Organisation Unit:\n' + response); - $ajaxLoading.hide(); - } else { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'EnforceOrganisationalUnit\'\r\n " + +" );\r\n });\r\n " + +" \r\n"); - #line 686 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 525 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } else { @@ -1914,7 +1737,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 689 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 528 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Model.DeviceProfile.EnforceOrganisationalUnit ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -1923,7 +1746,7 @@ WriteLiteral(" "); WriteLiteral(" disabled=\"disabled\" />\r\n"); - #line 690 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 529 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -1939,7 +1762,7 @@ WriteLiteral(">\r\n Enforce Organisational Unit\r\n WriteLiteral(" "); - #line 694 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 533 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); @@ -1948,13 +1771,13 @@ WriteLiteral(" "); WriteLiteral("\r\n \r\n \r\n \r\n"); - #line 698 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 537 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 698 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 537 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (hideAdvanced) { @@ -1988,7 +1811,7 @@ WriteLiteral(@">Show Advanced Options "); - #line 714 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 553 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -2004,7 +1827,7 @@ WriteLiteral(">\r\n Linked Groups:\r\n \r\n WriteLiteral(" "); - #line 720 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 559 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() { CanConfigure = canConfig, @@ -2022,7 +1845,7 @@ WriteLiteral("\r\n"); WriteLiteral(" "); - #line 728 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 567 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() { CanConfigure = canConfig, @@ -2038,13 +1861,13 @@ WriteLiteral(" "); WriteLiteral("\r\n"); - #line 736 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 575 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 736 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 575 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canConfig) { @@ -2052,14 +1875,14 @@ WriteLiteral("\r\n"); #line default #line hidden - #line 738 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 577 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupShared)); #line default #line hidden - #line 738 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 577 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -2069,7 +1892,7 @@ WriteLiteral("\r\n"); WriteLiteral(" \r\n \r\n \r\n \r\n\r\n"); - #line 745 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 584 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canDelete) { @@ -2124,7 +1947,7 @@ WriteLiteral(@"> "); - #line 781 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 620 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -2137,13 +1960,13 @@ WriteLiteral(" class=\"actionBar\""); WriteLiteral(">\r\n"); - #line 783 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 622 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" #line default #line hidden - #line 783 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 622 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (canDelete) { @@ -2151,14 +1974,14 @@ WriteLiteral(">\r\n"); #line default #line hidden - #line 785 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 624 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.ActionLinkButton("Delete", MVC.API.DeviceProfile.Delete(Model.DeviceProfile.Id, true), "buttonDelete")); #line default #line hidden - #line 785 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 624 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -2168,7 +1991,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 787 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 626 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (Authorization.Has(Claims.Device.Actions.Export)) { @@ -2176,14 +1999,14 @@ WriteLiteral(" "); #line default #line hidden - #line 789 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 628 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.ActionLinkButton("Export Devices", MVC.Device.Export(null, Disco.Models.Services.Devices.Exporting.DeviceExportTypes.Profile, Model.DeviceProfile.Id))); #line default #line hidden - #line 789 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 628 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } @@ -2193,7 +2016,7 @@ WriteLiteral(" "); WriteLiteral(" "); - #line 791 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 630 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" if (Authorization.Has(Claims.Device.Search) && Model.DeviceCount > 0) { @@ -2201,14 +2024,14 @@ WriteLiteral(" "); #line default #line hidden - #line 793 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 632 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" Write(Html.ActionLinkButton(string.Format("View {0} Device{1}", Model.DeviceCount, (Model.DeviceCount != 1 ? "s" : null)), MVC.Search.Query(Model.DeviceProfile.Id.ToString(), "DeviceProfile"))); #line default #line hidden - #line 793 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" + #line 632 "..\..\Areas\Config\Views\DeviceProfile\Show.cshtml" } diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml b/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml index 32e2da32..7d774139 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.cshtml @@ -35,12 +35,12 @@

Disco QR-Code not found
- Manually Assign Page + Manually Assign Page
- Document: + Document:
- Target: + Target:

@@ -306,7 +306,7 @@ logHub = $.connection.logNotifications; logHub.client.receiveLog = parseLog - $.connection.hub.qs = { LogModules: '@(Disco.BI.DocumentTemplateBI.Importer.DocumentImporterLog.Current.LiveLogGroupName)' }; + $.connection.hub.qs = { LogModules: '@(Disco.BI.DocumentTemplateBI.DocumentsLog.Current.LiveLogGroupName)' }; $.connection.hub.error(function (error) { alert('Live-Log Error: ' + error); }); diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.generated.cs b/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.generated.cs index 80fa4368..dee3d33a 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.generated.cs +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/ImportStatus.generated.cs @@ -144,6 +144,8 @@ WriteLiteral(">\r\n Disco QR-Code not found
\r\n WriteLiteral(" target=\"_blank\""); +WriteLiteral(" href=\"#\""); + WriteLiteral(" data-bind=\"attr: { href: manuallyAssignUrl }, visible: $parent.sessionEnded\""); WriteLiteral(">Manually Assign Page\r\n

\r\n " + @@ -155,6 +157,8 @@ WriteLiteral(">\r\n Document: \r\n
\r\n Target: \r\n
\r\n WriteLiteral(" target=\"_blank\""); +WriteLiteral(" href=\"#\""); + WriteLiteral(" data-bind=\"text: assignedData, attr: { href: assignedDataUrl }\""); WriteLiteral(">\r\n \r\n e.All(p => !p.ParseError)); #region Can Bulk Generate @@ -35,6 +37,11 @@ #endregion ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description); + + if (canConfig) + { + Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); + } }
@@ -63,41 +70,12 @@ @AjaxHelpers.AjaxLoader() } @@ -123,19 +101,12 @@ @AjaxHelpers.AjaxLoader() } @@ -429,54 +400,46 @@ @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) { - @Html.TextBoxFor(model => model.DocumentTemplate.FilterExpression) + @Html.EditorFor(model => model.DocumentTemplate.FilterExpression) @AjaxHelpers.AjaxRemove() + @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } @@ -493,6 +456,147 @@
} } +
+

+ This expression will be evaluated to determine if this template is shown in the Generate Document drop-down list. +

+
+ + + + On Generated Expression: + + @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) + { + @Html.EditorFor(model => model.DocumentTemplate.OnGenerateExpression) + @AjaxHelpers.AjaxRemove() + @AjaxHelpers.AjaxSave() + @AjaxHelpers.AjaxLoader() + + } + else + { + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnGenerateExpression)) + { + <None Specified> + } + else + { +
+ @Model.DocumentTemplate.OnGenerateExpression +
+ } + } +
+

+ This expression will be evaluated each time a document is generated from this template. +

+
+ + + + On Import Expression: + + @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) + { + @Html.EditorFor(model => model.DocumentTemplate.OnImportAttachmentExpression) + @AjaxHelpers.AjaxRemove() + @AjaxHelpers.AjaxSave() + @AjaxHelpers.AjaxLoader() + + } + else + { + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnImportAttachmentExpression)) + { + <None Specified> + } + else + { +
+ @Model.DocumentTemplate.OnImportAttachmentExpression +
+ } + } +
+

+ This expression will be evaluated each time a document is imported (as an attachment) where it is determined the document was based on this template. +

+
diff --git a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs index d2252a6f..b6742db1 100644 --- a/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs +++ b/Disco.Web/Areas/Config/Views/DocumentTemplate/Show.generated.cs @@ -73,6 +73,8 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate Model.DocumentTemplate.UsersLinkedGroup == null && Model.DocumentTemplate.DevicesLinkedGroup == null && Model.DocumentTemplate.FilterExpression == null && + Model.DocumentTemplate.OnGenerateExpression == null && + Model.DocumentTemplate.OnImportAttachmentExpression == null && Model.TemplateExpressions.All(e => e.All(p => !p.ParseError)); #region Can Bulk Generate @@ -98,6 +100,11 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description); + if (canConfig) + { + Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); + } + #line default #line hidden @@ -105,14 +112,14 @@ WriteLiteral("\r\n(hideAdvanced ? "Config_HideAdvanced" : null + #line 46 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" +, Tuple.Create(Tuple.Create("", 2035), Tuple.Create(hideAdvanced ? "Config_HideAdvanced" : null #line default #line hidden -, 1778), false) +, 2035), false) ); WriteLiteral(">\r\n \r\n \r\n \r\n Id:\r\n \r\n \r\n \r\n ">\r\n "); - #line 53 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 60 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.StoredInstanceCount.ToString("n0")); @@ -145,7 +152,7 @@ WriteLiteral("\r\n \r\n \r\n WriteLiteral(" Stored Instance"); - #line 53 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 60 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.StoredInstanceCount == 1 ? null : "s"); @@ -156,7 +163,7 @@ WriteLiteral("\r\n \r\n \r\n "d>"); - #line 59 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 66 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { @@ -164,42 +171,42 @@ WriteLiteral("\r\n \r\n \r\n #line default #line hidden - #line 61 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 68 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.TextBoxFor(model => model.DocumentTemplate.Description)); #line default #line hidden - #line 61 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 68 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 62 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 69 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 62 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 69 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 63 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 70 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 63 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 70 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" @@ -211,56 +218,23 @@ WriteLiteral(" type=\"text/javascript\""); WriteLiteral(@"> $(function () { - var $Description = $('#DocumentTemplate_Description'); - var $DescriptionAjaxSave = $Description.next('.ajaxSave'); - $Description - .watermark('Description') - .focus(function () { $Description.select() }) - .keydown(function (e) { - $DescriptionAjaxSave.show(); - if (e.which == 13) { - $(this).blur(); - } - }).blur(function () { - $DescriptionAjaxSave.hide(); - }) - .change(function () { - $DescriptionAjaxSave.hide(); - var $ajaxLoading = $DescriptionAjaxSave.next('.ajaxLoading').show(); - var data = { Description: $Description.val() }; - $.ajax({ - url: '"); + document.DiscoFunctions.PropertyChangeHelper( + $('#DocumentTemplate_Description'), + 'Description', + '"); - #line 84 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Url.Action(MVC.API.DocumentTemplate.UpdateDescription(Model.DocumentTemplate.Id))); + #line 76 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Url.Action(MVC.API.DocumentTemplate.UpdateDescription(Model.DocumentTemplate.Id))); #line default #line hidden -WriteLiteral(@"', - dataType: 'json', - data: data, - success: function (d) { - if (d == 'OK') { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } else { - $ajaxLoading.hide(); - alert('Unable to update description: ' + d); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - alert('Unable to update description: ' + textStatus); - $ajaxLoading.hide(); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'Description\'\r\n " + +" );\r\n });\r\n \r\n"); - #line 103 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 81 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -277,7 +251,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral("><None Specified>\r\n"); - #line 109 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 87 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -286,14 +260,14 @@ WriteLiteral("><None Specified>\r\n"); #line default #line hidden - #line 112 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 90 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.Description); #line default #line hidden - #line 112 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 90 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } } @@ -306,7 +280,7 @@ WriteLiteral(" \r\n \r\n " \r\n \r\n "

"); - #line 152 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 123 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.Scope); @@ -441,7 +404,7 @@ WriteLiteral(" class=\"fa fa-info-circle\""); WriteLiteral(">This template is generated from "); - #line 155 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 126 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.Scope); @@ -449,29 +412,29 @@ WriteLiteral(">This template is generated from "); #line hidden WriteLiteral("s. Any expressions within the Template PDF will be evaluated within the (Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser()) + #line 126 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + , Tuple.Create(Tuple.Create("", 6042), Tuple.Create(Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser()) #line default #line hidden -, 8597), false) -, Tuple.Create(Tuple.Create("", 8659), Tuple.Create("#", 8659), true) +, 6042), false) +, Tuple.Create(Tuple.Create("", 6104), Tuple.Create("#", 6104), true) - #line 155 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - , Tuple.Create(Tuple.Create("", 8660), Tuple.Create(Model.DocumentTemplate.Scope + #line 126 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + , Tuple.Create(Tuple.Create("", 6105), Tuple.Create(Model.DocumentTemplate.Scope #line default #line hidden -, 8660), false) -, Tuple.Create(Tuple.Create("", 8691), Tuple.Create("Scope", 8691), true) +, 6105), false) +, Tuple.Create(Tuple.Create("", 6136), Tuple.Create("Scope", 6136), true) ); WriteLiteral(">"); - #line 155 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 126 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.Scope); @@ -487,13 +450,13 @@ WriteLiteral(" class=\"button small\""); WriteLiteral(">Change Scope\r\n \r\n"); - #line 161 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 132 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 161 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 132 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { @@ -511,13 +474,13 @@ WriteLiteral(" class=\"dialog\""); WriteLiteral(">\r\n"); - #line 164 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 135 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 164 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 135 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" using (Html.BeginForm(MVC.API.DocumentTemplate.UpdateScope(Model.DocumentTemplate.Id, redirect: true))) { @@ -541,13 +504,13 @@ WriteLiteral(" name=\"Scope\""); WriteLiteral(">\r\n"); - #line 169 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 140 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 169 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 140 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" foreach (var scope in Model.Scopes) { @@ -556,30 +519,30 @@ WriteLiteral(">\r\n"); #line hidden WriteLiteral(" (scope + #line 142 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" +, Tuple.Create(Tuple.Create("", 7273), Tuple.Create(scope #line default #line hidden -, 9828), false) +, 7273), false) ); -WriteAttribute("selected", Tuple.Create(" selected=\"", 9835), Tuple.Create("\"", 9906) +WriteAttribute("selected", Tuple.Create(" selected=\"", 7280), Tuple.Create("\"", 7351) - #line 171 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - , Tuple.Create(Tuple.Create("", 9846), Tuple.Create(scope == Model.DocumentTemplate.Scope ? "selected" : null + #line 142 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + , Tuple.Create(Tuple.Create("", 7291), Tuple.Create(scope == Model.DocumentTemplate.Scope ? "selected" : null #line default #line hidden -, 9846), false) +, 7291), false) ); WriteLiteral(">"); - #line 171 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 142 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(scope); @@ -588,7 +551,7 @@ WriteLiteral(">"); WriteLiteral(" \r\n"); - #line 172 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 143 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -598,7 +561,7 @@ WriteLiteral(" \r\n " \r\n"); - #line 175 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 146 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -621,13 +584,13 @@ WriteLiteral(">Expressions within the Template PDF may need to be updated to "\n \r\n"); - #line 181 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 152 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 181 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 152 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (Model.DocumentTemplate.UsersLinkedGroup != null || Model.DocumentTemplate.DevicesLinkedGroup != null) { @@ -652,7 +615,7 @@ WriteLiteral(@">Warning: This Document Template contains Li "); - #line 188 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 159 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -689,7 +652,7 @@ WriteLiteral(">\r\n $(function () {\r\n " \r\n"); - #line 222 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 193 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -698,7 +661,7 @@ WriteLiteral(">\r\n $(function () {\r\n WriteLiteral(" "); - #line 223 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 194 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.Job) { @@ -716,7 +679,7 @@ WriteLiteral(" id=\"Config_DocumentTemplates_JobSubTypes\""); WriteLiteral(" "); - #line 227 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 198 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.Scope != DocumentTemplate.DocumentTemplateScopes.Job ? "style=\"display: none;\" " : null); @@ -725,13 +688,13 @@ WriteLiteral(" "); WriteLiteral(">\r\n
\r\n"); - #line 229 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 200 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 229 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 200 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (Model.DocumentTemplate.JobSubTypes.Count > 0) { @@ -741,13 +704,13 @@ WriteLiteral(">\r\n
\r\n"); WriteLiteral("
    \r\n"); - #line 232 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 203 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 232 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 203 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" foreach (var jobType in Model.DocumentTemplate.JobSubTypes.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) { @@ -759,7 +722,7 @@ WriteLiteral("
  • \r\n"); WriteLiteral(" "); - #line 235 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 206 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(jobType.Key.Description); @@ -768,13 +731,13 @@ WriteLiteral(" "); WriteLiteral("\r\n
      \r\n"); - #line 237 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 208 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 237 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 208 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) { @@ -788,7 +751,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral(">[All Sub Types]\r\n"); - #line 240 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 211 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -801,7 +764,7 @@ WriteLiteral(">[All Sub Types]\r\n"); WriteLiteral("
    • "); - #line 245 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 216 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(jobSubType.Description); @@ -810,7 +773,7 @@ WriteLiteral("
    • ") WriteLiteral("
    • \r\n"); - #line 246 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 217 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } } @@ -821,7 +784,7 @@ WriteLiteral("
    \r\n "
  • \r\n"); - #line 250 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 221 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -830,7 +793,7 @@ WriteLiteral("
\r\n WriteLiteral(" \r\n"); - #line 252 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 223 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -845,7 +808,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral("><No Filter>\r\n"); - #line 256 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 227 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -854,13 +817,13 @@ WriteLiteral("><No Filter>\r\n"); WriteLiteral("
\r\n"); - #line 258 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 229 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 258 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 229 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { @@ -888,13 +851,13 @@ WriteLiteral(" title=\"Job Type Filter\""); WriteLiteral(">\r\n"); - #line 262 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 233 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 262 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 233 "..\..\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(); @@ -911,35 +874,35 @@ WriteLiteral(" class=\"jobTypes\""); WriteLiteral(">\r\n

\r\n " + " (jt.Id + #line 240 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" +, Tuple.Create(Tuple.Create("", 14006), Tuple.Create(jt.Id #line default #line hidden -, 16561), false) +, 14006), false) ); WriteLiteral(" class=\"jobType\""); WriteLiteral(" type=\"checkbox\""); -WriteAttribute("value", Tuple.Create(" value=\"", 16602), Tuple.Create("\"", 16618) +WriteAttribute("value", Tuple.Create(" value=\"", 14047), Tuple.Create("\"", 14063) - #line 269 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - , Tuple.Create(Tuple.Create("", 16610), Tuple.Create(jt.Id + #line 240 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + , Tuple.Create(Tuple.Create("", 14055), Tuple.Create(jt.Id #line default #line hidden -, 16610), false) +, 14055), false) ); WriteLiteral(" "); - #line 269 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 240 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(selectedTypes.Contains(jt) ? "checked=\"checked\"" : null); @@ -947,21 +910,21 @@ WriteLiteral(" "); #line hidden WriteLiteral(" />(jt.Id + #line 240 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + , Tuple.Create(Tuple.Create("", 14146), Tuple.Create(jt.Id #line default #line hidden -, 16701), false) +, 14146), false) ); WriteLiteral(">"); - #line 269 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 240 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(jt.Description); @@ -969,15 +932,15 @@ WriteLiteral(">"); #line hidden WriteLiteral("

\r\n (jt.Id + #line 241 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" +, Tuple.Create(Tuple.Create("", 14252), Tuple.Create(jt.Id #line default #line hidden -, 16807), false) +, 14252), false) ); WriteLiteral(" class=\"jobSubTypes\""); @@ -987,7 +950,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 271 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 242 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div")); @@ -998,7 +961,7 @@ WriteLiteral("\r\n"); WriteLiteral(" "); - #line 272 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 243 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.DocumentTemplate.JobSubTypes), 2)); @@ -1008,7 +971,7 @@ WriteLiteral("\r\n
\r\n " \r\n"); - #line 275 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 246 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } } @@ -1066,7 +1029,7 @@ WriteLiteral(" \r\n"); - #line 340 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 311 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -1075,7 +1038,7 @@ WriteLiteral(" \r\n"); - #line 400 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 371 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -1207,13 +1170,13 @@ WriteLiteral(">\r\n $(function () {\r\n WriteLiteral(" \r\n \r\n"); - #line 403 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 374 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 403 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 374 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (hideAdvanced) { @@ -1247,7 +1210,7 @@ WriteLiteral(@">Show Advanced Options "); - #line 419 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 390 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -1264,7 +1227,7 @@ WriteLiteral(">\r\n

Advanced Options

\r\n

"); - #line 46 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 53 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.DisplayFor(model => model.DocumentTemplate.Id)); @@ -136,7 +143,7 @@ WriteLiteral("\r\n
"); - #line 120 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 98 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { @@ -322,7 +296,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 122 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 100 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.FlattenForm ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -331,20 +305,20 @@ WriteLiteral(" "); WriteLiteral("/>\r\n"); - #line 123 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 101 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 123 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 101 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 123 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 101 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" @@ -356,34 +330,23 @@ WriteLiteral(" type=\"text/javascript\""); WriteLiteral(@"> $(function () { - $('#DocumentTemplate_FlattenForm').click(function () { - var $this = $(this); - var $ajaxLoading = $this.next('.ajaxLoading').show(); - var data = { FlattenForm: $this.is(':checked') }; - $.getJSON('"); + document.DiscoFunctions.PropertyChangeHelper( + $('#DocumentTemplate_FlattenForm'), + null, + '"); - #line 130 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Url.Action(MVC.API.DocumentTemplate.UpdateFlattenForm(Model.DocumentTemplate.Id))); + #line 107 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Url.Action(MVC.API.DocumentTemplate.UpdateFlattenForm(Model.DocumentTemplate.Id))); #line default #line hidden -WriteLiteral(@"', data, function (response, result) { - if (result != 'success' || response != 'OK') { - alert('Unable to change Flatten Form:\n' + response); - $ajaxLoading.hide(); - } else { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - } - }); - }); - }); - -"); +WriteLiteral("\',\r\n \'FlattenForm\'\r\n " + +" );\r\n });\r\n \r\n"); - #line 141 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 112 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -400,7 +363,7 @@ WriteLiteral(" type=\"checkbox\""); WriteLiteral(" "); - #line 144 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 115 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.FlattenForm ? new MvcHtmlString("checked=\"checked\" ") : new MvcHtmlString(string.Empty)); @@ -409,7 +372,7 @@ WriteLiteral(" "); WriteLiteral(" disabled=\"disabled\" />\r\n"); - #line 145 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 116 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -420,7 +383,7 @@ WriteLiteral("
\r\n " \r\n
"); - #line 430 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 401 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) { @@ -1272,42 +1235,56 @@ WriteLiteral(">\r\n

Advanced Options

\r\n \r\n #line default #line hidden - #line 432 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Html.TextBoxFor(model => model.DocumentTemplate.FilterExpression)); + #line 403 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Html.EditorFor(model => model.DocumentTemplate.FilterExpression)); #line default #line hidden - #line 432 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - + #line 403 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line default #line hidden - #line 433 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 404 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(AjaxHelpers.AjaxRemove()); #line default #line hidden - #line 433 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 404 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 434 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 405 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxSave()); + + + #line default + #line hidden + + #line 405 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + + #line default + #line hidden + + #line 406 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 434 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 406 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" @@ -1317,61 +1294,47 @@ WriteLiteral(" \r\n $(function () {\r\n v" + -"ar $FilterExpression = $(\'#DocumentTemplate_FilterExpression\');\r\n " + -" var $ajaxLoading = $FilterExpression.nextAll(\'.ajaxLoading\').fi" + -"rst();\r\n var $ajaxRemove = $FilterExpression.next" + -"All(\'.ajaxRemove\').first();\r\n $FilterExpression\r\n" + -" .watermark(\'Filter Expression\')\r\n " + -" .focus(function () { $FilterExpression.select()" + -" })\r\n .keydown(function (e) {\r\n " + -" if (e.which == 13) {\r\n " + -" $(this).blur();\r\n " + -" }\r\n }).change(function () {\r\n " + -" updateFilterExpression($FilterExpression.va" + -"l());\r\n });\r\n " + -" if ($FilterExpression.val() != \'\')\r\n $aja" + -"xRemove.show();\r\n $ajaxRemove.click(function () {" + -"\r\n updateFilterExpression(\'\');\r\n " + -" $FilterExpression.val(\'\');\r\n " + -" });\r\n var updateFilterExpression = function (f" + -"ilterExpression) {\r\n $ajaxLoading.show();\r\n " + -" $ajaxRemove.hide();\r\n " + -" var data = { FilterExpression: filterExpression };\r\n " + -" $.ajax({\r\n url: \'"); +WriteLiteral(@"> + $(function () { + var field = $('#DocumentTemplate_FilterExpression'); + var fieldRemove = field.next('.ajaxRemove'); + var fieldOriginalWidth, fieldOriginalHeight; + + document.DiscoFunctions.PropertyChangeHelper( + field, + 'None', + '"); - #line 461 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" - Write(Url.Action(MVC.API.DocumentTemplate.UpdateFilterExpression(Model.DocumentTemplate.Id))); + #line 416 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Url.Action(MVC.API.DocumentTemplate.UpdateFilterExpression(Model.DocumentTemplate.Id))); #line default #line hidden -WriteLiteral(@"', - dataType: 'json', - data: data, - success: function (d) { - if (d == 'OK') { - $ajaxLoading.hide().next('.ajaxOk').show().delay('fast').fadeOut('slow'); - if (data.FilterExpression != '') - $ajaxRemove.fadeIn('fast'); - } else { - $ajaxLoading.hide(); - alert('Unable to update filter expression: ' + d); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - alert('Unable to update filter expression: ' + textStatus); - $ajaxLoading.hide(); - } - }); - }; - }); - -"); +WriteLiteral("\',\r\n \'FilterExpression\'\r\n " + +" );\r\n\r\n field.focus(function () {\r\n " + +" fieldOriginalWidth = field.width();\r\n " + +" fieldOriginalHeight = field.height();\r\n " + +" field.css(\'overflow\', \'visible\').animate({ width: field.pare" + +"nt().width() - 42, height: 75 }, 200);\r\n }).blur(" + +"function () {\r\n field.css(\'overflow\', \'hidden" + +"\').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight }, 200);\r\n " + +" }).change(function () {\r\n " + +" if (!!field.val()) {\r\n fieldRe" + +"move.show();\r\n } else {\r\n " + +" fieldRemove.hide();\r\n }\r\n" + +" }).attr(\'placeholder\', \'None\').attr(\'spellcheck\'" + +", \'false\');\r\n\r\n fieldRemove.click(function () {\r\n" + +" field.val(\'\').change();\r\n " + +" });\r\n\r\n if (!!field.val()) {\r\n " + +" fieldRemove.show();\r\n " + +" } else {\r\n fieldRemove.hide();\r\n " + +" }\r\n });\r\n " + +" \r\n"); - #line 482 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 445 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -1388,7 +1351,7 @@ WriteLiteral(" class=\"smallMessage\""); WriteLiteral("><None Specified>\r\n"); - #line 488 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 451 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } else { @@ -1405,7 +1368,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 492 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 455 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Model.DocumentTemplate.FilterExpression); @@ -1414,21 +1377,401 @@ WriteLiteral(" "); WriteLiteral("\r\n \r\n"); - #line 494 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 457 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } } #line default #line hidden -WriteLiteral(" \r\n \r\n \r\n " + -" \r\n \r\n
\r\n"); +WriteLiteral(" \r\n \r\n This expression will be evaluated to determine if this template is shown in the Generate Document drop-down list. +

+
+ +
+ + + + + + + + + + +
Linked Groups:\r\n
On Generated Expression: + "); + + + #line 469 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) + { + + + #line default + #line hidden + + #line 471 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Html.EditorFor(model => model.DocumentTemplate.OnGenerateExpression)); + + + #line default + #line hidden + + #line 471 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + + #line default + #line hidden + + #line 472 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxRemove()); + + + #line default + #line hidden + + #line 472 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + + #line default + #line hidden + + #line 473 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxSave()); + + + #line default + #line hidden + + #line 473 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + + #line default + #line hidden + + #line 474 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxLoader()); + + + #line default + #line hidden + + #line 474 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + + #line default + #line hidden +WriteLiteral(" + $(function () { + var field = $('#DocumentTemplate_OnGenerateExpression'); + var fieldRemove = field.next('.ajaxRemove'); + var fieldOriginalWidth, fieldOriginalHeight; + + document.DiscoFunctions.PropertyChangeHelper( + field, + 'None', + '"); + + + #line 484 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Url.Action(MVC.API.DocumentTemplate.UpdateOnGenerateExpression(Model.DocumentTemplate.Id))); + + + #line default + #line hidden +WriteLiteral("\',\r\n \'OnGenerateExpression\'\r\n " + +" );\r\n\r\n field.focus(function () {\r\n" + +" fieldOriginalWidth = field.width();\r\n " + +" fieldOriginalHeight = field.height();\r\n " + +" field.css(\'overflow\', \'visible\').animate({ width: field." + +"parent().width() - 42, height: 75 }, 200);\r\n }).b" + +"lur(function () {\r\n field.css(\'overflow\', \'hi" + +"dden\').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight }, 200);" + +"\r\n }).change(function () {\r\n " + +" if (!!field.val()) {\r\n fie" + +"ldRemove.show();\r\n } else {\r\n " + +" fieldRemove.hide();\r\n " + +" }\r\n }).attr(\'placeholder\', \'None\').attr(\'spellch" + +"eck\', \'false\');\r\n\r\n fieldRemove.click(function ()" + +" {\r\n field.val(\'\').change();\r\n " + +" });\r\n\r\n if (!!field.val()) {\r\n " + +" fieldRemove.show();\r\n " + +" } else {\r\n fieldRemove.hide();\r\n " + +" }\r\n });\r\n " + +" \r\n"); + + + #line 513 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + else + { + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnGenerateExpression)) + { + + + #line default + #line hidden +WriteLiteral(" <None Specified>\r\n"); + + + #line 519 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + else + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); WriteLiteral(" "); - #line 503 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 523 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Model.DocumentTemplate.OnGenerateExpression); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n"); + + + #line 525 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n This expression will be evaluated each time a document is generated from this template. +

+ +
On Import Expression: + "); + + + #line 537 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) + { + + + #line default + #line hidden + + #line 539 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Html.EditorFor(model => model.DocumentTemplate.OnImportAttachmentExpression)); + + + #line default + #line hidden + + #line 539 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + + #line default + #line hidden + + #line 540 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxRemove()); + + + #line default + #line hidden + + #line 540 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + + #line default + #line hidden + + #line 541 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxSave()); + + + #line default + #line hidden + + #line 541 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + + #line default + #line hidden + + #line 542 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(AjaxHelpers.AjaxLoader()); + + + #line default + #line hidden + + #line 542 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + + + + #line default + #line hidden +WriteLiteral(" + $(function () { + var field = $('#DocumentTemplate_OnImportAttachmentExpression'); + var fieldRemove = field.next('.ajaxRemove'); + var fieldOriginalWidth, fieldOriginalHeight; + + document.DiscoFunctions.PropertyChangeHelper( + field, + 'None', + '"); + + + #line 552 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Url.Action(MVC.API.DocumentTemplate.UpdateOnImportAttachmentExpression(Model.DocumentTemplate.Id))); + + + #line default + #line hidden +WriteLiteral("\',\r\n \'OnImportAttachmentExpression\'\r\n " + +" );\r\n\r\n field.focus(functio" + +"n () {\r\n fieldOriginalWidth = field.width();\r" + +"\n fieldOriginalHeight = field.height();\r\n " + +" field.css(\'overflow\', \'visible\').animate({ width" + +": field.parent().width() - 42, height: 75 }, 200);\r\n " + +" }).blur(function () {\r\n field.css(\'overfl" + +"ow\', \'hidden\').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight " + +"}, 200);\r\n }).change(function () {\r\n " + +" if (!!field.val()) {\r\n " + +" fieldRemove.show();\r\n } else {\r\n " + +" fieldRemove.hide();\r\n " + +" }\r\n }).attr(\'placeholder\', \'None\').attr(" + +"\'spellcheck\', \'false\');\r\n\r\n fieldRemove.click(fun" + +"ction () {\r\n field.val(\'\').change();\r\n " + +" });\r\n\r\n if (!!field.val(" + +")) {\r\n fieldRemove.show();\r\n " + +" } else {\r\n fieldRemove.hide();" + +"\r\n }\r\n });\r\n " + +" \r\n"); + + + #line 581 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + else + { + if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.OnImportAttachmentExpression)) + { + + + #line default + #line hidden +WriteLiteral(" <None Specified>\r\n"); + + + #line 587 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + else + { + + + #line default + #line hidden +WriteLiteral(" \r\n"); + +WriteLiteral(" "); + + + #line 591 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + Write(Model.DocumentTemplate.OnImportAttachmentExpression); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n"); + + + #line 593 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + } + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n This expression will be evaluated each time a document is imported (as an attachment) where it is determined the document was based on this template. +

+ +
Linked Groups: + +
+"); + +WriteLiteral(" "); + + + #line 607 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() { CanConfigure = canConfig, @@ -1446,7 +1789,7 @@ WriteLiteral("\r\n"); WriteLiteral(" "); - #line 511 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 615 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() { CanConfigure = canConfig, @@ -1462,13 +1805,13 @@ WriteLiteral(" "); WriteLiteral("\r\n"); - #line 519 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 623 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 519 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 623 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canConfig) { @@ -1476,14 +1819,14 @@ WriteLiteral("\r\n"); #line default #line hidden - #line 521 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 625 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.Partial(MVC.Config.Shared.Views.LinkedGroupShared)); #line default #line hidden - #line 521 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 625 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -1500,7 +1843,7 @@ WriteLiteral(">\r\n

Template Expressions

\r\n"); WriteLiteral(" "); - #line 531 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 635 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.Partial(MVC.Config.DocumentTemplate.Views._ExpressionsTable, Model.TemplateExpressions)); @@ -1562,13 +1905,13 @@ WriteLiteral(" class=\"actionBar\""); WriteLiteral(">\r\n"); - #line 572 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 676 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 572 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 676 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (Authorization.Has(Claims.Config.Show)) { @@ -1576,14 +1919,14 @@ WriteLiteral(">\r\n"); #line default #line hidden - #line 574 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 678 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser())); #line default #line hidden - #line 574 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 678 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -1593,7 +1936,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" "); - #line 576 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 680 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (canBulkGenerate) { @@ -1616,16 +1959,16 @@ WriteLiteral(" id=\"dialogBulkGenerate\""); WriteLiteral(" class=\"hiddenDialog\""); -WriteAttribute("title", Tuple.Create(" title=\"", 33929), Tuple.Create("\"", 33980) -, Tuple.Create(Tuple.Create("", 33937), Tuple.Create("Bulk", 33937), true) -, Tuple.Create(Tuple.Create(" ", 33941), Tuple.Create("Generate:", 33942), true) +WriteAttribute("title", Tuple.Create(" title=\"", 38168), Tuple.Create("\"", 38219) +, Tuple.Create(Tuple.Create("", 38176), Tuple.Create("Bulk", 38176), true) +, Tuple.Create(Tuple.Create(" ", 38180), Tuple.Create("Generate:", 38181), true) - #line 579 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" -, Tuple.Create(Tuple.Create(" ", 33951), Tuple.Create(Model.DocumentTemplate.Id + #line 683 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" +, Tuple.Create(Tuple.Create(" ", 38190), Tuple.Create(Model.DocumentTemplate.Id #line default #line hidden -, 33952), false) +, 38191), false) ); WriteLiteral(">\r\n
\r\n \r\n \r\n"); - #line 591 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 695 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" #line default #line hidden - #line 591 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 695 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id), FormMethod.Post)) { @@ -1692,7 +2035,7 @@ WriteLiteral(" data-val-required=\"Identifiers are required\""); WriteLiteral(">\r\n"); - #line 595 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 699 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -1701,7 +2044,7 @@ WriteLiteral(">\r\n"); WriteLiteral(" \r\n"); - #line 597 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 701 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" @@ -1736,7 +2079,7 @@ WriteLiteral(" \r\n"); - #line 649 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 753 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } @@ -1776,7 +2119,7 @@ WriteLiteral("\\\\rsmith\');\r\n break;\r\n WriteLiteral(" "); - #line 650 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 754 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" if (Authorization.Has(Claims.Config.DocumentTemplate.Delete)) { @@ -1784,14 +2127,14 @@ WriteLiteral(" "); #line default #line hidden - #line 652 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 756 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" Write(Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete")); #line default #line hidden - #line 652 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" + #line 756 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml" } diff --git a/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.js b/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.js index bfb12ed3..b853feae 100644 --- a/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.js +++ b/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.js @@ -61,7 +61,9 @@ if (!document.DiscoFunctions.PropertyChangeHelper) { if (PropertyField[0].nodeName.toLowerCase() == 'textarea') { PropertyField.keydown(function () { $ajaxSave.show(); - }) + }).blur(function () { + $ajaxSave.hide(); + }); } } }; diff --git a/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.min.js b/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.min.js index 7409c400..0e5b1543 100644 --- a/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.min.js +++ b/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.min.js @@ -1,4 +1,4 @@ -if(document.DiscoFunctions||(document.DiscoFunctions={}),document.DiscoFunctions.PropertyChangeHelper||(document.DiscoFunctions.PropertyValue=function(n){return n[0].nodeName.toLowerCase()=="input"&&n.attr("type")=="checkbox"?n.is(":checked"):n.val()},document.DiscoFunctions.PropertyChangeHelper=function(n,t,i,r){var e=document.DiscoFunctions.PropertyValue(n),u=null,f=n.nextAll(".ajaxSave").first(),o=n.nextAll(".ajaxLoading").first(),s=function(){f.hide();var t=document.DiscoFunctions.PropertyValue(n);e!=t&&(e=t,u&&window.clearTimeout(u),u=window.setTimeout(function(){o.show();var n={};n[r]=e;$.getJSON(i,n,function(n,t){t!="success"||n!="OK"?(alert('Unable to change property "'+r+'":\n'+n),o.hide()):o.hide().next(".ajaxOk").show().delay("fast").fadeOut("slow")});u=null},500))};n[0].nodeName.toLowerCase()=="input"&&n.attr("type")=="checkbox"?n.click(s):n.change(s);n[0].nodeName.toLowerCase()=="input"&&n.attr("type")=="text"&&n.keydown(function(n){f.show();n.which==13&&$(this).blur()}).watermark(t).blur(function(){f.hide()}).focus(function(){$(this).select()});n[0].nodeName.toLowerCase()=="textarea"&&n.keydown(function(){f.show()})}),document.DiscoFunctions.DateChangeUserHelper||(document.DiscoFunctions.DateChangeUserHelper=function(n,t,i,r,u,f,e){var s=n.val(),o=null,h=t.next(".ajaxLoading");n.watermark(i).change(function(){var i=n.val();s.toLowerCase()!=i.toLowerCase()&&(s=i,o&&window.clearTimeout(o),o=window.setTimeout(function(){h.show();var n={};n[u]=s;$.getJSON(r,n,function(n,i){i!="success"||n.Result!="OK"?(alert("Unable to change Date:\n"+n),h.hide()):(t.text("by "+n.UserDescription),h.hide().next(".ajaxOk").show().delay("fast").fadeOut("slow"))});o=null},500))}).focus(function(){$(this).select()});e?n.datepicker({defaultDate:new Date,minDate:moment(f).toDate(),changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd",beforeShow:function(n){$input=$(n);$input.val()||$input.datepicker("setDate",new Date)}}):n.datetimepicker({defaultDate:new Date,ampm:!0,minDate:moment(f).toDate(),changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd",beforeShow:function(n){$input=$(n);$input.val()||$input.datetimepicker("setDate",new Date)}})}),document.DiscoFunctions.DateChangeHelper||(document.DiscoFunctions.DateChangeHelper=function(n,t,i,r,u,f){var o=n.val(),e=null,s=n.next(".ajaxLoading");n.watermark(t).change(function(){var t=n.val();o.toLowerCase()!=t.toLowerCase()&&(o=t,e&&window.clearTimeout(e),e=window.setTimeout(function(){s.show();var n={};n[r]=o;$.getJSON(i,n,function(n,t){t!="success"||n!="OK"?(alert("Unable to change Date:\n"+n),s.hide()):s.hide().next(".ajaxOk").show().delay("fast").fadeOut("slow")});e=null},500))}).focus(function(){$(this).select()});f?n.datepicker({defaultDate:new Date,minDate:moment(u).toDate(),changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd",beforeShow:function(n){$input=$(n);$input.val()||$input.datepicker("setDate",new Date)}}):n.datetimepicker({defaultDate:new Date,ampm:!0,minDate:moment(u).toDate(),changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd",beforeShow:function(n){$input=$(n);$input.val()||$input.datetimepicker("setDate",new Date)}})}),!document.DiscoFunctions.DateDialogCreateUpdater){var dialog,dialogForm,dialogHeader,dialogDateBox,dialogDatePropertyNameBox,updateUrl,friendlyName,dateField,userField,updatePropertyName,notSetDisplay,minDate,useAjax;function dateDialogGet(){if(!dialog){dialog=$("
").attr({"class":"dialog"});dialogForm=$("
").attr({action:"/",method:"post"}).appendTo(dialog);var n=$("

").appendTo(dialogForm);dialogHeader=$("

").attr("autofocus","autofocus").appendTo(n);dialogDatePropertyNameBox=$("").attr({type:"hidden",name:"key"}).appendTo(n);dialogDateBox=$("").attr({type:"datetime",name:"value"}).css({display:"block","margin-top":15,"margin-left":"auto","margin-right":"auto"}).appendTo(n);$("").attr({type:"hidden",name:"redirect"}).val("true").appendTo(n);dialog.dialog({resizable:!1,modal:!0,autoOpen:!1,buttons:{Update:dateDialogUpdate,Cancel:function(){$(this).dialog("close")}},open:function(){dialog.dialog("widget").find(".ui-dialog-buttonpane :tabbable:first").focus()}});dialogDateBox.datetimepicker({defaultDate:new Date,ampm:!0,changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd"})}return dialog}function dateDialogUpdate(){var u=dialogDateBox.val(),t,n,i,r;useAjax?(t=$("#"+dateField),userField&&(n=$("#"+userField)),dialog.dialog("close"),i=(n?n.next(".ajaxLoading"):t.next(".ajaxLoading")).show(),r={key:updatePropertyName,value:u},$.getJSON(updateUrl,r,function(r,u){u!="success"||r.Result!="OK"?(alert("Unable to change "+friendlyName+" Date:\n"+r),i.hide()):(r.DateTimeFull?t.attr("data-isodate",r.DateTimeISO8601).attr("data-livestamp",r.DateTimeUnixEpoc).attr("title",r.DateTimeFull).text(r.DateTimeFriendly):t.attr("data-isodate","").attr("data-livestamp","-1").attr("title",notSetDisplay).text(notSetDisplay),n&&n.text("by "+r.UserDescription),i.hide().next(".ajaxOk").show().delay("fast").fadeOut("slow"))})):(dialog.dialog("disable"),dialog.dialog("option","buttons",null),dialogDatePropertyNameBox.val(updatePropertyName),dialogForm.attr("action",updateUrl),dialogForm.submit())}function dateDialogOpen(n,t,i,r,u,f,e,o){var s,h;updateUrl=n;friendlyName=t;dateField=i;userField=r;updatePropertyName=u;notSetDisplay=f;minDate=e;useAjax=o;s=dateDialogGet();s.dialog("option","title",friendlyName);dialogHeader.text(friendlyName+" Date");h=$("#"+i).attr("data-isodate");h?dialogDateBox.datetimepicker("setDate",new Date(h)):dialogDateBox.datetimepicker("setDate",new Date);e?dialogDateBox.datetimepicker("option","minDate",moment(minDate).toDate()):dialogDateBox.datetimepicker("option","minDate",null);s.dialog("open")}function dateDialogCreateUpdater(n,t,i,r,u,f,e,o){$("").attr({href:"#","class":"button small",style:"margin-right: 5px;"}).text("Update").click(function(s){s.preventDefault();dateDialogOpen(n,t,i,r,u,f,e,o)}).insertBefore("#"+i)}document.DiscoFunctions.DateDialogCreateUpdater=dateDialogCreateUpdater} +if(document.DiscoFunctions||(document.DiscoFunctions={}),document.DiscoFunctions.PropertyChangeHelper||(document.DiscoFunctions.PropertyValue=function(n){return n[0].nodeName.toLowerCase()=="input"&&n.attr("type")=="checkbox"?n.is(":checked"):n.val()},document.DiscoFunctions.PropertyChangeHelper=function(n,t,i,r){var e=document.DiscoFunctions.PropertyValue(n),f=null,u=n.nextAll(".ajaxSave").first(),o=n.nextAll(".ajaxLoading").first(),s=function(){u.hide();var t=document.DiscoFunctions.PropertyValue(n);e!=t&&(e=t,f&&window.clearTimeout(f),f=window.setTimeout(function(){o.show();var n={};n[r]=e;$.getJSON(i,n,function(n,t){t!="success"||n!="OK"?(alert('Unable to change property "'+r+'":\n'+n),o.hide()):o.hide().next(".ajaxOk").show().delay("fast").fadeOut("slow")});f=null},500))};n[0].nodeName.toLowerCase()=="input"&&n.attr("type")=="checkbox"?n.click(s):n.change(s);n[0].nodeName.toLowerCase()=="input"&&n.attr("type")=="text"&&n.keydown(function(n){u.show();n.which==13&&$(this).blur()}).watermark(t).blur(function(){u.hide()}).focus(function(){$(this).select()});n[0].nodeName.toLowerCase()=="textarea"&&n.keydown(function(){u.show()}).blur(function(){u.hide()})}),document.DiscoFunctions.DateChangeUserHelper||(document.DiscoFunctions.DateChangeUserHelper=function(n,t,i,r,u,f,e){var s=n.val(),o=null,h=t.next(".ajaxLoading");n.watermark(i).change(function(){var i=n.val();s.toLowerCase()!=i.toLowerCase()&&(s=i,o&&window.clearTimeout(o),o=window.setTimeout(function(){h.show();var n={};n[u]=s;$.getJSON(r,n,function(n,i){i!="success"||n.Result!="OK"?(alert("Unable to change Date:\n"+n),h.hide()):(t.text("by "+n.UserDescription),h.hide().next(".ajaxOk").show().delay("fast").fadeOut("slow"))});o=null},500))}).focus(function(){$(this).select()});e?n.datepicker({defaultDate:new Date,minDate:moment(f).toDate(),changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd",beforeShow:function(n){$input=$(n);$input.val()||$input.datepicker("setDate",new Date)}}):n.datetimepicker({defaultDate:new Date,ampm:!0,minDate:moment(f).toDate(),changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd",beforeShow:function(n){$input=$(n);$input.val()||$input.datetimepicker("setDate",new Date)}})}),document.DiscoFunctions.DateChangeHelper||(document.DiscoFunctions.DateChangeHelper=function(n,t,i,r,u,f){var o=n.val(),e=null,s=n.next(".ajaxLoading");n.watermark(t).change(function(){var t=n.val();o.toLowerCase()!=t.toLowerCase()&&(o=t,e&&window.clearTimeout(e),e=window.setTimeout(function(){s.show();var n={};n[r]=o;$.getJSON(i,n,function(n,t){t!="success"||n!="OK"?(alert("Unable to change Date:\n"+n),s.hide()):s.hide().next(".ajaxOk").show().delay("fast").fadeOut("slow")});e=null},500))}).focus(function(){$(this).select()});f?n.datepicker({defaultDate:new Date,minDate:moment(u).toDate(),changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd",beforeShow:function(n){$input=$(n);$input.val()||$input.datepicker("setDate",new Date)}}):n.datetimepicker({defaultDate:new Date,ampm:!0,minDate:moment(u).toDate(),changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd",beforeShow:function(n){$input=$(n);$input.val()||$input.datetimepicker("setDate",new Date)}})}),!document.DiscoFunctions.DateDialogCreateUpdater){var dialog,dialogForm,dialogHeader,dialogDateBox,dialogDatePropertyNameBox,updateUrl,friendlyName,dateField,userField,updatePropertyName,notSetDisplay,minDate,useAjax;function dateDialogGet(){if(!dialog){dialog=$("
").attr({"class":"dialog"});dialogForm=$("").attr({action:"/",method:"post"}).appendTo(dialog);var n=$("

").appendTo(dialogForm);dialogHeader=$("

").attr("autofocus","autofocus").appendTo(n);dialogDatePropertyNameBox=$("").attr({type:"hidden",name:"key"}).appendTo(n);dialogDateBox=$("").attr({type:"datetime",name:"value"}).css({display:"block","margin-top":15,"margin-left":"auto","margin-right":"auto"}).appendTo(n);$("").attr({type:"hidden",name:"redirect"}).val("true").appendTo(n);dialog.dialog({resizable:!1,modal:!0,autoOpen:!1,buttons:{Update:dateDialogUpdate,Cancel:function(){$(this).dialog("close")}},open:function(){dialog.dialog("widget").find(".ui-dialog-buttonpane :tabbable:first").focus()}});dialogDateBox.datetimepicker({defaultDate:new Date,ampm:!0,changeYear:!0,changeMonth:!0,dateFormat:"yy/mm/dd"})}return dialog}function dateDialogUpdate(){var u=dialogDateBox.val(),t,n,i,r;useAjax?(t=$("#"+dateField),userField&&(n=$("#"+userField)),dialog.dialog("close"),i=(n?n.next(".ajaxLoading"):t.next(".ajaxLoading")).show(),r={key:updatePropertyName,value:u},$.getJSON(updateUrl,r,function(r,u){u!="success"||r.Result!="OK"?(alert("Unable to change "+friendlyName+" Date:\n"+r),i.hide()):(r.DateTimeFull?t.attr("data-isodate",r.DateTimeISO8601).attr("data-livestamp",r.DateTimeUnixEpoc).attr("title",r.DateTimeFull).text(r.DateTimeFriendly):t.attr("data-isodate","").attr("data-livestamp","-1").attr("title",notSetDisplay).text(notSetDisplay),n&&n.text("by "+r.UserDescription),i.hide().next(".ajaxOk").show().delay("fast").fadeOut("slow"))})):(dialog.dialog("disable"),dialog.dialog("option","buttons",null),dialogDatePropertyNameBox.val(updatePropertyName),dialogForm.attr("action",updateUrl),dialogForm.submit())}function dateDialogOpen(n,t,i,r,u,f,e,o){var s,h;updateUrl=n;friendlyName=t;dateField=i;userField=r;updatePropertyName=u;notSetDisplay=f;minDate=e;useAjax=o;s=dateDialogGet();s.dialog("option","title",friendlyName);dialogHeader.text(friendlyName+" Date");h=$("#"+i).attr("data-isodate");h?dialogDateBox.datetimepicker("setDate",new Date(h)):dialogDateBox.datetimepicker("setDate",new Date);e?dialogDateBox.datetimepicker("option","minDate",moment(minDate).toDate()):dialogDateBox.datetimepicker("option","minDate",null);s.dialog("open")}function dateDialogCreateUpdater(n,t,i,r,u,f,e,o){$("").attr({href:"#","class":"button small",style:"margin-right: 5px;"}).text("Update").click(function(s){s.preventDefault();dateDialogOpen(n,t,i,r,u,f,e,o)}).insertBefore("#"+i)}document.DiscoFunctions.DateDialogCreateUpdater=dateDialogCreateUpdater} /* //# sourceMappingURL=Disco-PropertyChangeHelpers.min.js.map */ \ No newline at end of file diff --git a/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.min.js.map b/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.min.js.map index 79d165bf..27f37c57 100644 --- a/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.min.js.map +++ b/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers.min.js.map @@ -2,7 +2,7 @@ "version":3, "file":"Disco-PropertyChangeHelpers.min.js", "lineCount":1, -"mappings":"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", +"mappings":"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", "sources":["/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers/disco.propertychangehelpers.js"], "names":["document","DiscoFunctions","PropertyChangeHelper","PropertyValue","document.DiscoFunctions.PropertyValue","PropertyField","nodeName","toLowerCase","attr","is","val","document.DiscoFunctions.PropertyChangeHelper","FieldWatermark","UpdateUrl","UpdatePropertyName","fieldValue","fieldChangeToken","$ajaxSave","nextAll","first","$ajaxLoading","fieldChangeFunction","hide","changedValue","window","clearTimeout","setTimeout","show","data","$","getJSON","response","result","alert","next","delay","fadeOut","click","change","keydown","e","which","blur","watermark","focus","select","DateChangeUserHelper","document.DiscoFunctions.DateChangeUserHelper","DateField","UserField","DateFieldWatermark","minDate","dateOnly","dateFieldValue","dateFieldChangeToken","dateText","Result","text","UserDescription","datepicker","Date","moment","toDate","beforeShow","input","$input","datetimepicker","DateChangeHelper","document.DiscoFunctions.DateChangeHelper","DateDialogCreateUpdater","dialog","dialogForm","dialogHeader","dialogDateBox","dialogDatePropertyNameBox","updateUrl","friendlyName","dateField","userField","updatePropertyName","notSetDisplay","useAjax","dateDialogGet","appendTo","dialogBody","css","dateDialogUpdate","Cancel","open","find","dateValue","$dateField","$userField","DateTimeFull","DateTimeISO8601","DateTimeUnixEpoc","DateTimeFriendly","submit","dateDialogOpen","FriendlyName","NotSetDisplay","MinDate","UseAjax","d","dfVal","dateDialogCreateUpdater","event","preventDefault","insertBefore"] } diff --git a/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers/disco.propertychangehelpers.js b/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers/disco.propertychangehelpers.js index 19ed1982..f044c779 100644 --- a/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers/disco.propertychangehelpers.js +++ b/Disco.Web/ClientSource/Scripts/Modules/Disco-PropertyChangeHelpers/disco.propertychangehelpers.js @@ -60,7 +60,9 @@ if (!document.DiscoFunctions.PropertyChangeHelper) { if (PropertyField[0].nodeName.toLowerCase() == 'textarea') { PropertyField.keydown(function () { $ajaxSave.show(); - }) + }).blur(function () { + $ajaxSave.hide(); + }); } } }; diff --git a/Disco.Web/ClientSource/Style/Config.css b/Disco.Web/ClientSource/Style/Config.css index 88df2426..4df6471e 100644 --- a/Disco.Web/ClientSource/Style/Config.css +++ b/Disco.Web/ClientSource/Style/Config.css @@ -287,8 +287,12 @@ table.deviceProfileTable th.type { table.deviceProfileTable th.deviceCount { width: 120px; } -#configurationDeviceProfileShow #ComputerNameTemplate { - width: 300px; +#configurationDeviceProfileShow #DeviceProfile_ComputerNameTemplate { + height: 16px; + min-height: 16px; + width: calc(100% - 32px); + overflow: hidden; + font-family: Consolas, "Courier New", monospace; } #configurationDeviceProfileShow #expressionBrowserAnchor { display: inline-block; @@ -622,6 +626,14 @@ div.logEventsViewport table.logEventsViewport > tbody > tr > td.eventType { #Config_DocumentTemplates_Show > div.form > table > tbody > tr > th { width: 140px; } +#Config_DocumentTemplates_Show #DocumentTemplate_FilterExpression, +#Config_DocumentTemplates_Show #DocumentTemplate_OnGenerateExpression, +#Config_DocumentTemplates_Show #DocumentTemplate_OnImportAttachmentExpression { + height: 16px; + min-height: 16px; + overflow: hidden; + font-family: Consolas, "Courier New", monospace; +} #Config_DocumentTemplates_Show #Config_DocumentTemplates_Scope_Button { margin-top: 4px; } diff --git a/Disco.Web/ClientSource/Style/Config.less b/Disco.Web/ClientSource/Style/Config.less index 82b9f408..c1a17b22 100644 --- a/Disco.Web/ClientSource/Style/Config.less +++ b/Disco.Web/ClientSource/Style/Config.less @@ -228,8 +228,12 @@ table.deviceProfileTable { } #configurationDeviceProfileShow { - #ComputerNameTemplate { - width: 300px; + #DeviceProfile_ComputerNameTemplate { + height: 16px; + min-height: 16px; + width: calc(~"100% - 32px"); + overflow: hidden; + font-family: @FontFamilyMono; } #expressionBrowserAnchor { @@ -656,6 +660,13 @@ div.logEventsViewport { width: 140px; } + #DocumentTemplate_FilterExpression, #DocumentTemplate_OnGenerateExpression, #DocumentTemplate_OnImportAttachmentExpression { + height: 16px; + min-height: 16px; + overflow: hidden; + font-family: @FontFamilyMono; + } + #Config_DocumentTemplates_Scope_Button { margin-top: 4px; } diff --git a/Disco.Web/ClientSource/Style/Config.min.css b/Disco.Web/ClientSource/Style/Config.min.css index 8f8d05fb..c1e518ff 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}.Config_HideAdvanced .Config_HideAdvanced_Item{display:none}.Config_LinkedGroup_Instance{margin:4px 0 8px 4px;padding:4px 0 4px 6px;border-left:4px solid #ccc;background-color:#fff}.Config_LinkedGroup_Instance div.code{margin-left:2px}#Config_LinkedGroup_Dialog h3{margin-bottom:6px}#Config_LinkedGroup_Dialog div.input{margin-top:12px}#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_Show>div.form>table>tbody>tr>th{width:140px}#Config_DocumentTemplates_Show #Config_DocumentTemplates_Scope_Button{margin-top:4px}#Config_DocumentTemplates_Scope_Dialog div.input{margin:14px 10px 20px}#Config_DocumentTemplates_TemplatePdf_Dialog div{text-align:center}#Config_DocumentTemplates_TemplatePdf_Dialog div input{margin:16px 0}#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}#dialogUninstallPlugins #uninstallPlugin{margin:.5em 0}#dialogUninstallPlugins #uninstallPluginData{margin:.5em 0}#dialogUninstallPluginConfirm #uninstallPluginConfirm{text-align:center;margin:1em 0 .5em 0}#dialogUninstallPluginConfirm #uninstallPluginDataConfirm{margin-top:1em}#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}#dialogInstallPlugin div.info-box{margin-top:1em}#dialogUploadPlugin #pluginFile{margin:1em 0 1em 6px}#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 +.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}.Config_HideAdvanced .Config_HideAdvanced_Item{display:none}.Config_LinkedGroup_Instance{margin:4px 0 8px 4px;padding:4px 0 4px 6px;border-left:4px solid #ccc;background-color:#fff}.Config_LinkedGroup_Instance div.code{margin-left:2px}#Config_LinkedGroup_Dialog h3{margin-bottom:6px}#Config_LinkedGroup_Dialog div.input{margin-top:12px}#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 #DeviceProfile_ComputerNameTemplate{height:16px;min-height:16px;width:calc(100% - 32px);overflow:hidden;font-family:Consolas,"Courier New",monospace}#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_Show>div.form>table>tbody>tr>th{width:140px}#Config_DocumentTemplates_Show #DocumentTemplate_FilterExpression,#Config_DocumentTemplates_Show #DocumentTemplate_OnGenerateExpression,#Config_DocumentTemplates_Show #DocumentTemplate_OnImportAttachmentExpression{height:16px;min-height:16px;overflow:hidden;font-family:Consolas,"Courier New",monospace}#Config_DocumentTemplates_Show #Config_DocumentTemplates_Scope_Button{margin-top:4px}#Config_DocumentTemplates_Scope_Dialog div.input{margin:14px 10px 20px}#Config_DocumentTemplates_TemplatePdf_Dialog div{text-align:center}#Config_DocumentTemplates_TemplatePdf_Dialog div input{margin:16px 0}#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}#dialogUninstallPlugins #uninstallPlugin{margin:.5em 0}#dialogUninstallPlugins #uninstallPluginData{margin:.5em 0}#dialogUninstallPluginConfirm #uninstallPluginConfirm{text-align:center;margin:1em 0 .5em 0}#dialogUninstallPluginConfirm #uninstallPluginDataConfirm{margin-top:1em}#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}#dialogInstallPlugin div.info-box{margin-top:1em}#dialogUploadPlugin #pluginFile{margin:1em 0 1em 6px}#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/Extensions/T4MVC/API.DocumentTemplateController.generated.cs b/Disco.Web/Extensions/T4MVC/API.DocumentTemplateController.generated.cs index 364b76de..487e5bf9 100644 --- a/Disco.Web/Extensions/T4MVC/API.DocumentTemplateController.generated.cs +++ b/Disco.Web/Extensions/T4MVC/API.DocumentTemplateController.generated.cs @@ -83,6 +83,18 @@ namespace Disco.Web.Areas.API.Controllers } [NonAction] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult UpdateOnGenerateExpression() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateOnGenerateExpression); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult UpdateOnImportAttachmentExpression() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateOnImportAttachmentExpression); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public virtual System.Web.Mvc.ActionResult UpdateFlattenForm() { return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateFlattenForm); @@ -173,6 +185,8 @@ namespace Disco.Web.Areas.API.Controllers public readonly string Template = "Template"; public readonly string UpdateDescription = "UpdateDescription"; public readonly string UpdateFilterExpression = "UpdateFilterExpression"; + public readonly string UpdateOnGenerateExpression = "UpdateOnGenerateExpression"; + public readonly string UpdateOnImportAttachmentExpression = "UpdateOnImportAttachmentExpression"; public readonly string UpdateFlattenForm = "UpdateFlattenForm"; public readonly string UpdateScope = "UpdateScope"; public readonly string UpdateJobSubTypes = "UpdateJobSubTypes"; @@ -195,6 +209,8 @@ namespace Disco.Web.Areas.API.Controllers public const string Template = "Template"; public const string UpdateDescription = "UpdateDescription"; public const string UpdateFilterExpression = "UpdateFilterExpression"; + public const string UpdateOnGenerateExpression = "UpdateOnGenerateExpression"; + public const string UpdateOnImportAttachmentExpression = "UpdateOnImportAttachmentExpression"; public const string UpdateFlattenForm = "UpdateFlattenForm"; public const string UpdateScope = "UpdateScope"; public const string UpdateJobSubTypes = "UpdateJobSubTypes"; @@ -252,6 +268,26 @@ namespace Disco.Web.Areas.API.Controllers public readonly string FilterExpression = "FilterExpression"; public readonly string redirect = "redirect"; } + static readonly ActionParamsClass_UpdateOnGenerateExpression s_params_UpdateOnGenerateExpression = new ActionParamsClass_UpdateOnGenerateExpression(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_UpdateOnGenerateExpression UpdateOnGenerateExpressionParams { get { return s_params_UpdateOnGenerateExpression; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_UpdateOnGenerateExpression + { + public readonly string id = "id"; + public readonly string OnGenerateExpression = "OnGenerateExpression"; + public readonly string redirect = "redirect"; + } + static readonly ActionParamsClass_UpdateOnImportAttachmentExpression s_params_UpdateOnImportAttachmentExpression = new ActionParamsClass_UpdateOnImportAttachmentExpression(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_UpdateOnImportAttachmentExpression UpdateOnImportAttachmentExpressionParams { get { return s_params_UpdateOnImportAttachmentExpression; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_UpdateOnImportAttachmentExpression + { + public readonly string id = "id"; + public readonly string OnImportAttachmentExpression = "OnImportAttachmentExpression"; + public readonly string redirect = "redirect"; + } static readonly ActionParamsClass_UpdateFlattenForm s_params_UpdateFlattenForm = new ActionParamsClass_UpdateFlattenForm(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ActionParamsClass_UpdateFlattenForm UpdateFlattenFormParams { get { return s_params_UpdateFlattenForm; } } @@ -457,6 +493,34 @@ namespace Disco.Web.Areas.API.Controllers return callInfo; } + [NonAction] + partial void UpdateOnGenerateExpressionOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string OnGenerateExpression, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult UpdateOnGenerateExpression(string id, string OnGenerateExpression, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateOnGenerateExpression); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "OnGenerateExpression", OnGenerateExpression); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateOnGenerateExpressionOverride(callInfo, id, OnGenerateExpression, redirect); + return callInfo; + } + + [NonAction] + partial void UpdateOnImportAttachmentExpressionOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string OnImportAttachmentExpression, bool redirect); + + [NonAction] + public override System.Web.Mvc.ActionResult UpdateOnImportAttachmentExpression(string id, string OnImportAttachmentExpression, bool redirect) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateOnImportAttachmentExpression); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "OnImportAttachmentExpression", OnImportAttachmentExpression); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect); + UpdateOnImportAttachmentExpressionOverride(callInfo, id, OnImportAttachmentExpression, redirect); + return callInfo; + } + [NonAction] partial void UpdateFlattenFormOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, string FlattenForm, bool redirect);